On Monday 01 November 2004 23:40, Jon Fairbairn wrote:
> if Circle.destruct:: Shape -> (Double -> t) -> t -> t and
> similarly Square.destruct, we'd just have to write the case
> as
>
> Circle.destruct s f (Square.destruct s g (error "impossible"))
>
> ie the .destructs take a Shape, a function to apply if it
> matches and a value to return if it doesn't.

Ah, I see. It's rather more ugly but it is a better match for what Haskell 
does at the moment, isn't it? (IIRC patterns are matched in the order they 
appear in the source).

> Apart from matching up with the names there's not much to
> choose between one destructor and many, except possibly when
> one considers something like:
> 
>    case e of
>      Square s -> ...
>      _ -> ...
> 
> particularly if the type has more than two constructors.

True. Anyway, we don't really want to abandon pattern matching syntax, do we?

Ben
_______________________________________________
Haskell-Cafe mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to