25

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?

Matthieu
  • 4,599
Federico klez Culloca
  • 3,084
  • 25
  • 24

3 Answers3

15

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

Robert Harvey
  • 200,592
Jonas
  • 14,887
  • 10
  • 70
  • 103
12

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.

EricC
  • 103
Thomas Owens
  • 85,641
  • 18
  • 207
  • 307
-2

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?

Antsan
  • 47