> (...) I don't recall where I found the following example, but copied
> it locally as compelling evidence that the functional solution can be
> much clearer and shorter than the same solution modeled with objects
> and inheritance.
Greg,
I desagree with you. Bjarne Stroustrup, the original creator of C++, is
a sensible person and I share his peacefull opinion in this matter:
http://www.research.att.com/~bs/bs_faq.html#compare
Even with good intentions, I've never seen such kind of comparison not
to fall into religious fights. (Although I'm not more than just a humble
language user.)
> -- Arithmetic expression forms data Expr = Num Int | Add Expr Expr
>
> -- Evaluate expressions
> eval :: Expr -> Int
> (...)
> public abstract class Expr {
> public abstract int eval ();
> public abstract void modn(int v);
Although I'm not good enough to judge anyone's Haskell code, the Haskell
version seems nice. I don't know how someone who understands well
object-oriented code would do that. But I did C++ until around 1998,
when the first standard was set, and I can tell you for sure that, even
at that time, no one who knows at least the basics of C++ would ever
write that problem like this.
Best,
Maurício