]> gitweb @ CieloNegro.org - Lucu.git/blobdiff - Network/HTTP/Lucu/StatusCode/Internal.hs
Destroy Data.Eq.Indirect
[Lucu.git] / Network / HTTP / Lucu / StatusCode / Internal.hs
index e8785c3c106a49a5ba124edd188ddae90e8fc5fd..026b1a88b16bfdcb7094b8ae2d0dfe66f6f6508d 100644 (file)
@@ -25,7 +25,6 @@ import qualified Data.ByteString.Lazy.Char8 as Lazy
 import Data.Convertible.Base
 import Data.Convertible.Instances.Ascii ()
 import Data.Convertible.Utils
-import Data.Eq.Indirect
 import Data.List
 import Language.Haskell.TH.Lib
 import Language.Haskell.TH.Syntax
@@ -49,29 +48,9 @@ class (Eq sc, Show sc) ⇒ StatusCode sc where
     fromStatusCode ∷ sc → SomeStatusCode
     fromStatusCode = SomeStatusCode
 
--- |Equivalence of 'StatusCode's. Two 'StatusCode's @α@ and
--- @β@ are said to be equivalent iff @'numericCode' α '=='
--- 'numericCode' β@.
-instance StatusCode sc ⇒ Eq' sc where
-    type Unified sc = Int
-    {-# INLINE CONLIKE unify #-}
-    unify = numericCode
-
--- |Container type for the 'StatusCode' type class.
-data SomeStatusCode
-    = ∀sc. StatusCode sc ⇒ SomeStatusCode sc
-
-instance Eq SomeStatusCode where
-    {-# INLINE CONLIKE (==) #-}
-    (==) = (≡:)
-
-instance Show SomeStatusCode where
-    show (SomeStatusCode sc) = show sc
-
-instance StatusCode SomeStatusCode where
-    numericCode   (SomeStatusCode sc) = numericCode   sc
-    textualStatus (SomeStatusCode sc) = textualStatus sc
-    fromStatusCode = id
+instance StatusCode sc ⇒ ConvertSuccess sc SomeStatusCode where
+    {-# INLINE convertSuccess #-}
+    convertSuccess = fromStatusCode
 
 instance StatusCode sc ⇒ ConvertSuccess sc Ascii where
     {-# INLINE convertSuccess #-}
@@ -81,6 +60,10 @@ instance StatusCode sc ⇒ ConvertSuccess sc AsciiBuilder where
     {-# INLINE convertSuccess #-}
     convertSuccess = textualStatus
 
+instance StatusCode sc ⇒ ConvertAttempt sc SomeStatusCode where
+    {-# INLINE convertAttempt #-}
+    convertAttempt = return ∘ cs
+
 instance StatusCode sc ⇒ ConvertAttempt sc Ascii where
     {-# INLINE convertAttempt #-}
     convertAttempt = return ∘ cs
@@ -89,6 +72,25 @@ instance StatusCode sc ⇒ ConvertAttempt sc AsciiBuilder where
     {-# INLINE convertAttempt #-}
     convertAttempt = return ∘ cs
 
+-- |Container type for the 'StatusCode' type class.
+data SomeStatusCode
+    = ∀sc. StatusCode sc ⇒ SomeStatusCode sc
+
+-- |Equivalence of 'StatusCode's. Two 'StatusCode's @α@ and
+-- @β@ are said to be equivalent iff @'numericCode' α '=='
+-- 'numericCode' β@.
+instance Eq SomeStatusCode where
+    {-# INLINE (==) #-}
+    (==) = (∘ numericCode) ∘ (==) ∘ numericCode
+
+instance Show SomeStatusCode where
+    show (SomeStatusCode sc) = show sc
+
+instance StatusCode SomeStatusCode where
+    numericCode   (SomeStatusCode sc) = numericCode   sc
+    textualStatus (SomeStatusCode sc) = textualStatus sc
+    fromStatusCode = id
+
 -- |'QuasiQuoter' for 'StatusCode' declarations.
 --
 -- Top-level splicing