[Haskell-cafe] OOP'er with (hopefully) trivial questions.....

Jules Bean jules at jellybean.co.uk
Tue Dec 18 04:51:18 EST 2007


Miguel Mitrofanov wrote:
>> 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.

The problem is no better or worse for this third way than for type classes.

class Shape a where {
   intersect :: Shape b => a -> b -> Bool
}

data Shape a = { intersect :: Shape b => a -> b -> Bool }

in fact, the syntax is rather similar, too! :)

Jules


More information about the Haskell-Cafe mailing list