Just to add some context, Strudel is TidalCycles ported from Haskell to JS. IMO, Haskell is a much nicer language for this stuff. Hopefully, now that GHC can output WebAssembly, someone can build a web-based music programming environment around the original TidalCycles instead.
> even python might be too far from the CPU to be a good introduction to computing
That depends on what one considers to be the best way to introduce computing. I personally think kids are a lot less likely to be engaged by a bottom-up approach (start with "this is what hardware does") than a top-down approach (start with "you can make cool things with it").
> AIUI, in this case, the major issue is that it is very tempting to try to impose a constraint that all intermediate states the code passes through are semantically valid. However while superficially appealing this turns out to be a crippling constraint.
This really isn't much of an issue in a language with holes as a first class concept, like Agda or Haskell.
It's quite frustrating to use a language that's so close to Haskell, but without being able to use all the libraries you're used to. And I think now that Haskell's own story for web frontend is improving, some of its appeal is fading.
Having used it in production for a while, tooling was poor, particularly IDE support, and anonymous records are in practice less of an obvious win than I expected. Plus I like laziness.
I don't see how it's true in any meaningful sense. It seems about the same as stating that any function is an example of the reader monad.
The whole point of monads in programming languages is as an _abstraction_ that allows one to ignore internals like how the IO token is passed around.
Maybe Zig is a language for people who are scared of abstraction. Otherwise they'd presumably be using something more powerful like Rust.