Last night in my Computer Language Design class I tuned out the professor after the first 5 minutes. It’s not that the class doesn’t interest me, it’s just that an involved discussion of the taxonomy of languages (presented by a man I can only describe as the stereotypical aging CPA) puts me to sleep. So instead I read ahead in the textbook. Actually I read the end of the textbook, the section on functional and logical languages.
So it suprised me this morning when reading the “Python Daily URL”:http://www.pythonware.com/daily to see “Bill”:http://llimllib.f2o.org/blog talking “about guards”:http://llimllib.f2o.org/blog/serve/entry/pygenerics .
Bill points to “Erlang”:http://erlang.org as a model for guards and generics. I have to confess complete ignorance regarding erlang. But I like what I saw in “Haskell”:http://www.haskell.org/. A brief example, defining the fact (factorial) function:
fact 0 = 1 -- zero step fact n = n * fact (n-1) -- induction step
Haskell also has cool pattern matching and lazy evaluation. For example, you can create an infinite length list of even, positive integers with the following:
pos_ints = [2,4..]
I’m not sure what the “Pythonic” version of Haskell guards looks like, but the simplicity and elegance really appeals to me. And it seems sorta weird (in a cool way) that less than 12 hours after reading about functional languages, guards and generics, I find others talking about the same thing.