Add Data.Functor.Classes instances for Proxy (trac issue #11756)
authorAndrew Martin <amartin@layer3com.com>
Tue, 29 Mar 2016 08:57:47 +0000 (10:57 +0200)
committerBen Gamari <ben@smart-cactus.org>
Tue, 29 Mar 2016 10:43:07 +0000 (12:43 +0200)
Test Plan: currently no test plan

Reviewers: hvr, RyanGlScott, bgamari, austin

Reviewed By: RyanGlScott, bgamari, austin

Subscribers: thomie, RyanGlScott, andrewthad

Differential Revision: https://phabricator.haskell.org/D2051

GHC Trac Issues: #11756

libraries/base/Data/Functor/Classes.hs
libraries/base/changelog.md

index 0ec6008..5f1b12c 100644 (file)
@@ -62,6 +62,7 @@ module Data.Functor.Classes (
 
 import Control.Applicative (Const(Const))
 import Data.Functor.Identity (Identity(Identity))
+import Data.Proxy (Proxy(Proxy))
 import Data.Monoid (mappend)
 import Text.Show (showListWith)
 
@@ -354,6 +355,23 @@ instance (Read a) => Read1 (Const a) where
 instance (Show a) => Show1 (Const a) where
     liftShowsPrec = liftShowsPrec2 showsPrec showList
 
+-- | @since 4.9.0.0
+instance Eq1 Proxy where
+  liftEq _ _ _ = True
+
+-- | @since 4.9.0.0
+instance Ord1 Proxy where
+  liftCompare _ _ _ = EQ
+
+-- | @since 4.9.0.0
+instance Show1 Proxy where
+  liftShowsPrec _ _ _ _ = showString "Proxy"
+
+-- | @since 4.9.0.0
+instance Read1 Proxy where
+  liftReadsPrec _ _ d =
+    readParen (d > 10) (\r -> [(Proxy, s) | ("Proxy",s) <- lex r ])
+
 -- Building blocks
 
 -- | @'readsData' p d@ is a parser for datatypes where each alternative
index 92451b9..cb3eced 100644 (file)
@@ -78,6 +78,9 @@
     `Data.Functor.Product`, and `Data.Functor.Sum` (previously provided by
     `transformers` package). (#11135)
 
+  * New instances for `Proxy`: `Eq1`, `Ord1`, `Show1`, `Read1`. All
+    of the classes are from `Data.Functor.Classes` (#11756).
+
   * New module `Control.Monad.Fail` providing new `MonadFail(fail)`
     class (#10751)