Speaking as a Haskeller, there are some insightful points here. Good thread.
The toplevel is special-cased – it’s the only place where type, class and instance declarations are allowed. This is basically unavoidable since newtype has an effect (it creates a fresh type constructor) and so you can’t put it in an expression without making the language impure, but it ends up being a big impediment to Haskell ever getting a proper module system.
Yes, indeed!
Laziness: call-by-need does not have a compositional performance model. You have to reason about aliasing – in a purely functional language! – to reason about space usage.
(From the same poster as the previous remark.) Yes, I’ve been saying this. Sigh. :)
Several other good points here that are new to me, including the discussion of structural variants.
Speaking as a Haskeller, there are some insightful points here. Good thread.
Yes, indeed!
(From the same poster as the previous remark.) Yes, I’ve been saying this. Sigh. :)
Several other good points here that are new to me, including the discussion of structural variants.