GHC typing too constrained
for the following program:
module Bug where
f :: Maybe Bool
f = g ()
g () = do { f; error "bug?" }
If I ask ghci (version: 6.4.1) what the type of g is, it says:
*Bug> :t g
g :: () -> Maybe Bool
However, I think it should be:
Bug> :t g
g :: () -> Maybe a
as reported by Hugs (version: March 2005).
I first thought this was a monomorphism-restriction gotcha, but g is obviously a function, not a constant. And Hugs reports the more general expected type anyhow.
I'm curious to see if this is a real bug or some weird interaction with ghci..