
On Sat, Feb 06, 2016 at 12:12:47PM -0500, Edward Kmett wrote:
As you dig deeper into Haskell you'll eventually need to understand what these mean to reason about anything beyond first order code.
The primitives that GHC uses to implement arrays, references and the like live in #. We then wrap them in something in * before exposing them to the user, but you can shave a level of indirection by knowing what lives in # and what doesn't.
But even if you never care about #, Int, Double, etc. are of kind *, Functors are of kind * -> *, etc. so to talk about the type of types at all you need to be able to talk about these concepts at all with any rigor, and to understand why Maybe Maybe isn't a thing.
I think this is a bit pessimistic. I've been a professional Haskell developer for some years without ever needing to know what # is. I'm pretty sure that a professional Haskeller could be comfortable only know about * on a vague, intuitive level. Tom