Hmm, perhaps what we need is another monad tutorial that.....err...never mind. Actually, I&#39;d like to see more written about Applicatives. I think they just finally clicked with me when reading the Typeclassopedia, and seeing the intended way to use them. Before it was always like &quot;ok...so, if I&#39;ve got a function already in my functor, I could use this, but...why would I have that?&quot;<br>
<br><div class="gmail_quote">On Thu, Mar 12, 2009 at 10:28 AM, Thomas Davie <span dir="ltr">&lt;<a href="mailto:tom.davie@gmail.com">tom.davie@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im"><br>
On 12 Mar 2009, at 15:16, Andrew Wagner wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Can you expand on this a bit? I&#39;m curious why you think this.<br>
</blockquote>
<br></div>
For two reasons:<br>
<br>
Firstly, I often find that people use the Monadic interface when one of the less powerful ones is both powerful enough and more convenient, parsec is a wonderful example of this.  When the applicative instance is used instead of the monadic one, programs rapidly become more readable, because they stop describing the order in which things should be parsed, and start describing the grammar of the language being parsed instead.<br>

<br>
Secondly, It seems relatively common now for beginners to be told about the IO monad, and start writing imperative code in it, and thinking that this is what Haskell programming is.  I have no problem with people writing imperative code in Haskell, it&#39;s an excellent imperative language.  However, beginners seeing this, and picking it up is usually counter productive – they never learn how to write things in a functional way, and miss out on most of the benefits of doing so.<br>

<br>
Hope that clarifies what I meant :)<br>
<br>
Bob</blockquote></div><br>