3 ms·
I am more amazed that there is almost no version that supports English words properly. I get that APL fans are married to the terseness, but 1) it's trivial to
by dTal 9y ago
I am more amazed that there is almost no version that supports English words properly. I get that APL fans are married to the terseness, but 1) it's trivial to do, all the symbols are named anyway, 2) if you're going to abandon the "custom symbols as a tool for thought" you might as well use words instead of line noise, since you have sacrificed the symbol-concept mappping, and 3) it'd be a great way to smooth the learning curve! You already have to remember what a concept is called and what it does - why impose remembering the symbol immediately?
J supposedly supports English verbs as an alternate syntax - there's a library that purports to do this - but I have never managed to make it work in the interpreter at all. It's certainly a second class citizen, if not entirely broken.
The only APL dialect that uses English words I've ever found is QNial. It's a lot of fun to program in as a result (its syntax is also cleverly compatible with s-expressions), but it's hampered primarily by the ancient interpreter and lack of bignum support.
- pvg 9y agoif you're going to abandon the "custom symbols as a tool for thought" you might as well use words instead of line noise, since you have sacrificed the symbol-concept mappping You've just replaced symbols, in that case, so to advocates it's a concession to typing, not expression or thinking.
- hoosieree 9y agoI think Q/KDB+ is probably the closest to what you're asking for - mostly English words with a direct mapping to the underlying array primitives. Regarding J specificaly: Some words (sort, inverse, each, every) are in the standard library and loaded by default. What have you tried? You can define your own cover words for the built-ins (here I've added a cap ([:) to signal a domain error if the word is used with 2 arguments when it expects 1, and vice versa): times =: [: : * signum =: * : [: sum =: +/ : [: count =: # : [: J programmers don't do this for the same reason JavaScript programmers don't do this: var ArithmeticOperationsLibraryWhichIsIncludedByDefault = Math; var TheLibraryRegardingTheBrowserWindow = window;