« first day (2479 days earlier)      last day (181 days later) » 

9:22 AM
When I set a breakpoint for a line, my tracing window closes and my cursor jumps back to the REPL with the prompt FN[347] where FN is indeed the function that I'm tracing and 347 is the line number where I've set a breakpoint. How can I prevent the tracing window from closing?
 
@11Kilobytes Are you sure it is closing, not just unfocused? Press <TC> (normally Ctrl+Enter) to jump to it.
 
@Adám I just pressed Ctrl+Enter (which normally does run <TC>, e.g. when I enter an expression in the REPL and press Ctrl+Enter I start tracing it)... and nothing happened.
 
No, I mean after you get the FN[347] press <TC>
Maybe even <EP> (Escape) works.
 
Nope.
 
Very strange. I'm beginning to suspect something is off with your setup, as I couldn't repro the stop-on-line-zero issue.
 
9:29 AM
Ok, I'm using zero footprint RIDE... I can try the full RIDE first to see.
 
OK, do that. Otherwise, if you want, we can try a video call and have a look together. If so, email me (adam@).
 
9:54 AM
While I'm busy fetching dependencies... I doubt that even using the full RIDE would help because I can cause this behaviour in the Unix TTY as well.
 
 
2 hours later…
11:53 AM
@11Kilobytes OK, I'm available now per the email I sent you. Ping me if you want to meet.
 
12:25 PM
@Adám Hello there, sorry for the late response. I'm available now and for the next 30 minutes... otherwise we would have to try tomorrow.
 
@11Kilobytes OK, let's meet now.
You might consider nuking the entire APL installation and starting over with latest versions.
 
hmm, I'm running 18.2.45405 which is the latest one right?
 
Yeah.
You could try downloading 19.0
 
hmm, sure... will do and report back by email.
 
Oh, wait, it seems 19.0 isn't available anymore. :-(
 
12:39 PM
:D
do you mind if I record a video showing my problem and send a link to it to you by email? that's after I fixed my sound issue though.
 
I don't mind, but maybe better to send it (also) to support@
 
1:36 PM
suggestions for a glyph that does set insertion? so 1 2 3 (g) 3 is 1 2 3 and 1 2 3 (g) 4 is 1 2 3 4
oh wait that's just Union isn't it
 
yup
 
I kinda want to have functions for maps/dictionaries in tinyapl, not sure if they should be system names or standalone glyphs though
 
Do you have maps/dictionaries as a native type?
 
no, but that actually sounds kinda interesting
potentially outside the scope of a tiny apl though
 
Yeah. Traditional APL implementations did just fine without such. Dyalog has namespaces, but they have two quirks, seen from a map/dict perspective: 1. They are pass by reference, rather than by value like all other APL arrays. 2. Keys are restricted to valid identifiers.
The traditional way is just having two arrays (or with the introduction of nested/heterogeneous arrays, a single nested array), one for the keys and one for the values.
 
1:47 PM
okay here's the whole story: I'm not sure if I want to implement Variant, but if I do I'll probably opt for a special name (probably π) that's a dictionary of the passed options (so there is some normalization involved), which lead to considering having primitives for dicts
@Adám { "a": 1, "b": 2 } is ('a' 'b')(1 2), not ('a' 1)('b' 2) like I'd assumed was standard?
 
@RubenVerg Ah, so every function can take variant and access it via that special name, kind of like χ for axis in GNU APL?
 
ye, that's the inspiration
 
@RubenVerg ('a' 1)('b' 2) is a common way to specify name–value pairs, yes, but ('a' 'b')(1 2) is much faster to process and do lookups for. E.g. if you want to find all the keys that have values over 10, you do keys/⍨values>10 — try doing that with name–value pairs!
My father used to define where←⌿⍨ for this purpose, so you can do SQLy queries like name where age>18
 
yea, I can see the advantages of the former in an array language now that I consider the option
it's basically the dict-of-arrays/array-of-dicts choice transposed to APL
 
Hm, isn't that an odd definition of dict? I'd say it is an array-of-records/array-of-columns question.
 
1:55 PM
opinions of for set and for get? (though for an APL without namespaces, and therefore dot-access, is somewhat unjustified)
 
I'd need to see the whole syntax.
 
@Adám array-of-dicts/dict-of-arrays is a narrower choice than apl's array-of-pairs/pair-of-arrays, but somewhat similar in concept
@Adám dict ⍇ key val, dict ⊡ key [default-value]
 
This is an array language. What if you want to set or get multiple keys in one go?
 
dict ⍇ (key1 val1) (key2 val2) (key3 val3)?
or, I suppose, dict ⍇ (key1 key 2 key3) (val1 val2 val3)
or just stick the key/vals in a matrix
1 and 2 are clearly incompatible, 3 is probably compatible with either
 
Ooh, but then you have an ambiguity for a single pair. You'll probably want dict ⍇⊂key val
Do you plan on restricting what constitutes a valid key?
 
2:01 PM
turns out designing new primitives is much harder than I thought :) there's some things I somewhat often go "this could be a primitive" and then think about it and realize it'd be way too narrow-cased to be added
 
Hehe, literally my life.
 
@Adám don't think so
@Adám right, that's a problem
I was thinking it'd be the same as Index but no, Index solves it by only accepting numbers
 
Once it is published, you may want to see my Dyalog '23 presentation on the subject (slides are available).
 
is ⎕NS always able to disambiguate between its current usage and setting values?
I suppose current ⎕NS with left namespace is invalid, so probably yes
 
This is just an extension of what ⎕NS already does.
'target' ⎕NS 'name' sets name in target to have the value of name here. Adding a second element would make it use that as value instead.
 
2:18 PM
okay, I see it now
 
2:28 PM
dict get with the two arrays is just (keys⍳key)⌷values,default right?
though dict set is somewhat harder - it needs to return both arrays in case you create a new key
 
@RubenVerg key should be enclosed or have multiple values, but yes.
 
til @ doesn't work with indices outside the array provided
any particular reason why 0@5⊢⍳3 doesn't just return 1 2 3?
 
In the case where the left operand is a function, it has to apply that function exactly once. On what?
 
an empty array?
 
Of what?
 
2:35 PM
whatever the prototype for the right argument is
 
That depends on the subset it needs to apply to!
 
hm, fair enough
so, how to write a decently short dict set?
 
@xpqz wrote something on that. Trying to track it down.
 
3:43 PM
@RubenVerg Maybe something like {i←(⊃⍺)⍳⊣/⍵ ⋄ i>≢⊃⍺:⍺,∘⊂¨⍵ ⋄ (⊢/⍵)@i¨@2⊢⍺}
 

« first day (2479 days earlier)      last day (181 days later) »