« first day (1503 days earlier)      last day (34 days later) » 

12:00 AM
@ngn does it actually outperform Dyalog on vectorized operations?
 
@dzaima No, Iridescence would hopefully be self-hosted. It turns out it's pretty similar to [github.com/google-research/dex-lang](Dex) but maybe less focused on array programming.
 
ngn
@dzaima that's how i became a k fan (k5 at the time) - i was trying to measure against dyalog and finally prove that k is not as fast as they claim :)
 
It's higher-level than BQN and I would probably use it less, but I think it's theoretically interesting and would make a good Julia substitute (in terms of language, not implementation).
 
@ngn "prove that k is not as fast as they claim" what
oh, as in you failed to
 
ngn
@dzaima yes
and as a side effect i loved the syntax
and everything that comes with it - parsability, homoiconicity, first class funcs of course, ..
initially i thought they were cheating by not checking the range when indexing a vector
 
12:05 AM
@Marshall Oops, link should be Dex.
 
ngn
i thought those 0N-s were jibberish from accessing an arbitrary location in memory
but it turned out they deliberately allow out-of-range indexing, it is checked, and those 0N-s mean lack of data (typed nulls)
and that turned out to be a better than apl's erroring
because when you index an array with a lot of indices, generally you don't want to stop the whole operation because one of them happened to be faulty
and i started advocating for k, and nobody took it seriously, and you know how the story went on..
 
@ngn If you're the one who created those indices, I disagree.
BQN's negative indexing is kind of suspect for that reason.
 
ngn
@Marshall you can check them explicitly, if that's important
@Marshall what does it do? act like python's?
 
@Marshall i don't like them very much
 
@ngn Indexes from the end, or equivalently modulo the length. Yes, like Python.
@dzaima Not having a way to get the last element is so painful though.
 
12:10 AM
@Marshall well, not modulo length. It's only an equivalent negative range
@Marshall I don't think making all indexing slower because of that is the way to solve that
 
ngn
@Marshall isn't there an equivalent of ⊃⌽ or ⊢/?
 
transforming ⊑∘⌽ at compile-time isn't hard, and is the same length as ¯1⊏
 
@ngn Yes, you have ⊑⌽ but I think that's really inelegant.
There are other uses for negative indices too. Like, second to last element.
 
@Marshall still, burdening negatives on all indexing?
 
ngn
@Marshall is it common enough to warrant a special case in one of the most used primitives (indexing)? well, trade-offs
 
12:16 AM
@dzaima It's pretty fast to check whether all of the indices are non-negative, and you can fold it into range checking. I'm not sure mask/add/gather is any slower than plain gather anyway, since the computation should interleave well with lookups.
 
@Marshall fair enough
yeah, it wouldn't slow it down at all if there are no negatives. So it's only mental overhead and less wanted errors
 
@dzaima Which I guess I should put on the problems page. I've definitely spent some time wondering if my indexing really works after doing some arithmetic. On the other hand, being able to use ¯1 for a special element at the end can come in handy.
 
12:35 AM
I want to do an element of several items, and extract them in order of the arguments
A∊ x y z
where I can select elements from A by index of x y z IN ORDER
oh what am I talking about
derp
 
ngn
12:52 AM
@dzaima do you detect overflows?
@Marshall ^
 
@ngn for int→double? yeah
 
ngn
oh right, "everything is a double", i forgot..
 
java of course fails to vectorize, but whatever
 
ngn
@dzaima how do you know?
and when you run \t and .Time do you run it only once? or a couple of times and take the best?
 
@ngn looked at assembly for + and saw no vector instrs conpared to no overflow checking
 
ngn
12:58 AM
@dzaima how do you do that?
 
@ngn monadically it calls just once, dyadically it's average of left arg iterations
@ngn don't remember. was painful
@ngn on that one test, i ran it a couple times until things stabilized and took the last results
 
