Strictness of library implementations

Ian Lynagh
Sun, 11 Nov 2001 19:37:43 +0000

The library report says

    The code found here is a specification, rather than an
    implementation. Implementations may choose more efficient versions
    of these functions. However, all properties of these specifications
    must be preserved, including strictness properties.

Ratio then defines
    data  (Integral a)      => Ratio a = !a :% !a
which GHC seems to implement as specified, but nhc and hugs seem to use
    data (Integral a) => Ratio a = a :% a
Does this not have different strictness properties?