← Back to context

Comment by xelxebar

2 days ago

> Array programming is similar to functional programming – the primary way to control execution involves composition of functions – but APL tends to encourage the reliance on global properties and sweeping operations rather than low-level recursion4.

This AoC solution is, indeed, quite the functionista! Better yet, it leans heavily into point-free expressions. The style is pretty popular amongst APL language enthusiasts and puzzlers.

That said, you actually see quite different APL styles in the wild:

- Pointed declarative style, also a popular with functional programmers (e.g. anything like this[0] from the dfns workspace)

- Imperative, structured programming, very common in legacy production systems (e.g. this[1] OpenAI API interface)

- Object-oriented, also common in somewhat newer production environments (e.g. the HTTP interface[2])

- Data-parallel style (e.g. Co-dfns[3])

Heck, APL even has lexical and dynamic scope coexisting together. IMHO, it's truly underrated as a language innovator.

[0]:https://dfns.dyalog.com/c_match.htm

[1]:https://github.com/Dyalog/OpenAI/blob/main/source/OpenAI.apl...

[2]:https://github.com/Dyalog/HttpCommand/blob/master/source/Htt...

[3]:https://github.com/Co-dfns/Co-dfns/blob/master/cmp/PS.apl