Same is true for I/O. You must start from a protocol.
Most of people probably underestimate how many brilliant people contribute to what we could call a modern Lisp.
With all respect, Clojure is nowhere near in terms of sanity, consistency and uniformity.
I don't event want to argue about Haskell. Seems like words "monad" is the same as words "chakra" or "dharma" in a popular culture.))