Noticed today that in the ghc 6.5 branch, the following program is valid:
main :: IO String
main = return "hello, world"
This works for any return type, in Show, it seems. (Except, notably, ()).
$ runhaskell A.hs
"hello, world"
/home ::
/haskell ::
permalink ::
rss