Safe Haskell | None |
---|---|
Language | Haskell2010 |
Predicate.Prelude
Contents
- boolean expressions
- regex expressions
- tuple expressions
- character expressions
- datetime expressions
- numeric expressions
- proxy expressions
- read / show expressions
- aeson expressions
- arrow expressions
- compare expressions
- enum expressions
- wrap / unwrap expressions
- list / foldable expressions
- maybe expressions
- either expressions
- semigroup / monoid expressions
- indexing expressions
- cons / uncons expressions
- these expressions
- fold / unfold expressions
- failure expressions
- zip expressions
- conditional expressions
- IO expressions
- string expressions
- print expressions
- higher order expressions
- expression combinators
- miscellaneous
- tuples
Description
Dsl for evaluating and displaying type level expressions
Contains instances of the class P
for evaluating expressions at the type level.
Synopsis
- data p && q
- data p &&~ q
- data p || q
- data p ||~ q
- data p ~> q
- data Not p
- data Ands p
- data Ors p
- data Asc
- data Asc'
- data Desc
- data Desc'
- data Between p q r
- data BetweenA p q
- data p <..> q
- data All p q
- data Any p q
- data AllPositive
- type Positive = Gt 0
- data AllNegative
- type Negative = Lt 0
- data AndA p q r
- data p &* q
- data OrA p q r
- data p |+ q
- data IdBool p
- data Re p q
- data Re' (rs :: [ROpt]) p q
- data Rescan p q
- data Rescan' (rs :: [ROpt]) p q
- data RescanRanges p q
- data RescanRanges' (rs :: [ROpt]) p q
- data Resplit p q
- data Resplit' (rs :: [ROpt]) p q
- data ReplaceAll p q r
- data ReplaceAll' (rs :: [ROpt]) p q r
- data ReplaceOne p q r
- data ReplaceOne' (rs :: [ROpt]) p q r
- data ReplaceAllString o p q r
- data ReplaceAllString' (rs :: [ROpt]) (o :: ReplaceFnSub) p q r
- data ReplaceOneString (o :: ReplaceFnSub) p q r
- data ReplaceOneString' (rs :: [ROpt]) (o :: ReplaceFnSub) p q r
- data ReplaceFn (o :: ReplaceFnSub) p
- data ReplaceFn1 p
- data ReplaceFn2 p
- data ReplaceFn3 p
- data Fst p
- data Snd p
- data Thd p
- data L1 p
- data L2 p
- data L3 p
- data L4 p
- data L5 p
- data L6 p
- data Dup
- data Swap
- class Bifunctor p => SwapC p where
- swapC :: p a b -> p b a
- data Assoc
- data Unassoc
- data Pairs
- data IsLower
- data IsUpper
- data IsDigit
- data IsSpace
- data IsPunctuation
- data IsControl
- data IsHexDigit
- data IsOctDigit
- data IsSeparator
- data IsLatin1
- data IsLowerAll
- data IsUpperAll
- data IsDigitAll
- data IsSpaceAll
- data IsPunctuationAll
- data IsControlAll
- data IsHexDigitAll
- data IsOctDigitAll
- data IsSeparatorAll
- data IsLatin1All
- data FormatTimeP p q
- data ParseTimeP (t :: Type) p q
- data ParseTimeP' t p q
- data ParseTimes (t :: Type) p q
- data ParseTimes' t p q
- data MkDay p
- data MkDay' p q r
- data UnMkDay p
- data MkDayExtra p
- data MkDayExtra' p q r
- data ToWeekDate p
- data ToWeekYear p
- data ToDay p
- data ToTime p
- data MkTime p
- data MkTime' p q r
- data UnMkTime p
- data PosixToUTCTime p
- data UTCTimeToPosix p
- data p + q
- data p - q
- data p * q
- data p / q
- data Negate p
- data Abs p
- data Signum p
- data FromInteger (t :: Type) p
- data FromInteger' t n
- data FromIntegral (t :: Type) p
- data FromIntegral' t n
- data Truncate (t :: Type) p
- data Truncate' t p
- data Ceiling (t :: Type) p
- data Ceiling' t p
- data Floor (t :: Type) p
- data Floor' t p
- data Even
- data Odd
- data Div p q
- data Mod p q
- data DivMod p q
- data QuotRem p q
- data Quot p q
- data Rem p q
- data LogBase p q
- data p ^ q
- data p ** q
- data p % q
- data p -% q
- data ToRational p
- data FromRational (t :: Type) p
- data FromRational' t r
- data MkProxy
- data ProxyT (t :: Type)
- data ProxyT' t
- data Unproxy
- data ShowP p
- data ReadP (t :: Type) p
- data ReadP' t p
- data ReadQ (t :: Type) p
- data ReadQ' t p
- data ReadMaybe (t :: Type) p
- data ReadMaybe' t p
- data ReadBase (t :: Type) (n :: Nat) p
- data ReadBase' t (n :: Nat) p
- data ShowBase (n :: Nat) p
- data ParseJson' t p
- data ParseJson (t :: Type) p
- data EncodeJson p
- data EncodeJsonFile p q
- data ParseJsonFile' t p
- data ParseJsonFile (t :: Type) p
- data p &&& q
- data p *** q
- data First p
- data Second q
- data p ||| q
- data p +++ q
- data p > q
- data p >= q
- data p == q
- data p /= q
- data p <= q
- data p < q
- data p >~ q
- data p >=~ q
- data p ==~ q
- data p /=~ q
- data p <=~ q
- data p <~ q
- type Gt n = I > n
- type Ge n = I >= n
- type Same n = I == n
- type Le n = I <= n
- type Lt n = I < n
- type Ne n = I /= n
- data p ==! q
- type OrdP p q = p ==! q
- data OrdA' p q
- data OrdA p
- type OrdI p q = p ===~ q
- data p ===~ q
- data Cmp (o :: OrderingP) p q
- data CmpI (o :: OrderingP) p q
- data Succ p
- data Pred p
- data FromEnum p
- data ToEnum (t :: Type) p
- data ToEnum' t p
- data EnumFromTo p q
- data EnumFromThenTo p q r
- data SuccB p q
- data SuccB' q
- data PredB p q
- data PredB' q
- data ToEnumBDef (t :: Type) def
- data ToEnumBDef' t def
- data ToEnumBFail (t :: Type)
- data Unwrap p
- data Wrap (t :: Type) p
- data Wrap' t p
- data Coerce (t :: k)
- data Coerce2 (t :: k)
- data Map p q
- data Concat p
- data ConcatMap p q
- data Partition p q
- data GroupOn t p q
- data Filter p q
- data Break p q
- data Span p q
- data Intercalate p q
- data Elem p q
- data Inits
- data Tails
- data Ones p
- data OneP p
- data Len
- data Length p
- data PadL n p q
- data PadR n p q
- data Cycle n p
- data SplitAts ns p
- data SplitAt n p
- data ChunksOf n p
- data Rotate n p
- data Take n p
- data Drop n p
- data Min
- data Max
- data Sum
- data Product
- data IsEmpty
- data Null
- data Null' p
- data ToList
- data ToList' p
- data IToList (t :: Type) p
- data IToList' t p
- data FromList (t :: Type)
- data EmptyList (t :: Type)
- data EmptyList' t
- data Singleton p
- data Reverse
- data ReverseL
- data SortBy p q
- data SortOn p q
- data SortOnDesc p q
- data Remove p q
- data Keep p q
- data ToListExt
- data FromListExt (t :: Type)
- data MkNothing (t :: Type)
- data MkNothing' t
- data MkJust p
- data IsNothing p
- data IsJust p
- data MapMaybe p q
- data CatMaybes q
- data Just p
- data JustDef p q
- data JustFail p q
- data MaybeIn p q
- data MaybeBool b p
- data PartitionEithers
- data IsLeft p
- data IsRight p
- data MkLeft (t :: Type) p
- data MkLeft' t p
- data MkRight (t :: Type) p
- data MkRight' t p
- data Left' p
- data Right' p
- data LeftDef p q
- data LeftFail p q
- data RightDef p q
- data RightFail p q
- data EitherBool b p q
- type EitherIn p q = p ||| q
- data p <> q
- data MConcat p
- data STimes n p
- data SapA
- data SapA' (t :: Type)
- data MEmptyT (t :: Type)
- data MEmptyT' t
- data MEmptyP
- data MEmpty2 (t :: Type)
- data MEmpty2' t
- data Ix (n :: Nat) def
- data Ix' (n :: Nat)
- data IxL p q def
- data p !! q
- data p !!? q
- data Lookup p q
- data LookupDef v w p
- data LookupDef' v w p q
- data LookupFail msg v w
- data LookupFail' msg v w q
- data p :+ q
- data p +: q
- data p ++ q
- data Uncons
- data Unsnoc
- data Head p
- data Tail p
- data Init p
- data Last p
- data HeadDef p q
- data HeadFail msg q
- data TailDef p q
- data TailFail msg q
- data LastDef p q
- data LastFail msg q
- data InitDef p q
- data InitFail msg q
- data PartitionThese
- data Thiss
- data Thats
- data Theses
- data This' p
- data That' p
- data These' p
- data IsThis p
- data IsThat p
- data IsThese p
- data MkThis (t :: Type) p
- data MkThis' t p
- data MkThat (t :: Type) p
- data MkThat' t p
- data MkThese p q
- data ThisDef p q
- data ThisFail p q
- data ThatDef p q
- data ThatFail p q
- data TheseDef p q
- data TheseFail p q
- data TheseIn p q r
- data TheseId p q
- data TheseX p q r s
- data Scanl p q r
- data ScanN n p q
- data ScanNA q
- data FoldN n p q
- data FoldL p q r
- data Unfoldr p q
- data IterateN n f
- data IterateUntil p f
- data IterateWhile p f
- data IterateNWhile n p f
- data IterateNUntil n p f
- data Fail t prt
- data Failp p
- data Failt (t :: Type) p
- data FailS p
- data Catch p q
- data Catch' p s
- data ZipThese p q
- data ZipL l p q
- data ZipR r p q
- data Zip p q
- data Unzip
- data Unzip3
- data If p q r
- data Case (e :: k0) (ps :: [k]) (qs :: [k1]) (r :: k2)
- data Case' (ps :: [k]) (qs :: [k1]) (r :: k2)
- data Case'' s (ps :: [k]) (qs :: [k1]) (r :: k2)
- data Guards (ps :: [(k, k1)])
- data GuardsQuick (prt :: k) (ps :: [k1])
- data Guard prt p
- data ExitWhen prt p
- data GuardSimple p
- data GuardsN prt (n :: Nat) p
- data GuardsDetail prt (ps :: [(k0, k1)])
- data Bools (ps :: [(k, k1)])
- data BoolsQuick (prt :: k) (ps :: [k1])
- data BoolsN prt (n :: Nat) (p :: k1)
- data ReadFile p
- data FileExists p
- data ReadDir p
- data DirExists p
- data ReadEnv p
- data ReadEnvAll
- data TimeUtc
- data TimeZt
- data AppendFile (s :: Symbol) p
- data WriteFile (s :: Symbol) p
- data WriteFile' (s :: Symbol) p
- data Stdout p
- data Stderr p
- data Stdin
- type ReadIO (t :: Type) = ReadIO' t "Enter value"
- type ReadIO' (t :: Type) s = Stdout (s <> ":") >> (Stdin >> ReadP t Id)
- data ToLower
- data ToUpper
- data ToTitle
- data TrimBoth p
- data TrimL p
- data TrimR p
- data StripR p q
- data StripL p q
- data IsPrefix p q
- data IsInfix p q
- data IsSuffix p q
- data IsPrefixI p q
- data IsInfixI p q
- data IsSuffixI p q
- data ToString p
- data FromString (t :: Type) p
- data FromString' t s
- data PrintF s p
- data PrintL (n :: Nat) s p
- data PrintT s p
- data Pure (t :: Type -> Type) p
- data Pure2 (t :: Type -> Type)
- data FoldMap (t :: Type) p
- data p <$ q
- data p <* q
- data p *> q
- data FMapFst
- data FMapSnd
- data Sequence
- data Traverse p q
- data Join
- data EmptyT (t :: Type -> Type) p
- data p <|> q
- data Extract
- data Duplicate
- data (p :: k -> k1) $ (q :: k)
- data (q :: k) & (p :: k -> k1)
- data Do (ps :: [k])
- data Dot (ps :: [Type -> Type]) (q :: Type)
- data RDot (ps :: [Type -> Type]) (q :: Type)
- data p >> q
- data p << q
- type (>>>) p q = p >> q
- data DoN (n :: Nat) p
- data p $$ q
- data q $& p
- data K (p :: k) (q :: k1)
- data Hide p
- data Hole (t :: Type)
- data Skip p
- data p |> q
- data p >| q
- data p >|> q
- data Uncurry (p :: Type -> Type -> Type -> Type) q r
- data Para (ps :: [k])
- data ParaN (n :: Nat) p
- data Repeat (n :: Nat) p
- data Both p q
- data Prime p
- data PrimeNext p
- data Luhn p
- data Char1 (s :: Symbol)
- type Tuple2 p = '(p !! 0, p !! 1)
- type Tuple3 p = '(p !! 0, p !! 1, p !! 2)
- type Tuple4 p = '(p !! 0, p !! 1, p !! 2, p !! 3)
- type Tuple5 p = '(p !! 0, p !! 1, p !! 2, p !! 3, p !! 4)
- type Tuple6 p = '(p !! 0, p !! 1, p !! 2, p !! 3, p !! 4, p !! 5)
boolean expressions
similar to &&
>>>
pz @(Fst Id && Snd Id) (True, True)
TrueT
>>>
pz @(Id > 15 && Id < 17) 16
TrueT
>>>
pz @(Id > 15 && Id < 17) 30
FalseT
>>>
pz @(Fst Id && (Length (Snd Id) >= 4)) (True,[11,12,13,14])
TrueT
>>>
pz @(Fst Id && (Length (Snd Id) == 4)) (True,[12,11,12,13,14])
FalseT
data p &&~ q infixr 3 Source #
short circuit version of boolean And
>>>
pl @(Id > 10 &&~ Failt _ "ss") 9
False (False &&~ ... | (9 > 10)) FalseT
>>>
pl @(Id > 10 &&~ Id == 12) 11
False (True &&~ False | (11 == 12)) FalseT
>>>
pl @(Id > 10 &&~ Id == 11) 11
True (True &&~ True) TrueT
similar to ||
>>>
pz @(Fst Id || (Length (Snd Id) >= 4)) (False,[11,12,13,14])
TrueT
>>>
pz @(Not (Fst Id) || (Length (Snd Id) == 4)) (True,[12,11,12,13,14])
FalseT
data p ||~ q infixr 2 Source #
short circuit version of boolean Or
>>>
pl @(Id > 10 ||~ Failt _ "ss") 11
True (True ||~ ...) TrueT
>>>
pz @(Id > 10 ||~ Id == 9) 9
TrueT
>>>
pl @(Id > 10 ||~ Id > 9) 9
False (False ||~ False | (9 > 10) ||~ (9 > 9)) FalseT
implication
>>>
pz @(Fst Id ~> (Length (Snd Id) >= 4)) (True,[11,12,13,14])
TrueT
>>>
pz @(Fst Id ~> (Length (Snd Id) == 4)) (True,[12,11,12,13,14])
FalseT
>>>
pz @(Fst Id ~> (Length (Snd Id) == 4)) (False,[12,11,12,13,14])
TrueT
>>>
pz @(Fst Id ~> (Length (Snd Id) >= 4)) (False,[11,12,13,14])
TrueT
not
function
>>>
pz @(Not Id) False
TrueT
>>>
pz @(Not Id) True
FalseT
>>>
pz @(Not (Fst Id)) (True,22)
FalseT
>>>
pl @(Not (Lt 3)) 13
True (Not (13 < 3)) TrueT
>>>
pz @(Ands Id) [True,True,True]
TrueT
>>>
pl @(Ands Id) [True,True,True,False]
False (Ands(4) i=3 | [True,True,True,False]) FalseT
>>>
pz @(Ands Id) []
TrueT
>>>
pz @(Ors Id) [False,False,False]
FalseT
>>>
pl @(Ors Id) [True,True,True,False]
True (Ors(4) i=0 | [True,True,True,False]) TrueT
>>>
pl @(Ors Id) []
False (Ors(0) | []) FalseT
a type level predicate for a monotonic increasing list
>>>
pl @Asc "aaacdef"
True (All(6)) TrueT
>>>
pz @Asc [1,2,3,4,5,5,7]
TrueT
>>>
pz @Asc' [1,2,3,4,5,5,7]
FalseT
>>>
pz @Asc "axacdef"
FalseT
a type level predicate for a monotonic increasing list
a type level predicate for a strictly increasing list
a type level predicate for a monotonic decreasing list
a type level predicate for a strictly decreasing list
A predicate that determines if the value is between 'p' and 'q'
>>>
pz @(Between 5 8 Len) [1,2,3,4,5,5,7]
TrueT
>>>
pz @(5 <..> 8) 6
TrueT
>>>
pl @(Between 5 8 Id) 9
False (9 <= 8) FalseT
>>>
pz @(10 % 4 <..> 40 % 5) 4
TrueT
>>>
pz @(10 % 4 <..> 40 % 5) 33
FalseT
between for tuples
>>>
pl @(BetweenA (Fst Id) (Snd Id)) ((1,4),8)
False (8 <= 4) FalseT
>>>
pl @(BetweenA (Fst Id) (Snd Id)) ((1,4),0)
False (1 <= 0) FalseT
>>>
pl @(BetweenA (Fst Id) (Snd Id)) ((1,4),3)
True (1 <= 3 <= 4) TrueT
>>>
pl @(BetweenA (ReadP (Day,Day) "(2017-04-11,2018-12-30)") (ReadP Day Id)) "2018-10-12"
True (2017-04-11 <= 2018-10-12 <= 2018-12-30) TrueT
>>>
pl @(BetweenA (ReadP (Day,Day) "(2017-04-11,2018-12-30)") (ReadP Day Id)) "2019-10-12"
False (2019-10-12 <= 2018-12-30) FalseT
>>>
pl @(BetweenA (ReadP (Day,Day) "(2017-04-11,2018-12-30)") (ReadP Day Id)) "2016-10-12"
False (2017-04-11 <= 2016-10-12) FalseT
similar to all
>>>
pl @(All (Between 1 8 Id) Id) [7,3,4,1,2,9,0,1]
False (All(8) i=5 (9 <= 8)) FalseT
>>>
pz @(All Odd Id) [1,5,11,5,3]
TrueT
>>>
pz @(All Odd Id) []
TrueT
>>>
pan @(All Even Id) [1,5,11,5,3]
False All(5) i=0 (1 == 0) | +- P Id [1,5,11,5,3] | +- False i=0:1 == 0 | | | +- P 1 `mod` 2 = 1 | | | | | +- P I | | | | | `- P '2 | | | `- P '0 | +- False i=1:1 == 0 | | | +- P 5 `mod` 2 = 1 | | | | | +- P I | | | | | `- P '2 | | | `- P '0 | +- False i=2:1 == 0 | | | +- P 11 `mod` 2 = 1 | | | | | +- P I | | | | | `- P '2 | | | `- P '0 | +- False i=3:1 == 0 | | | +- P 5 `mod` 2 = 1 | | | | | +- P I | | | | | `- P '2 | | | `- P '0 | `- False i=4:1 == 0 | +- P 3 `mod` 2 = 1 | | | +- P I | | | `- P '2 | `- P '0 FalseT
similar to any
>>>
pl @(Any Even Id) [1,5,11,5,3]
False (Any(5)) FalseT
>>>
pl @(Any Even Id) [1,5,112,5,3]
True (Any(5) i=2 (0 == 0)) TrueT
>>>
pz @(Any Even Id) []
FalseT
data AllPositive Source #
a type level predicate for all positive elements in a list
>>>
pz @AllPositive [1,5,10,2,3]
TrueT
>>>
pz @AllPositive [0,1,5,10,2,3]
FalseT
>>>
pz @AllPositive [3,1,-5,10,2,3]
FalseT
>>>
pz @AllNegative [-1,-5,-10,-2,-3]
TrueT
Instances
P AllPositiveT x => P AllPositive x Source # | |
Defined in Predicate.Prelude Associated Types type PP AllPositive x :: Type Source # Methods eval :: MonadEval m => Proxy AllPositive -> POpts -> x -> m (TT (PP AllPositive x)) Source # | |
type PP AllPositive x Source # | |
Defined in Predicate.Prelude |
data AllNegative Source #
a type level predicate for all negative elements in a list
Instances
P AllNegativeT x => P AllNegative x Source # | |
Defined in Predicate.Prelude Associated Types type PP AllNegative x :: Type Source # Methods eval :: MonadEval m => Proxy AllNegative -> POpts -> x -> m (TT (PP AllNegative x)) Source # | |
type PP AllNegative x Source # | |
Defined in Predicate.Prelude |
like &&
but for a tuple
>>>
pl @(SplitAt 4 "abcdefg" >> Len > 4 &* Len < 5) ()
False ((>>) False | {False (&*) True | (4 > 4)}) FalseT
like ||
but for a tuple
>>>
pl @(Sum > 44 |+ Id < 2) ([5,6,7,8,14,44],9)
True (True (|+) False) TrueT
>>>
pl @(Sum > 44 |+ Id < 2) ([5,6,7,14],9)
False (False (|+) False | (32 > 44) (|+) (9 < 2)) FalseT
>>>
pl @(Sum > 44 |+ Id < 2) ([5,6,7,14],1)
True (False (|+) True) TrueT
id
function on a boolean
>>>
pz @(IdBool Id) False
FalseT
>>>
pz @(IdBool Id) True
TrueT
>>>
pz @(IdBool (Fst Id)) (True,22)
TrueT
>>>
pl @(IdBool (Lt 3)) 13
False (IdBool (13 < 3)) FalseT
regex expressions
data Re' (rs :: [ROpt]) p q Source #
represents a predicate using a Symbol
as a regular expression
evaluates Re
and returns True if there is a match
>>>
pz @(Re "^\\d{2}:\\d{2}:\\d{2}$" Id) "13:05:25"
TrueT
data Rescan' (rs :: [ROpt]) p q Source #
runs a regex matcher returning the original values and optionally any groups
>>>
pz @(Rescan "^(\\d{2}):(\\d{2}):(\\d{2})$" Id) "13:05:25"
PresentT [("13:05:25",["13","05","25"])]
>>>
pz @(Rescan (Snd Id) "13:05:25") ('a',"^(\\d{2}):(\\d{2}):(\\d{2})$")
PresentT [("13:05:25",["13","05","25"])]
data RescanRanges p q Source #
Instances
P (RescanRangesT p q) x => P (RescanRanges p q :: Type) x Source # | |
Defined in Predicate.Prelude Associated Types type PP (RescanRanges p q) x :: Type Source # Methods eval :: MonadEval m => Proxy (RescanRanges p q) -> POpts -> x -> m (TT (PP (RescanRanges p q) x)) Source # | |
type PP (RescanRanges p q :: Type) x Source # | |
Defined in Predicate.Prelude |
data RescanRanges' (rs :: [ROpt]) p q Source #
similar to Rescan
but gives the column start and ending positions instead of values
>>>
pz @(RescanRanges "^(\\d{2}):(\\d{2}):(\\d{2})$" Id) "13:05:25"
PresentT [((0,8),[(0,2),(3,5),(6,8)])]
Instances
(GetROpts rs, PP p x ~ String, PP q x ~ String, P p x, P q x) => P (RescanRanges' rs p q :: Type) x Source # | |
Defined in Predicate.Prelude Associated Types type PP (RescanRanges' rs p q) x :: Type Source # Methods eval :: MonadEval m => Proxy (RescanRanges' rs p q) -> POpts -> x -> m (TT (PP (RescanRanges' rs p q) x)) Source # | |
type PP (RescanRanges' rs p q :: Type) x Source # | |
Defined in Predicate.Prelude |
data Resplit' (rs :: [ROpt]) p q Source #
splits a string on a regex delimiter
>>>
pz @(Resplit "\\." Id) "141.201.1.22"
PresentT ["141","201","1","22"]
>>>
pz @(Resplit (Singleton (Fst Id)) (Snd Id)) (':', "12:13:1")
PresentT ["12","13","1"]
>>>
pl @(Resplit' '[ 'Caseless ] "aBc" Id) "123AbC456abc"
Present ["123","456",""] (Resplit (aBc) ["123","456",""] | 123AbC456abc) PresentT ["123","456",""]
data ReplaceAll p q r Source #
Instances
P (ReplaceAllT p q r) x => P (ReplaceAll p q r :: Type) x Source # | |
Defined in Predicate.Prelude Associated Types type PP (ReplaceAll p q r) x :: Type Source # Methods eval :: MonadEval m => Proxy (ReplaceAll p q r) -> POpts -> x -> m (TT (PP (ReplaceAll p q r) x)) Source # | |
type PP (ReplaceAll p q r :: Type) x Source # | |
Defined in Predicate.Prelude |
data ReplaceAll' (rs :: [ROpt]) p q r Source #
Instances
P (ReplaceAllT' rs p q r) x => P (ReplaceAll' rs p q r :: Type) x Source # | |
Defined in Predicate.Prelude Associated Types type PP (ReplaceAll' rs p q r) x :: Type Source # Methods eval :: MonadEval m => Proxy (ReplaceAll' rs p q r) -> POpts -> x -> m (TT (PP (ReplaceAll' rs p q r) x)) Source # | |
type PP (ReplaceAll' rs p q r :: Type) x Source # | |
Defined in Predicate.Prelude |
data ReplaceOne p q r Source #
replace first occurrence of string 'p' with '\q' in 'r'
>>>
pl @(ReplaceOneString 'ROverWrite "abc" "def" Id) "123abc456abc"
Present "123def456abc" (ReplaceOne' [] (abc) 123abc456abc | 123def456abc) PresentT "123def456abc"
>>>
pz @(Rescan "^Date\\((\\d+[+-]\\d{4})\\)" Id >> Head Id >> Snd Id >> Id !! 0 >> ReplaceOneString 'RPrepend "\\d{3}[+-]" "." Id >> ParseTimeP ZonedTime "%s%Q%z" Id) "Date(1530144000123+0530)"
PresentT 2018-06-28 05:30:00.123 +0530
>>>
pz @(Rescan "^Date\\((\\d+[+-]\\d{4})\\)" Id >> Head Id >> Snd Id >> Id !! 0 >> ReplaceOneString 'RPrepend "\\d{3}[+-]" "." Id >> ParseTimeP ZonedTime "%s%Q%z" Id) "Date(1593460089052+0800)"
PresentT 2020-06-30 03:48:09.052 +0800
>>>
pz @(Rescan "^Date\\((\\d+)(\\d{3}[+-]\\d{4})\\)" Id >> Head Id >> Snd Id >> (Id !! 0 <> "." <> Id !! 1) >> ParseTimeP ZonedTime "%s%Q%z" Id) "Date(1593460089052+0800)"
PresentT 2020-06-30 03:48:09.052 +0800
Instances
P (ReplaceOneT p q r) x => P (ReplaceOne p q r :: Type) x Source # | |
Defined in Predicate.Prelude Associated Types type PP (ReplaceOne p q r) x :: Type Source # Methods eval :: MonadEval m => Proxy (ReplaceOne p q r) -> POpts -> x -> m (TT (PP (ReplaceOne p q r) x)) Source # | |
type PP (ReplaceOne p q r :: Type) x Source # | |
Defined in Predicate.Prelude |
data ReplaceOne' (rs :: [ROpt]) p q r Source #
Instances
P (ReplaceOneT' rs p q r) x => P (ReplaceOne' rs p q r :: Type) x Source # | |
Defined in Predicate.Prelude Associated Types type PP (ReplaceOne' rs p q r) x :: Type Source # Methods eval :: MonadEval m => Proxy (ReplaceOne' rs p q r) -> POpts -> x -> m (TT (PP (ReplaceOne' rs p q r) x)) Source # | |
type PP (ReplaceOne' rs p q r :: Type) x Source # | |
Defined in Predicate.Prelude |
data ReplaceAllString o p q r Source #
Instances
P (ReplaceAllStringT o p q r) x => P (ReplaceAllString o p q r :: Type) x Source # | |
Defined in Predicate.Prelude Associated Types type PP (ReplaceAllString o p q r) x :: Type Source # Methods eval :: MonadEval m => Proxy (ReplaceAllString o p q r) -> POpts -> x -> m (TT (PP (ReplaceAllString o p q r) x)) Source # | |
type PP (ReplaceAllString o p q r :: Type) x Source # | |
Defined in Predicate.Prelude |
data ReplaceAllString' (rs :: [ROpt]) (o :: ReplaceFnSub) p q r Source #
replace all occurrences of string 'p' with '\q' in 'r'
>>>
pl @(ReplaceAllString 'ROverWrite "abc" "def" Id) "123abc456abc"
Present "123def456def" (ReplaceAll' [] (abc) 123abc456abc | 123def456def) PresentT "123def456def"
>>>
pl @(ReplaceAllString' '[] 'ROverWrite "abc" "def" Id) "123AbC456abc"
Present "123AbC456def" (ReplaceAll' [] (abc) 123AbC456abc | 123AbC456def) PresentT "123AbC456def"
>>>
pl @(ReplaceAllString' '[ 'Caseless ] 'ROverWrite "abc" "def" Id) "123AbC456abc"
Present "123def456def" (ReplaceAll (abc) 123AbC456abc | 123def456def) PresentT "123def456def"
>>>
pl @(ReplaceAllString 'RPrepend "abc" "def" Id) "123AbC456abc"
Present "123AbC456defabc" (ReplaceAll' [] (abc) 123AbC456abc | 123AbC456defabc) PresentT "123AbC456defabc"
>>>
pl @(ReplaceAllString 'ROverWrite "abc" "def" Id) "123AbC456abc"
Present "123AbC456def" (ReplaceAll' [] (abc) 123AbC456abc | 123AbC456def) PresentT "123AbC456def"
>>>
pl @(ReplaceAllString 'RAppend "abc" "def" Id) "123AbC456abc"
Present "123AbC456abcdef" (ReplaceAll' [] (abc) 123AbC456abc | 123AbC456abcdef) PresentT "123AbC456abcdef"
Instances
P (ReplaceAllStringT' rs o p q r) x => P (ReplaceAllString' rs o p q r :: Type) x Source # | |
Defined in Predicate.Prelude Associated Types type PP (ReplaceAllString' rs o p q r) x :: Type Source # Methods eval :: MonadEval m => Proxy (ReplaceAllString' rs o p q r) -> POpts -> x -> m (TT (PP (ReplaceAllString' rs o p q r) x)) Source # | |
type PP (ReplaceAllString' rs o p q r :: Type) x Source # | |
Defined in Predicate.Prelude |
data ReplaceOneString (o :: ReplaceFnSub) p q r Source #
Instances
P (ReplaceOneStringT o p q r) x => P (ReplaceOneString o p q r :: Type) x Source # | |
Defined in Predicate.Prelude Associated Types type PP (ReplaceOneString o p q r) x :: Type Source # Methods eval :: MonadEval m => Proxy (ReplaceOneString o p q r) -> POpts -> x -> m (TT (PP (ReplaceOneString o p q r) x)) Source # | |
type PP (ReplaceOneString o p q r :: Type) x Source # | |
Defined in Predicate.Prelude |
data ReplaceOneString' (rs :: [ROpt]) (o :: ReplaceFnSub) p q r Source #
Instances
P (ReplaceOneStringT' rs o p q r) x => P (ReplaceOneString' rs o p q r :: Type) x Source # | |
Defined in Predicate.Prelude Associated Types type PP (ReplaceOneString' rs o p q r) x :: Type Source # Methods eval :: MonadEval m => Proxy (ReplaceOneString' rs o p q r) -> POpts -> x -> m (TT (PP (ReplaceOneString' rs o p q r) x)) Source # | |
type PP (ReplaceOneString' rs o p q r :: Type) x Source # | |
Defined in Predicate.Prelude |
data ReplaceFn (o :: ReplaceFnSub) p Source #
Simple replacement string: see ReplaceAllString
and ReplaceOneString
data ReplaceFn1 p Source #
A replacement function (String -> [String] -> String)
which returns the whole match and the groups
Used by sub
and gsub
Requires Text.Show.Functions
Instances
(PP p x ~ (String -> [String] -> String), P p x) => P (ReplaceFn1 p :: Type) x Source # | |
Defined in Predicate.Prelude Associated Types type PP (ReplaceFn1 p) x :: Type Source # Methods eval :: MonadEval m => Proxy (ReplaceFn1 p) -> POpts -> x -> m (TT (PP (ReplaceFn1 p) x)) Source # | |
type PP (ReplaceFn1 p :: Type) x Source # | |
Defined in Predicate.Prelude |
data ReplaceFn2 p Source #
A replacement function (String -> String)
that yields the whole match
Used by sub
and gsub
Requires Text.Show.Functions
>>>
:m + Text.Show.Functions
>>>
pz @(ReplaceAll "\\." (ReplaceFn2 (Fst Id)) (Snd Id)) (\x -> x <> ":" <> x, "141.201.1.22")
PresentT "141.:.201.:.1.:.22"
Instances
(PP p x ~ (String -> String), P p x) => P (ReplaceFn2 p :: Type) x Source # | |
Defined in Predicate.Prelude Associated Types type PP (ReplaceFn2 p) x :: Type Source # Methods eval :: MonadEval m => Proxy (ReplaceFn2 p) -> POpts -> x -> m (TT (PP (ReplaceFn2 p) x)) Source # | |
type PP (ReplaceFn2 p :: Type) x Source # | |
Defined in Predicate.Prelude |
data ReplaceFn3 p Source #
A replacement function ([String] -> String)
which yields the groups
Used by sub
and gsub
Requires Text.Show.Functions
>>>
:m + Text.Show.Functions
>>>
pz @(ReplaceAll "^(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)$" (ReplaceFn3 (Fst Id)) (Snd Id)) (\ys -> intercalate " | " $ map (show . succ . readNote @Int "invalid int") ys, "141.201.1.22")
PresentT "142 | 202 | 2 | 23"
Instances
(PP p x ~ ([String] -> String), P p x) => P (ReplaceFn3 p :: Type) x Source # | |
Defined in Predicate.Prelude Associated Types type PP (ReplaceFn3 p) x :: Type Source # Methods eval :: MonadEval m => Proxy (ReplaceFn3 p) -> POpts -> x -> m (TT (PP (ReplaceFn3 p) x)) Source # | |
type PP (ReplaceFn3 p :: Type) x Source # | |
Defined in Predicate.Prelude |
tuple expressions
similar to fst
>>>
pz @(Fst Id) (10,"Abc")
PresentT 10
>>>
pz @(Fst Id) (10,"Abc",'x')
PresentT 10
>>>
pz @(Fst Id) (10,"Abc",'x',False)
PresentT 10
similar to snd
>>>
pz @(Snd Id) (10,"Abc")
PresentT "Abc"
>>>
pz @(Snd Id) (10,"Abc",True)
PresentT "Abc"
similar to 3rd element in a n-tuple
>>>
pz @(Thd Id) (10,"Abc",133)
PresentT 133
>>>
pz @(Thd Id) (10,"Abc",133,True)
PresentT 133
similar to 4th element in a n-tuple
>>>
pz @(L4 Id) (10,"Abc",'x',True)
PresentT True
>>>
pz @(L4 (Fst (Snd Id))) ('x',((10,"Abc",'x',999),"aa",1),9)
PresentT 999
similar to 5th element in a n-tuple
>>>
pz @(L5 Id) (10,"Abc",'x',True,1)
PresentT 1
similar to 6th element in a n-tuple
>>>
pz @(L6 Id) (10,"Abc",'x',True,1,99)
PresentT 99
swaps using SwapC
>>>
pz @Swap (Left 123)
PresentT (Right 123)
>>>
pz @Swap (Right 123)
PresentT (Left 123)
>>>
pz @Swap (These 'x' 123)
PresentT (These 123 'x')
>>>
pz @Swap (This 'x')
PresentT (That 'x')
>>>
pz @Swap (That 123)
PresentT (This 123)
>>>
pz @Swap (123,'x')
PresentT ('x',123)
>>>
pz @Swap (Left "abc")
PresentT (Right "abc")
>>>
pz @Swap (Right 123)
PresentT (Left 123)
assoc using AssocC
>>>
pz @Assoc (This (These 123 'x'))
PresentT (These 123 (This 'x'))
>>>
pz @Assoc ((99,'a'),True)
PresentT (99,('a',True))
>>>
pz @Assoc ((99,'a'),True)
PresentT (99,('a',True))
>>>
pz @Assoc (Right "Abc" :: Either (Either () ()) String)
PresentT (Right (Right "Abc"))
>>>
pz @Assoc (Left (Left 'x'))
PresentT (Left 'x')
unassoc using AssocC
>>>
pz @Unassoc (These 123 (This 'x'))
PresentT (This (These 123 'x'))
>>>
pz @Unassoc (99,('a',True))
PresentT ((99,'a'),True)
>>>
pz @Unassoc (This 10 :: These Int (These Bool ()))
PresentT (This (This 10))
>>>
pz @Unassoc (Right (Right 123))
PresentT (Right 123)
>>>
pz @Unassoc (Left 'x' :: Either Char (Either Bool Double))
PresentT (Left (Left 'x'))
creates a list of overlapping pairs of elements. requires two or more elements
>>>
pz @Pairs [1,2,3,4]
PresentT [(1,2),(2,3),(3,4)]
>>>
pz @Pairs []
FailT "Pairs no data found"
>>>
pz @Pairs [1]
FailT "Pairs only one element found"
character expressions
predicate for determining if a character is lowercase
>>>
pz @IsLower '1'
FalseT
>>>
pz @IsLower 'a'
TrueT
>>>
pz @(Map '(IsControl, IsLatin1, IsHexDigit, IsOctDigit, IsDigit, IsPunctuation, IsSeparator, IsSpace) Id) "abc134"
PresentT [(False,True,True,False,False,False,False,False),(False,True,True,False,False,False,False,False),(False,True,True,False,False,False,False,False),(False,True,True,True,True,False,False,False),(False,True,True,True,True,False,False,False),(False,True,True,True,True,False,False,False)]
predicate for determining if the character is a digit
>>>
pz @IsDigit 'g'
FalseT
>>>
pz @IsDigit '9'
TrueT
data IsPunctuation Source #
Instances
P IsPunctuationT x => P IsPunctuation x Source # | |
Defined in Predicate.Prelude Associated Types type PP IsPunctuation x :: Type Source # Methods eval :: MonadEval m => Proxy IsPunctuation -> POpts -> x -> m (TT (PP IsPunctuation x)) Source # | |
type PP IsPunctuation x Source # | |
Defined in Predicate.Prelude |
data IsHexDigit Source #
Instances
P IsHexDigitT x => P IsHexDigit x Source # | |
Defined in Predicate.Prelude Associated Types type PP IsHexDigit x :: Type Source # Methods eval :: MonadEval m => Proxy IsHexDigit -> POpts -> x -> m (TT (PP IsHexDigit x)) Source # | |
type PP IsHexDigit x Source # | |
Defined in Predicate.Prelude |
data IsOctDigit Source #
Instances
P IsOctDigitT x => P IsOctDigit x Source # | |
Defined in Predicate.Prelude Associated Types type PP IsOctDigit x :: Type Source # Methods eval :: MonadEval m => Proxy IsOctDigit -> POpts -> x -> m (TT (PP IsOctDigit x)) Source # | |
type PP IsOctDigit x Source # | |
Defined in Predicate.Prelude |
data IsSeparator Source #
Instances
P IsSeparatorT x => P IsSeparator x Source # | |
Defined in Predicate.Prelude Associated Types type PP IsSeparator x :: Type Source # Methods eval :: MonadEval m => Proxy IsSeparator -> POpts -> x -> m (TT (PP IsSeparator x)) Source # | |
type PP IsSeparator x Source # | |
Defined in Predicate.Prelude |
data IsLowerAll Source #
Instances
P IsLowerAllT x => P IsLowerAll x Source # | |
Defined in Predicate.Prelude Associated Types type PP IsLowerAll x :: Type Source # Methods eval :: MonadEval m => Proxy IsLowerAll -> POpts -> x -> m (TT (PP IsLowerAll x)) Source # | |
type PP IsLowerAll x Source # | |
Defined in Predicate.Prelude |
data IsUpperAll Source #
Instances
P IsUpperAllT x => P IsUpperAll x Source # | |
Defined in Predicate.Prelude Associated Types type PP IsUpperAll x :: Type Source # Methods eval :: MonadEval m => Proxy IsUpperAll -> POpts -> x -> m (TT (PP IsUpperAll x)) Source # | |
type PP IsUpperAll x Source # | |
Defined in Predicate.Prelude |
data IsDigitAll Source #
predicate for determining if the string is all digits
>>>
pz @IsDigitAll "213G"
FalseT
>>>
pz @IsDigitAll "929"
TrueT
Instances
P IsDigitAllT x => P IsDigitAll x Source # | |
Defined in Predicate.Prelude Associated Types type PP IsDigitAll x :: Type Source # Methods eval :: MonadEval m => Proxy IsDigitAll -> POpts -> x -> m (TT (PP IsDigitAll x)) Source # | |
type PP IsDigitAll x Source # | |
Defined in Predicate.Prelude |
data IsSpaceAll Source #
predicate for determining if the string is all spaces
>>>
pz @IsSpaceAll "213G"
FalseT
>>>
pz @IsSpaceAll " "
TrueT
>>>
pz @IsSpaceAll ""
TrueT
Instances
P IsSpaceAllT x => P IsSpaceAll x Source # | |
Defined in Predicate.Prelude Associated Types type PP IsSpaceAll x :: Type Source # Methods eval :: MonadEval m => Proxy IsSpaceAll -> POpts -> x -> m (TT (PP IsSpaceAll x)) Source # | |
type PP IsSpaceAll x Source # | |
Defined in Predicate.Prelude |
data IsPunctuationAll Source #
Instances
P IsPunctuationAllT x => P IsPunctuationAll x Source # | |
Defined in Predicate.Prelude Associated Types type PP IsPunctuationAll x :: Type Source # Methods eval :: MonadEval m => Proxy IsPunctuationAll -> POpts -> x -> m (TT (PP IsPunctuationAll x)) Source # | |
type PP IsPunctuationAll x Source # | |
Defined in Predicate.Prelude |
data IsControlAll Source #
Instances
P IsControlAllT x => P IsControlAll x Source # | |
Defined in Predicate.Prelude Associated Types type PP IsControlAll x :: Type Source # Methods eval :: MonadEval m => Proxy IsControlAll -> POpts -> x -> m (TT (PP IsControlAll x)) Source # | |
type PP IsControlAll x Source # | |
Defined in Predicate.Prelude |
data IsHexDigitAll Source #
Instances
P IsHexDigitAllT x => P IsHexDigitAll x Source # | |
Defined in Predicate.Prelude Associated Types type PP IsHexDigitAll x :: Type Source # Methods eval :: MonadEval m => Proxy IsHexDigitAll -> POpts -> x -> m (TT (PP IsHexDigitAll x)) Source # | |
type PP IsHexDigitAll x Source # | |
Defined in Predicate.Prelude |
data IsOctDigitAll Source #
Instances
P IsOctDigitAllT x => P IsOctDigitAll x Source # | |
Defined in Predicate.Prelude Associated Types type PP IsOctDigitAll x :: Type Source # Methods eval :: MonadEval m => Proxy IsOctDigitAll -> POpts -> x -> m (TT (PP IsOctDigitAll x)) Source # | |
type PP IsOctDigitAll x Source # | |
Defined in Predicate.Prelude |
data IsSeparatorAll Source #
Instances
P IsSeparatorAllT x => P IsSeparatorAll x Source # | |
Defined in Predicate.Prelude Associated Types type PP IsSeparatorAll x :: Type Source # Methods eval :: MonadEval m => Proxy IsSeparatorAll -> POpts -> x -> m (TT (PP IsSeparatorAll x)) Source # | |
type PP IsSeparatorAll x Source # | |
Defined in Predicate.Prelude |
data IsLatin1All Source #
Instances
P IsLatin1AllT x => P IsLatin1All x Source # | |
Defined in Predicate.Prelude Associated Types type PP IsLatin1All x :: Type Source # Methods eval :: MonadEval m => Proxy IsLatin1All -> POpts -> x -> m (TT (PP IsLatin1All x)) Source # | |
type PP IsLatin1All x Source # | |
Defined in Predicate.Prelude |
datetime expressions
data FormatTimeP p q Source #
type level expression representing a formatted time
similar to formatTime
using a type level Symbol
to get the formatting string
>>>
pz @(FormatTimeP "%F %T" Id) (readNote @LocalTime "invalid localtime" "2019-05-24 05:19:59")
PresentT "2019-05-24 05:19:59"
>>>
pz @(FormatTimeP (Fst Id) (Snd Id)) ("the date is %d/%m/%Y", readNote @Day "invalid day" "2019-05-24")
PresentT "the date is 24/05/2019"
Instances
(PP p x ~ String, FormatTime (PP q x), P p x, Show (PP q x), P q x) => P (FormatTimeP p q :: Type) x Source # | |
Defined in Predicate.Prelude Associated Types type PP (FormatTimeP p q) x :: Type Source # Methods eval :: MonadEval m => Proxy (FormatTimeP p q) -> POpts -> x -> m (TT (PP (FormatTimeP p q) x)) Source # | |
type PP (FormatTimeP p q :: Type) x Source # | |
Defined in Predicate.Prelude |
data ParseTimeP (t :: Type) p q Source #
Instances
P (ParseTimePT t p q) x => P (ParseTimeP t p q :: Type) x Source # | |
Defined in Predicate.Prelude Associated Types type PP (ParseTimeP t p q) x :: Type Source # Methods eval :: MonadEval m => Proxy (ParseTimeP t p q) -> POpts -> x -> m (TT (PP (ParseTimeP t p q) x)) Source # | |
type PP (ParseTimeP t p q :: Type) x Source # | |
Defined in Predicate.Prelude |
data ParseTimeP' t p q Source #
similar to parseTimeM
where 't' is the ParseTime
type, 'p' is the datetime format and 'q' points to the content to parse
>>>
pz @(ParseTimeP LocalTime "%F %T" Id) "2019-05-24 05:19:59"
PresentT 2019-05-24 05:19:59
>>>
pz @(ParseTimeP LocalTime "%F %T" "2019-05-24 05:19:59") (Right "never used")
PresentT 2019-05-24 05:19:59
keeping 'q' as we might want to extract from a tuple
Instances
(ParseTime (PP t a), Typeable (PP t a), Show (PP t a), P p a, P q a, PP p a ~ String, PP q a ~ String) => P (ParseTimeP' t p q :: Type) a Source # | |
Defined in Predicate.Prelude Associated Types type PP (ParseTimeP' t p q) a :: Type Source # Methods eval :: MonadEval m => Proxy (ParseTimeP' t p q) -> POpts -> a -> m (TT (PP (ParseTimeP' t p q) a)) Source # | |
type PP (ParseTimeP' t p q :: Type) a Source # | |
Defined in Predicate.Prelude |
data ParseTimes (t :: Type) p q Source #
Instances
P (ParseTimesT t p q) x => P (ParseTimes t p q :: Type) x Source # | |
Defined in Predicate.Prelude Associated Types type PP (ParseTimes t p q) x :: Type Source # Methods eval :: MonadEval m => Proxy (ParseTimes t p q) -> POpts -> x -> m (TT (PP (ParseTimes t p q) x)) Source # | |
type PP (ParseTimes t p q :: Type) x Source # | |
Defined in Predicate.Prelude |
data ParseTimes' t p q Source #
A convenience method to match against many different datetime formats to find a match
>>>
pz @(ParseTimes LocalTime '["%Y-%m-%d %H:%M:%S", "%m/%d/%y %H:%M:%S", "%B %d %Y %H:%M:%S", "%Y-%m-%dT%H:%M:%S"] "03/11/19 01:22:33") ()
PresentT 2019-03-11 01:22:33
>>>
pz @(ParseTimes LocalTime (Fst Id) (Snd Id)) (["%Y-%m-%d %H:%M:%S", "%m/%d/%y %H:%M:%S", "%B %d %Y %H:%M:%S", "%Y-%m-%dT%H:%M:%S"], "03/11/19 01:22:33")
PresentT 2019-03-11 01:22:33
Instances
(ParseTime (PP t a), Typeable (PP t a), Show (PP t a), P p a, P q a, PP p a ~ [String], PP q a ~ String) => P (ParseTimes' t p q :: Type) a Source # | |
Defined in Predicate.Prelude Associated Types type PP (ParseTimes' t p q) a :: Type Source # Methods eval :: MonadEval m => Proxy (ParseTimes' t p q) -> POpts -> a -> m (TT (PP (ParseTimes' t p q) a)) Source # | |
type PP (ParseTimes' t p q :: Type) a Source # | |
Defined in Predicate.Prelude |
create a Day
from three int values passed in as year month and day
>>>
pz @(MkDay '(1,2,3) >> Just Id) ()
PresentT 0001-02-03
>>>
pz @(Just (MkDay '(1,2,3))) 1
PresentT 0001-02-03
>>>
pz @(MkDay Id) (2019,12,30)
PresentT (Just 2019-12-30)
>>>
pz @(MkDay' (Fst Id) (Snd Id) (Thd Id)) (2019,99,99999)
PresentT Nothing
>>>
pz @(MkDay Id) (1999,3,13)
PresentT (Just 1999-03-13)
uncreate a Day
returning year month and day
>>>
pz @(UnMkDay Id) (readNote "invalid day" "2019-12-30")
PresentT (2019,12,30)
data MkDayExtra p Source #
Instances
P (MkDayExtraT p) x => P (MkDayExtra p :: Type) x Source # | |
Defined in Predicate.Prelude Associated Types type PP (MkDayExtra p) x :: Type Source # Methods eval :: MonadEval m => Proxy (MkDayExtra p) -> POpts -> x -> m (TT (PP (MkDayExtra p) x)) Source # | |
type PP (MkDayExtra p :: Type) x Source # | |
Defined in Predicate.Prelude |
data MkDayExtra' p q r Source #
create a Day
+ Week + Day of Week from three int values passed in as year month and day
>>>
pz @(MkDayExtra '(1,2,3) >> Just Id >> Fst Id) ()
PresentT 0001-02-03
>>>
pz @(Fst (Just (MkDayExtra '(1,2,3)))) 1
PresentT 0001-02-03
>>>
pz @(MkDayExtra Id) (2019,12,30)
PresentT (Just (2019-12-30,1,1))
>>>
pz @(MkDayExtra' (Fst Id) (Snd Id) (Thd Id)) (2019,99,99999)
PresentT Nothing
>>>
pz @(MkDayExtra Id) (1999,3,13)
PresentT (Just (1999-03-13,10,6))
Instances
(P p x, P q x, P r x, PP p x ~ Int, PP q x ~ Int, PP r x ~ Int) => P (MkDayExtra' p q r :: Type) x Source # | |
Defined in Predicate.Prelude Associated Types type PP (MkDayExtra' p q r) x :: Type Source # Methods eval :: MonadEval m => Proxy (MkDayExtra' p q r) -> POpts -> x -> m (TT (PP (MkDayExtra' p q r) x)) Source # | |
type PP (MkDayExtra' p q r :: Type) x Source # | |
Defined in Predicate.Prelude |
data ToWeekDate p Source #
get day of week
>>>
pz @(Just (MkDay '(2020,7,11)) >> '(UnMkDay Id, ToWeekYear Id,ToWeekDate Id)) ()
PresentT ((2020,7,11),28,(6,"Saturday"))
Instances
(P p x, PP p x ~ Day) => P (ToWeekDate p :: Type) x Source # | |
Defined in Predicate.Prelude Associated Types type PP (ToWeekDate p) x :: Type Source # Methods eval :: MonadEval m => Proxy (ToWeekDate p) -> POpts -> x -> m (TT (PP (ToWeekDate p) x)) Source # | |
type PP (ToWeekDate p :: Type) x Source # | |
Defined in Predicate.Prelude |
data ToWeekYear p Source #
get week number of the year
>>>
pz @(Just (MkDay '(2020,7,11)) >> ToWeekYear Id) ()
PresentT 28
Instances
(P p x, PP p x ~ Day) => P (ToWeekYear p :: Type) x Source # | |
Defined in Predicate.Prelude Associated Types type PP (ToWeekYear p) x :: Type Source # Methods eval :: MonadEval m => Proxy (ToWeekYear p) -> POpts -> x -> m (TT (PP (ToWeekYear p) x)) Source # | |
type PP (ToWeekYear p :: Type) x Source # | |
Defined in Predicate.Prelude |
extract Day
from a DateTime
>>>
pz @(ReadP UTCTime Id >> ToDay Id) "2020-07-06 12:11:13Z"
PresentT 2020-07-06
extract TimeOfDay
from DateTime
>>>
pz @(ReadP UTCTime Id >> ToDay Id) "2020-07-06 12:11:13Z"
PresentT 2020-07-06
create a TimeOfDay
from three int values passed in as year month and day
>>>
pz @(MkTime '(1,2,3 % 12345)) ()
PresentT 01:02:00.000243013365
>>>
pz @(MkTime Id) (12,13,65)
PresentT 12:13:65
>>>
pz @(MkTime' (Fst Id) (Snd Id) (Thd Id)) (13,99,99999)
PresentT 13:99:99999
>>>
pz @(MkTime Id) (17,3,13)
PresentT 17:03:13
uncreate a TimeOfDay
returning hour minute seconds picoseconds
>>>
pz @(ReadP UTCTime "2019-01-01 12:13:14.1234Z" >> ToTime Id >> UnMkTime Id) ()
PresentT (12,13,70617 % 5000)
>>>
pz @(ReadP UTCTime Id >> ToTime Id >> UnMkTime Id) "2020-07-22 08:01:14.127Z"
PresentT (8,1,14127 % 1000)
>>>
pz @(ReadP ZonedTime Id >> '(UnMkDay (ToDay Id), UnMkTime (ToTime Id))) "2020-07-11 11:41:12.333 CET"
PresentT ((2020,7,11),(11,41,12333 % 1000))
data PosixToUTCTime p Source #
convert posix time (seconds since 01-01-1970) to UTCTime
>>>
pl @(PosixToUTCTime Id) 1593384312
Present 2020-06-28 22:45:12 UTC (PosixToUTCTime 2020-06-28 22:45:12 UTC | 1593384312 % 1) PresentT 2020-06-28 22:45:12 UTC
>>>
pl @(PosixToUTCTime Id >> UTCTimeToPosix Id) 1593384312
Present 1593384312 % 1 ((>>) 1593384312 % 1 | {UTCTimeToPosix 1593384312 % 1 | 2020-06-28 22:45:12 UTC}) PresentT (1593384312 % 1)
>>>
pl @(PosixToUTCTime (Id % 1000)) 1593384312000
Present 2020-06-28 22:45:12 UTC (PosixToUTCTime 2020-06-28 22:45:12 UTC | 1593384312 % 1) PresentT 2020-06-28 22:45:12 UTC
>>>
pl @(PosixToUTCTime Id) (3600*4+60*7+12)
Present 1970-01-01 04:07:12 UTC (PosixToUTCTime 1970-01-01 04:07:12 UTC | 14832 % 1) PresentT 1970-01-01 04:07:12 UTC
>>>
pz @(Rescan "^Date\\((\\d+)([^\\)]+)\\)" Id >> Head Id >> Snd Id >> ReadP Integer (Id !! 0) >> PosixToUTCTime (Id % 1000)) "Date(1530144000000+0530)"
PresentT 2018-06-28 00:00:00 UTC
Instances
(PP p x ~ Rational, P p x) => P (PosixToUTCTime p :: Type) x Source # | |
Defined in Predicate.Prelude Associated Types type PP (PosixToUTCTime p) x :: Type Source # Methods eval :: MonadEval m => Proxy (PosixToUTCTime p) -> POpts -> x -> m (TT (PP (PosixToUTCTime p) x)) Source # | |
type PP (PosixToUTCTime p :: Type) x Source # | |
Defined in Predicate.Prelude |
data UTCTimeToPosix p Source #
convert UTCTime
to posix time (seconds since 01-01-1970)
>>>
pl @(ReadP UTCTime Id >> UTCTimeToPosix Id) "2020-06-28 22:45:12 UTC"
Present 1593384312 % 1 ((>>) 1593384312 % 1 | {UTCTimeToPosix 1593384312 % 1 | 2020-06-28 22:45:12 UTC}) PresentT (1593384312 % 1)
>>>
pz @(Rescan "^Date\\((\\d+)([^\\)]+)\\)" Id >> Head Id >> Snd Id >> ((ReadP Integer (Id !! 0) >> PosixToUTCTime (Id % 1000)) &&& ReadP TimeZone (Id !! 1))) "Date(1530144000000+0530)"
PresentT (2018-06-28 00:00:00 UTC,+0530)
not so useful: instead use ParseTimeP FormatTimeP with %s %q %z etc
>>>
pz @(ParseTimeP ZonedTime "%s%Q%z" Id) "153014400.000+0530"
PresentT 1974-11-07 05:30:00 +0530
Instances
(PP p x ~ UTCTime, P p x) => P (UTCTimeToPosix p :: Type) x Source # | |
Defined in Predicate.Prelude Associated Types type PP (UTCTimeToPosix p) x :: Type Source # Methods eval :: MonadEval m => Proxy (UTCTimeToPosix p) -> POpts -> x -> m (TT (PP (UTCTimeToPosix p) x)) Source # | |
type PP (UTCTimeToPosix p :: Type) x Source # | |
Defined in Predicate.Prelude |
numeric expressions
fractional division
>>>
pz @(Fst Id / Snd Id) (13,2)
PresentT 6.5
>>>
pz @(ToRational 13 / Id) 0
FailT "(/) zero denominator"
>>>
pz @(12 % 7 / 14 % 5 + Id) 12.4
PresentT (3188 % 245)
similar to negate
>>>
pz @(Negate Id) 14
PresentT (-14)
>>>
pz @(Negate (Fst Id * Snd Id)) (14,3)
PresentT (-42)
>>>
pz @(Negate (15 -% 4)) "abc"
PresentT (15 % 4)
>>>
pz @(Negate (15 % 3)) ()
PresentT ((-5) % 1)
>>>
pz @(Negate (Fst Id % Snd Id)) (14,3)
PresentT ((-14) % 3)
similar to abs
>>>
pz @(Abs Id) (-14)
PresentT 14
>>>
pz @(Abs (Snd Id)) ("xx",14)
PresentT 14
>>>
pz @(Abs Id) 0
PresentT 0
>>>
pz @(Abs (Negate 44)) "aaa"
PresentT 44
similar to signum
>>>
pz @(Signum Id) (-14)
PresentT (-1)
>>>
pz @(Signum Id) 14
PresentT 1
>>>
pz @(Signum Id) 0
PresentT 0
data FromInteger (t :: Type) p Source #
Instances
P (FromIntegerT t p) x => P (FromInteger t p :: Type) x Source # | |
Defined in Predicate.Prelude Associated Types type PP (FromInteger t p) x :: Type Source # Methods eval :: MonadEval m => Proxy (FromInteger t p) -> POpts -> x -> m (TT (PP (FromInteger t p) x)) Source # | |
type PP (FromInteger t p :: Type) x Source # | |
Defined in Predicate.Prelude |
data FromInteger' t n Source #
fromInteger
function where you need to provide the type 't' of the result
>>>
pz @(FromInteger (SG.Sum _) Id) 23
PresentT (Sum {getSum = 23})
>>>
pz @(FromInteger Rational 44) 12
PresentT (44 % 1)
>>>
pz @(FromInteger Rational Id) 12
PresentT (12 % 1)
Instances
(Num (PP t a), Integral (PP n a), P n a, Show (PP t a)) => P (FromInteger' t n :: Type) a Source # | |
Defined in Predicate.Prelude Associated Types type PP (FromInteger' t n) a :: Type Source # Methods eval :: MonadEval m => Proxy (FromInteger' t n) -> POpts -> a -> m (TT (PP (FromInteger' t n) a)) Source # | |
type PP (FromInteger' t n :: Type) a Source # | |
Defined in Predicate.Prelude |
data FromIntegral (t :: Type) p Source #
Instances
P (FromIntegralT t p) x => P (FromIntegral t p :: Type) x Source # | |
Defined in Predicate.Prelude Associated Types type PP (FromIntegral t p) x :: Type Source # Methods eval :: MonadEval m => Proxy (FromIntegral t p) -> POpts -> x -> m (TT (PP (FromIntegral t p) x)) Source # | |
type PP (FromIntegral t p :: Type) x Source # | |
Defined in Predicate.Prelude |
data FromIntegral' t n Source #
fromIntegral
function where you need to provide the type 't' of the result
>>>
pz @(FromIntegral (SG.Sum _) Id) 23
PresentT (Sum {getSum = 23})
Instances
(Num (PP t a), Integral (PP n a), P n a, Show (PP t a), Show (PP n a)) => P (FromIntegral' t n :: Type) a Source # | |
Defined in Predicate.Prelude Associated Types type PP (FromIntegral' t n) a :: Type Source # Methods eval :: MonadEval m => Proxy (FromIntegral' t n) -> POpts -> a -> m (TT (PP (FromIntegral' t n) a)) Source # | |
type PP (FromIntegral' t n :: Type) a Source # | |
Defined in Predicate.Prelude |
truncate
function where you need to provide the type 't' of the result
>>>
pz @(Truncate Int Id) (23 % 5)
PresentT 4
ceiling
function where you need to provide the type 't' of the result
>>>
pz @(Ceiling Int Id) (23 % 5)
PresentT 5
floor
function where you need to provide the type 't' of the result
>>>
pz @(Floor Int Id) (23 % 5)
PresentT 4
similar to even
>>>
pz @(Map Even Id) [9,-4,12,1,2,3]
PresentT [False,True,True,False,True,False]
>>>
pz @(Map '(Even,Odd) Id) [9,-4,12,1,2,3]
PresentT [(False,True),(True,False),(True,False),(False,True),(True,False),(False,True)]
similar to div
>>>
pz @(Div (Fst Id) (Snd Id)) (10,4)
PresentT 2
>>>
pz @(Div (Fst Id) (Snd Id)) (10,0)
FailT "Div zero denominator"
similar to mod
>>>
pz @(Mod (Fst Id) (Snd Id)) (10,3)
PresentT 1
>>>
pz @(Mod (Fst Id) (Snd Id)) (10,0)
FailT "Mod zero denominator"
similar to divMod
>>>
pz @(DivMod (Fst Id) (Snd Id)) (10,3)
PresentT (3,1)
>>>
pz @(DivMod (Fst Id) (Snd Id)) (10,-3)
PresentT (-4,-2)
>>>
pz @(DivMod (Fst Id) (Snd Id)) (-10,3)
PresentT (-4,2)
>>>
pz @(DivMod (Fst Id) (Snd Id)) (-10,-3)
PresentT (3,-1)
>>>
pz @(DivMod (Fst Id) (Snd Id)) (10,0)
FailT "DivMod zero denominator"
similar to quotRem
>>>
pz @(QuotRem (Fst Id) (Snd Id)) (10,3)
PresentT (3,1)
>>>
pz @(QuotRem (Fst Id) (Snd Id)) (10,-3)
PresentT (-3,1)
>>>
pz @(QuotRem (Fst Id) (Snd Id)) (-10,-3)
PresentT (3,-1)
>>>
pz @(QuotRem (Fst Id) (Snd Id)) (-10,3)
PresentT (-3,-1)
>>>
pz @(QuotRem (Fst Id) (Snd Id)) (10,0)
FailT "QuotRem zero denominator"
similar to logBase
>>>
pz @(Fst Id `LogBase` Snd Id >> Truncate Int Id) (10,12345)
PresentT 4
similar to 'GHC.Real.(^)'
>>>
pz @(Fst Id ^ Snd Id) (10,4)
PresentT 10000
similar to 'GHC.Float.(**)'
>>>
pz @(Fst Id ** Snd Id) (10,4)
PresentT 10000.0
rational numbers
creates a Rational
value
>>>
pz @(Id < 21 % 5) (-3.1)
TrueT
>>>
pz @(Id < 21 % 5) 4.5
FalseT
>>>
pz @(Fst Id % Snd Id) (13,2)
PresentT (13 % 2)
>>>
pz @(13 % Id) 0
FailT "(%) zero denominator"
>>>
pz @(4 % 3 + 5 % 7) "asfd"
PresentT (43 % 21)
>>>
pz @(4 -% 7 * 5 -% 3) "asfd"
PresentT (20 % 21)
>>>
pz @(Negate (14 % 3)) ()
PresentT ((-14) % 3)
>>>
pz @(14 % 3) ()
PresentT (14 % 3)
>>>
pz @(Negate (14 % 3) ==! FromIntegral _ (Negate 5)) ()
PresentT GT
>>>
pz @(14 -% 3 ==! 5 -% 1) "aa"
PresentT GT
>>>
pz @(Negate (14 % 3) ==! Negate 5 % 2) ()
PresentT LT
>>>
pz @(14 -% 3 * 5 -% 1) ()
PresentT (70 % 3)
>>>
pz @(14 % 3 ==! 5 % 1) ()
PresentT LT
>>>
pz @(15 % 3 / 4 % 2) ()
PresentT (5 % 2)
data ToRational p Source #
toRational
function
>>>
pz @(ToRational Id) 23.5
PresentT (47 % 2)
Instances
(a ~ PP p x, Show a, Real a, P p x) => P (ToRational p :: Type) x Source # | |
Defined in Predicate.Prelude Associated Types type PP (ToRational p) x :: Type Source # Methods eval :: MonadEval m => Proxy (ToRational p) -> POpts -> x -> m (TT (PP (ToRational p) x)) Source # | |
type PP (ToRational p :: Type) x Source # | |
Defined in Predicate.Prelude |
data FromRational (t :: Type) p Source #
Instances
P (FromRationalT t p) x => P (FromRational t p :: Type) x Source # | |
Defined in Predicate.Prelude Associated Types type PP (FromRational t p) x :: Type Source # Methods eval :: MonadEval m => Proxy (FromRational t p) -> POpts -> x -> m (TT (PP (FromRational t p) x)) Source # | |
type PP (FromRational t p :: Type) x Source # | |
Defined in Predicate.Prelude |
data FromRational' t r Source #
fromRational
function where you need to provide the type 't' of the result
>>>
pz @(FromRational Rational Id) 23.5
PresentT (47 % 2)
Instances
(P r a, PP r a ~ Rational, Show (PP t a), Fractional (PP t a)) => P (FromRational' t r :: Type) a Source # | |
Defined in Predicate.Prelude Associated Types type PP (FromRational' t r) a :: Type Source # Methods eval :: MonadEval m => Proxy (FromRational' t r) -> POpts -> a -> m (TT (PP (FromRational' t r) a)) Source # | |
type PP (FromRational' t r :: Type) a Source # | |
Defined in Predicate.Prelude |
proxy expressions
converts a value to a Proxy
: the same as '\'Proxy'
>>>
pz @MkProxy 'x'
PresentT Proxy
read / show expressions
similar to show
>>>
pz @(ShowP Id) [4,8,3,9]
PresentT "[4,8,3,9]"
>>>
pz @(ShowP Id) 'x'
PresentT "'x'"
>>>
pz @(ShowP (42 -% 10)) 'x'
PresentT "(-21) % 5"
uses the Read
of the given type 't' and 'p' which points to the content to read
>>>
pz @(ReadP Rational Id) "4 % 5"
PresentT (4 % 5)
>>>
pz @(Between (ReadP Day "2017-04-11") (ReadP Day "2018-12-30") (ReadP Day Id)) "2018-10-12"
TrueT
>>>
pz @(Between (ReadP Day "2017-04-11") (ReadP Day "2018-12-30") (ReadP Day Id)) "2016-10-12"
FalseT
emulates ReadP
data ReadMaybe' t p Source #
Read but returns the Maybe of the value and any remaining unparsed string
>>>
pz @(ReadMaybe Int Id) "123x"
PresentT (Just (123,"x"))
>>>
pz @(ReadMaybe Int Id) "123"
PresentT (Just (123,""))
>>>
pz @(ReadMaybe Int Id) "x123"
PresentT Nothing
Instances
(P p x, PP p x ~ String, Typeable (PP t x), Show (PP t x), Read (PP t x)) => P (ReadMaybe' t p :: Type) x Source # | |
Defined in Predicate.Prelude Associated Types type PP (ReadMaybe' t p) x :: Type Source # Methods eval :: MonadEval m => Proxy (ReadMaybe' t p) -> POpts -> x -> m (TT (PP (ReadMaybe' t p) x)) Source # | |
type PP (ReadMaybe' t p :: Type) x Source # | |
Defined in Predicate.Prelude |
data ReadBase' t (n :: Nat) p Source #
Read a number using base 2 through a maximum of 36
>>>
pz @(ReadBase Int 16 Id) "00feD"
PresentT 4077
>>>
pz @(ReadBase Int 16 Id) "-ff"
PresentT (-255)
>>>
pz @(ReadBase Int 2 Id) "10010011"
PresentT 147
>>>
pz @(ReadBase Int 8 Id) "Abff"
FailT "invalid base 8"
>>>
pl @(ReadBase Int 16 Id >> GuardSimple (Id > 0xffff) >> ShowBase 16 Id) "12344"
Present "12344" ((>>) "12344" | {ShowBase(16) 12344 | 74564}) PresentT "12344"
>>>
:set -XBinaryLiterals
>>>
pz @(ReadBase Int 16 Id >> GuardSimple (Id > 0b10011111) >> ShowBase 16 Id) "7f"
FailT "(127 > 159)"
data ShowBase (n :: Nat) p Source #
Display a number at base 2 to 36, similar to showIntAtBase
but supports signed numbers
>>>
pz @(ShowBase 16 Id) 4077
PresentT "fed"
>>>
pz @(ShowBase 16 Id) (-255)
PresentT "-ff"
>>>
pz @(ShowBase 2 Id) 147
PresentT "10010011"
>>>
pz @(ShowBase 2 (Negate 147)) "whatever"
PresentT "-10010011"
aeson expressions
data ParseJson' t p Source #
parse json data
>>>
pl @(ParseJson (Int,String) Id) "[10,\"abc\"]"
Present (10,"abc") (ParseJson (Int,[Char]) (10,"abc")) PresentT (10,"abc")
>>>
pl @(ParseJson (Int,String) Id) "[10,\"abc\",99]"
Error ParseJson (Int,[Char])([10,"abc",...) Error in $ (ParseJson (Int,[Char]) failed Error in $: cannot unpack array of length 3 into a tuple of length 2 | [10,"abc",99]) FailT "ParseJson (Int,[Char])([10,\"abc\",...) Error in $"
>>>
pl @(ParseJson (Int,Bool) (FromString _ Id)) ("[1,true]" :: String)
Present (1,True) (ParseJson (Int,Bool) (1,True)) PresentT (1,True)
>>>
pl @(ParseJson (Int,Bool) Id) (A.encode (1,True))
Present (1,True) (ParseJson (Int,Bool) (1,True)) PresentT (1,True)
>>>
pl @(ParseJson () Id) "[1,true]"
Error ParseJson ()([1,true]) Error in $ (ParseJson () failed Error in $: parsing () failed, expected an empty array | [1,true]) FailT "ParseJson ()([1,true]) Error in $"
Instances
(P p x, PP p x ~ ByteString, Typeable (PP t x), Show (PP t x), FromJSON (PP t x)) => P (ParseJson' t p :: Type) x Source # | |
Defined in Predicate.Prelude Associated Types type PP (ParseJson' t p) x :: Type Source # Methods eval :: MonadEval m => Proxy (ParseJson' t p) -> POpts -> x -> m (TT (PP (ParseJson' t p) x)) Source # | |
type PP (ParseJson' t p :: Type) x Source # | |
Defined in Predicate.Prelude |
data EncodeJson p Source #
encode json
>>>
pl @(EncodeJson Id) (10,"def")
Present "[10,\"def\"]" (EncodeJson [10,"def"]) PresentT "[10,\"def\"]"
>>>
pl @(EncodeJson Id >> ParseJson (Int,Bool) Id) (1,True)
Present (1,True) ((>>) (1,True) | {ParseJson (Int,Bool) (1,True)}) PresentT (1,True)
Instances
(ToJSON (PP p x), P p x) => P (EncodeJson p :: Type) x Source # | |
Defined in Predicate.Prelude Associated Types type PP (EncodeJson p) x :: Type Source # Methods eval :: MonadEval m => Proxy (EncodeJson p) -> POpts -> x -> m (TT (PP (EncodeJson p) x)) Source # | |
type PP (EncodeJson p :: Type) x Source # | |
Defined in Predicate.Prelude |
data EncodeJsonFile p q Source #
encode a json file
Instances
(PP p x ~ String, P p x, ToJSON (PP q x), P q x) => P (EncodeJsonFile p q :: Type) x Source # | |
Defined in Predicate.Prelude Associated Types type PP (EncodeJsonFile p q) x :: Type Source # Methods eval :: MonadEval m => Proxy (EncodeJsonFile p q) -> POpts -> x -> m (TT (PP (EncodeJsonFile p q) x)) Source # | |
type PP (EncodeJsonFile p q :: Type) x Source # | |
Defined in Predicate.Prelude |
data ParseJsonFile' t p Source #
parse a json file
>>>
pz @(ParseJsonFile [A.Value] "test1.json" >> Id !! 2) ()
PresentT (Object (fromList [("lastName",String "Doe"),("age",Number 45.0),("firstName",String "John"),("likesPizza",Bool False)]))
Instances
(P p x, PP p x ~ String, Typeable (PP t x), Show (PP t x), FromJSON (PP t x)) => P (ParseJsonFile' t p :: Type) x Source # | |
Defined in Predicate.Prelude Associated Types type PP (ParseJsonFile' t p) x :: Type Source # Methods eval :: MonadEval m => Proxy (ParseJsonFile' t p) -> POpts -> x -> m (TT (PP (ParseJsonFile' t p) x)) Source # | |
type PP (ParseJsonFile' t p :: Type) x Source # | |
Defined in Predicate.Prelude |
data ParseJsonFile (t :: Type) p Source #
Instances
P (ParseJsonFileT t p) x => P (ParseJsonFile t p :: Type) x Source # | |
Defined in Predicate.Prelude Associated Types type PP (ParseJsonFile t p) x :: Type Source # Methods eval :: MonadEval m => Proxy (ParseJsonFile t p) -> POpts -> x -> m (TT (PP (ParseJsonFile t p) x)) Source # | |
type PP (ParseJsonFile t p :: Type) x Source # | |
Defined in Predicate.Prelude |
arrow expressions
data p &&& q infixr 3 Source #
similar to &&&
data p *** q infixr 3 Source #
similar to ***
>>>
pz @(Pred Id *** ShowP Id) (13, True)
PresentT (12,"True")
>>>
pl @(FlipT (***) Len (Id * 12)) (99,"cdef")
Present (1188,4) ((***) (1188,4) | (99,"cdef")) PresentT (1188,4)
data p ||| q infixr 2 Source #
similar |||
>>>
pz @(Pred Id ||| Id) (Left 13)
PresentT 12
>>>
pz @(ShowP Id ||| Id) (Right "hello")
PresentT "hello"
data p +++ q infixr 2 Source #
similar +++
>>>
pz @(Pred Id +++ Id) (Left 13)
PresentT (Left 12)
>>>
pz @(ShowP Id +++ Reverse) (Right "hello")
PresentT (Right "olleh")
compare expressions
similar to compare
>>>
pz @(Fst Id ==! Snd Id) (10,9)
PresentT GT
>>>
pz @(14 % 3 ==! Fst Id -% Snd Id) (-10,7)
PresentT GT
>>>
pz @(Fst Id ==! Snd Id) (10,11)
PresentT LT
>>>
pz @(Snd Id ==! (Fst Id >> Snd Id >> Head Id)) (('x',[10,12,13]),10)
PresentT EQ
>>>
pz @(Snd Id ==! Head (Snd (Fst Id))) (('x',[10,12,13]),10)
PresentT EQ
type OrdI p q = p ===~ q Source #
compare two strings ignoring case
>>>
pz @(Fst Id ===~ Snd Id) ("abC","aBc")
PresentT EQ
>>>
pz @(Fst Id ===~ Snd Id) ("abC","DaBc")
PresentT LT
data Cmp (o :: OrderingP) p q Source #
compare two values using the given ordering 'o'
>>>
pl @(Lt 4) 123
False (123 < 4) FalseT
>>>
pl @(Lt 4) 1
True (1 < 4) TrueT
>>>
pl @(Negate 7 <..> 20) (-4)
True (-7 <= -4 <= 20) TrueT
>>>
pl @(Negate 7 <..> 20) 21
False (21 <= 20) FalseT
data CmpI (o :: OrderingP) p q Source #
compare two strings ignoring case using the given ordering 'o'
enum expressions
unbounded succ
function
>>>
pz @(Succ Id) 13
PresentT 14
>>>
pz @(Succ Id) LT
PresentT EQ
>>>
pz @(Succ Id) GT
FailT "Succ IO e=Prelude.Enum.Ordering.succ: bad argument"
unbounded pred
function
>>>
pz @(Pred Id) 13
PresentT 12
>>>
pz @(Pred Id) LT
FailT "Pred IO e=Prelude.Enum.Ordering.pred: bad argument"
fromEnum
function
>>>
pz @(FromEnum Id) 'x'
PresentT 120
unsafe toEnum
function
>>>
pz @(ToEnum Char Id) 120
PresentT 'x'
data EnumFromTo p q Source #
similar to enumFromTo
>>>
pz @(EnumFromTo 2 5) ()
PresentT [2,3,4,5]
>>>
pz @(EnumFromTo 'LT 'GT) ()
PresentT [LT,EQ,GT]
>>>
pz @(EnumFromTo 'GT 'LT) ()
PresentT []
>>>
pz @(EnumFromTo (Pred Id) (Succ Id)) (SG.Max 10)
PresentT [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" "" )) Id) 123
PresentT [(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")]
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.Prelude Associated Types type PP (EnumFromTo p q) x :: Type Source # Methods eval :: MonadEval m => Proxy (EnumFromTo p q) -> POpts -> x -> m (TT (PP (EnumFromTo p q) x)) Source # | |
type PP (EnumFromTo p q :: Type) x Source # | |
Defined in Predicate.Prelude |
data EnumFromThenTo p q r Source #
similar to enumFromThenTo
>>>
pz @(EnumFromThenTo (ToEnum Day 10) (ToEnum Day 20) (ToEnum Day 70)) ()
PresentT [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")) ()
PresentT [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.Prelude Associated Types type PP (EnumFromThenTo p q r) x :: Type Source # Methods eval :: MonadEval m => Proxy (EnumFromThenTo p q r) -> POpts -> x -> m (TT (PP (EnumFromThenTo p q r) x)) Source # | |
type PP (EnumFromThenTo p q r :: Type) x Source # | |
Defined in Predicate.Prelude |
bounded enum expressions
Instances
(PP q x ~ a, P q x, P p (Proxy a), PP p (Proxy a) ~ a, Show a, Eq a, Bounded a, Enum a) => P (SuccB p q :: Type) x Source # | bounded
|
type PP (SuccB p q :: Type) x Source # | |
Defined in Predicate.Prelude |
bounded pred
function
>>>
pz @(PredB' Id) (13 :: Int)
PresentT 12
>>>
pz @(PredB' Id) LT
FailT "Pred bounded"
data ToEnumBDef (t :: Type) def Source #
Instances
P (ToEnumBDefT t def) x => P (ToEnumBDef t def :: Type) x Source # | |
Defined in Predicate.Prelude Associated Types type PP (ToEnumBDef t def) x :: Type Source # Methods eval :: MonadEval m => Proxy (ToEnumBDef t def) -> POpts -> x -> m (TT (PP (ToEnumBDef t def) x)) Source # | |
type PP (ToEnumBDef t def :: Type) x Source # | |
Defined in Predicate.Prelude |
data ToEnumBDef' t def Source #
bounded toEnum
function
>>>
pz @(ToEnumBDef Ordering LT) 2
PresentT GT
>>>
pz @(ToEnumBDef Ordering LT) 6
PresentT LT
>>>
pz @(ToEnumBFail Ordering) 6
FailT "ToEnum bounded"
Instances
(P def (Proxy (PP t a)), PP def (Proxy (PP t a)) ~ PP t a, Show a, Show (PP t a), Bounded (PP t a), Enum (PP t a), Integral a) => P (ToEnumBDef' t def :: Type) a Source # | |
Defined in Predicate.Prelude Associated Types type PP (ToEnumBDef' t def) a :: Type Source # Methods eval :: MonadEval m => Proxy (ToEnumBDef' t def) -> POpts -> a -> m (TT (PP (ToEnumBDef' t def) a)) Source # | |
type PP (ToEnumBDef' t def :: Type) a Source # | |
Defined in Predicate.Prelude |
data ToEnumBFail (t :: Type) Source #
Instances
P (ToEnumBFailT t) x => P (ToEnumBFail t :: Type) x Source # | |
Defined in Predicate.Prelude Associated Types type PP (ToEnumBFail t) x :: Type Source # Methods 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.Prelude |
wrap / unwrap expressions
unwraps a value (see _Wrapped'
)
>>>
pz @(Unwrap Id) (SG.Sum (-13))
PresentT (-13)
wraps a value (see _Wrapped'
and _Unwrapped'
)
>>>
:m + Data.List.NonEmpty
>>>
pz @(Wrap (SG.Sum _) Id) (-13)
PresentT (Sum {getSum = -13})
>>>
pz @(Wrap SG.Any (Ge 4)) 13
PresentT (Any {getAny = True})
>>>
pz @(Wrap (NonEmpty _) (Uncons >> 'Just Id)) "abcd"
PresentT ('a' :| "bcd")
similar to coerce
>>>
pz @(Coerce (SG.Sum Integer)) (Identity (-13))
PresentT (Sum {getSum = -13})
data Coerce2 (t :: k) Source #
see Coerce
: coerce over a functor
>>>
pz @(Coerce2 (SG.Sum Integer)) [Identity (-13), Identity 4, Identity 99]
PresentT [Sum {getSum = -13},Sum {getSum = 4},Sum {getSum = 99}]
>>>
pz @(Coerce2 (SG.Sum Integer)) (Just (Identity (-13)))
PresentT (Just (Sum {getSum = -13}))
>>>
pz @(Coerce2 (SG.Sum Int)) (Nothing @(Identity Int))
PresentT Nothing
list / foldable expressions
similar to map
>>>
pz @(Map (Pred Id) Id) [1..5]
PresentT [0,1,2,3,4]
similar to concat
>>>
pz @(Concat Id) ["abc","D","eF","","G"]
PresentT "abcDeFG"
>>>
pz @(Concat (Snd Id)) ('x',["abc","D","eF","","G"])
PresentT "abcDeFG"
similar to partition
>>>
pz @(Partition (Ge 3) Id) [10,4,1,7,3,1,3,5]
PresentT ([10,4,7,3,3,5],[1,1])
>>>
pz @(Partition (Prime Id) Id) [10,4,1,7,3,1,3,5]
PresentT ([7,3,3,5],[10,4,1,1])
>>>
pz @(Partition (Ge 300) Id) [10,4,1,7,3,1,3,5]
PresentT ([],[10,4,1,7,3,1,3,5])
>>>
pz @(Partition (Id < 300) Id) [10,4,1,7,3,1,3,5]
PresentT ([10,4,1,7,3,1,3,5],[])
groups values based on a function
>>>
pl @(GroupOn Ordering (Case (Failt _ "asdf") '[Id < 2, Id == 2, Id > 2] '[ 'LT, 'EQ, 'GT] Id) Id) [-4,2,5,6,7,1,2,3,4]
Present fromList [(LT,[1,-4]),(EQ,[2,2]),(GT,[4,3,7,6,5])] (GroupOn fromList [(LT,[1,-4]),(EQ,[2,2]),(GT,[4,3,7,6,5])] | s=[-4,2,5,6,7,1,2,3,4]) PresentT (fromList [(LT,[1,-4]),(EQ,[2,2]),(GT,[4,3,7,6,5])])
>>>
pl @(GroupOn Ordering (Case (Failt _ "xyzxyzxyzzyyysyfsyfydf") '[Id < 2, Id == 2, Id > 3] '[ 'LT, 'EQ, 'GT] Id) Id) [-4,2,5,6,7,1,2,3,4]
Error xyzxyzxyzzyyysyfsyfydf (GroupOn(i=7, a=3) excnt=1) FailT "xyzxyzxyzzyyysyfsyfydf"
similar to break
>>>
pz @(Break (Ge 3) Id) [10,4,1,7,3,1,3,5]
PresentT ([],[10,4,1,7,3,1,3,5])
>>>
pz @(Break (Lt 3) Id) [10,4,1,7,3,1,3,5]
PresentT ([10,4],[1,7,3,1,3,5])
data Intercalate p q Source #
intercalate two lists
>>>
pz @(Intercalate '["aB"] '["xxxx","yz","z","www","xyz"]) ()
PresentT ["xxxx","aB","yz","aB","z","aB","www","aB","xyz"]
>>>
pz @(Intercalate '[W 99,Negate 98] Id) [1..5]
PresentT [1,99,-98,2,99,-98,3,99,-98,4,99,-98,5]
>>>
pz @(Intercalate '[99,100] Id) [1..5]
PresentT [1,99,100,2,99,100,3,99,100,4,99,100,5]
Instances
(PP p x ~ [a], PP q x ~ PP p x, P p x, P q x, Show a) => P (Intercalate p q :: Type) x Source # | |
Defined in Predicate.Prelude Associated Types type PP (Intercalate p q) x :: Type Source # Methods eval :: MonadEval m => Proxy (Intercalate p q) -> POpts -> x -> m (TT (PP (Intercalate p q) x)) Source # | |
type PP (Intercalate p q :: Type) x Source # | |
Defined in Predicate.Prelude |
elem
function
>>>
pz @(Elem (Fst Id) (Snd Id)) ('x',"abcdxy")
TrueT
>>>
pz @(Elem (Fst Id) (Snd Id)) ('z',"abcdxy")
FalseT
similar to inits
>>>
pz @Inits [4,8,3,9]
PresentT [[],[4],[4,8],[4,8,3],[4,8,3,9]]
>>>
pz @Inits []
PresentT [[]]
similar to tails
>>>
pz @Tails [4,8,3,9]
PresentT [[4,8,3,9],[8,3,9],[3,9],[9],[]]
>>>
pz @Tails []
PresentT [[]]
split a list into single values
>>>
pz @(Ones Id) [4,8,3,9]
PresentT [[4],[8],[3],[9]]
>>>
pz @(Ones Id) []
PresentT []
gets the singleton value from a foldable
>>>
pl @(OneP Id) [10..15]
Error OneP 6 elements (OneP expected one element) FailT "OneP 6 elements"
>>>
pl @(OneP Id) [10]
Present 10 (OneP) PresentT 10
>>>
pl @(OneP Id) []
Error OneP empty (OneP expected one element) FailT "OneP empty"
>>>
pl @(OneP Id) (Just 10)
Present 10 (OneP) PresentT 10
>>>
pl @(OneP Id) Nothing
Error OneP empty (OneP expected one element) FailT "OneP empty"
similar to length
for Foldable
instances
>>>
pz @(Length Id) (Left "aa")
PresentT 0
>>>
pz @(Length Id) (Right "aa")
PresentT 1
>>>
pz @(Length (Right' Id)) (Right "abcd")
PresentT 4
>>>
pz @(Length (Thd (Snd Id))) (True,(23,'x',[10,9,1,3,4,2]))
PresentT 6
similar to cycle
but for a fixed number 'n'
>>>
pz @(Cycle 5 Id) [1,2]
PresentT [1,2,1,2,1]
split a list 'p' into parts using the lengths in the type level list 'ns'
>>>
pz @(SplitAts '[2,3,1,1] Id) "hello world"
PresentT ["he","llo"," ","w","orld"]
>>>
pz @(SplitAts '[2] Id) "hello world"
PresentT ["he","llo world"]
>>>
pz @(SplitAts '[10,1,1,5] Id) "hello world"
PresentT ["hello worl","d","",""]
similar to splitAt
>>>
pz @(SplitAt 4 Id) "hello world"
PresentT ("hell","o world")
>>>
pz @(SplitAt 20 Id) "hello world"
PresentT ("hello world","")
>>>
pz @(SplitAt 0 Id) "hello world"
PresentT ("","hello world")
>>>
pz @(SplitAt (Snd Id) (Fst Id)) ("hello world",4)
PresentT ("hell","o world")
>>>
pz @(SplitAt (Negate 2) Id) "hello world"
PresentT ("hello wor","ld")
splits a list pointed to by 'p' into lists of size 'n'
>>>
pz @(ChunksOf 2 Id) "abcdef"
PresentT ["ab","cd","ef"]
>>>
pz @(ChunksOf 2 Id) "abcdefg"
PresentT ["ab","cd","ef","g"]
>>>
pz @(ChunksOf 2 Id) ""
PresentT []
>>>
pz @(ChunksOf 2 Id) "a"
PresentT ["a"]
>>>
pz @IsEmpty [1,2,3,4]
FalseT
>>>
pz @IsEmpty []
TrueT
>>>
pz @IsEmpty LT
FalseT
>>>
pz @IsEmpty EQ
TrueT
similar to toList
>>>
pz @ToList ("aBc" :: String)
PresentT "aBc"
>>>
pz @ToList (Just 14)
PresentT [14]
>>>
pz @ToList Nothing
PresentT []
>>>
pz @ToList (Left "xx")
PresentT []
>>>
pz @ToList (These 12 "xx")
PresentT ["xx"]
similar to toList
>>>
pz @(ToList' Id) ("aBc" :: String)
PresentT "aBc"
>>>
pz @(ToList' Id) (Just 14)
PresentT [14]
>>>
pz @(ToList' Id) Nothing
PresentT []
>>>
pz @(ToList' Id) (Left "xx")
PresentT []
>>>
pz @(ToList' Id) (These 12 "xx")
PresentT ["xx"]
similar to itoList
>>>
pz @(IToList _ Id) ("aBc" :: String)
PresentT [(0,'a'),(1,'B'),(2,'c')]
data FromList (t :: Type) Source #
invokes fromList
>>>
import qualified Data.Set as Set
>>>
run @('OMsg "Fred" ':# 'ODebug 'DLite ':# 'ONoColor 'True) @(FromList (Set.Set Int) << '[2,1,5,5,2,5,2]) ()
Fred >>> Present fromList [1,2,5] ((>>) fromList [1,2,5] | {FromList fromList [1,2,5]}) PresentT (fromList [1,2,5])