ngn
my asm for addIr (add-ints-reduce):
https://dzaima.github.io/paste#0rVRNT@MwED3bv2KkwmUxVZJ2aRqpaIU4LBLHvVUVcmOXBvJh7BQifv2OkzHNshJwIJfEei/zxu95LJW6sRl8@kzgl/RUPoHT7XYaZZxVzTOzshNgVcdZq13L8IuWPbgU8PTSWAWmtbC2qthw9qDZ9PbqKpndpVQrxlp5ZYZaMTLqN8qMKAlSusYymyqsnyok4Q9EuuCBHZpKkSSHJp5YV1URrpeE9R26gjNZq555nhCSeyTlbGoSWRb3NZsLiLplFMrPs089Wl3@2RcObupaW7htGgO/tVQaDb7Wpt2v4mNP8Ttvuk1fwSOwgkpX62gjXrVtODN@6wgkwsPYLiYxbAS7NWjdfauOeEy4347fmznUJn8sVVD1xNAvqfmXl/MQveN1TOsYQzNYMTg5SIxCmlNIP9F@4/aHnToqIX@Rjh06KkbrRMxEJHz9Pv6Q2psYlSDP/Gki7dERCmcgG8frq5RaMsxZoLeugDOY/7ApKrnDlkgfJL34rqRdR0GoUdTOj8F/7W0oNtwl/sGZ0
 
punpckldq I love asm names
 
ngn
@rak1507 those that begin with p (for "packed") are usually vector instructions
 
@rak1507 packed-unpack-lower-double-quadword, what could be simpler?
 
1:04 AM
@ngn I know I just find the long names funny
 
ngn
the presence of a lot of xmm0, xmm1, .. is evidence of vectorization too
and the lack of a long intro/outro to the loop is evidence i've done the alignments and paddings properly
it could still be sub-optimal, of course (and my machine doesn't have avx)
 
@ngn faster than dzaima/BQN, but that's expected
 
ngn
@dzaima but.. wasn't it the other way round before??
 
@ngn that was with a function ({x+y}/), not a pure builtin
 
ngn
1:08 AM
@dzaima argh, stupid me.. right
so it could be a case of the jvm doing its magic - gathering stats and inlining stuff, like last time
 
@dzaima (dyalog +/⍳10000000 is 7.05ms by cmpx, and 7.62ms by ]runtime -r=100 fwiw)
 
ngn
@ngn (that's not a good excuse for me, of course..)
 
@ngn The main loop, starting at .LBB23_4, looks optimal to me, unless I'm forgetting a better way to do sign extension. Maybe comparing rdx with a maximum value instead of decrementing rcx would fuse with the jump, but I doubt there's enough contention in scalar registers for that to matter.
Wait, it's loading a half-register and unpacking to a full register. Could be better to load a full register and unpack to two registers.
 
@ngn does that sum to a 32-bit or 64-bit int? (dzaima/BQNs +/ sums the 32-bit int array to a 64-bit int)
 
ngn
@dzaima 64-bit
 
1:17 AM
@dzaima 1e7 elements probably won't fit in L3 (mine is 4MB). I'd test on 1e5 to make bandwidth less of a bottleneck.
 
ngn
@Marshall it seems rcx shouldn't be in that inner loop at all, it's only decremented and never used in the inner loop
 
@ngn It sets flags for jne.
 
ngn
@Marshall that's probably my fault, i deliberately disabled loop unrolling.. i guess i should reconsider it
@Marshall ah.. right
 
@Marshall oof
 
is there a way to determine whether a string is parsable as a number or not?
like an int.tryParse(n)
 
1:21 AM
@nathanrogers ⎕VFI
anyway, i should go sleep
 
 
4 hours later…
ngn
5:21 AM
@Marshall it looks better now. performance improvement: ~10%
binary size: +9%
 
 
1 hour later…
6:43 AM
hi
 
ngn
7:06 AM
@nathanrogers hi
 
hi
 
@nathanrogers hi
 
 
2 hours later…
9:08 AM
⋄ 'Hi'
 
Hi. Was just checking if the bot's execution function was working.
 
<dzaima[m]> message from matrix
<dzaima[m]> yep, bot's still one-way
 
Right, the bridge is working, but not the execution.
Oh, so the bridge isn't even fully working. :-(
 
@Adám no, the bridge isn't working
 
 
1 hour later…
10:16 AM
is there a way to do 2⍬⍴array in dzaima/APL and pad if there aren't enough elements?
 
You need to manually pad the array before reshaping. There's no escape from it
 
@rak1507 (⍬2⍴⊢,0⍴⍨2|≢)array isn't too bad.
 
@rak1507 not in dzaima/APL, but BQN has a way
 
10:32 AM
bqn isn't one of the valid bounty languages :(
 
(2⍬⍴⊢,∘⍳2|≢) is 1 shorter with ⎕IO←0
 
@rak1507 Extended let's you shorten, so it is quite easy to do.
 
@dzaima When I tried dyalog +/ it was much faster.
By cmparison, Kap does it in about 10 ms on my machine.
Perhaps you're not getting the vector optimisation?
 
@EliasMårtenson were you testing precisely ]runtime -r=100 "+/⍳10000000"?
also that test includes creating the iota array, which probably takes a majority of the time
 
