@neauoire It feels like a wonderful logical extreme to pure functional programming. Any interaction that can't be handled by matching, copying, and moving data is impure.
Your addition operation is now
(+) : Int -> Int -> IO Int