[Haskell-cafe] Language complexity & beginners (Was: New type of ($) operator in GHC 8.0 is problematic)

Evan Laforge qdunkan at gmail.com
Sun Feb 7 09:22:29 UTC 2016

1, Just to clarify, there are no actual known uses for a
TypeRep-polymorphic ($), right?  I thought I saw someone say that.

2, ($) has had a fib in its type for a very long time, but did it ever
hurt anyone?  The closest I saw was a generalized concern about it
being bad when people report a bug and then hear that things are more
general than they thought and I guess this makes their bug not a bug
or something?  Results in some confusing back-and-forth?  It would be
nice to get more specific about how much trouble the ($) lie has

3, Is anything other than ($) TypeRep-polymorphic?

If 2 is "not very much", an obvious solution is to keep lying and not
worry about it.  But clearly someone had a reason strong enough to
make this change... what was it?

If 1 is "maybe not" then an obvious solution is to just make ($) not
TypeRep-polymorphic.  I can't imagine that not being able to use ($)
is a serious problem if you're working with # types, given that there
are already tons of other restrictions.

I hesitate to get distracted from the specifics, but I agree with Ben
Lippemeier in that I like how haskell doesn't make me worry about
boxed vs. unboxed.  I'm not saying one little type annotation on one
operator is suddenly making me worry since I've never even thought to
run :t ($).  But I'm happy that # is mostly off in its own little
corner and you don't even have to know it exists until you need to get
into low level optimization.

More information about the Haskell-Cafe mailing list