[Haskell] Why is newChan in the IO Monad?