There seems to be a lot of confusion around Effects and IO. I wanted to collect a set of questions and answers, and explanations of common misconceptions.
- What is an Effect?
- What is a Side Effect?
- What is a pure function?
- What is equational reasoning?
- What is an IO?
- Is the purpose IO value used to model an effectful computation, such that it can be composed with other computations?
- Is Haskell's unsafePerformIO an impure function?
- Related: Is it true that forall a, IO a is