1. 25
  1.  

  2. 15

    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.