
Why I recommend Scheme - soundsop
http://gnuvince.wordpress.com/2008/08/11/why-i-recommend-scheme/
======
briancooley
_Scheme has more books freely available on the Internet: “How To Design
Programs” for people new to programming, Scheme and/or functional programming
or the grand classic “Structure and Interpretation of Computer Programs” for
the more serious and advanced students. “Teach Yourself Scheme in Fixnum Days”
is somewhere in between. All books are of great quality and great value._

The literature is one of the biggest reasons I got into Lisp/Scheme. SICP and
Practical Common Lisp are great freely available assets.

~~~
silentbicycle
_Programming Languages: Application and Interpretation_ is also good and free
online.
([http://www.cs.brown.edu/~sk/Publications/Books/ProgLangs/200...](http://www.cs.brown.edu/~sk/Publications/Books/ProgLangs/2007-04-26/))

------
davidw
Depending on who your audience is, I might include a category along the lines
of "usefulness", and include Erlang in your comparison. It's not quite as pure
as Haskell (but then again, neither is Scheme), but it has some very apparent
practical applications that make it a great choice for people like me who
learn by doing. I'm a bit of a "language guy" myself, but not quite enough of
one any more to play with a language with little or no practical application
where it really outshines the competition.

Ocaml might be of interest too, because it's fast, and that's always a nice
feature.

~~~
silentbicycle
Speaking as someone who really likes OCaml, I think the best parts about are
the type system (very similar to Haskell's), the module system, and its
explicit focus on being a pragmatic multiparadigm language. It has some
gotchas* and tradeoffs, like every real language, but it's quite worth
learning. It's particularly well-suited for projects that involve complex data
structures (e.g. compilers, see: <http://flint.cs.yale.edu/cs421/case-for-
ml.html>) or heavy high-level numeric computation. It would probably be quite
good for game programming. Also, it does both bytecode and (Fast!) native
compilation, so it's pretty portable.

* Many of which are due to the small community, e.g. somewhat poor documentation in many third-party libraries, few books in English (though the English translation of the French O'Reilly book is online as a free PDF, and quite good IMHO: <http://caml.inria.fr/pub/docs/oreilly-book/>). Also, it doesn't have operator/function overloading (outside of its OO framework), which can be annoying, though this seems to gain it near-instantaneous compilation, even with its remarkably thorough compile-time error checking.

------
felixmar
Some of his comparisons are true -- Haskell is relatively hard to comprehend
for programmers who are used to imperative languages, but Haskell is imo the
best language for learning functional programming techniques. The core of the
language is beautiful and pretty simple. Intermediate concepts like monads are
more difficult because you can look at them in more than one way and they take
some time to really understand. While learning those concepts it also becomes
clear why other language designers have made different choices. And that is
imo the best part of learning Haskell. After that learning mixed languages
like F# and Scala is easy.

------
michael_dorfman
Very nice piece on the pedagogic advantages of Scheme over Haskell.