10:52 AM
@Razetime We never compensated your for the code you wrote to get image sizes. Please accept our apologies. We will fix this shortly. How many hours do you estimate you spent on it?
 
@dzaima I never tried your code on Dyalog. I have tested plain +/⍳N earlier, and noted it was much faster, and I just noted how slow your numbers were.
I don't know what -r=100 does.
 
@EliasMårtenson it forces it to repeat the test exactly 100 times
@EliasMårtenson and you remember the specific magnitudes of the results?
 
@dzaima Ah, so the number is 100 times more than a single iteration?
That makes sense.
 
@EliasMårtenson no, it's the average of 100 iterations
 
Oh really?
Because when I was playing around with this, I recall Dyalog being well over 100 times faster than Kap
I mean, KAP has received some performance enhancements since then, but only about 10 times or so in this case.
 
11:06 AM
@EliasMårtenson so? That doesn't say anything about how my system compares to yours
(of note is that +/⍳N×10 is often >10x slower than +/⍳N, so you must be careful; for 10000000, my 3MiB L3 cache runs out so it also has a performance loss there)
@dzaima (e.g.)
 
11:20 AM
OK, my machine runs the test case (100 repeats) in 4.97
 
huh. the ]runtime -r=100 "+/⍳10000000" one?
 
Kap fluctuates quite wildly when I test, but in the best case scenario it runs the same in 5 ms.
So Kap best case is equal to Dyalog normal case. That cannot be right.
@dzaima Yes.
]runtime -r=100 "+/⍳10000000"

* Benchmarking "+/⍳10000000", repeat=100
(ms)
CPU (avg): 4.97
Elapsed: 5.01
 
@EliasMårtenson You don't need to heap-allocate a 40MB array for one
@EliasMårtenson ctrl+k while editing for monospace
 
True, but I'm not sure that would make a huge difference actually.
 
@EliasMårtenson it makes at least a 2.7x difference in Dyalog as per my "(e.g.)" message
 
11:24 AM
@dzaima No you're right. With heap allocation it takes 261 ms.
That explains things.
But I think the performance slowness didn't come from the heap allocation, but rather that I changed to code so as to allocate the iota result into a generic array where each element is boxed by a JVM object.
 
@EliasMårtenson what's ]runtime -r=100000 "+/⍳10000" for you?
 
CPU (avg): 0.00116962572
 
huh. ¯\_(ツ)_/¯
 
@dzaima Was that expected?
 
@EliasMårtenson no. that's still ~3x faster than me
 
11:28 AM
@dzaima What CPU do you have?
 
@EliasMårtenson 3.6GHz i3-4160
 
hmm, I get CPU (avg): 0
 
@rak1507 yay
 
