Restore invariant in `Data (Ratio a)` instance

Authored by hvr.

Description

Restore invariant in Data (Ratio a) instance

(2nd attempt, this time leaving the Constr using ":%")

The Data instance for Ratio just uses the raw :% constructor and
doesn't check that the result is reduced to normal form.

The fix is to add back the Integral constraint on the Data
instance (which was dropped in c409b6f30373535) and to use % rather
than :% in the gfoldl and gunfold implementation.

This restores the invariant and matches the behavior of "virtual
constructors" we've used to patch up such problems elsewhere.

This addresses Trac #10011

(cherry picked from commit 3df429e29b6fabda12af71091ba4ad1360f49b44)

Details

Committed
hvrJan 22 2015, 3:39 PM
Parents
rGHC4c49f08c8e62: Update submodule git branch for haddock
Branches
Unknown
Tags
Unknown