[GHC] #12358: Read1/Read2 don't have methods defined in terms of ReadPrec
GHC
ghc-devs at haskell.org
Mon Jul 4 15:16:42 UTC 2016
#12358: Read1/Read2 don't have methods defined in terms of ReadPrec
-------------------------------------+-------------------------------------
Reporter: RyanGlScott | Owner:
Type: feature request | Status: patch
Priority: normal | Milestone: 8.2.1
Component: libraries/base | Version: 8.0.1
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: None/Unknown | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s): Phab:D2379
Wiki Page: |
-------------------------------------+-------------------------------------
Changes (by RyanGlScott):
* cc: core-libraries-committee@… (added)
Comment:
Sorry, I should know by now to forward the CLC on things like this, seeing
as how I'm on the CLC myself :) For now, I only have the above
[https://mail.haskell.org/pipermail/libraries/2016-June/027102.html
mailing list discussion] as evidence that this move is supported by the
community.
Anyways, adding `Read1` and `Read2` was decided in #11135 (associated
mailing list discussion
[https://mail.haskell.org/pipermail/libraries/2015-July/026014.html
here]). `Read1/2` were originally defined in `transformers`, but migrated
to `base` as part of an effort to bring in
`Compose`/`Sum`/`Product`/`MonadIO` (and remove things from `transformers`
that aren't actually, y'know, monad transformers).
Ross's original definition of `Read1/2` uses `ReadS`, since that's what
the report [https://www.haskell.org/onlinereport/basic.html#sect6.3.3
dictates] the definition of `Read` should use, so that's what was migrated
to `base`. It didn't occur to me at the time the problems that would pose
when I began to work on [https://github.com/haskell-compat/deriving-
compat/issues/3 automatic derivation] of `Read1/2` instances, since GHC's
derived `Read` instances use `ReadPrec` instead of `ReadS`. This ticket
just serves as a way to make the methods of `Read1/2` parallel to those of
`Read`, and to eventually make deriving `Read1/2` easier.
(P.S., if you're curious about whether kind polymorphism can obviate the
need for multiple `Read(n)` classes, you might be interested in the
discussion [https://github.com/haskell/deepseq/issues/8 here]. phadej has
proposed one way to solve such a problem, although it involves some
eyebrow-raising `-XTypeInType` tricks.)
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12358#comment:3>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list