With each class period, the features of Scheme seem more and more enticing. I’ve wanted to explore functional programming languages for a while, so with my toe now in the pool, I’m looking at other languages and thinking about swimming :)

  • Scheme: The one I’m exploring most right now. As suggested by Professor Windley, our class is using the DrScheme editor and interpreter. It is not purely functional, since it has side effects. Also, its dynamic typing system (while advantageous in many cases) makes it so the interpreter cannot assume things that would otherwise make for cool features, such as in…
  • Haskell: Seems to be the cool kid on the block, with loads of academic new features. From discussions around the web, the fact that it is a “pure” functional language that has no side effects (except within well-determined blocks called “monads“) makes it special. Also, Haskell’s type system is (apparently) to be envied. There is an online book called the School of Expression that comes recommended to me.
  • Ocaml: The fastest compiled code and the least rigid functional language. I am told that if you need to do imperative code or enlist an object-oriented style of coding, Ocaml will accommodate those options even though it is a functional language at its base.
  • AliceML: This has some pretty cool concurrency features that are worth looking in to.
  • Clean: Seems to share the same heady space as Haskell in that its features are often experimental PhD students’ ideas. I like its direction, and the fact that its IDE is built in the Clean language definitely says something of its practical use. Like Haskell, Clean is also a “pure” functional language.

I benefited from this Haskell vs Ocaml discussion thread on O’Reilly.

Update: The Qi language also looks interesting. It appears to be a derivative of Lisp, with some new syntax.

Also, there’s an interesting benchmark shootout for all of our favorite languages. It looks like Clean is pretty dang fast.