It’s the monomorphism restriction which says that all values, which are defined without parameters and don’t have an explicit type annotation, should have a monomorphic type. This restriction can be disabled in ghc and ghci using -XNoMonomorphismRestriction
.
The reason for the restriction is that without this restriction long_calculation 42
would be evaluated twice, while most people would probably expect/want it to only be evaluated once:
longCalculation :: Num a => a -> a
longCalculation = ...
x = longCalculation 42
main = print $ x + x