In Haskell, you can throw an exception from purely functional code, but you can only catch in IO code.

  • Why?
  • Can you catch in other contexts or only the IO monad?
  • How do other purely functional languages handle it?
Edit
Report