[Haskell-cafe] puzzling polymorphism behavior (7.0.3 windows)

gladstein at gladstein.com gladstein at gladstein.com
Thu Mar 15 17:53:34 CET 2012

Why does the following program compile and produce the results it does?
It seems like 3 and "x" got interpreted as the same type, (). Thanks in
advance for your help.
import Data.IORef
import System.IO.Unsafe

cell = unsafePerformIO $ newIORef []

push i = modifyIORef cell (++ [i])

main = do
 push 3
 push "x"
 readIORef cell >>= return

*Main> :browse
cell :: GHC.IORef.IORef [a]
push :: a -> IO ()
main :: IO [a]

*Main> main

More information about the Haskell-Cafe mailing list