Is there some major “modern” language or library that I’m unaware is actually an APL in QWERTY clothing? I’d love to give it a try.
Is there some major “modern” language or library that I’m unaware is actually an APL in QWERTY clothing? I’d love to give it a try.
You can't be "constantly amazed" unless you have checked for those things -- because J (and other dialects) have been a thing for decades!
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.
You've just replaced symbols, in that case, so to advocates it's a concession to typing, not expression or thinking.
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;I strongly suspect that the number of people who have modified their keyboards, fiddled with their keyboard layouts, or bought "programming keyboards" of one sort or another for working in the "curly brace languages" is an order of magnitude greater than the number of people who ever wanted an APL keyboard. Yet this is not seen as a problem with these languages, or a reason to abandon them. With the benefit of these additional decades of experience with languages, programmers, and keyboards the 1980s notion that the keyboard was the problem should be perhaps finally laid to rest; given the evidence of the intervening decades that programmers can and do adapt their keyboards to their languages.
The idea that APL wasn't adopted because programmers were stuck with keyboards that did not match it is 1980s received wisdom, recirculated in part because people look back at history such as this very item at hand. We have, however, over three decades' worth of experience of a world where programmers very much do change keyboards to suit their needs. The evidence of subsequent and even contemporary history shows that the received wisdom is wrong.
A case in point that is even contemporary to Dijkstra's letter: In the 1980s, the ZX80 and ZX81 came out, famously with keyboards that could directly enter tokenized BASIC, token by token. Yet the fact that one could not do this with (say) a PC/XT keyboard (or even a QL keyboard, for that matter) was not seen as a problem with BASIC, or a reason to abandon it.
Documentation & source code:
http://www.softwarepreservation.org/projects/apl/APLSoftware...
Which includes maybe the (greatest;worst;most horrifying) header file: https://github.com/PlanetAPL/a-plus/blob/master/src/a/arthur...