Subject: Updated Records Enclosed... (06-13)

From: Confirm Roommate Identity <[email-masked]>
Date: Fri, 13 Jun 2014 13:22:26 -0700

Just think about all of the people that are around you and your kids
Babysitter, CoWorkers, Cleaning Lady, Landscaper...

What if 1 of those people is a criminal?

*** Trust your gut and check their Background ***

> > Remain anonymous and Enter Any Name Below <<

=============================================
Step 1 | Enter Name Below : 
/ http://www.icevat.com/local/criminal/report.index
=============================================

To stop further notifications from Member Update Systems
9167 ROAD 177_O a k w o o d, Ohio 4 5 8 7 3 or http://www.icevat.com/3rou/srgr5/werkgt450/w4otu400/dhbri3.wregve

orvig piece is mentioned several times below. It's quite a respected article and he argues the specific point that you are arguing against. I reckon you can't declare it as false without engaging with it's arguments in a bit more depth.   andybak Sep 17 '10 at 15:24 
  	  	
@Tony: it's a simplification. What about it bothers you, exactly? @Rubendv: Singletons aren't applicable to functional languages, which is pretty much my point.   jalf Sep 17 '10 at 17:51 
  	  	
It's not a simplification. It's simply false. That is what bothers me, but not as much as it bothers students who are trying to learn and are misled by these statements. It takes a lot of effort to back them out of it. At least, this has been my experience teaching. You are better off not saying anything, than to say a false statement that masquerades as a useful simplification (it seems you have even tricked yourself here). I don't doubt your sincerity in your efforts to help, but be aware that it's easy to accidentally do quite the opposite, which you have done.   Tony Morris Sep 27 '10 at 0:58 
1	  	
@Tony: could you explain, instead of simply saying I'm wrong? How do pure FP languages allow mutable state and side effects then?   jalf Sep 27 '10 at 3:10
There are several things wrong. First, FP languages do not allow mutable state and side-effects. At All. Languages such as Haskell use an IO type constructor to "tag effects" by wrapping values that require a RealWorld argument. Such functions are explicitly not side-effecting. You'll notice no use of the word "monad" 
  	
@jalf: Second, other languages like Clean use a technique called uniqueness typing, which is different altogether to the IO type constructor.   Tony Morris Sep 27 '10 at 3:47
  	
@jalf: In Haskell, the IO type constructor just happens to be a monad. It is also: a covariant functor, a pointed functor, an applicative functor and many (MANY) other things. That it is a monad is completely irrelevant to the matter of tagging effects or, as you (inappropriately) menti: In other words, a monad has absolutely nothing at all to do with effect tracking. Indeed, I can think of monads that pop up in every day programming that are completely departed from I/O. These monads occur in all sorts of programming languages, including those that explicitly depart from the FP thesis.   Tony  You also state, " of monads is somewhat distinct from the math concept of monads. The former is a pattern used to get around certain "limitations" in pure FP languages. The latter is a universal mathematical concept." This kind of disinformation explicitly reinforces a horrible misunderstanding of the concept both on your behalf and your readers.   Tony Morris Sep 27 '10 at 3:48
 That your incorrect and misleading explanation has so much appraisal is very disappointing. I hope you understand this, rather than take my protests personally. I know you meant well, but you unintentionally undo a lot of hard work. There is simply too much incorrect information to continue addressing it all here, so I hope you get a taste of what I wish to convey.   Tony Morris Sep 27 '10 at 3:48
1