model name : AMD Ryzen 7 3700X 8-Core Processor
 
idk what's going on there lol
and Elapsed: 0.00007997440819
which is obviously not right
 
11:30 AM
@rak1507 ]runtime sometimes is broken. But I assumed it was consistently broken, which it appears it is not
 
-repeat=ns works for me
¯\_(⍨)_/¯
 
@EliasMårtenson (thing being, other things were usually competitive with others here. So either that thing's a beast, or something funky is going on with summing specifically)
 
I find Dyalog a bit hard to predict when it comes to performance. Some things are really fast while others are pretty slow.
 
@EliasMårtenson how about ]runtime -r=2s "+/⍳10000"?
(and 'cmpx'⎕cy'dfns' ⋄ 1cmpx'+/⍳10000' is another thing to try)
 
]runtime -r=2s "+/⍳10000"

* Benchmarking "+/⍳10000", repeat=2s
(ms)
CPU (avg): 0.0009590544074
Elapsed: 0.0009668357819
 
11:46 AM
@Adám reading in some complex json, I was amazed that this works: data.(≢field.⎕NL¯9) ⍝ Count objects under field, where data is an array of ns. So cool.
 
(also note that this is very much a test of the performance of , not +/ - in this you can see that +/ takes only 20% of the time of the +/⍳10000 expression)
 
12:11 PM
@dzaima Ah, makes sense. So it's a really apples vs oranges test when I compare with Kap, since ⍳ is O(1) there.
 
@EliasMårtenson the Kap vs Dyalog test - yeah, definitely. Still puzzled about how it's 3x faster for you in Dyalog than me though.
 
Is it paralellised?
I have 8 cores 16-threads.
 
It looks like +/⍳10000 doesn't reuse memory like it should. f←+/ followed by f⍳10000 is much faster.
 
Also that Ryzen CPU is pretty damn fast IMHO
 
@EliasMårtenson Dyalog definitely doesn't parallelize single builtins
@Marshall oh wow. 3-4x difference
 
12:16 PM
Dyalog parallelises a small set of builtins: help.dyalog.com/18.0/#Language/Introduction/…
 
@MortenKromberg huh. Never knew
 
Also note that ⍳10000 is 2-byte ints so ⍳100000 is more in line with previous tests.
 
We had ambitions to take that further, but the rewards in real applications seemed rather limited, and we had so many other interesting things we wanted to add... We may return to parallelisation again, but at the moment the trend towards more and more virtualisation means that the benefits of multi-threading single processes SEEM to be fading rather than growing.
 
@Marshall :| right
 
@dzaima So as of 17.1 the Dyalog allocator only moves forward across the workspace, so that allocated memory is never in cache. In 18.0 I added a little snippet to pull it backwards if a pocket is freed near the end of the workspace ("Better cache usage" here). But this code has to be simple to avoid too much overhead, so if there are too many pockets it tends to fail.
 
12:29 PM
Re 1111⌶: In fact, we are seriously considering changing the default for 1111⌶ from (all available cores) to 1 on all platforms. It is already 1 by default under AIX because that platform is typically used as a transaction processing system on machines with a very high number of cores, and using all the processors by default would be a bad thing.
 
is there a way to see the current value of 1111⌶?
 
I think the improvement affects microbenchmarks more than real code because a larger section of code should have more computation or some in-place operations to allow memory time to catch up, particularly if it can figure out it needs to prefetch past the end of the workspace.
 
      1111⌶⍬
8
 
cool
 
Oops no, that is the total number of cores.
It returns the current setting if you change it, so you would need to temporarily set it to 1 and back, I think.
 
12:32 PM
ah
thanks
 
In fact it looks as if we did change the default to 1 already. Difficult to stay on top of what all the developers are doing :D.
 
@MortenKromberg I never knew this document existed. I think at least ÷, , =, and only parallelize for decfs since 17.0.
 
