<div dir="ltr">I just recently had a presentation at my local usergroup (Lambdaheads/Vienna) where I introduced the problem of `null` values and the functional solution of using functor, applicative and monad to solve this.<div><br></div><div>The slides are available - <a href="https://github.com/epsilonhalbe/Talks/tree/master/20151021-LH-Func">https://github.com/epsilonhalbe/Talks/tree/master/20151021-LH-Func</a> - if you have comments on them, I'd be glad to hear, during the meetup we had quite a discussion about it, but in the end I think everyone agreed that those abstractions are handy and quite natural in their origination.</div><div><br></div><div>the tldr of it is:</div><div>that in functional languages, one major point of doing things is function composition and to introduce new functions (in this case operators) to solve the problem when domains do not match properly, i.e. to put the complicated part in the composition and not bother the programmer with it.</div><div><br></div><div>I think the "excuse" for `return` existing is historical which I think is no bad thing to say when teaching, because it makes students aware that everything is being improved over time and that they might be the ones helping.</div><div><br></div><div>Cheers Martin</div></div><div class="gmail_extra"><br><div class="gmail_quote">2015-11-20 9:22 GMT+01:00 Joachim Breitner <span dir="ltr"><<a href="mailto:mail@joachim-breitner.de" target="_blank">mail@joachim-breitner.de</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
thanks for your mail! I am circulating it to my Haskell teaching<br>
colleagues, who are facing the same challenges as Johannes.<br>
<span class=""><br>
Am Donnerstag, den 19.11.2015, 21:00 -0430 schrieb Manuel Gómez:<br>
> The three classes are distinguished by their expanding<br>
> APIs, and it’s helpful, if you have enough time for the lesson, to<br>
> show types that are Functor but not Applicative (e.g. «(,) e»).<br>
<br>
</span>There is the instance<br>
    Monoid a => Applicative ((,) a)<br>
Do you touch upon that, or pretend it is not there?<br>
<br>
Greetings,<br>
Joachim<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
Joachim “nomeata” Breitner<br>
  <a href="mailto:mail@joachim-breitner.de">mail@joachim-breitner.de</a> • <a href="http://www.joachim-breitner.de/" rel="noreferrer" target="_blank">http://www.joachim-breitner.de/</a><br>
  Jabber: <a href="mailto:nomeata@joachim-breitner.de">nomeata@joachim-breitner.de</a>  • GPG-Key: 0xF0FBF51F<br>
  Debian Developer: <a href="mailto:nomeata@debian.org">nomeata@debian.org</a><br>
<br>
</font></span><br>_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
<br></blockquote></div><br></div>