I agree, it’s a bit too heavy. In fact, since most users probably won’t ever ever ever need that type, let’s only impose it on those who explicitly agree to see it:

> :t ($)
-- Note: the actual type is slightly more generic; set -fshow-levity
-- or use :t# instead of :t to see the fully generic form.
($) :: (a -> b) -> a -> b

On 02/06/2016 03:06 AM, Mihai Maruseac wrote:

On Fri, Feb 5, 2016 at 6:22 PM, Artyom <yom@artyom.me> wrote:
Why not just make GHCi output a comment whenever the type involves levity?

:t ($)
-- Note: the actual type is more generic:
--
--     ($) :: forall (w :: GHC.Types.Levity) a (b :: TYPE w).  (a -> b) -> a
-> b
--
-- For the absolute majority of purposes the simpler type is correct.
-- See GHC Guide chapter X point Y to learn more about this.

($) :: (a -> b) -> a -> b

Wouldn't this look like a scary error to some users? Though, users can
get accustomed to this and this solution seems to be the best of both
worlds.