<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On 26 Aug 2010, at 08:01, michael rice wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><table cellspacing="0" cellpadding="0" border="0" style="position: static; z-index: auto; "><tbody><tr><td valign="top" style="font: inherit;">Hmm... it was my understanding that the example was showing how to *avoid* having to create a&nbsp; lot of functions that do the same thing but have different numbers of arguments.<br><br>From the Wiki page:<br><br>"Anytime you feel the need to define different higher order functions to 
accommodate for function-arguments with a different number of arguments,
 think about how defining a proper instance of <code>Applicative</code> can make your life easier."<br><br>Not so?<br><br><br></td></tr></tbody></table></blockquote>Very much so  instead of defining liftA2, liftA3 etc like this, just use pure to get things into the applicative, and write &lt;*&gt; instead of ' ' to apply applicatives and you're done.</div><div><br></div><div>Don't write</div><div>liftA3 sumsq (Just 3) (Just 4) (Just 5)</div><div><br></div><div>Write</div><div>(pure sumsq) &lt;*&gt; (pure 3) &lt;*&gt; (pure 4) &lt;*&gt; (pure 5)</div><div><br></div><div>or you can get rid of that first pure with a quick fmap:</div><div>sumsq &lt;$&gt; (pure 3) &lt;*&gt; (pure 4) &lt;*&gt; (pure 5)</div><div><br></div><div>Bob</div></body></html>