[Haskell-cafe] Re: [off-topic] OOPer?
Daniel Yokomizo
daniel.yokomizo at gmail.com
Mon Nov 17 19:24:14 EST 2008
On Mon, Nov 17, 2008 at 9:49 PM, Maurício <briqueabraque at yahoo.com> wrote:
> > (...) 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<http://www.research.att.com/%7Ebs/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.)
>
Functional languages are much more formalized than OO languages. The basics
(i.e. lambda-calculus algebraic data-types, *morphisms) are well known and
very composable. OO theory is a mess, classes and objects are different
beasts on every OO language and they don't form an easily composable toolkit
(e.g. the inheritance vs. composition debate, where to place methods, binary
method choices). There are many (which by sheer amount of variance isn't a
good sign) formalizations of OO but none that were well received by the most
popular OOPLs (in contrast with FP theory and it's pervasiveness in FPLs).
In this case it isn't a religious fight.
>
> > -- 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.
>
Well, any OO programmer familiar with algebraic and coalgebraic datatypes
would do that, it's the best way to model this problem (unless you mix it
with extensible types but then we would fall in the expression problem
territory and this isn't an easy problem to solve in any mainstream
languages).
Best,
> Maurício
Best regards,
Daniel Yokomizo
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20081117/2ba20cee/attachment.htm
More information about the Haskell-Cafe
mailing list