On 2006-04-13, Martin Sulzmann <[EMAIL PROTECTED]> wrote: > > I believe that GHC's overlapping instance extensions > effectively uses inequalities. > > Why do you think that 'inequalities' model 'best-fit'? > > instance C Int -- (1) > instance C a -- (2) > > under a 'best-fit' instance reduction strategy > we would resolve C a by using (2). > > 'best-fit' should be very easy to implement. > Simply order instances (resulting CHRs) in an appropriate > 'best-fit' order. > > In case of > > instance C Int > instance a =!=Int | C a (2') > > we can't reduce C a (because we can't satisfy a=!=Int) > > Notice that (2') translates to > > rule C a | a =!=Int <==> True > > I think it's better to write a =!=Int not as part of the instance > context but write it as a guard constraint. > > I don't think there's any issue for an implementation (either using > 'best-fit' or explicit inequalities). The hard part is to establish > inference properties such as completeness etc. >
This best-fit is essentially what people doing multi-method dispatch want. It turns out to not be as trivial as one would hope. -- Aaron Denney -><- _______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
