Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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?

share|improve this question

closed as off-topic by MichaelT, gnat, Kilian Foth, Bart van Ingen Schenau, Dan Pichelman Sep 4 '14 at 18:22

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions asking us to recommend a tool, library or favorite off-site resource are off-topic for Programmers as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it." – Community, gnat, Kilian Foth, Bart van Ingen Schenau, Dan Pichelman
If this question can be reworded to fit the rules in the help center, please edit the question.

I'd start with Functional programming is more like pure math than OO programming. If you think of it that way it may help. – Brian Makin Sep 8 '10 at 22:34
If you prefer listening to reading, SICP also has video lectures. I am at lecture 6b now. :) – Dysaster Oct 4 '10 at 9:58
Check out Land of Lisp and do all the exercises. – Sardathrion Oct 12 '11 at 15:30
up vote 11 down vote accepted

Use it.

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

I have used it since the first programming lecture in university. At the biginning 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

share|improve this answer
The book can be checked here also- – Gulshan Oct 12 '11 at 16:11

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.

share|improve this answer
Who is Bill the Lizard for 500 please. Although I think he's using scheme. – Brian R. Bondy Sep 7 '10 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 '10 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 '11 at 14:16
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. – Jörg W Mittag Sep 11 '11 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?

share|improve this answer
That does not really answer the question which is more about where to find answers to the questions you are providing. – Matthieu Dec 16 '11 at 1:45

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