[Haskell-cafe] Recursion in Haskell

Derek Elkins derek.a.elkins at gmail.com
Sun Feb 18 23:00:01 EST 2007

Michael Vanier wrote:
> P. R. Stanley wrote:
>> What are the pre-requisites for Lambda calculus?
>> Thanks
>> Paul
> Learning lambda calculus requires no prerequisites other than the 
> ability to think clearly.  However, don't think that you need to 
> understand all about lambda calculus in order to learn Haskell.  It's 
> more like the other way around: by the time you've learned Haskell, 
> you've already unwittingly absorbed a good deal of lambda calculus.  
> Once again, I recommend Pierces _Types and Programming Languages_ as a 
> reference if you really feel you need to learn this now.
> For absorbing the functional style of programming (which is what you 
> really should be working on at this point), the book _Structure and 
> Interpretation of Computer Programs_ by Abelson and Sussman (which uses 
> Scheme, not Haskell) is very valuable.  For learning about recursion, 
> the book _The Little Schemer_ by Friedman and Felleisen is also very 
> good (and quite short); it also uses Scheme.  However, most of the 
> insights of both books carry over into Haskell (with a change of syntax, 
> of course

How to Design Programs (HtDP) www.htdp.org is another Scheme teaching 
text that is lower level, slower paced.  It may be too low level for 
you, i.e. rather boring, or it may be helpful.  I'd definitely recommend 
reading SICP after it. Programming Languages: Application and 
Interpretation (PLAI) 
http://www.cs.brown.edu/~sk/Publications/Books/ProgLangs/ is a good book 
for either before or after SICP (which is also available online at 
http://mitpress.mit.edu/sicp/).  All of these use Scheme, but most of it 
uses a very "functional" style and it should transfer to Haskell very 
easily, especially the PLAI one.  It would be very nice to see a 
HtDP-style online book for Haskell; none of the currently available 
introductions really fit this role in my opinion.

More information about the Haskell-Cafe mailing list