<div>Kris,</div><div><br></div><div>Sorry for the confusion, I wasn't directly addressing your post. I was trying to correct what I perceived as a misconception in the last paragraph of Andrew's message, beginning with "Given that…".</div><div><br></div><div>- Joel</div><div><div><br></div></div>
                 
                <p style="color: #A0A0A8;">On Saturday, September 15, 2012 at 10:24 AM, Kristopher Micinski wrote:</p>
                <blockquote type="cite" style="border-left-style:solid;border-width:1px;margin-left:0px;padding-left:10px;">
                    <span><div><div><div>On Fri, Sep 14, 2012 at 10:08 PM, Joel Burget &lt;<a href="mailto:joelburget@gmail.com">joelburget@gmail.com</a>&gt; wrote:</div><blockquote type="cite"><div><div>[snip]</div><div><br></div><div>Also, Maybe and Either are not "implemented as monads". They are defined</div><div>using `data` like you suggest:</div><div><br></div><div>data Maybe a = Nothing | Just a</div><div>data Either a b = Left a | Right b</div></div></blockquote><div><br></div><div>That's not my point, or my objection.  My objection is to people who</div><div>present monads showing examples that begin with Maybe or Either, or</div><div>these 'trivial monads,' types onto which you can strip monadic</div><div>behavior fairly simply.  I'm not saying they're bad as monads, or</div><div>useless, but I think the step from Maybe as a datatype to using it as</div><div>a monad is great enough that explaining monads by way of introducing</div><div>them with Maybe as an example is sort of confusing because it</div><div>trivializes what's actually going on.</div><div><br></div><div>I'm honestly not sure what you mean by Maybe or Either being</div><div>"implemented as monads," versus others.  Monad is just a type class,</div><div>there's always an underlying type.  Perhaps you mean that people</div><div>actually *care* about things in Maybe outside of it being used as a</div><div>monad, versus other things where you don't touch the underlying type.</div><div><br></div><div>This isn't intended to start an argument, however, and I'd prefer not</div><div>to argue over methodology, I just wanted to throw out there that if</div><div>you say "monads, think about maybe, and add some stuff, then that's it</div><div>is, what's all the fuss about!?"  I think the hard part for people</div><div>understanding monads isn't the definition of monads, but rather that</div><div>you are forced to really tackle higher order behavior in a very direct</div><div>way.  (For example, say you're new to Haskell, you probably don't know</div><div>about CPS, and you read about Cont in a monad tutorial.  Is it the</div><div>monad that makes it hard?  No, it's probably the concept of CPS.)</div><div><br></div><div>kris</div></div></div></span>
                 
                 
                 
                 
                </blockquote>
                 
                <div>
                    <br>
                </div>