Backport Eq1/Ord1/Read1/Show1 instances for Proxy
authorryan.gl.scott <ryan.gl.scott@gmail.com>
Sun, 17 Apr 2016 15:35:36 +0000 (15:35 +0000)
committerryan.gl.scott <ryan.gl.scott@gmail.com>
Sun, 17 Apr 2016 15:35:36 +0000 (15:35 +0000)
These instances were added in `base-4.9` (see
http://git.haskell.org/ghc.git/commit/5097f3802124cfbe6810bff8110df91d4c52096b)

legacy/pre711/Data/Functor/Classes.hs

index 2f20210..bda1749 100644 (file)
@@ -69,6 +69,9 @@ module Data.Functor.Classes (
 import Control.Applicative (Const(Const))
 import Data.Functor.Identity (Identity(Identity))
 import Data.Monoid (mappend)
+#if MIN_VERSION_base(4,7,0)
+import Data.Proxy (Proxy(Proxy))
+#endif
 #if __GLASGOW_HASKELL__ >= 708
 import Data.Typeable
 #endif
@@ -358,6 +361,21 @@ instance (Read a) => Read1 (Either a) where
 instance (Show a) => Show1 (Either a) where
     liftShowsPrec = liftShowsPrec2 showsPrec showList
 
+#if MIN_VERSION_base(4,7,0)
+instance Eq1 Proxy where
+    liftEq _ _ _ = True
+
+instance Ord1 Proxy where
+    liftCompare _ _ _ = EQ
+
+instance Show1 Proxy where
+    liftShowsPrec _ _ _ _ = showString "Proxy"
+
+instance Read1 Proxy where
+    liftReadsPrec _ _ d =
+        readParen (d > 10) (\r -> [(Proxy, s) | ("Proxy",s) <- lex r ])
+#endif
+
 -- Instances for other functors defined in the base package
 
 instance Eq1 Identity where