From a K book: "Other ideas by Whitney found their way into J: orienting primitives on the leading axis, using prefix rather than suffix for agreement, and total array order- ing (Hui, 2006, 1995)" Even with a decent amount of J experience, it was not clear to me what each of these phrases mean. Can anyone explain?
K implementations often (and imo should) define some ordering for all objects when subject to a grade. even if the comparisons across types are highly arbitrary, consistency and closure is desirable
assuming you have static parsing, the difference between thunks and idioms is that thunks do runtime switches on data-type and array size. is that right? I plan to add idioms on byte-code level for some very few cases. e.g. group (=x) may be much faster when sorted. newer k's always sort. i thought about using the =^x idiom to switch to faster code, but let the user decide if he cares about order or not.
the o "operator" was a k5/k6 thing. ngn/k targets the same dialect, which is why it is largely the same. in q/k4 it's .z.s (as coltim noted), and in k2/k3 it's _f. As usual, k4 is the ugliest-looking of the bunch.
@Jonah ironically, if you downloaded the 32-bit version, you wouldn't be too far off (I believe it's 3.6 versus the latest 4.0). but q/k4 is its own thing. k5 and k6 were never publicly released. k7 and k9 (k8 was skipped) are from shakti and have had trial/evaluation versions available
all the k's are different variations on a theme I guess. what symbols do gets swapped around, some have larger ecosystems than others, some are tied to trial licenses/EULAs
I believe k7 is in the same situation as k6, that is, both briefly existed but were later destroyed by arthur to work on the next version there is still the unofficial wasm interpreter (https://kparc.io/kc/) from kelas but the official binaries from conda are gone
I can see some parallels to the APL space around when APL2 was initially released (if my understanding is correct there were multiple providers of various dialects with minor inconsistencies between them)
@rak1507 from earlier discussions maybe a bit of this with regards to having more f#x/f_x/f^x "overloads", a dash of moving away from higher dimensional data (I#x no longer being reshape, but instead intersection)
lack of nulls seems to be one of the biggest changes.. 1 2@10 returns 0 for example
from the golfing perspective some other changes makes me prefer k6 too, like the bulkier do/while notation, "a"+0 being an error, split only working on single char, no identity matrix, monadic %, etc.