@Marshall That is entirely possible. DECF's are of course much better targets because you generall have much more CPU spend per byte processed.
Paralellisation of things that do nothing and write lots of data to memory (like ⍳N) quickly get you into negative territory as the cores fight for memory bandwidth and the system tries to sort out the cache coherence (as far as I understand it).
 
12:51 PM
The number of inter-connections between features and documentation pages accumulated over a few decades makes it a really interesting problem to find all the different pages you might need to update when you make a change to the interpreter.
 
 
1 hour later…
2:16 PM
@Adám I'd say about 10 hours totally.
 
 
2 hours later…
4:40 PM
so I'm on windows right now, and the IME for APL messes with a lot of Ctrl shortcuts.
How do I change the modifier key?
 
@Razetime use Adám's kbd
 
ngn
@Marshall what memory can be reused in that expression?
 
@ngn presumably that's about reusing the 10000 item array between re-evaluations
 
ngn
4:56 PM
@dzaima yeah, his next message seems to confirms this "Dyalog allocator only moves forward across the workspace"
so it's not due a leak, just a bad pattern of filling the available workspace (if i understand correctly)
 
@ngn that's how i understood it too
 
@Razetime I've been using Adam's alt+gr keyboard for a goodly while. Its much more comfortable under the thumb to do some of the stretches and combos
It also means I can use it in a terminal without fuss
 
5:25 PM
@Razetime I'd like to ask you if a proposed payment is reasonable for you, but do you want me to do so via email (private) or here in chat (for all to see)?
 
ngn
@dzaima @Marshall interesting observation: if you write them in the most straightforward way, the inner loops for iota shorts, iota ints, and iota longs end up exactly the same in asm
 
@rak1507 I don't know APL at all sadly. How is Swedish connected to APL?
 
oh it's because a company was looking for apl devs who know swedish
 
@shapr We can fix your lack of APL knowledge, though. Much easier than learning Swedish (I know both).
 
5:35 PM
Wow, that's very specific. Jo, jag talar Svenska eftersom jag bodde i Norbotten fem år
Kul att traffa dig Adam!
 
Jag bodde i Skåne fem år.
 
Jag talar Svenska som en bonde!
My Swedish has that arctic circle whoosh in place of the sk!
Solen skiner -> Solen whooo iner
 
Min parat-svenska är inte så bra heller, eftersom jag inte talar det regelmässigt. Men jag gick på universitetet i Lund.
 
@Adám Are you one of the Swedish speaking APL programmers in that team?
 
No, but someone approached me for the job because I list both Swedish and APL on LinkedIn.
 
5:38 PM
I don't remember if I put Swedish on LinkedIn
Right now I write Haskell for money, I'm unlikely to jump to APL, but it could happen!
 
@shapr My Swedish teacher was from Norbotten. One day she tried speaking in class using her original dialect. Nobody could understand her (none of the native Swedes either).
 
oh! was it Meänkieli ?
 
@shapr what sort of things do you work on in haskell?
 
I lived in Finland for two years before my five years in Sweden. While I failed to learn Finnish, I picked up enough to get by.
 
@shapr No, just dialectal Swedish.
 
5:41 PM
I'm actually fluent in Swedish
Oh, perhaps Pitemaal?
 
Surely one of these:
 
I had trouble understanding Stockholm Swedish at first, and I caused at least one big laugh when I said "Ska vi fara?" which is pretty much "Let's mosey pardner".
 
@shapr You wouldn't be the first Haskeller to pick up APL.
 
Och jag kommer från Sverige, men har inte bott där sedan 2005 :-)
 
RGS
@rak1507 code... please, try to keep up with the conversation here!
 
5:43 PM
thanks for the enlightenment lol
 
@xpqz Hur länge sedan du lämnade Sverige?
 
RGS
I'd like to remind everyone here that this chatroom uses English as its primary language 😂
 
@shapr Haha, yeah. If you say "fara" mean you mean to travel you will immediately label yourself as a redneck :-)
 
