<div dir="ltr"><div>I agree 100% with Manuel here. My N is smaller (100s rather than thousands) but this is what I've seen working with self-learners, programmers and non-programmers alike. I don't have anything further to add because I couldn't find a point in his listing that didn't match my experience.<br><br>>
Sorry for the mostly off-topic post, but since a beginner’s Prelude was 
mentioned here multiple times recently as a countermeasure to making the
 real Prelude more complicated, I just want to say, don’t put too much 
hope into a ”solution” you never actually tried.<br><br></div><div>I have tried a beginner's Prelude with people. I don't have a lot of data because it was clearly a failure early on so I bailed them out into the usual thing. It's just not worth it and it deprives them of the preparedness to go write real Haskell code. That's not something I'm willing to give up just so I can teach _less_.<br></div><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Feb 16, 2016 at 5:05 PM, Manuel M T Chakravarty <span dir="ltr"><<a href="mailto:chak@justtesting.org" target="_blank">chak@justtesting.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">> Richard Eisenberg <<a href="mailto:eir@cis.upenn.edu">eir@cis.upenn.edu</a>>:<br>
<span class="">><br>
> On Feb 16, 2016, at 5:35 AM, Ben Gamari <<a href="mailto:ben@smart-cactus.org">ben@smart-cactus.org</a>> wrote:<br>
>> Indeed. I'll just say that I envision that a beginner's prelude would be<br>
>> for learning and nothing more. The goal is that it would be used in the<br>
>> first dozen hours of picking up the language and nothing more.<br>
>><br>
>> I'd be interested to hear what Richard had in mind when he has time<br>
>> again.<br>
><br>
> Yes, that's right. And, of course, it doesn't even need to be something released with GHC.<br>
><br>
> I hope to have the opportunity to teach intro Haskell in the not-too-distant future. Maybe even this coming fall. Though I have yet to look closely at Chris's book, which will be one of the first things I do to prep, I suspect I'll be writing a custom Prelude for my first few weeks of the class, eliminating all type-classes. No Foldable, no Monoid, no Num. And then, by week 3 or 4, bring all that back in.<br>
<br>
</span>As somebody who has taught Haskell to hordes of students (literally, 1000s), I am not at all convinced that this is going to be helpful. This is for the following reasons:<br>
<br>
* Students understand the basic idea of overloading for Num, Show, etc easily (week 1 or 2). We actually tried both doing basic overloading very early or delaying it until later. The former worked much better.<br>
<br>
* You are not in a position to explain Foldable and probably not Monoid by week 3 or 4. So, either you need to have more than one beginner Prelude, delay overloading until much later (awkward), or we are really only talking about the impact of Show, Num, etc here.<br>
<br>
* Changing things (i.e., one Prelude to another) always confuses some people — i.e., there is an intellectual cost to all this.<br>
<br>
* Students will want to use Haskell on their own computers. Then, you need to make sure, they import the right Prelude and that they stop importing the beginner Prelude when you switch back to the normal one. A certain percentage of students will mess that up and be confused.<br>
<br>
What we found works best is the following:<br>
<br>
* Introduce the concept of overloading right away. People get that easily, because they use overloaded arithmetic functions in math, too. (Num and Show are the typical classes to explain it at.) As an example, see how we do that in the first chapter of our new Haskell tutorial: <a href="http://learn.hfm.io/first_steps.html" rel="noreferrer" target="_blank">http://learn.hfm.io/first_steps.html</a><br>
<br>
* Be careful in designing your exercises/assignments (esp early ones), to make it unlikely for students to run into class related errors.<br>
<br>
Sorry for the mostly off-topic post, but since a beginner’s Prelude was mentioned here multiple times recently as a countermeasure to making the real Prelude more complicated, I just want to say, don’t put too much hope into a ”solution” you never actually tried.<br>
<span class="HOEnZb"><font color="#888888"><br>
Manuel<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
_______________________________________________<br>
ghc-devs mailing list<br>
<a href="mailto:ghc-devs@haskell.org">ghc-devs@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div dir="ltr">Chris Allen<br><div><span style="font-size:12.8000001907349px">Currently working on </span><a href="http://haskellbook.com" target="_blank">http://haskellbook.com</a></div></div></div></div></div></div>
</div>