| As soon as you have side-effects (an IO is a side-effect) you can through your assumptions about "strict conformation to definition" out of the window: ---
treats computation as the evaluation of mathematical functions and avoids changing-state and mutable data.
--- > It is much harder to stay true to that definition using the other languages, multi-paradigm or not. I doesn't matter if it's "hard". Your argument was that "Only Haskell strictly conforms to that definition." No. Haskell conforms stricter. It doesn't mean that none of the other languages are not FP, or cannot be used to program in functional style. > That is why Haskell is so often mentioned in the context of FP. Yes. And the problem is that people treat the features that Haskell has as requirements to be considered a functional programming language. - Typeclasses/Liquid types/Dependent types are not FP - Pattern matching is not FP - Laziness is not FP - A whole bunch of anything else is not FP |
Again, you are unfortunately quite wrong. You do not understand the IO Monad. No IO is ever performed in any code written inside the IO monad (unless using unsafePerformIO).
Please take some time to fully understand Haskell before criticising it so openly on a public forum. Perhaps then it might not all seem rather pointless.