@rak1507 For money I do backend webdev in Haskell. We have about 50 devs at this company and a medium-large sized codebase (approaching 500k lines)
 
Now we are enough people here to start a Swedish language APL Special Interest Group.
@RGS Obrigado.
 
5:44 PM
It's funny, I'm from Alabama, USA and I have zero rural accent, but after moving to Sweden I gained a rural redneck accent in a completely different language!
 
@EliasMårtenson Isn't it "åka"?
 
RGS
@Adám de nada.
 
@Adám Yeah. "fara" is an older word, but still used in dialects in northern Sweden.
 
And "köra"?
 
But you still have it everywhere. It's the base in words such as "farthinder" (speed bump)
@Adám "to drive"
 
5:46 PM
I have an on topic question, sorta ... Is there a language server for APL or J ?
 
And yes, a favourite topic of mine. My dad is a linguist :-)
 
@shapr What do you mean by a language server? Like for VSCode to use?
 
@EliasMårtenson I follow you on mastodon, but didn't know you were into APL!
 
@shapr Hey, it's in my profile :-)
 
@Adám Yes, an lsp server.
 
5:47 PM
@shapr Dude, he's writing his own APL.
 
that's neato!
 
@shapr What's your mastodon name?
 
@EliasMårtenson shapr, same as everywhere
er, shapr@recurse.social
(mastodon instance for the recurse center)
 
@shapr I see. There is one on functional.cafe as well, is that you?
 
@shapr this?
these two might be of interest too.
 
5:49 PM
right, that sort of thing!
 
ooh those are cool why have I never heard of them before :O
 
I have a hypothesis that powerful language servers increase learnability of a programming language, but not much data one way or the other.
 
Well, I need to go to sleep. I need to get up early to drive the kids to school.
 
kul att traffa dig :-)
 
the hovering over things to see docs looks useful, but you can do that in the windows IDE/RIDE/other things probably
 
5:51 PM
And then my plan is to go mountain biking, and then possibly fix the parser bug that prevents me from pushing the new function definition syntax in Kap.
 
The Haskell language server is getting closer to a proof assistant, where it can build your code step by step from the type signature.
 
wow that's cool
 
I've seen increased use of language servers since nobody wants to leave their favorite editor, but everybody wants all the cool tools.
also, I'm fighting my way into J, but wish I had something like jsoftware.com/help/dictionary/vocabul.htm as a handy popup
 
I think it's time to switch the official language in this channel to Swedish by the way. Seems like no one here will mind?
 
Nej tack!
 
5:57 PM
@rak1507 Dunno, but I've expanded apl.wiki/Text_editors a bit now.
 
nice
 
Ouch. A bit too late now. Really leaving.
 
@shapr Consider using NuVoc instead. The old one isn't updated any more.
 
the problem with 1 character language names is they're impossible to google
 
@EliasMårtenson I'm Danish. I mind.
 
ngn
5:58 PM
@rak1507 true
 
@rak1507 The solution is obviously to use a 0 character name.
 
lol
 
@Adám Jag flyttade till England 1991...
 
Oh wow. I moved to Sweden in '97.
 
I've lived here longer than I lived in Sweden.
 
6:07 PM
@ngn what is as yet unimplemented from K6 in your K so far as you're aware
wasn't there some kind of K graph that compared each implementation?
and what's the word on shakti k? KONA had a link to the hosted version
 
ngn
@nathanrogers temporal types are the most obvious (i don't want to implement them), and probably many other little things
 
your ffi working?
"the platform" trying to be a clone of kx or what?
can I map to or call into .dlls?
 
ngn
@nathanrogers no. i'm not sure what to do about ffi. ngn/k is f/oss, so you can compile anything you like into the interpreter anyway, without an explicit api for ffi
@nathanrogers something like that, but they still haven't released
@nathanrogers that's for windows, so no
 
@ngn don't suppose you have build docs :P
 
ngn
@nathanrogers all they would have to say would be "run make" :)
@nathanrogers what do you mean by "what's the word"?
 
