Re: [GHC] #9240: "read . show ≡ id" not satisfied by Data.Fixed
GHC
ghc-devs at haskell.org
Tue Dec 2 16:54:10 UTC 2014
#9240: "read . show ≡ id" not satisfied by Data.Fixed
-------------------------------------+-------------------------------------
Reporter: hvr | Owner: ekmett
Type: bug | Status: patch
Priority: normal | Milestone: 7.10.1
Component: Core | Version: 7.2.1
Libraries | Keywords:
Resolution: | Architecture: Unknown/Multiple
Operating System: | Difficulty: Unknown
Unknown/Multiple | Blocked By:
Type of failure: | Related Tickets: #9231
None/Unknown |
Test Case: |
Blocking: |
Differential Revisions: Phab:D547 |
-------------------------------------+-------------------------------------
Comment (by Herbert Valerio Riedel <hvr@…>):
In [changeset:"7c38e985aa211ca44039c6d1db9fa13690749c59/ghc"]:
{{{
#!CommitTicketReference repository="ghc"
revision="7c38e985aa211ca44039c6d1db9fa13690749c59"
Make `read . show = id` for Data.Fixed (fix #9240)
The QuickCheck property now succeeds:
prop :: Fixed B7 -> Bool
prop a = read (show a) == a
This changes the Show instance for Fixed to round up, rather than down
when calculating a digit. This needs to happen because Read also
rounds down:
data B7
instance HasResolution B7 where
resolution _ = 128
1 / 128 = 0.0078125
read "0.007" = (0.000 :: Fixed B7)
Here is an example of the change to Show:
showFixed False (0.009 :: Fixed B7)
-- Broken: "0.007"
-- Fixed: "0.008"
And now Read can continue to round down:
read "0.008" = (0.0078125 :: Fixed B7)
Reviewed By: hvr, ekmett
Differential Revision: https://phabricator.haskell.org/D547
}}}
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9240#comment:4>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list