module ASCII.Lift (Lift (..)) where
import ASCII.CaseRefinement (ASCII'case)
import ASCII.Char (Char)
import ASCII.Refinement.Internal (ASCII)
import ASCII.Superset (CharSuperset, StringSuperset)
import qualified ASCII.CaseRefinement as CaseRefinement
import qualified ASCII.Refinement.Internal as Refinement
import qualified ASCII.Superset as S
class Lift subset superset where
lift :: subset -> superset
instance Lift a a where lift :: a -> a
lift a
x = a
x
instance Lift (ASCII superset) superset where lift :: ASCII superset -> superset
lift = forall superset. ASCII superset -> superset
Refinement.lift
instance Lift (ASCII'case letterCase superset) superset where lift :: ASCII'case letterCase superset -> superset
lift = forall (letterCase :: Case) superset.
ASCII'case letterCase superset -> superset
CaseRefinement.lift
instance Lift (ASCII'case letterCase superset) (ASCII superset) where lift :: ASCII'case letterCase superset -> ASCII superset
lift = forall (letterCase :: Case) superset.
ASCII'case letterCase superset -> ASCII superset
CaseRefinement.forgetCase
instance CharSuperset superset => Lift Char superset where lift :: Char -> superset
lift = forall char. FromChar char => Char -> char
S.fromChar
instance StringSuperset superset => Lift [Char] superset where lift :: [Char] -> superset
lift = forall string. FromString string => [Char] -> string
S.fromCharList