Hacker News new | past | comments | ask | show | jobs | submit login
Why I recommend Scheme (gnuvince.wordpress.com)
46 points by soundsop on Aug 12, 2008 | hide | past | favorite | 7 comments



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.


Programming Languages: Application and Interpretation is also good and free online. (http://www.cs.brown.edu/~sk/Publications/Books/ProgLangs/200...)


Not to mention the SICP videos-- I use them as my standard "Intro to Functional Programming" recommendation.


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.


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.


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.


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




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: