Scheme Programming – Understanding Scheme Correctly

functional programmingscheme

Inspired by the numerous posts about the importance of learning Lisp/Scheme I started to learn Scheme two days back, I am using the book "The little Schemer" and have completed half of it.

But I still haven't learned anything new, the book teaches about recursion which I already understand and uses lambda (which I can think of a way to define a function in C). I still haven't got the concept of functional programming (please point to some example of functional compared to normal programming methods in C/C++ so I can get it).

Am I learning in the wrong way? or is "The little Schemer" for a newbie in programming and I should look for some other books?

Best Answer

Wait until you'll get to the lexical closures.

Than try to grasp the homoiconic property of the language - this is what makes it really different from the C-likes.

And make sure you'll learn a Scheme with a proper define-macro implementation (I'd recommend Racket or Bigloo), not just standard hygienic macros (the latter would not surprise you at all if you're familiar with the C++ templates). Most Scheme textbooks would skip this stuff, unfortunately, but I'd argue that there is nothing nearly as important in Lisps as the proper macros.

It is also important to try to understand the purely functional subset of Scheme and learn how to solve all the possible programming problems with it. "Little Schemer" is a good starting point, but not nearly sufficient. Go through "Structure and Interpretation of Computer programs" after it.