ngn
@nathanrogers thanks :)
@nathanrogers i think the (web- ?) hosted version was k7, now scrapped. the latest is k9, you can download a copy from their website.
@nathanrogers there's also a "shakti" google group
 
any info on enterprise edition?
looks like some groovy features
They actually embed telemetry into Q?
 
ngn
@nathanrogers see the google group. one of arthur's latest emails answers that.
@nathanrogers no, that's kx, not shakti
 
I know
They as in the people who have the capability to do so, embed telemetry into Q
 
ngn
@nathanrogers yes, and that sucks
 
6:25 PM
well... er, it appears I'm not allowed to read a csv from a file unless I have enterprise shakti?
 
@Adám don't you find swedish more pleasant to hear than danish?
 
ngn
@nathanrogers if i understand correctly, only the features marked with * there are enterprise-only. there doesn't seem to be a * before "read csv".
 
@ngn what topic in the group?
 
@user41805 I've not really considered pleasantness. Swedish is much clearer, though. Oh, and the number system is actually sane.
 
@ngn but there is one before *2: which is the example provided
 
ngn
6:28 PM
@nathanrogers "[shakti] Sorry for the stupid question. But is there an overview of the features exclusive to the "enterprise" version?"
 
when I 0: "file.csv" its incomplete, and there's wierd behavior going on
 
@Adám ha yeah
 
ngn
@nathanrogers please elaborate
 
 0:"/home/ndr/lisp/game/data/items.csv"
name,type,target,amount
          ,20
     potion,r,p,50
party-potion,r,p-aoe,50
       e,s,p,NIL
        s,p,NIL
        -aoe,50
        ,d,e,25
That is incomplete data
 
ngn
@nathanrogers what does the file contain?
 
6:31 PM
csv information
I open it with excel just fine
I open it with text-editor, properly formed
and this example shows 2: is used to read csv files
not 0:
 
ngn
@nathanrogers 0: reads lines
 
11.8 read line ⇒ 0:x
Read from file x.

0:"some.csv"
a,b
1,3.
2,4.
hmm, actually that shows that you should be able to :/
 
ngn
@nathanrogers if you believe it doesn't do what it should, you can mention it in the google group, ideally with a minimal repro, and arthur&co should take care of it
 
wierd, every file is getting chopped up
 0:"/home/ndr/lisp/game/data/weapon-types.csv"
 ame,weight
  ce,heavy
sword,medium
dagger,light
 taff,light
like you can see its chopping off the leading portions of words
and it does that with every file
that last one ist just 2 columns, so there really shouldn't be any kind of problem... unless its a windows to linux thing
I'm using WSL and created the files using excel, so it might be a problem with line endings?
 
ngn
@nathanrogers possible
@nathanrogers i don't have k9 here and i'm trying to avoid it. do you mind if i re-post this in the k-tree, so someone can confirm?
 
6:41 PM
I downloaded sample csvs from internet
they work fine
its got something to do with my files, for some reason
 
ngn
@nathanrogers it would be interesting to know what exactly is in them. does windows have hexdump or something like that?
 
I have wsl so I can probably just do it there?
also, white space is relevant in K?
scary
 
ngn
@nathanrogers idk. probably.
@nathanrogers yes, whitespace in k code is significant
 
I assigned c: 0: "test.csv" , c returns a table, space c returns a list?
 
@nathanrogers xxd file.csv should work fine
 
6:43 PM
that's bonkers
 
ngn
@nathanrogers i think a leading space in a line typed in the repl means (or used to mean) "use round-tripping format"
in a .k file a leading space means it's a continuation line
 
6:57 PM
@ngn I'm assuming f/: and f\: are parallells for ⍺ ∘.f ⍵ and ⍺ ∘.f⍨ ⍵
 
ngn
@nathanrogers in ngn/k? for a dyadic f they are eachright and eachleft
 

« first day (1503 days earlier)      last day (34 days later) »