GHCi игнорирует тип подписи

Prelude> let myprint = putStrLn . show
Prelude> :t myprint
myprint :: () -> IO ()

ОК, ничего необычного здесь. Полагаю, что по умолчанию GHCi использует правила по умолчанию ...

Prelude> let myprint = (putStrLn . show) :: Show x => x -> IO ()
Prelude> :t myprint
myprint :: () -> IO ()

Что это за колдовство?? Вы в упоригнорирование мое объявление типа ?! О_О

Есть ли способ убедить GHCi сделать то, что я на самом деле собирался?

Ответы на вопрос(2)

Ваш ответ на вопрос