So is there something like IO-Monad in Coalton?
I think that's the greatest feature of Haskell. Divide every program into two parts, one that can have side-effects and one that can not.
Coalton has a monad type class (and applicative etc.) but it is not a pure language, so it has no special annotation for side effects.
That sounds nice in theory, but real programs have multiple channels of IO going on: std IO, logging, network, database, file system. I follow discussions in Haskel groups sometimes, and combining and untangling multiple monads is a persistent problem that doesn't have a good solution yet.