[Haskell-cafe] Inferring types from functional dependencies
Jeff.Harper at handheld.com
Jeff.Harper at handheld.com
Fri Jun 16 15:44:17 EDT 2006
Thank you. I followed your suggestion and implemented my default Divide
as you've shown below.
oleg at pobox.com wrote:
> If we assume that we need Reciprocate only if we are going to use the
> 'default' method, the solution becomes obvious. It does involve
> overlapping and undecidable instances, sorry. These extensions are
> really useful in practice. Here's the solution:
>
> > class Divide a b c | a b -> c where
> > (/) :: a -> b -> c
>
>
> Here's the most general instance. It applies when nothing more
> specific does. It is in this case that we insist on being able to
> take the reciprocal:
>
> > instance (Reciprocate b recip, Multiply a recip c) =>
> > Divide a b c where
> > (/) x y = x * (recip y)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org//pipermail/haskell-cafe/attachments/20060616/9e4d147e/attachment-0001.htm
More information about the Haskell-Cafe
mailing list