Oh… I almost forgot what fun it is to learn functional programming. During one of the semesters in university, we took “Functional programming” course. It was a new world of something that I hadn’t seen before, so unusual, so charming.
That new world of lists and operations on them was something “weird” because it wasn’t similar to what I had known before. After that semester in the university I almost haven’t touched Lisp nor any other function language until recently.
The subject of functional programming appeared few times on my horizon a couple of weeks ago. I decided to recap what I knew almost ten years ago and learn something new.
If you want to quickly grasp what functional programming is I would recommend “The little Schemer”.
This book is only about two hundred pages which is good and has lots’ of blank space. :) However it is very valuable book, written in an interesting way of questions on the left side of a page and answers on the right. The book is full of small tasks that you solve as you read and if you can’t don’t worry there is an answer on the next page. That’s a fun book indeed.
For those who has read “The little Schemer” there are “The Seasoned Schemer” and “The Reasoned Schemer” which I haven’t done yet. These books give more insight into the language and cover more advanced topics. They are written in the same manner of series of questions and answers which I have much fun with solving as I’m reading first book. I’m sure I’m going to get these books soon.
The last one that I’d like to mention is a book that available online, and I would say, the most robust book about functional programming and Scheme, I know of is “Structure and Interpretation of Computer Programs”.
“The Structure and Interpretation of Computer Programs” is the entry-level subject in computer science at the Massachusetts Institute of Technology. It is required of all students at MIT who major in electrical engineering or in computer science, as one-fourth of the “common core curriculum,” which also includes two subjects on circuits and linear systems and a subject on the design of digital systems. We have been involved in the development of this subject since 1978, and we have taught this material in its present form since the fall of 1980 to between 600 and 700 students each year. Most of these students have had little or no prior formal training in computation, although many have played with computers a bit and a few have had extensive programming or hardware-design experience.
If you already know a couple of object oriented programming languages and would like to learn something new I would suggest to learn one of Lisp’s dialects. It’s mind opening experience and it’s fun. :)
Thanks to Mikhail for pointing out those books to me.