Thoughts on Scheme
gga
#2007-08-18
There’s nothing like writing a complex application in a language for really learning it. I’ve been able to read and write small pieces of Scheme for years. And I’ve known enough of the underpinnings of the language to write a (very) small Scheme interpreter in the past. But, part of the point of writing Shrew in Scheme as opposed to, say, Ruby is to really learn the language.
I haven’t been at it for long, but here are some random thoughts and comments so far. Much of this will change as I figure out how to use Scheme properly. These comments are also mainly a comparison of the only other functional language I know well: Haskell.
-
The syntax is not very clear: everything looks the same. This prevents you from scanning the code to get a feel for what is happening. The indentation helps, but fundamentally every operation is just a parenthesized expression. I am certain that this is just cultural, with more exposure I’ll get better at reading; don’t count this as a negative.
-
I really miss pattern matching. How can you program without it? I’m going to have to look into
destructuring-bind
. -
Dynamic typing is sweet. As well as all the other benefits, dynamic typing + modules = as much encapsulation as classes give you in C++.
-
The standard libraries are pretty paltry. The SRFIs add a lot, but it’s still nowhere near as rich as pretty much any other language. Maybe I’ll explore Common Lisp at some point.
-
Currying is not just an implementation technicality, it’s useful for designing data structures. I miss currying as well.