"Typing Haskell in Haskell" makes the implementation of type systems concrete for programmers; recent developments in type theory have much to offer but are not developed to this depth even in theory. Row types are particularly juicy because one does not lose type inference; we can use the exact same unification approach and need not resort to ordered contexts or focalization.
Elliptic Fourier series are a good example to kick the tires on array programming systems; J and Python, however, are both dynamically typed.
APL is truly different from other languages; nearly every language uses lexical scoping to express composition. Both GHC Haskell and GCC/Clang use a stack for variables across procedures because it models how variables become available (FIFO). Putatively different languages are constrained by the same fundamentals.
Jacinda can imitate cloc by combining it with other command-line tools on the Unix command-line, viz.
One common oversight in Haskell compilers is failing to intern identifiers
using Ints and failing to prefer IntMaps and IntSets. The PureScript compiler,
for instance, uses Maps as of writing.