Functional programming -- 2009-2010 -- info.uvt.ro/Laboratory/References
How to use these references?
editThere are multiple possible approaches, and the one that worked (and still works) for me:
- find out the philosophy and context of the subject:
- starting with the essays list below,
- pick any author (I would recommend either Richard Gabriel (softer words), or Paul Graham),
- skim their list of titles and pick one that seems nice,
- read it (in a comfortable and productive environment),
- while reading open links and references (that seem interesting) in new tabs (or write them down),
- repeat the loop until you have gained enough information; (this could (and should) take one to three days and it would be better if they are contiguous;)
- try it for yourself:
- starting with the tutorials list below,
- pick any tutorial (I would recommend Teach Yourself Scheme in Fixnum Days, by Dorai Sitaram);
- start reading the tutorial,
- and (THIS IS THE MOST IMPORTANT ASPECT OF LEARNING) DO EXERCISES proposed in the material (at least the easy to medium ones); by do I understand:
- think about how to solve the exercise;
- solve the exercise by coding it;
- test the code by executing it;
- play around with the code to make it better readable, more efficient, shorter, but most importantly more aesthetic;
- after finishing (at least the medium chapters), try to implement a simple project all by yourself;
- dig deeper into the matter by reading one or two books; (by reading I understand the same thing as do above);
- use the whole thing for non-trivial projects;
From our faculty
editFor the current laboratories there are also other materials available (from our faculty) (on-line):
- Lisp 2008-2009, from one year ago; (the current material (2009-2010) is greatly based on this work, but with (I hope) major improvements);
- Lisp 2006-2007, from three years ago; (in turn the previous material (2008-2009) is greatly based on this work (2006-2007), and this again is based on the material available at the next link;)
- Lisp 2005? -> today, by Cornel Izbasa; (as noted above this is the root of all the above materials;)
Essays
editTutorials
edit- Scheme tutorials (on-line):
- Teach Yourself Scheme in Fixnum Days, by Dorai Sitaram;
- Common Lisp tutorials (on-line):
- Common Lisp;
- Lisp Quickstart, by Sean Luke;
Exercises
edit- functional programming (mostly Lisp) (on-line):
- EECS 325 (course) exercises, by Chris Riesbeck;
- Some Simple Programming Exercises, by Cley Limited?;
- Lisp Recursive Programming Exercises, by Peter Roosen-Runge and Yves Lespérance;
- L-99: Ninety-Nine Lisp Problems, by Werner Hett;
- H-99: Ninety-Nine Haskell Problems;
Books
edit- Scheme books (on-line):
- HTDP -- How to Design Programs, by Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi (recommended);
- SICP -- Structure and Interpretation of Computer Programs, by Harold Abelson Gerald, and Jay Sussman;
- An Introduction to Scheme and its Implementation, by Franck Decrock;
- Common Lisp books (on-line):
- Practical Common Lisp, by Peter Seibel (recommended);
- Lisp Primer, by Colin Allen, and Maneesh Dhagat;
- Common Lisp -- A Gentle Introduction to Symbolic Computation, by David Touretzky;
- Loving Lisp, or the Savvy Programmer's Secret Weapon, by Mark Watson;
- On Lisp, by Paul Graham;
- Common Lisp the Language, 2nd Edition, by Guy Steele;
References
edit- Scheme references (on-line):
- R6RS;
- R5RS;
- PLT Scheme;
- Common Lisp references (on-line):
People
editThis link is a very good place to start.
On-line (audio / video) media
edit- webcast.berkeley:
- Computer Science 61A, 001 -- The Structure and Interpretation of Computer Programs: Spring 2010, or Fall 2009, or Fall 2008, or Spring 2008;
- InfoQ:
- The Evolution of Lisp, by Guy Steele and Richard Gabriel;
- Taming Effects with Functional Programming, by Simon Peyton-Jones;