[EMAIL PROTECTED] wrote:
> Simon Marlow <[EMAIL PROTECTED]> wrote:
>
>> Is your proposal supposed to be backwards compatible with Haskell 98
>> for programs that don't have default declarations?
>
> Yes, it is supposed to be backwards compatible.
>
>> If so, then I offer a counter example:
>>     toRational pi
>> will default pi to Double in Haskell 98, but will be an error under
>> your proposal, because the two constraints (Real and Floating)
>> disagree on the default.
>
> Well spotted.  So there are some expressions that are
> defaulted in H'98
> but would not pass type-checking with my proposal.
>
>   (1) Are examples like this common?  I am guessing not.  You mention
>       Enum/Fractional combinations, but arguably Float and
> Double do not
>       belong in Enum anyway.
>
>   (2) The new rule is conservative - it does not silently change the
>       semantics, but it does reject more programs.  Such programs are
>       easily fixed by adding a type signature.
>
> If these two points are valid, then I think the slight loss
> of backward compatibility is acceptable?

I don't know whether this is an acceptable loss of backwards compatibility, 
perhaps it is.  But I spotted the problem because it looks (to me) like the 
current Haskell 98 rule is designed specifically to handle cases like this.

Would you mind updating the wiki page?  I don't think it's too clear on the 
need for constraint simplification before applying your defaulting rules either.

Cheers,
        Simon
_______________________________________________
Haskell-prime mailing list
Haskell-prime@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-prime

Reply via email to