Does APL Need a Type System? by Aaron W Hsu at #FnConf18
Why Hacker News recommends it
HN points to it as the main argument from the array-language camp that types are unnecessary there, and as a nuanced take on typed versus untyped programming.
What it is
Aaron Hsu's FnConf18 talk asks whether APL needs a static type system. He argues that APL's expressiveness and rapid iteration already deliver the benefits usually credited to types.
Recommended by 3 HN commenters across 3 different months, 2019 to 2025.
What Hacker News said
Strong rec kadblas · 2019-06 · on “Why I think Haskell is the best general purpose language as of June 22 2019”
Qualification: I was introduced to FP a number of years ago and have finally reached a point where I feel that I have a deep understanding of FP in general. In my mind, Haskell is the "best" language out there ("best" in that it provides the best overall gain when all tradeoffs are considered). I'm no longer confident that Haskell is the "best" language anymore. I was recently introduced to a language that might be even better than Haskell: Dyalog APL. ( [LINK] ). Try it out yourself ( [LINK] ) To explain why, I recommend watching Aaron Hsu's videos on Dyalog APL: - Does APL need a Type System? ( [this video] ) - This is actually a very interesting question that is more nuanced than upon first gl
Recommends xelxebar · 2019-10 · on “Dex: A research language for array processing in the Haskell/ML family”
Just starting to learn J, myself, and this brings to mind Aaron Hsu's "Does APL Need A Type System?" talk: [this video] which argues that APL already provides the development ergonomics that are typically acribed to type systems. I.e. why type check your tacit function when it's implementation is about the same length as its type annotation? Anyway, as someone trained in Category Theory and a huge fan of type systems, I found Hsu's argument surprisingly pursuasive. I would love to hear any counterpoint arguments and the motivations behind attempts at giving J a type system.
Recommends eggy · 2020-04 · on “Ode to J”
The right tool for the job. If you are building a huge website with input forms, videos, data collection, ML algorithms, yes then you wouldn't do the whole thing in APL or J even if you could. Python is big in ML because packages for working with data in array language ways were developed. Pandas by Wes McKinney is one example, and he studied J or q, and even tweeted: IMHO J is the best APL for data analysis because of its broad suite hash table-based functions. I like APL and J as a scratchpad where arrays are the basic unit and not scalars. J is functional and it turned me on to that world before I touched Haskell or F#. Aaron Hsu has a lot of great videos that speak to a lot of the usabil
Cites tluyben2 · 2020-01 · on “ngn/k, an AGPL K interpreter”
And I find q verbose :) However my poor statically typed brain is keeps struggling on how to mix Haskell (...) with APL/k. Video on that topic is here[0]. [0] [this video]
Cites rscho · 2021-10 · on “Notation as a Tool of Thought (1986) [pdf]”
Prominent APLers think it doesn't need one. I agree, because APL tries to be close to math, and you don't write types when doing math. You use alternate and overloaded operators. A video on the topic [this video]
Cites tluyben2 · 2023-01 · on “A Dynamic Forth Compiler for WebAssembly”
> I am a Lisp, April, APL/J/BQE, and Forth[2] aficionado. Same taste here, although I have the quirk that I also like types & proofs. Because of Lips, APL(ish) & Forth are so nice and terse, I feel the need, every so many years, to try to combine them. Usually I quickly build something (I build a lot of Forth-likes for embedded and other compiled languages to speed up work without having to compile) that combines these 3. Usually I find that Arthur already did that kind of with Shakti and before with k. For my, however, APL chars are better. Since recently, I use the BQN keymappings to create new things. So then I go into struggling how to add types to something like the above (outside Lisp/
Cites gsf_emergency · 2025-01 · on “Flattening ASTs and other compiler data structures (2023)”
I've given up on finding relevant low-level CUDA(? tacit? asm??!!) code from Hsu*, but I did push the following to my to-watch stack [this video] Does APL need a type system Guess it's time to reverse whatever else I can find [LINK] *Bad faith, or just a run o' the mill, aka compleatly forgiveable profiteering?