[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