monads are described as the haskell solution to deal with IO. I was wondering if there were other ways to deal with IO in pure functional language.
Besides linear types, there's also effect system.