This is for study of programming in array languages such as APL, J, BQN, and K, as well as array-oriented features of other languages and notation such as einstein notation, numpy broadcasting, mathematica’s threaded. We may even get into discussions of combinatory logic.
We have recorded 17 study sessions which cover all the Dyalog APL glpyhs. Click on the image below to access the playlist of all the sessions.
Once you finish a Dyalog APL session in Windows, you may need to switch back to the normal keyboard setting to make the Ctrl key work again
To start all arrays from 1 (the default) :
⎕IO ← 1
To start all arrays from 0:
⎕IO ← 0
In Dyalog, click the [1|2] button to turn on/off boxes around each element
Adding a ⊢ before a variable assignment allows you to display the variable without an additional line (A ← 3 assigns 3 to A vs ⊢A ← 3 assigns 3 to A and prints out the value in A)
to have a high minus ¯3, use backtick 2 (or ctrl-2) and enter 3
for multiline statements/functions, start with ]dinput. Otherwise, use ⋄ (statement separator) to “joint” them together - full explanation here
Quite interesting to see such an unusual (in my option) for Deep Learning / ML community topic; trying various programming languages/paradigms is a great idea. Though I never tried array-programming, the time when I hit into functional languages had a significant impact on how I write code now.
I wonder if there are any industry examples or known frameworks in these languages? Beyond their influence on array notions in other languages, of course.
Also, what is your opinion of Haskell/OCaml and alike? I was always thinking about them as a sort of “executable math”, too.
This video from 1975 is cool! I liked the explanation about the way the interpreter takes input. Your input is on the right side, and the responses from the interpreter are on the left. I was reminded that this is how all messaging systems work.
Now, I’m wondering, why can’t I just iMessage or text an APL or Python interpreter in the cloud right from my messaging client? I’m sure I can, I just haven’t looked hard enough
Eh, you might find this podcast episode this interesting.
Conor Hoekstra started with Competitive Programming. He now works as a DLer in NVIDIA. He talks about how working with APL helps him working at NVIDIA because array-like structures are everywhere in Deep Learning, and such concepts are also helpful in parallelizing- the dealmaker of the current AI summer.
Excited to see that Jeremy is starting study sessions about APL. I just wanted to share that there is this fun podcast about APL and other array programming languages that you can check out: Array Cast. Some of my favorite episodes are:
Joe Kaplan: This one is a fun one b/c you will get an idea of the influence that APL has had in many of the technologies and tech companies that exist today.
Unfortunately due to timezone restrictions, I wont be able to attend the study sessions but I look very much forward to the recordings.