> 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! :) Um, well, and how are you going to implement it?