On Fri, Feb 17, 2006 at 01:26:18PM +0000, Stefan Wehr wrote:
> Martin Sulzmann <[EMAIL PROTECTED]> wrote::
> > By possible you mean this extension won't break any
> > of the existing ATS inference results?
> 
> Yes, although we didn't go through all the proofs.
> 
> > You have to be very careful otherwise you'll loose decidability.

The paper doesn't claim a proof of decidability (or principal types),
but conjectures that it will go through.

Apropos of that, I tried translating the non-terminating FD example from
the FD-CHR paper (ex. 6) to associated type synonyms (simplified a bit):

        data T a = K a;

        class C a where {
                type S a;
                r :: a -> S a;
        }

        instance C a => C (T a) where {
                type S (T a) = T (S a);
                r (K x) = K (r x);
        }

        f b x = if b then r (K x) else x;

Phrac infers

        f :: forall a . (S (T a) = a, C a) => Bool -> a -> T (S a)

The constraint is reducible (ad infinitum), but Phrac defers constraint
reduction until it is forced (as GHC does with ordinary instance
inference).  We can try to force it using the MR, by changing the
definition of f to

        f = \ b x -> if b then r (K x) else x;

For this to be legal, the constraint must be provable.  In the
corresponding FD case, this sends GHC down the infinite chain of
reductions, but Phrac just gives up and complains about deferred
constraints being left over after type inference.  I don't think this
is right either, as in other cases the constraint will reduce away
to nothing.

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to