On 3/7/06, Ben Rudiak-Gould <[EMAIL PROTECTED]> wrote:
# John Meacham wrote:
# # Polymorphic recursion allows the construction of infinite types if I
# # understand what you mean.
#
# No, that's different. An infinite type can't be written in (legal) Haskell.
Though GHC with existentials allows so
John Meacham wrote:
On Thu, Mar 02, 2006 at 03:53:45AM -, Claus Reinke wrote:
the problem is that we have somehow conjured up an infinite
type for Mul to recurse on without end! Normally, such infinite
types are ruled out by occurs-checks (unless you are working
with Prolog III;-), so someon
Coverage is a sufficient condition to maintain termination. Though,
Coverage is also sufficient to maintain confluence. Hence, we
propose Weak Coverage which we know maintains confluence
under some conditions.
The main focus of the FD paper is how to restore confluence which is
important for com
On Thu, Mar 02, 2006 at 03:53:45AM -, Claus Reinke wrote:
> - Mul recurses down a type in its second parameter
> - types in Haskell are finite
> - there is a non-terminating Mul inference
>
> the problem is that we have somehow conjured up an infinite
> type for Mul to recurse on without end!
I urge you to read our paper "Understanding functional dependencies via
Constraint Handling Rules", which you can find here
http://research.microsoft.com/%7Esimonpj/papers/fd%2Dchr/.
Simon,
I had already read that paper briefly, but had moved on to scan some
of the other publications in that a
Claus,
I urge you to read our paper "Understanding functional dependencies via
Constraint Handling Rules", which you can find here
http://research.microsoft.com/%7Esimonpj/papers/fd%2Dchr/.
It will tell you more than you want to know about why relaxing
apparently-conservative rules is entirely no
On Tue, Feb 28, 2006 at 07:53:38PM -, Claus Reinke wrote:
> class Fail all -- no instances!
>
> class TypeNotEq a b
> instance Fail a => TypeNotEq a a
> instance TypeNotEq a b
>
> class Test a b where test :: a -> b -> Bool
> instance TypeNotEq a b => Test a b where test _ _ = False
> instanc