|
|
|
|
|
by garethrowlands
1452 days ago
|
|
While it's true that `IO` in Haskell has a `Monad` instance, you don't really have to know that to do `IO` in Haskell. Certainly you don't need to know `Monad` in the abstract to use `IO` concretely. I like Haskell's `do` notation, which is its syntax sugar for monads, but it's really not that bad without. For example: do name <- getLine
putStrLn ("Hello " ++ name)
isn't really that much nicer than: getLine >>= \name-> putStrLn ("Hello " ++ name)
or even: getLine >>= \name->
putStrLn ("Hello " ++ name)
The main reason that monads are important in Haskell is that programs that do IO simply are not functions in a mathematical sense. If Haskell were limited to functions, it wouldn't be able to do IO. |
|