Yes I think that showing the Maybe and List implementation of monads is essential. They&#39;re practical and in a lot of ways they represent two completely different types of computation demonstrating the flexibility of the Monad abstraction. Thanks for that suggestion.<br>
-deech<br><br><br><div class="gmail_quote">On Mon, Aug 9, 2010 at 4:33 AM, wren ng thornton <span dir="ltr">&lt;<a href="mailto:wren@freegeek.org">wren@freegeek.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div class="im">aditya siram wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Thanks all for you suggestions!<br>
Upon further reflection I realized that my audience is more pragmatic than<br>
theoretical. Instead of emphasizing how monads are constructed and the monad<br>
laws I think I want to dive right into the most common and useful monads.<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
>From my vantage point they are (in no particular order) : Reader, Writer,<br>
</blockquote>
State, IO, ST, STM, Parsec (have I missed any?) and of course the<br>
transformer versions. I am debating whether or not to add [] to the bunch.<br>
</blockquote>
<br></div>
Whether you add [] or not, you should definitely include Maybe. Maybe captures the most basic kind of fallible computation, so it shows up all over the place with pragmatic coding. Compare against null pointers, returning -1 to signal error when a positive number is the expected return, using 0 to express an infinite limit on some kind of resource, etc. Maybe does the same thing, except it does them cleanly and correctly because we express the possibility of failure in the type system instead of relying on &quot;magic values&quot; to express them. Magic values are even worse than magic numbers and other magic constants, IMO.<br>

<br>
Once you&#39;ve explained Maybe, you can mention (Either a) in passing; they should figure out the generalization immediately.<br>
<br>
-- <br>
Live well,<br><font color="#888888">
~wren</font><div><div></div><div class="h5"><br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org" target="_blank">Haskell-Cafe@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
</div></div></blockquote></div><br>