Christopher Allen <c...@bitemyapp.com> writes: > My understanding was that the implicitly polymorphic levity, did (->) not > change because it's a type constructor? > > Prelude> :info (->) > data (->) a b -- Defined in ‘GHC.Prim’ > Prelude> :k (->) > (->) :: * -> * -> * > > Basically I'm asking why ($) changed and (->) did not when (->) had similar > properties WRT * and #. > Yes, there is a bit of an inconsistency here. As far as I understand there is still a bit of magic around (->), which allows it to be more polymorphic than it appears. There's a bit of evidence of this magic here [1].
Cheers, - Ben [1] https://github.com/ghc/ghc/blob/84b0ebedd09fcfbda8efd7576dce9f52a2b6e6ca/compiler/prelude/TysPrim.hs#L262
signature.asc
Description: PGP signature
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs