In The APL Orchard, ngn said:
the or-dot-and [∨.∧] trick is one of the most beautiful apl expressions ever, worth staring at :)
Well I had better learn it then...
Apparently it computes a transitive closure of a binary relation. Let's hit Wikipedia.
In The APL Orchard, ngn said:
the or-dot-and [∨.∧] trick is one of the most beautiful apl expressions ever, worth staring at :)
Well I had better learn it then...
Apparently it computes a transitive closure of a binary relation. Let's hit Wikipedia.
Mildly interesting results from string analysis of a handful of k files. If you have more public k files or suggestions for further analysis, comment below!
This uses the latest Shakti.
Corpus:
Thought experiment:
Which k primitives can be implemented as k-strings, reasonably efficiently, with a handful of 'native' built-ins?
Not verified to be in dependency order yet... may depend on the choice of 'fundamental' primitives. Need to do speed tests too.
k9 syntax (download via Shakti). Got a better way to write one? Feel free to comment, you'll be credited!
| # Unevaluated | |
| A `wrap attribute that causes overindexing to auto-mod based on length of list. | |
| Avoids mismatch of behaviour of i# and -i#. Cut will auto-fill if not long enough. | |
| Negative indexing wraps backwards: (`wrap"abc")[-1] is "c" | |
| Requires `null to go back to default behaviour? | |
| ## Slice as basis for lots of primitives | |
| Inspired by ngn's https://chat.stackexchange.com/transcript/message/59004538#59004538 ... |
This is the story of what happened when I went down a rabbit hole.
It starts with k7. If you press Ctrl-] in the k7 WASM console, this appears:
x^x*/:x:2_!100
That's a prime number filter. There are faster ones - kparc.com's x,1_&&/80#'!:'x is beautiful - but this one is really short.
I'm sorry to tell you, but group is gone.
If you check out the latest k.d on shakti.com as at 28 March 2023, you'll see that 'unary' = is now 'freq' (frequency).
Group had a long life: it's been around since at least k2, or 1996.
So why did group go? And what should we use instead?
Code examples are in ngn/k, a dialect where int null is 0N and a list find miss is 0N, not #list.
It would be nice if a grouped list gave empty int list for an outdex, and outdex of frequency gave zero. (See here for more.)
x:="abracadabra"