Coming from a procedural/OO programming background, I tend to write Scheme programs in a procedural fashion. I would be intersted in learning Scheme or Lisp in a functional way from the ground up, to kind of reset my programmer's mind.

Is there a tutorial or book out there that's the de-facto standard for describing best practices, design methodologies, and other helpful information on functional programming concepts? What about that book makes it special?


3 Answers 3


Use it.

If you do functional programming daily, maybe smaller applications or exercises from books, then you will be better on it.

I have used it since the first programming lecture in university. At the beginning it was very hard, because it is so different, but now I prefer it to imperative programming.

If you are looking for a good book, I would recommend Real World Functional Programming: With Examples in F# and C# by Tomas Petricek and Jon Skeet


The book I always see recommended when talking about Scheme or Lisp is The Structure and Interpretation of Computer Programs. It's freely available on that website, and I think it's provided as a PDF if you search around.

I've been meaning to work through it, but I'm not sure when I'll get the time. I can't comment on how good the book actually is, though. But it's been recommended by multiple people, so I'm guessing its pretty good.

If you are interested in other functional programming languages, I've been told that it's rather easy to do the exercises in languages like Haskell or F#. I think there's also a blogger who is working through SICP using Haskell and posting his solutions to the exercises, but I can't find the link right now.

  • Who is Bill the Lizard billthelizard.com for 500 please. Although I think he's using scheme. Sep 7, 2010 at 14:58
  • Yes, I'd agree with SICP being an excellent book to learn FP in Scheme. If you aren't married to Scheme, but would consider learning Haskell then Real World Haskell is an excellent read too.
    – Magnus
    Oct 4, 2010 at 9:35
  • +1 for SICP. I've been working through parts of it with Clojure, as long as you're willing to do a bit of mental gymnastics I think it would work for any Lisp-like or functional language.
    – mikera
    Feb 24, 2011 at 14:16
  • 2
    There's also How to Design Programs, which was specifically designed to address some shortcomings in SICP, which are outlined in the very approachable and cleverly titled paper The Structure and Interpretation of the Computer Science Curriculum. Sep 11, 2011 at 4:27

Try to learn some math and get adapted to it's style. What are functions? What is a variable? How do variables different from constants and how do they not?

  • That does not really answer the question which is more about where to find answers to the questions you are providing.
    – Matthieu
    Dec 16, 2011 at 1:45

Not the answer you're looking for? Browse other questions tagged or ask your own question.