[Haskell-cafe] OOP'er with (hopefully) trivial questions.....
Miguel Mitrofanov
miguelimo38 at yandex.ru
Mon Dec 17 14:12:55 EST 2007
> There's a third way, too, and I haven't seen anybody mention it yet
I've noticed it, but there are some problems with this
representation, so I decided not to mention it. It's OK as far as we
don't want functions working on two areas - I don't see, how we can
implement, say, intersect :: Shape -> Shape -> Bool in this way.
However, it's a useful pattern.
> (apologies if I just missed it). You can provide an explicit record
> of the relevant "member functions", and "instantiate" it in different
> ways. E.g.
>
> data Shape = Shape { area :: Int }
>
> square x = Shape (x^2)
> rectangle x y = Shape (x*y)
> circle r = Shape (pi*r^2)
More information about the Haskell-Cafe
mailing list