Living The Loopless Life: Techniques For Removing Explicit Loops And Recursion
summary
Claim: a full compiler and parser is implemented in APL without explicit loops or recursion, written as a loopless data-parallel compiler that targets GPU self‑hosting. Tools and tactics: heavy use of array primitives, rank polymorphism, idioms like parent index vector encodings for trees, exclusive scan and replicate to compute offsets and multiplicative replication (parent 4x causes child 16x). Architecture: a nanopass architecture of linear passes and one fixed‑point step; the system runs and debugs via array inspections.
AI-written summary · about
chapters (12)
- 0:00APL for high-level tasks
- 2:58The user experience of APL
- 6:07Core APL arrays and primitives
- 10:22Functional programming in APL
- 12:30Iteration and structural tools
- 17:18Built-in algorithms and idioms
- 20:10Using idioms for reasoning
- 25:06Encoding domain logic into arrays
- 30:14Architecting loopless systems
- 33:21Case study: Function specialization
- 38:28Principles of good notation
- 41:35Q&A: Debugging and performance
related talks
47mWhat APL-like Languages Can Teach Us
27mParsing, Compiling, and Static Metaprogramming
30mLearning Functional Programming with JavaScript
41mA language in 20 minutes
11mIntroduction to functional programming
06mBrian Lonsdorf (loop/recur) interviewed at Fluent 2014
39mCollapsing Towers of Interpreters
43mFirst-Class Programming
