In essence, the point of the IO monad is to "tag" values as IO when there's a possibility of state. Once you enter the dimension of state, you can of course not remove the idea that side effects have occured. Therefore, it is recommended to keep your code
Using do-notation and the monadic functions, it isn't too hard to make working with monads not too difficult, and for some, fun =)
Until this US Thanksgiving, I never realized that monads and turkey go together so well! Thank you Erik for your excellent tutorials. Hopefully the future of code will be more sane from your efforts =)
Erik Meijer, and everyone involved with this project, thank you so much! I'm studying haskell and f# on my own alongside my university courses and I cannot express how much I appreciate you guys putting hard work in explaining fairly what functional programming
is about. I don't want to be greedy and keep all the fun to myself =).