Don't forget to join our live webinar today at16:00 UTC - http://dyalog.tv/Webinar. Jay Foad used Dyalog APL in Advent of Code & will talk about his approach to the contest, share tips for writing simple fast code, and show some solutions that worked out well in APL.
@ngn i was wrong. "unparse" means reconstruct the source code from a parse tree (an ast)
U is the testing function whose outputs are included at the end of the file. it's called with various strings as argument. it parses the string, then "unparses" and compares with the original. it prints "original -> parsed-unparsed" and prepends a "*" if they don't match
it's amazing k7 uses `p@ to build an ast - exactly the same as ngn/k
@ktye @x returns symbols. previously it returned ints
`p@x parses a string into an ast (afaict). previously it was (-n)!x for some integer n (i can't remember exactly)
`k@x does something... i haven't figured out what yet
there are indirect signs of other things having been changed or removed - like " "/, but we can't be sure whether it's due to a change or the author just chose the more verbose expression for another reason
also: " "=x could have been ^x, or maybe the meaning of ^ was changed again
the use of o as an identifier shows that it probably no longer means "recur"
@J.Sallé i was aware that more `symbol@x syntax would be coming in newer versions. i liked that, so i adopted it. then, there aren't many ways to abbreviate the word "parse" to its bare minimum
@J.Sallé another one is 1 2 3+/ (without a right arg). in both k4 and ngn/k it evaluates to 6 :) it was totally unintentional (at least in my case). i think i'm not gonna fix that bug :)