]> gitweb @ CieloNegro.org - Lucu.git/commitdiff
StatusCode: modified again
authorPHO <pho@cielonegro.org>
Wed, 21 Dec 2011 16:10:47 +0000 (01:10 +0900)
committerPHO <pho@cielonegro.org>
Wed, 21 Dec 2011 16:10:47 +0000 (01:10 +0900)
Network/HTTP/Lucu/StatusCode/Internal.hs

index 38188568de8646037ee84465cce740e2df68b8d3..e3122da1f55e21af4587abf5cf7d4175e8ccdd93 100644 (file)
@@ -4,6 +4,7 @@
   , MultiParamTypeClasses
   , OverlappingInstances
   , TemplateHaskell
+  , UndecidableInstances
   , UnicodeSyntax
   , ViewPatterns
   #-}
@@ -38,7 +39,7 @@ import Prelude.Unicode
 -- 'statusCodes' quasi-quoter.
 --
 -- Minimal complete definition: 'numericCode' and 'textualStatus'.
-class (Eq sc, Show sc) ⇒ StatusCode sc where
+class Show sc ⇒ StatusCode sc where
     -- |Return the 3-digit integer for this status e.g. @200@
     numericCode ∷ sc → Int
     -- |Return the combination of 3-digit integer and reason phrase
@@ -48,13 +49,13 @@ class (Eq sc, Show sc) ⇒ StatusCode sc where
     fromStatusCode ∷ sc → SomeStatusCode
     fromStatusCode = SomeStatusCode
 
+instance StatusCode sc ⇒ Eq sc where
+    (==) = (≈)
+
 -- |Container type for the 'StatusCode' type class.
 data SomeStatusCode
     = ∀sc. StatusCode sc ⇒ SomeStatusCode sc
 
-instance Eq SomeStatusCode where
-    (==) = (≈)
-
 instance Show SomeStatusCode where
     show (SomeStatusCode sc) = show sc
 
@@ -110,17 +111,17 @@ instance StatusCode sc ⇒ ConvertAttempt sc AsciiBuilder where
 -- becomes:
 --
 -- @
---   data OK = OK deriving ('Eq', 'Show')
+--   data OK = OK deriving ('Show')
 --   instance OK where
 --     'numericCode'   _ = 200
 --     'textualStatus' _ = 'cs' (\"200 OK\" ∷ Ascii)
 --
---   data BadRequest = BadRequest deriving ('Eq', 'Show')
+--   data BadRequest = BadRequest deriving ('Show')
 --   instance BadRequest where
 --     'numericCode'   _ = 400
 --     'textualStatus' _ = 'cs' (\"400 Bad Request\" ∷ Ascii)
 --
---   data MethodNotAllowed = MethodNotAllowed deriving ('Eq', 'Show')
+--   data MethodNotAllowed = MethodNotAllowed deriving ('Show')
 --   instance MethodNotAllowed where
 --     'numericCode'   _ = 405
 --     'textualStatus' _ = 'cs' (\"405 Method Not Allowed\" ∷ Ascii)
@@ -178,7 +179,7 @@ statusDecl (num, phrase)
       name = mkName $ concatMap cs phrase
 
       dataDecl ∷ Q Dec
-      dataDecl = dataD (cxt []) name [] [con] [''Eq, ''Show]
+      dataDecl = dataD (cxt []) name [] [con] [''Show]
 
       instanceDecl ∷ Q [Dec]
       instanceDecl