Safe Haskell | None |
---|---|
Language | Haskell2010 |
promoted enum functions
Synopsis
- data p ... q
- data EnumFromTo p q
- data EnumFromThenTo p q r
- data FromEnum
- data FromEnum' p
- data Universe (t :: Type)
- data Universe' p
- data SuccB p q
- data SuccB' q
- data PredB p q
- data PredB' q
- data ToEnumBDef (t :: Type) def
- data ToEnumBDef' t def p
- data ToEnumBFail (t :: Type)
- data Succ
- data SuccN n p
- data Pred
- data ToEnum (t :: Type)
- data ToEnum' t p
constructors
similar to enumFromTo
>>>
pz @(2 ... 5) ()
Val [2,3,4,5]
>>>
pz @('LT ... 'GT) ()
Val [LT,EQ,GT]
>>>
pz @('Just (MkDay '(2020, 1, 2)) ... 'Just (MkDay '(2020, 1, 7))) ()
Val [2020-01-02,2020-01-03,2020-01-04,2020-01-05,2020-01-06,2020-01-07]
data EnumFromTo p q Source #
similar to enumFromTo
>>>
pz @(EnumFromTo 'GT 'LT) ()
Val []
>>>
pz @(EnumFromTo Pred Succ) (SG.Max 10)
Val [Max {getMax = 9},Max {getMax = 10},Max {getMax = 11}]
>>>
pz @(EnumFromTo 1 20 >> Map '(Id, (If (Id `Mod` 3 == 0) "Fizz" "" <> If (Id `Mod` 5 == 0) "Buzz" ""))) 123
Val [(1,""),(2,""),(3,"Fizz"),(4,""),(5,"Buzz"),(6,"Fizz"),(7,""),(8,""),(9,"Fizz"),(10,"Buzz"),(11,""),(12,"Fizz"),(13,""),(14,""),(15,"FizzBuzz"),(16,""),(17,""),(18,"Fizz"),(19,""),(20,"Buzz")]
>>>
pl @(EnumFromTo (Pure SG.Min 9) (Pure _ 13)) ()
Present [Min {getMin = 9},Min {getMin = 10},Min {getMin = 11},Min {getMin = 12},Min {getMin = 13}] (Min {getMin = 9} ... Min {getMin = 13}) Val [Min {getMin = 9},Min {getMin = 10},Min {getMin = 11},Min {getMin = 12},Min {getMin = 13}]
>>>
pl @(EnumFromTo (Wrap (SG.Min _) 9) (Wrap _ 13)) ()
Present [Min {getMin = 9},Min {getMin = 10},Min {getMin = 11},Min {getMin = 12},Min {getMin = 13}] (Min {getMin = 9} ... Min {getMin = 13}) Val [Min {getMin = 9},Min {getMin = 10},Min {getMin = 11},Min {getMin = 12},Min {getMin = 13}]
Instances
(P p x, P q x, PP p x ~ a, Show a, PP q x ~ a, Enum a) => P (EnumFromTo p q :: Type) x Source # | |
Defined in Predicate.Data.Enum type PP (EnumFromTo p q) x Source # eval :: MonadEval m => proxy (EnumFromTo p q) -> POpts -> x -> m (TT (PP (EnumFromTo p q) x)) Source # | |
Show (EnumFromTo p q) Source # | |
Defined in Predicate.Data.Enum showsPrec :: Int -> EnumFromTo p q -> ShowS # show :: EnumFromTo p q -> String # showList :: [EnumFromTo p q] -> ShowS # | |
type PP (EnumFromTo p q :: Type) x Source # | |
Defined in Predicate.Data.Enum |
data EnumFromThenTo p q r Source #
similar to enumFromThenTo
>>>
pz @(EnumFromThenTo (10 >> ToEnum Day) (20 >> ToEnum Day) (70 >> ToEnum Day)) ()
Val [1858-11-27,1858-12-07,1858-12-17,1858-12-27,1859-01-06,1859-01-16,1859-01-26]
>>>
pz @(EnumFromThenTo (ReadP Day "2020-01-12") (ReadP Day "2020-02-12") (ReadP Day "2020-08-12")) ()
Val [2020-01-12,2020-02-12,2020-03-14,2020-04-14,2020-05-15,2020-06-15,2020-07-16]
Instances
(P p x, P q x, P r x, PP p x ~ a, Show a, PP q x ~ a, PP r x ~ a, Enum a) => P (EnumFromThenTo p q r :: Type) x Source # | |
Defined in Predicate.Data.Enum type PP (EnumFromThenTo p q r) x Source # eval :: MonadEval m => proxy (EnumFromThenTo p q r) -> POpts -> x -> m (TT (PP (EnumFromThenTo p q r) x)) Source # | |
Show (EnumFromThenTo p q r) Source # | |
Defined in Predicate.Data.Enum showsPrec :: Int -> EnumFromThenTo p q r -> ShowS # show :: EnumFromThenTo p q r -> String # showList :: [EnumFromThenTo p q r] -> ShowS # | |
type PP (EnumFromThenTo p q r :: Type) x Source # | |
Defined in Predicate.Data.Enum |
fromEnum
function
>>>
pz @FromEnum 'x'
Val 120
fromEnum
function
>>>
pz @(FromEnum' Id) 'x'
Val 120
>>>
pl @(FromEnum' ("aa" ==! Id) >> Same 1) "aaaa"
False ((>>) False | {0 == 1}) Val False
>>>
pl @(FromEnum' ("aa" ==! Id) >> ToEnum OrderingP) "aaaa"
Present CGt ((>>) CGt | {ToEnum CGt | 0}) Val CGt
>>>
pl @(Map (FromEnum' Id) >> Map (ToEnum Char)) "abcd"
Present "abcd" ((>>) "abcd" | {Map "abcd" | [97,98,99,100]}) Val "abcd"
data Universe (t :: Type) Source #
get universe of an enum of type t
>>>
pz @(Universe Ordering) ()
Val [LT,EQ,GT]
universe of enum using the type pointed to by p
>>>
pl @(Universe' Id) LT
Present [LT,EQ,GT] (Universe [LT .. GT]) Val [LT,EQ,GT]
bounded enums
bounded succ
function
>>>
pz @(SuccB 'LT Id) GT
Val LT
>>>
pz @(SuccB 'LT 'GT) ()
Val LT
>>>
pz @(SuccB 'GT 'LT) ()
Val EQ
>>>
pl @(SuccB 'LT Id) GT
Present LT (SuccB out of range) Val LT
bounded succ
function
>>>
pz @(SuccB' Id) GT
Fail "Succ bounded"
>>>
pz @(SuccB' Id) (13 :: Int)
Val 14
>>>
pz @(SuccB' Id) LT
Val EQ
bounded pred
function
>>>
pl @(PredB 'GT Id) LT
Present GT (PredB out of range) Val GT
>>>
pl @(PredB 'LT Id) GT
Present EQ (PredB EQ | GT) Val EQ
bounded pred
function
>>>
pz @(PredB' Id) (13 :: Int)
Val 12
>>>
pz @(PredB' Id) LT
Fail "Pred bounded"
>>>
pl @(PredB' Id) GT
Present EQ (PredB EQ | GT) Val EQ
>>>
pl @(PredB' Id) LT
Error Pred bounded (PredB out of range) Fail "Pred bounded"
data ToEnumBDef (t :: Type) def Source #
bounded toEnum
function
>>>
pz @(ToEnumBDef Ordering LT) 2
Val GT
>>>
pz @(ToEnumBDef Ordering LT) 6
Val LT
>>>
pl @(ToEnumBDef Ordering 'LT) 123
Present LT (ToEnumBDef out of range) Val LT
>>>
pl @(ToEnumBDef Ordering 'GT) 1
Present EQ (ToEnumBDef EQ | 1) Val EQ
Instances
P (ToEnumBDefT t def) x => P (ToEnumBDef t def :: Type) x Source # | |
Defined in Predicate.Data.Enum type PP (ToEnumBDef t def) x Source # eval :: MonadEval m => proxy (ToEnumBDef t def) -> POpts -> x -> m (TT (PP (ToEnumBDef t def) x)) Source # | |
Show (ToEnumBDef t def) Source # | |
Defined in Predicate.Data.Enum showsPrec :: Int -> ToEnumBDef t def -> ShowS # show :: ToEnumBDef t def -> String # showList :: [ToEnumBDef t def] -> ShowS # | |
type PP (ToEnumBDef t def :: Type) x Source # | |
Defined in Predicate.Data.Enum |
data ToEnumBDef' t def p Source #
bounded toEnum
function where t
refers to location of the type and p
the location of the input
Instances
(P def (Proxy (PP t a)), PP def (Proxy (PP t a)) ~ PP t a, Show (PP t a), Show a, Bounded (PP t a), Enum (PP t a), Integral (PP p a), P p a) => P (ToEnumBDef' t def p :: Type) a Source # | |
Defined in Predicate.Data.Enum type PP (ToEnumBDef' t def p) a Source # eval :: MonadEval m => proxy (ToEnumBDef' t def p) -> POpts -> a -> m (TT (PP (ToEnumBDef' t def p) a)) Source # | |
Show (ToEnumBDef' t def p) Source # | |
Defined in Predicate.Data.Enum showsPrec :: Int -> ToEnumBDef' t def p -> ShowS # show :: ToEnumBDef' t def p -> String # showList :: [ToEnumBDef' t def p] -> ShowS # | |
type PP (ToEnumBDef' t def p :: Type) a Source # | |
Defined in Predicate.Data.Enum |
data ToEnumBFail (t :: Type) Source #
bounded toEnum
function
>>>
pz @(ToEnumBFail Ordering) 6
Fail "ToEnum bounded"
>>>
pl @(ToEnumBFail Ordering) 1
Present EQ (ToEnumBDef EQ | 1) Val EQ
>>>
pl @(ToEnumBFail Ordering) 44
Error ToEnum bounded (ToEnumBDef out of range) Fail "ToEnum bounded"
Instances
Show (ToEnumBFail t) Source # | |
Defined in Predicate.Data.Enum showsPrec :: Int -> ToEnumBFail t -> ShowS # show :: ToEnumBFail t -> String # showList :: [ToEnumBFail t] -> ShowS # | |
P (ToEnumBFailT t) x => P (ToEnumBFail t :: Type) x Source # | |
Defined in Predicate.Data.Enum type PP (ToEnumBFail t) x Source # eval :: MonadEval m => proxy (ToEnumBFail t) -> POpts -> x -> m (TT (PP (ToEnumBFail t) x)) Source # | |
type PP (ToEnumBFail t :: Type) x Source # | |
Defined in Predicate.Data.Enum |
unsafe enums
unbounded succ
function
>>>
pz @Succ 13
Val 14
>>>
pz @Succ LT
Val EQ
>>>
pz @Succ GT
Fail "Succ IO e=Prelude.Enum.Ordering.succ: bad argument"
>>>
pl @Succ 10
Present 11 (Succ 11 | 10) Val 11
>>>
pl @Succ True -- captures the exception
Error Succ IO e=Prelude.Enum.Bool.succ: bad argument (True) Fail "Succ IO e=Prelude.Enum.Bool.succ: bad argument"
>>>
pz @Succ (Proxy @44)
Fail "Succ IO e=Proxy.succ"
SuccN n p (unsafe) increments an enum p by the given integral n
>>>
pz @(ReadP Day Id >> Id ... SuccN 5 Id) "2020-07-27"
Val [2020-07-27,2020-07-28,2020-07-29,2020-07-30,2020-07-31,2020-08-01]
>>>
pz @(ReadP Day Id >> SuccN (Negate 5) Id) "2020-07-27"
Val 2020-07-22
>>>
pl @(SuccN 3 'LT) ()
Error SuccN IO e=Prelude.Enum.Ordering.toEnum: bad argument (SuccN 3 LT) Fail "SuccN IO e=Prelude.Enum.Ordering.toEnum: bad argument"
>>>
pz @(SuccN 2 'LT) ()
Val GT
unbounded pred
function
>>>
pz @Pred 13
Val 12
>>>
pz @Pred LT
Fail "Pred IO e=Prelude.Enum.Ordering.pred: bad argument"
data ToEnum (t :: Type) Source #
unsafe toEnum
function
>>>
pz @(ToEnum Char) 120
Val 'x'
>>>
pl @(Map FromEnum >> Map (Id - 97 >> ToEnum Ordering)) "abcde"
Error ToEnum IO e=Prelude.Enum.Ordering.toEnum: bad argument(2) (Map(i=3, a=100) excnt=2) Fail "ToEnum IO e=Prelude.Enum.Ordering.toEnum: bad argument(2)"
>>>
pl @((ToEnum Day *** ToEnum Day) >> EnumFromTo Fst Snd) (0,5)
Present [1858-11-17,1858-11-18,1858-11-19,1858-11-20,1858-11-21,1858-11-22] ((>>) [1858-11-17,1858-11-18,1858-11-19,1858-11-20,1858-11-21,1858-11-22] | {1858-11-17 ... 1858-11-22}) Val [1858-11-17,1858-11-18,1858-11-19,1858-11-20,1858-11-21,1858-11-22]
>>>
pz @(ToEnum (Proxy ())) 0
Val Proxy
>>>
pz @(ToEnum (Proxy ())) 1
Fail "ToEnum IO e=Proxy.toEnum: 0 expected"
>>>
pz @(ToEnum (Proxy "sss") >> Pop0 Id ()) 0
Val "sss"
unsafe toEnum
function that allows you to specify the target p
and a pointer to a type t