<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">2014-11-18 0:59 GMT+01:00 Christopher Allen <span dir="ltr"><<a href="mailto:cma@bitemyapp.com" target="_blank">cma@bitemyapp.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">My recommended order for learning:<div><br><div><br></div><div>Functor, Applicative, Monad</div><div><br></div><div>Alt, Alternative, MonadPlus</div><div><br></div><div>Foldable, Traversable</div><div><br></div><div>Bifunctor, Bifoldable, Bitraversable</div><div><br></div><div>Contravariant, Profunctor</div><div><br></div><div>Strong, Choice</div><div><br></div><div>Lens, Prism, Iso, Traversal</div><div><br></div><div>Implement your own Van Laarhoven lenses. It's difficult, but tel/sdbo has a tutorial here: <a href="http://codewars.com/users/tel/authored" target="_blank">codewars.com/users/tel/authored</a> (called Lensmaker)</div><div><br></div><div>References/examples for aforementioned typelcasses:</div><div><br></div><div><a href="https://github.com/ekmett/semigroupoids" target="_blank">https://github.com/ekmett/semigroupoids</a> (Alt)<br></div><div><br></div><div><a href="https://github.com/ekmett/either/blob/master/src/Data/Either/Validation.hs" target="_blank">https://github.com/ekmett/either/blob/master/src/Data/Either/Validation.hs</a> (Foldable, Traversable, Bi*, Profunctor, Choice, Iso)<br></div><div><br></div><div><a href="https://www.fpcomplete.com/school/to-infinity-and-beyond/pick-of-the-week/profunctors" target="_blank">https://www.fpcomplete.com/school/to-infinity-and-beyond/pick-of-the-week/profunctors</a> (Contravariant, Profunctor)<br></div><div><br></div><div><a href="https://www.youtube.com/watch?v=Go-RR_2I9CU" target="_blank">https://www.youtube.com/watch?v=Go-RR_2I9CU</a> my monad transformers talk has connected some dots for people on higher kinded types and type variable application (relevant to Contravariant and (->))<br></div><div><br></div><div><a href="https://github.com/ekmett/lens/wiki/How-can-I-write-lenses-without-depending-on-lens%3F" target="_blank">https://github.com/ekmett/lens/wiki/How-can-I-write-lenses-without-depending-on-lens%3F</a> (Lens, Prism, Iso, Choice, Profunctor)<br></div><div><br></div><div>Hope this helps,</div><div>Chris Allen</div><div><br></div><div><br></div><div><br></div><div><br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div class="h5">On Mon, Nov 17, 2014 at 5:48 PM, Gautier DI FOLCO <span dir="ltr"><<a href="mailto:gautier.difolco@gmail.com" target="_blank">gautier.difolco@gmail.com</a>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div class="h5"><div dir="ltr">Hi all,<br><br>I'm using Haskell since nearly three years now and I think I have well understood that types are the most important part of our programs.<br>I have looked all around to learn as many datatypes/typeclasses as possible.<br>But I suffer for a lack of direction to pursue my learning. I have well understood Prelude's one and some random ones (include someones for Category Theory), but I can't handle Kmett's code. Are there some intermediates abstractions I can learn? (For example in some librairies).<br><br>Thanks by advance for your help.<br>Regards.<br></div>
<br></div></div>_______________________________________________<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>
<br></blockquote></div><br></div>
</blockquote></div><br>Hi Chris,<br><br>Thanks for your answer, it appears that some of them are like hidden gems among code of more popular abstractions and you can easily don't care of them if you don't have such a guideline.<br><br>Thanks a lot.<br></div></div>