Haskell has excellent I/O support. How do you mean that Haskell makes I/O difficult?
Haskell has excellent I/O support. How do you mean that Haskell makes I/O difficult?
Composability is different since effects must be explicit, which is both a strength and weakness of Haskell. So say you want to add an effectful computation P in some function G, G and all its callers must have modified signatures accordingly. That could be annoying depending on what you are doing.
PL design is like a box of tradeoffs.
log "Var x =" x
Having taken the rite of passage that is writing my own monad tutorial, I would agree, the concept is both easy and intuitive. Getting it in to your head, however, takes considerably more work than in any other language I've used.