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
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 #-}
{-# 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
{-# 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