<div dir="ltr">This is **very** interesting question! <div>When we recruit people to our company (we are working in Haskell everyday), we are basing on some classification between basic, intermediate and advanced stuff. These sections are shown below. I would love to hear what others are thinking about it and what from the below stuff would be widely considered as "basic Haskell knowledge", which would allow for full-time basic Haskell work.</div>

<div><br></div><div><h1 id="Haskell-Basics" style="margin:0px;padding:0px;font-size:24px;font-weight:normal;line-height:1.25;color:rgb(0,0,0);border-bottom-color:rgb(46,61,84);font-family:Arial,sans-serif">Basics</h1><ol style="margin:10px 0px 0px;color:rgb(51,51,51);font-family:Arial,sans-serif;font-size:13.63636302947998px;line-height:18.18181800842285px">

<li>type classes</li><li>instances</li><li>functors, applicatives, monads, etc (<a href="http://www.haskell.org/haskellwiki/Typeclassopedia" class="" rel="nofollow" style="color:rgb(50,108,166);text-decoration:none">http://www.haskell.org/haskellwiki/Typeclassopedia</a>)</li>

<li>functional dependencies</li><ol><li>Patterson condition</li><li>Coverage condition</li><li>Liberal coverage condition</li></ol><li>monad transformers</li></ol><h1 id="Haskell-Intermidiate" style="margin:30px 0px 0px;padding:0px;font-size:24px;font-weight:normal;line-height:1.25;color:rgb(0,0,0);border-bottom-color:rgb(46,61,84);font-family:Arial,sans-serif">

Intermidiate</h1><ol style="margin:10px 0px 0px;color:rgb(51,51,51);font-family:Arial,sans-serif;font-size:13.63636302947998px;line-height:18.18181800842285px"><li>lens</li><li>arrows</li><li>free monads</li><li>GADTs</li>

<li>Type families<ol style="margin:0px;list-style-type:lower-alpha"><li>closed type families</li></ol></li><li>existential datatypes</li><li>RankNTypes</li><li>church encoding</li></ol><h1 id="Haskell-Advanced" style="margin:30px 0px 0px;padding:0px;font-size:24px;font-weight:normal;line-height:1.25;color:rgb(0,0,0);border-bottom-color:rgb(46,61,84);font-family:Arial,sans-serif">

Advanced</h1><ol style="margin:10px 0px 0px;color:rgb(51,51,51);font-family:Arial,sans-serif;font-size:13.63636302947998px;line-height:18.18181800842285px"><li>templateHaskell</li><li>generics</li><li>continuations</li><li>

delimited continuations</li></ol></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-07-25 0:44 GMT+02:00 Johan Larson <span dir="ltr"><<a href="mailto:johan.g.larson@gmail.com" target="_blank">johan.g.larson@gmail.com</a>></span>:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">What does a programmer need to know to be proficient in "basic Haskell"?<br>
<br>
For my money, basic programming skills are those that are required to<br>
write programs for simple tasks in the common idioms of the language.<br>
This means the practitioner should be able to read input from the<br>
terminal or files, select/combine/reformat data, and output a result.<br>
At this point, efficiency isn't really the point; only getting to a<br>
correct answer without writing anything really weird matters.<br>
<br>
In LYAH, I'd put the boundary at the end of chapter 9, which covers<br>
the IO monad. At that point the reader has studied functions, lists,<br>
tuples, types, recursion, higher order functions, four major modules,<br>
and algebraic data types. Actually, some of the later topics in<br>
chapter 8 (functors, kinds, recursive data structures) seem more like<br>
intermediate material.<br>
<br>
Thoughts?<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
Johan Larson -- Toronto, Canada<br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org">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>
</font></span></blockquote></div><br></div>