Safe Haskell | None |
---|---|
Language | Haskell2010 |
a dsl for evaluating and displaying type level expressions
Synopsis
- data Id
- data IdT
- data W (p :: k)
- data Msg prt p
- data MsgI prt p
- data Hide p
- data Width (n :: Nat) p
- data Hole (t :: Type)
- data UnproxyT
- data Len
- data Length p
- data Map' p q
- data Map p
- data Do (ps :: [k])
- data Swap
- data Arg'
- pan :: forall p a. (Show (PP p a), P p a) => a -> IO (Val (PP p a))
- panv :: forall p a. (Show (PP p a), P p a) => a -> IO (Val (PP p a))
- pa :: forall p a. (Show (PP p a), P p a) => a -> IO (Val (PP p a))
- pu :: forall p a. (Show (PP p a), P p a) => a -> IO (Val (PP p a))
- pab :: forall p a. (Show (PP p a), P p a) => a -> IO (Val (PP p a))
- pub :: forall p a. (Show (PP p a), P p a) => a -> IO (Val (PP p a))
- pav :: forall p a. (Show (PP p a), P p a) => a -> IO (Val (PP p a))
- puv :: forall p a. (Show (PP p a), P p a) => a -> IO (Val (PP p a))
- pl :: forall p a. (Show (PP p a), P p a) => a -> IO (Val (PP p a))
- pz :: forall p a. (Show (PP p a), P p a) => a -> IO (Val (PP p a))
- run :: forall opts p a. (OptC opts, Show (PP p a), P p a) => a -> IO (Val (PP p a))
- runs :: forall optss p a. (OptC (OptT optss), Show (PP p a), P p a) => a -> IO (Val (PP p a))
- unsafeEval :: forall opts p a. (HasCallStack, OptC opts, Show (PP p a), P p a) => a -> PP p a
- runP :: (P p a, MonadEval m) => Inline -> String -> proxy p -> POpts -> a -> [Tree PE] -> m (Either (TT x) (PP p a, TT (PP p a)))
- runPQ :: (P p a, P q a, MonadEval m) => Inline -> String -> proxy1 p -> proxy2 q -> POpts -> a -> [Tree PE] -> m (Either (TT x) (PP p a, PP q a, TT (PP p a), TT (PP q a)))
- runPQBool :: (P p a, PP p a ~ Bool, P q a, PP q a ~ Bool, MonadEval m) => Inline -> String -> proxy1 p -> proxy2 q -> POpts -> a -> [Tree PE] -> m (Either (TT x) (PP p a, PP q a, TT (PP p a), TT (PP q a)))
- evalBool :: (MonadEval m, P p a, PP p a ~ Bool) => proxy p -> POpts -> a -> m (TT (PP p a))
- evalBoolHide :: forall p a m. (MonadEval m, P p a, PP p a ~ Bool) => POpts -> a -> m (TT (PP p a))
- evalHide :: forall p a m. (MonadEval m, P p a) => POpts -> a -> m (TT (PP p a))
- evalQuick :: forall opts p i. (OptC opts, P p i) => i -> Either String (PP p i)
- evalEither :: forall opts p a. (OptC opts, Show (PP p a), P p a) => a -> Either String (PP p a)
- data Wrap (t :: Type) p
- data Wrap' t p
- data Unwrap
- data Fail t prt
- data FailP p
- data FailT (t :: Type) p
- data FailS p
- data Fst
- data Snd
- data Thd
- data L1 p
- data L2 p
- data L3 p
- data L4 p
- data L5 p
- data L6 p
- data L7 p
- data L8 p
- data L11
- data L12
- data L13
- data L21
- data L22
- data L23
- data L31
- data L32
- data L33
- data p && q
- data p &&~ q
- data p || q
- data p ||~ q
- data p ~> q
- data Not p
- data Between p q r
- data p <..> q
- data All p
- data Any p
- data IdBool
- data p >> q
- data p >>> q
- data p << q
- data (p :: k -> k1) $ (q :: k)
- data (q :: k) & (p :: k -> k1)
- data DoL (ps :: [k])
- class P p a where
- type family DoExpandT (ps :: [k]) :: Type where ...
- type family DoExpandLT (ps :: [k]) :: Type where ...
- type family ArgT (x :: Type) where ...
basic types
identity function
>>>
pz @Id 23
Val 23
identity function that also displays the type information for debugging
>>>
pz @IdT 23
Val 23
transparent wrapper to turn kind k into kind Type
eg useful for putting in a promoted list (cant mix kinds) see Do
>>>
pz @'[W 123, Id] 99
Val [123,99]
>>>
pz @'[W "abc", W "def", Id, Id] "ghi"
Val ["abc","def","ghi","ghi"]
add a message to give more context to the evaluation tree
>>>
pan @(Msg "[somemessage]" Id) 999
P [somemessage] Id 999 Val 999
>>>
pan @(Msg Id 999) "info message:"
P info message: '999 Val 999
add a message to give more context to the evaluation tree
>>>
pan @(MsgI "[somemessage] " Id) 999
P [somemessage] Id 999 Val 999
>>>
pan @(MsgI Id 999) "info message:"
P info message:'999 Val 999
run the expression p
but remove the subtrees
data Width (n :: Nat) p Source #
override the display width for the expression p
data Hole (t :: Type) Source #
Acts as a proxy for a Type.
used internally for type inference
>>>
pz @(FromIntegral' (Proxy (SG.Sum _) >> UnproxyT) 23) ()
Val (Sum {getSum = 23})
>>>
pz @(FromIntegral' (Hole (SG.Sum _)) 23) () -- equivalent to Proxy UnproxyT above
Val (Sum {getSum = 23})
similar to Length
but displays the input value and works only for lists
>>>
pl @Len "abcd"
Present 4 (Len 4 | "abcd") Val 4
>>>
pl @Len [1..3000]
Present 3000 (Len 3000 | [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,7...) Val 3000
>>>
pz @Len [10,4,5,12,3,4]
Val 6
>>>
pz @Len []
Val 0
>>>
pz @(Pairs >> Len > 2) "abcdef"
Val True
similar to length
for Foldable
instances
>>>
pz @(Length Snd) (123,"abcdefg") -- if this breaks then get rid of Show a!
Val 7
>>>
pz @(Length Id) (Left "aa")
Val 0
>>>
pz @(Length Id) (Right "aa")
Val 1
>>>
pz @(Length Right') (Right "abcd")
Val 4
>>>
pz @(Length L23) (True,(23,'x',[10,9,1,3,4,2]))
Val 6
similar to map
for Foldable types
>>>
pz @(Map' Pred Id) [1..5]
Val [0,1,2,3,4]
similar to map
>>>
pz @(Map Pred) [1..5]
Val [0,1,2,3,4]
processes a type level list predicates running each in sequence with infixr: see >>
>>>
pz @(Do [Pred, ShowP Id, Id &&& Len]) 9876543
Val ("9876542",7)
>>>
pz @(Do '[W 123, W "xyz", Len &&& Id, Pred *** Id<>Id]) ()
Val (2,"xyzxyz")
>>>
pl @(Do '[Succ,Id,ShowP Id,Ones,Map (ReadBase Int 8)]) 1239
Present [1,2,4,0] ((>>) [1,2,4,0] | {Map [1,2,4,0] | ["1","2","4","0"]}) Val [1,2,4,0]
>>>
pl @(Do '[Pred,Id,ShowP Id,Ones,Map (ReadBase Int 8)]) 1239
Error invalid base 8 (Map(i=3, a="8") excnt=1) Fail "invalid base 8"
>>>
pl @(Do '[4,5,6]) ()
Present 6 ((>>) 6 | {'6}) Val 6
>>>
pl @(Do '["abc", "Def", "ggg", "hhhhh"]) ()
Present "hhhhh" ((>>) "hhhhh" | {'"hhhhh"}) Val "hhhhh"
>>>
pl @(Do '[ 'LT, 'EQ, 'GT ]) ()
Present GT ((>>) GT | {'GT}) Val GT
>>>
pl @(Do '[4 % 4,22 % 1 ,12 -% 4]) ()
Present (-3) % 1 ((>>) (-3) % 1 | {Negate (-3) % 1 | 3 % 1}) Val ((-3) % 1)
>>>
pl @(Do '[1,2,3]) ()
Present 3 ((>>) 3 | {'3}) Val 3
swaps using SwapC
>>>
pz @Swap (Left 123)
Val (Right 123)
>>>
pz @Swap (Right 123)
Val (Left 123)
>>>
pz @Swap (These 'x' 123)
Val (These 123 'x')
>>>
pz @Swap (This 'x')
Val (That 'x')
>>>
pz @Swap (That 123)
Val (This 123)
>>>
pz @Swap (123,'x')
Val ('x',123)
>>>
pz @Swap (Left "abc")
Val (Right "abc")
>>>
pz @Swap (Right 123)
Val (Left 123)
>>>
pl @Swap (Right "asfd")
Present Left "asfd" (Swap Left "asfd" | Right "asfd") Val (Left "asfd")
>>>
pl @Swap (12,"asfd")
Present ("asfd",12) (Swap ("asfd",12) | (12,"asfd")) Val ("asfd",12)
>>>
pz @Swap (True,12,"asfd")
Val (True,"asfd",12)
extracts a tuple from Arg
>>>
pz @('SG.Arg (C "S") 10 >> Arg') ()
Val ('S',10)
>>>
pz @Arg' (SG.Arg 'S' 10)
Val ('S',10)
impure evaluation
pan :: forall p a. (Show (PP p a), P p a) => a -> IO (Val (PP p a)) Source #
displays the evaluation tree in plain text without colors
evaluate the type level expression in IO
>>>
pl @(Between 4 10 Id) 7 & mapped . _Val %~ not
True (4 <= 7 <= 10) Val False
>>>
eval (Proxy @'True) defOpts 7 & mapped . ttValBool . _Val %~ not
TT {_ttValP = FalseP, _ttVal = Val False, _ttString = "'True", _ttForest = []}
panv :: forall p a. (Show (PP p a), P p a) => a -> IO (Val (PP p a)) Source #
displays the evaluation tree in plain text without colors and verbose
evaluate the type level expression in IO
>>>
pl @(Between 4 10 Id) 7 & mapped . _Val %~ not
True (4 <= 7 <= 10) Val False
>>>
eval (Proxy @'True) defOpts 7 & mapped . ttValBool . _Val %~ not
TT {_ttValP = FalseP, _ttVal = Val False, _ttString = "'True", _ttForest = []}
pa :: forall p a. (Show (PP p a), P p a) => a -> IO (Val (PP p a)) Source #
displays the evaluation tree using colors without background colors
evaluate the type level expression in IO
>>>
pl @(Between 4 10 Id) 7 & mapped . _Val %~ not
True (4 <= 7 <= 10) Val False
>>>
eval (Proxy @'True) defOpts 7 & mapped . ttValBool . _Val %~ not
TT {_ttValP = FalseP, _ttVal = Val False, _ttString = "'True", _ttForest = []}
pu :: forall p a. (Show (PP p a), P p a) => a -> IO (Val (PP p a)) Source #
display the evaluation tree using unicode and colors
pu
'(Id, "abc", 'True) [1..4]
@
evaluate the type level expression in IO
>>>
pl @(Between 4 10 Id) 7 & mapped . _Val %~ not
True (4 <= 7 <= 10) Val False
>>>
eval (Proxy @'True) defOpts 7 & mapped . ttValBool . _Val %~ not
TT {_ttValP = FalseP, _ttVal = Val False, _ttString = "'True", _ttForest = []}
pab :: forall p a. (Show (PP p a), P p a) => a -> IO (Val (PP p a)) Source #
displays the evaluation tree using background colors
evaluate the type level expression in IO
>>>
pl @(Between 4 10 Id) 7 & mapped . _Val %~ not
True (4 <= 7 <= 10) Val False
>>>
eval (Proxy @'True) defOpts 7 & mapped . ttValBool . _Val %~ not
TT {_ttValP = FalseP, _ttVal = Val False, _ttString = "'True", _ttForest = []}
pub :: forall p a. (Show (PP p a), P p a) => a -> IO (Val (PP p a)) Source #
displays the evaluation tree using unicode and colors with background colors
evaluate the type level expression in IO
>>>
pl @(Between 4 10 Id) 7 & mapped . _Val %~ not
True (4 <= 7 <= 10) Val False
>>>
eval (Proxy @'True) defOpts 7 & mapped . ttValBool . _Val %~ not
TT {_ttValP = FalseP, _ttVal = Val False, _ttString = "'True", _ttForest = []}
pav :: forall p a. (Show (PP p a), P p a) => a -> IO (Val (PP p a)) Source #
pa
and verbose
evaluate the type level expression in IO
>>>
pl @(Between 4 10 Id) 7 & mapped . _Val %~ not
True (4 <= 7 <= 10) Val False
>>>
eval (Proxy @'True) defOpts 7 & mapped . ttValBool . _Val %~ not
TT {_ttValP = FalseP, _ttVal = Val False, _ttString = "'True", _ttForest = []}
puv :: forall p a. (Show (PP p a), P p a) => a -> IO (Val (PP p a)) Source #
pu
and verbose
evaluate the type level expression in IO
>>>
pl @(Between 4 10 Id) 7 & mapped . _Val %~ not
True (4 <= 7 <= 10) Val False
>>>
eval (Proxy @'True) defOpts 7 & mapped . ttValBool . _Val %~ not
TT {_ttValP = FalseP, _ttVal = Val False, _ttString = "'True", _ttForest = []}
pl :: forall p a. (Show (PP p a), P p a) => a -> IO (Val (PP p a)) Source #
same as pz
but adds context to the end result
evaluate the type level expression in IO
>>>
pl @(Between 4 10 Id) 7 & mapped . _Val %~ not
True (4 <= 7 <= 10) Val False
>>>
eval (Proxy @'True) defOpts 7 & mapped . ttValBool . _Val %~ not
TT {_ttValP = FalseP, _ttVal = Val False, _ttString = "'True", _ttForest = []}
pz :: forall p a. (Show (PP p a), P p a) => a -> IO (Val (PP p a)) Source #
skips the evaluation tree and just displays the end result
evaluate the type level expression in IO
>>>
pl @(Between 4 10 Id) 7 & mapped . _Val %~ not
True (4 <= 7 <= 10) Val False
>>>
eval (Proxy @'True) defOpts 7 & mapped . ttValBool . _Val %~ not
TT {_ttValP = FalseP, _ttVal = Val False, _ttString = "'True", _ttForest = []}
run :: forall opts p a. (OptC opts, Show (PP p a), P p a) => a -> IO (Val (PP p a)) Source #
evaluate a typelevel expression (use type applications to pass in the options and the expression)
>>>
run @OZ @Id 123
Val 123
>>>
run @('OMsg "field1" ':# OL) @('Left Id) (Right 123)
field1 >>> Error 'Left found Right Fail "'Left found Right"
>>>
run @(OptT '[ 'OMsg "test", OU, 'OEmpty, OL, 'OMsg "field2"]) @(FailT _ "oops") ()
test | field2 >>> Error oops Fail "oops"
runs :: forall optss p a. (OptC (OptT optss), Show (PP p a), P p a) => a -> IO (Val (PP p a)) Source #
run expression with multiple options in a list
>>>
runs @'[OL, 'OMsg "field2"] @'( 'True, 'False) ()
field2 >>> Present (True,False) ('(True,False)) Val (True,False)
>>>
runs @'[ 'OMsg "test", OU, 'OEmpty, OL, 'OMsg "field2"] @(FailT _ "oops") ()
test | field2 >>> Error oops Fail "oops"
unsafeEval :: forall opts p a. (HasCallStack, OptC opts, Show (PP p a), P p a) => a -> PP p a Source #
for use with TH.Lift in a splice. returns a pure value or fails with a tree
pure evaluation
runP :: (P p a, MonadEval m) => Inline -> String -> proxy p -> POpts -> a -> [Tree PE] -> m (Either (TT x) (PP p a, TT (PP p a))) Source #
convenience method to evaluate one expression
runPQ :: (P p a, P q a, MonadEval m) => Inline -> String -> proxy1 p -> proxy2 q -> POpts -> a -> [Tree PE] -> m (Either (TT x) (PP p a, PP q a, TT (PP p a), TT (PP q a))) Source #
convenience method to evaluate two expressions using the same input and return the results
runPQBool :: (P p a, PP p a ~ Bool, P q a, PP q a ~ Bool, MonadEval m) => Inline -> String -> proxy1 p -> proxy2 q -> POpts -> a -> [Tree PE] -> m (Either (TT x) (PP p a, PP q a, TT (PP p a), TT (PP q a))) Source #
convenience method to evaluate two boolean expressions using the same input and return the results
evalBool :: (MonadEval m, P p a, PP p a ~ Bool) => proxy p -> POpts -> a -> m (TT (PP p a)) Source #
A specialised form of eval
that works only on predicates
evalBoolHide :: forall p a m. (MonadEval m, P p a, PP p a ~ Bool) => POpts -> a -> m (TT (PP p a)) Source #
evaluate a boolean expressions but hide the results unless verbose
evalHide :: forall p a m. (MonadEval m, P p a) => POpts -> a -> m (TT (PP p a)) Source #
evaluate a expressions but hide the results unless verbose
evalQuick :: forall opts p i. (OptC opts, P p i) => i -> Either String (PP p i) Source #
A specialised form of eval
that returns the result or the error string on failure
evalEither :: forall opts p a. (OptC opts, Show (PP p a), P p a) => a -> Either String (PP p a) Source #
run a type level computation and returns the value or a tree with the error
wrap, unwrap
data Wrap (t :: Type) p Source #
wraps a value (see _Wrapped'
and _Unwrapped'
)
>>>
pz @(Wrap (SG.Sum _) Id) (-13)
Val (Sum {getSum = -13})
>>>
pz @(Wrap SG.Any (Ge 4)) 13
Val (Any {getAny = True})
>>>
import Data.List.NonEmpty (NonEmpty(..))
>>>
pz @(Wrap (NonEmpty _) (Uncons >> 'Just Id)) "abcd"
Val ('a' :| "bcd")
>>>
pl @(Wrap (SG.Sum _) Id) 13
Present Sum {getSum = 13} (Wrap Sum {getSum = 13} | 13) Val (Sum {getSum = 13})
>>>
pl @(Wrap (SG.Sum _) Id >> STimes 4 Id) 13
Present Sum {getSum = 52} ((>>) Sum {getSum = 52} | {getSum = 13}) Val (Sum {getSum = 52})
>>>
pl @(Wrap _ 13 <> Id) (SG.Sum @Int 12)
Present Sum {getSum = 25} (Sum {getSum = 13} <> Sum {getSum = 12} = Sum {getSum = 25}) Val (Sum {getSum = 25})
similar to Wrap
where t
points to the type
unwraps a value (see _Wrapped'
)
>>>
pz @Unwrap (SG.Sum (-13))
Val (-13)
>>>
pl @(Unwrap >> '(Id, 'True)) (SG.Sum 13)
Present (13,True) ((>>) (13,True) | {'(13,True)}) Val (13,True)
failure
Fails the computation with a message but allows you to set the output type
>>>
pz @('False || (Fail 'True "failed")) (99,"somedata")
Fail "failed"
>>>
pz @('False || (Fail (Hole Bool) "failed")) (99,"somedata")
Fail "failed"
>>>
pz @('False || (Fail (Hole _) "failed")) (99,"somedata")
Fail "failed"
Fails the computation with a message where the input value is a Proxy
>>>
pz @(Ix 3 (FailP "oops")) "abcd"
Val 'd'
>>>
pz @(Ix 3 (FailP "oops")) "abc"
Fail "oops"
data FailT (t :: Type) p Source #
Fails the computation with a message (wraps the type in Hole
)
>>>
pz @(FailT Int (PrintF "value=%03d" Id)) 99
Fail "value=099"
Fails the computation with a message for simple failures: doesnt preserve types
>>>
pz @(FailS (PrintT "value=%03d string=%s" Id)) (99,"somedata")
Fail "value=099 string=somedata"
tuple
similar to fst
>>>
pz @Fst (10,"Abc")
Val 10
>>>
pz @Fst (10,"Abc",'x')
Val 10
>>>
pz @Fst (10,"Abc",'x',False)
Val 10
>>>
pl @Fst (99,'a',False,1.3)
Present 99 (Fst 99 | (99,'a',False,1.3)) Val 99
similar to snd
>>>
pz @Snd (10,"Abc")
Val "Abc"
>>>
pz @Snd (10,"Abc",True)
Val "Abc"
>>>
pl @Snd (99,'a',False,1.3)
Present 'a' (Snd 'a' | (99,'a',False,1.3)) Val 'a'
similar to 3rd element in a n-tuple
>>>
pz @Thd (10,"Abc",133)
Val 133
>>>
pz @Thd (10,"Abc",133,True)
Val 133
>>>
pl @Thd (99,'a',False,1.3)
Present False (Thd False | (99,'a',False,1.3)) Val False
similar to fst
similar to snd
similar to 3rd element in a n-tuple
similar to 4th element in a n-tuple
>>>
pz @(L4 Id) (10,"Abc",'x',True)
Val True
>>>
pz @(L4 L21) ('x',((10,"Abc",'x',999),"aa",1),9)
Val 999
>>>
pl @(L4 Id) (99,'a',False,"someval")
Present "someval" (L4 "someval" | (99,'a',False,"someval")) Val "someval"
similar to 5th element in a n-tuple
>>>
pz @(L5 Id) (10,"Abc",'x',True,1)
Val 1
similar to 6th element in a n-tuple
>>>
pz @(L6 Id) (10,"Abc",'x',True,1,99)
Val 99
similar to 7th element in a n-tuple
>>>
pz @(L7 Id) (10,"Abc",'x',True,1,99,'a')
Val 'a'
similar to 8th element in a n-tuple
>>>
pz @(L8 Id) (10,"Abc",'x',True,1,99,True,'a')
Val 'a'
first element in a tuple followed by the first element
>>>
pz @L11 ((10,"ss"),2)
Val 10
first element in a tuple followed by the second element
>>>
pz @L12 ((10,"ss"),2)
Val "ss"
first element in a tuple followed by the third element
>>>
pz @L13 ((10,"ss",4.5),2)
Val 4.5
second element in a tuple followed by the first element
>>>
pz @L21 ('x',(10,"ss",4.5),2)
Val 10
second element in a tuple followed by the second element
>>>
pz @L22 ('z',(10,"ss",4.5),2)
Val "ss"
second element in a tuple followed by the third element
>>>
pz @L23 ('x',(10,"ss",4.5),2)
Val 4.5
third element in a tuple followed by the first element
>>>
pz @L31 (1,2,('c',4))
Val 'c'
third element in a tuple followed by the second element
>>>
pz @L32 (1,2,('c',4))
Val 4
third element in a tuple followed by the third element
>>>
pz @L33 (1,2,('c',4,False))
Val False
boolean
similar to &&
>>>
pz @(Fst && Snd) (True, True)
Val True
>>>
pz @(Id > 15 && Id < 17) 16
Val True
>>>
pz @(Id > 15 && Id < 17) 30
Val False
>>>
pz @(Fst && (Length Snd >= 4)) (True,[11,12,13,14])
Val True
>>>
pz @(Fst && (Length Snd == 4)) (True,[12,11,12,13,14])
Val False
>>>
pz @(Uncurry (+:)) ([2..5],1)
Val [2,3,4,5,1]
>>>
pz @(Uncurry (==!)) ('x','y')
Val LT
data p &&~ q infixr 3 Source #
short circuit version of boolean And
>>>
pl @(Id > 10 &&~ FailT _ "ss") 9
False (False &&~ _ | (9 > 10)) Val False
>>>
pl @(Id > 10 &&~ Id == 12) 11
False (True &&~ False | (11 == 12)) Val False
>>>
pl @(Id > 10 &&~ Id == 11) 11
True (True &&~ True) Val True
similar to ||
>>>
pz @(Fst || (Length Snd >= 4)) (False,[11,12,13,14])
Val True
>>>
pz @(Not Fst || (Length Snd == 4)) (True,[12,11,12,13,14])
Val False
data p ||~ q infixr 2 Source #
short circuit version of boolean Or
>>>
pl @(Id > 10 ||~ FailT _ "ss") 11
True (True ||~ _ | (11 > 10)) Val True
>>>
pz @(Id > 10 ||~ Id == 9) 9
Val True
>>>
pl @(Id > 10 ||~ Id > 9) 9
False (False ||~ False | (9 > 10) ||~ (9 > 9)) Val False
boolean implication
>>>
pz @(Fst ~> (Length Snd >= 4)) (True,[11,12,13,14])
Val True
>>>
pz @(Fst ~> (Length Snd == 4)) (True,[12,11,12,13,14])
Val False
>>>
pz @(Fst ~> (Length Snd == 4)) (False,[12,11,12,13,14])
Val True
>>>
pz @(Fst ~> (Length Snd >= 4)) (False,[11,12,13,14])
Val True
not
function
>>>
pz @(Not Id) False
Val True
>>>
pz @(Not Id) True
Val False
>>>
pz @(Not Fst) (True,22)
Val False
>>>
pl @(Not (Lt 3)) 13
True (Not (13 < 3)) Val True
>>>
pl @(Not 'True) ()
False (Not ('True)) Val False
A predicate that determines if the value is between p
and q
>>>
pz @(Between 5 8 Len) [1,2,3,4,5,5,7]
Val True
>>>
pl @(Between 5 8 Id) 9
False (9 <= 8) Val False
>>>
pl @(Between L11 L12 Snd) ((1,4),3)
True (1 <= 3 <= 4) Val True
>>>
pl @(Between L11 L12 Snd) ((1,4),10)
False (10 <= 4) Val False
data p <..> q infix 4 Source #
A operator predicate that determines if the value is between p
and q
>>>
pz @(5 <..> 8) 6
Val True
>>>
pz @(10 % 4 <..> 40 % 5) 4
Val True
>>>
pz @(10 % 4 <..> 40 % 5) 33
Val False
>>>
pl @(Negate 7 <..> 20) (-4)
True (-7 <= -4 <= 20) Val True
>>>
pl @(Negate 7 <..> 20) 21
False (21 <= 20) Val False
similar to all
>>>
pl @(All (Between 1 8 Id)) [7,3,4,1,2,9,0,1]
False (All(8) i=5 (9 <= 8)) Val False
>>>
pz @(All Odd) [1,5,11,5,3]
Val True
>>>
pz @(All Odd) []
Val True
>>>
run @OANV @(All Even) [1,5,11,5,3]
False All(5) i=0 (1 == 0) | +- False i=0: 1 == 0 | | | +- P 1 `mod` 2 = 1 | | | | | +- P Id 1 | | | | | `- P '2 | | | `- P '0 | +- False i=1: 1 == 0 | | | +- P 5 `mod` 2 = 1 | | | | | +- P Id 5 | | | | | `- P '2 | | | `- P '0 | +- False i=2: 1 == 0 | | | +- P 11 `mod` 2 = 1 | | | | | +- P Id 11 | | | | | `- P '2 | | | `- P '0 | +- False i=3: 1 == 0 | | | +- P 5 `mod` 2 = 1 | | | | | +- P Id 5 | | | | | `- P '2 | | | `- P '0 | `- False i=4: 1 == 0 | +- P 3 `mod` 2 = 1 | | | +- P Id 3 | | | `- P '2 | `- P '0 Val False
>>>
pl @(Fst >> All (Gt 3)) ([10,12,3,5],"ss")
False ((>>) False | {All(4) i=2 (3 > 3)}) Val False
>>>
pl @(All (Lt 3)) [1 .. 10]
False (All(10) i=2 (3 < 3)) Val False
similar to any
>>>
pl @(Any Even) [1,5,11,5,3]
False (Any(5)) Val False
>>>
pl @(Any Even) [1,5,112,5,3]
True (Any(5) i=2 (0 == 0)) Val True
>>>
pz @(Any Even) []
Val False
>>>
pl @(Fst >> Any (Gt 3)) ([10,12,3,5],"ss")
True ((>>) True | {Any(4) i=0 (10 > 3)}) Val True
>>>
pl @(Any (Same 2)) [1,4,5]
False (Any(3)) Val False
>>>
pl @(Any (Same 2)) [1,4,5,2,1]
True (Any(5) i=3 (2 == 2)) Val True
id
function on a boolean
>>>
pz @('[ 'True] >> Head >> IdBool) ()
Val True
>>>
pz @(Fst >> IdBool) (False,22)
Val False
>>>
pl @(Head >> IdBool) [True]
True ((>>) True | {IdBool}) Val True
>>>
pan @(Head >> Id) [True]
P (>>) True | +- P Head True | `- P Id True Val True
>>>
pan @(Head >> IdBool) [True]
True (>>) True | +- P Head True | `- True IdBool Val True
type application
compose expressions
>>>
pz @(L11 >> Not Id) ((True,12),'x')
Val False
>>>
pz @(L12 >> Succ >> Dup) ((True,12),'x')
Val (13,13)
>>>
pz @(10 >> '(Id,"abc") >> Second Len) ()
Val (10,3)
data p >>> q infixl 1 Source #
infixl version of >>
flipped version of >>
data (p :: k -> k1) $ (q :: k) infixr 0 Source #
like $
for expressions taking exactly on argument (similar is %%
)
ie this doesnt work: pz @('(,) $ 4 $ 'True) ()
>>>
pl @(L1 $ L2 $ Id) ((1,2),(3,4))
Present 3 (Fst 3 | (3,4)) Val 3
>>>
pl @((<=) 4 $ L1 $ L2 $ Id) ((1,2),(3,4))
False (4 <= 3) Val False
>>>
pz @('(,) 4 $ 'True) ()
Val (4,True)
>>>
pz @('(,) %% 'True %% 'False) () -- cant do this with $
Val (True,False)
data (q :: k) & (p :: k -> k1) infixl 1 Source #
similar to &
for expressions taking exactly on argument
>>>
pl @(Id & L1 & Singleton & Length) (13,"xyzw")
Present 1 (Length 1) Val 1
>>>
pl @(2 & (&&&) "abc") ()
Present ("abc",2) ('("abc",2)) Val ("abc",2)
>>>
pl @(2 & '(,) "abc") ()
Present ("abc",2) ('("abc",2)) Val ("abc",2)
>>>
pl @('(,) 4 $ '(,) 7 $ "aa") ()
Present (4,(7,"aa")) ('(4,(7,"aa"))) Val (4,(7,"aa"))
>>>
pl @(L3 $ L2 $ Fst) ((1,("X",9,'a')),(3,4))
Present 'a' (Thd 'a' | ("X",9,'a')) Val 'a'
>>>
pz @('True %& 'False %& '(,)) ()
Val (False,True)
processes a type level list predicates running each in sequence with infixl: see >>
>>>
pz @(DoL [Pred, ShowP Id, Id &&& Len]) 9876543
Val ("9876542",7)
>>>
pz @(DoL [2,3,4]) ()
Val 4
>>>
pl @(DoL '[4,5,6]) ()
Present 6 ((>>) 6 | {'6}) Val 6
core class
This is the core class. Each instance of this class can be combined into a dsl using >>
Instances
GetBool b => P (b :: Bool) a Source # | pulls the type level
|
GetOrdering cmp => P (cmp :: Ordering) a Source # | extracts the value level representation of the promoted
|
KnownNat n => P (n :: Nat) a Source # | extracts the value level representation of the type level
|
KnownSymbol s => P (s :: Symbol) a Source # | pulls the type level
|
P '() a Source # | extracts the value level representation of the type level '()
|
P () a Source # |
|
x ~ Arg a b => P Arg' x Source # | |
P L33T x => P L33 x Source # | |
P L32T x => P L32 x Source # | |
P L31T x => P L31 x Source # | |
P L23T x => P L23 x Source # | |
P L22T x => P L22 x Source # | |
P L21T x => P L21 x Source # | |
P L13T x => P L13 x Source # | |
P L12T x => P L12 x Source # | |
P L11T x => P L11 x Source # | |
P ThdT x => P Thd x Source # | |
P SndT x => P Snd x Source # | |
P FstT x => P Fst x Source # | |
x ~ Bool => P IdBool x Source # | |
(x ~ [a], Show a) => P Len x Source # | |
(Show x, Show (Unwrapped x), Wrapped x) => P Unwrap x Source # | |
(Typeable a, Show a) => P IdT a Source # | |
Show a => P Id a Source # | |
P ReverseITuple () Source # | |
Defined in Predicate.Data.Tuple type PP ReverseITuple () Source # eval :: MonadEval m => proxy ReverseITuple -> POpts -> () -> m (TT (PP ReverseITuple ())) Source # | |
FromITupleC x => P FromITuple x Source # | |
Defined in Predicate.Data.Tuple type PP FromITuple x Source # eval :: MonadEval m => proxy FromITuple -> POpts -> x -> m (TT (PP FromITuple x)) Source # | |
ToITupleC x => P ToITuple x Source # | |
([a] ~ x, Show a) => P Pairs x Source # | |
Show x => P Dup x Source # | |
P IsTheseT x => P IsThese x Source # | |
P IsThatT x => P IsThat x Source # | |
P IsThisT x => P IsThis x Source # | |
P ThesesT x => P Theses x Source # | |
P ThatsT x => P Thats x Source # | |
P ThissT x => P Thiss x Source # | |
ToStringC x => P ToString x Source # | |
P TrimBothT x => P TrimBoth x Source # | |
P TrimRT x => P TrimR x Source # | |
P TrimLT x => P TrimL x Source # | |
P Proxy2T x Source # | |
P Proxy1T x Source # | |
Show x => P ProxyT x Source # | |
P NegativeT x => P Negative x Source # | |
P PositiveT x => P Positive x Source # | |
P AllNegativeT x => P AllNegative x Source # | |
Defined in Predicate.Data.Ordering type PP AllNegative x Source # eval :: MonadEval m => proxy AllNegative -> POpts -> x -> m (TT (PP AllNegative x)) Source # | |
P AllPositiveT x => P AllPositive x Source # | |
Defined in Predicate.Data.Ordering type PP AllPositive x Source # eval :: MonadEval m => proxy AllPositive -> POpts -> x -> m (TT (PP AllPositive x)) Source # | |
P DescT' x => P Desc' x Source # | |
P DescT x => P Desc x Source # | |
P AscT' x => P Asc' x Source # | |
P AscT x => P Asc x Source # | |
P (Comparing Id) x => P Compare x Source # | |
P OddT x => P Odd x Source # | |
P EvenT x => P Even x Source # | |
P MEmptyPT x => P MEmptyP x Source # | |
(x ~ [a], Show a, Monoid a) => P MConcat x Source # | |
(Foldable t, x ~ t a) => P OneP x Source # | |
(x ~ t a, Foldable t, a ~ Bool) => P Ors x Source # | |
(x ~ t a, Foldable t, a ~ Bool) => P Ands x Source # | |
P NullT a => P Null a Source # | |
(Show x, x ~ t [a], Show a, Foldable t) => P Concat x Source # | |
(Show l, IsList l, Show (Item l)) => P ToListExt l Source # | |
(Show as, AsEmpty as) => P IsEmpty as Source # | |
P CatMaybesT x => P CatMaybes x Source # | |
x ~ Maybe a => P IsNothing x Source # | |
x ~ Maybe a => P IsJust x Source # | |
P Stdin x Source # | |
P TimeZt a Source # | |
P TimeUtc a Source # | |
P ReadEnvAll a Source # | |
Defined in Predicate.Data.IO type PP ReadEnvAll a Source # eval :: MonadEval m => proxy ReadEnvAll -> POpts -> a -> m (TT (PP ReadEnvAll a)) Source # | |
(Show x, Enum x) => P FromEnum x Source # | |
(Show x, Enum x) => P Pred x Source # | |
(Show x, Enum x) => P Succ x Source # | |
P IListT x => P IList x Source # | |
(x ~ [a], Show a, Ord a) => P Nub x Source # | |
(x ~ [a], Ord a, Show a) => P Max x Source # | |
(x ~ [a], Ord a, Show a) => P Min x Source # | |
(x ~ [a], Num a, Show a) => P Product x Source # | |
(x ~ [a], Num a, Show a) => P Sum x Source # | |
(Reversing t, Show t) => P ReverseL t Source # | |
(x ~ [a], Show a) => P Reverse x Source # | |
P SortT x => P Sort x Source # | |
P Unzip3T x => P Unzip3 x Source # | |
P UnzipT x => P Unzip x Source # | |
(Snoc s s (ConsT s) (ConsT s), x ~ s, Show s) => P Init x Source # | |
(Snoc x x (ConsT x) (ConsT x), Show (ConsT x), Show x) => P Last x Source # | |
(Cons x x (ConsT x) (ConsT x), Show x) => P Tail x Source # | |
(Cons x x (ConsT x) (ConsT x), Show (ConsT x), Show x) => P Head x Source # | |
x ~ [a] => P Ones x Source # | |
([a] ~ x, Show a) => P Tails x Source # | |
([a] ~ x, Show a) => P Inits x Source # | |
P GroupCntT x => P GroupCnt x Source # | |
P GroupT x => P Group x Source # | |
(a ~ [x], Ord x) => P GroupCntStable a Source # | |
Defined in Predicate.Data.List type PP GroupCntStable a Source # eval :: MonadEval m => proxy GroupCntStable -> POpts -> a -> m (TT (PP GroupCntStable a)) Source # | |
(Show (ConsT s), Show s, Snoc s s (ConsT s) (ConsT s)) => P Unsnoc s Source # | |
(Show (ConsT s), Show s, Cons s s (ConsT s) (ConsT s)) => P Uncons s Source # | |
x ~ [Int] => P LuhnDigit x Source # | |
x ~ [Int] => P IsLuhn x Source # | |
(Show x, Integral x) => P PrimePrev x Source # | |
(Show x, Integral x) => P PrimeNext x Source # | |
(x ~ a, Show a, Integral a) => P IsPrime x Source # | |
P InitMayT x => P InitMay x Source # | |
P TailMayT x => P TailMay x Source # | |
P LastMayT x => P LastMay x Source # | |
P HeadMayT x => P HeadMay x Source # | |
P IsEBothT x => P IsEBoth x Source # | |
P IsERightT x => P IsERight x Source # | |
P IsELeftT x => P IsELeft x Source # | |
P IsENoneT x => P IsENone x Source # | |
x ~ Either a b => P IsRight x Source # | |
x ~ Either a b => P IsLeft x Source # | |
(ToTimeC x, Show x) => P ToTime x Source # | |
(ToDayC x, Show x) => P ToDay x Source # | |
(Show a, IsText a) => P ToTitle a Source # | |
(Show a, IsText a) => P ToUpper a Source # | |
(Show a, IsText a) => P ToLower a Source # | |
P IsLatin1AllT x => P IsLatin1All x Source # | |
Defined in Predicate.Data.Char type PP IsLatin1All x Source # eval :: MonadEval m => proxy IsLatin1All -> POpts -> x -> m (TT (PP IsLatin1All x)) Source # | |
P IsSeparatorAllT x => P IsSeparatorAll x Source # | |
Defined in Predicate.Data.Char type PP IsSeparatorAll x Source # eval :: MonadEval m => proxy IsSeparatorAll -> POpts -> x -> m (TT (PP IsSeparatorAll x)) Source # | |
P IsOctDigitAllT x => P IsOctDigitAll x Source # | |
Defined in Predicate.Data.Char type PP IsOctDigitAll x Source # eval :: MonadEval m => proxy IsOctDigitAll -> POpts -> x -> m (TT (PP IsOctDigitAll x)) Source # | |
P IsHexDigitAllT x => P IsHexDigitAll x Source # | |
Defined in Predicate.Data.Char type PP IsHexDigitAll x Source # eval :: MonadEval m => proxy IsHexDigitAll -> POpts -> x -> m (TT (PP IsHexDigitAll x)) Source # | |
P IsControlAllT x => P IsControlAll x Source # | |
Defined in Predicate.Data.Char type PP IsControlAll x Source # eval :: MonadEval m => proxy IsControlAll -> POpts -> x -> m (TT (PP IsControlAll x)) Source # | |
P IsPunctuationAllT x => P IsPunctuationAll x Source # | |
Defined in Predicate.Data.Char type PP IsPunctuationAll x Source # eval :: MonadEval m => proxy IsPunctuationAll -> POpts -> x -> m (TT (PP IsPunctuationAll x)) Source # | |
P IsSpaceAllT x => P IsSpaceAll x Source # | |
Defined in Predicate.Data.Char type PP IsSpaceAll x Source # eval :: MonadEval m => proxy IsSpaceAll -> POpts -> x -> m (TT (PP IsSpaceAll x)) Source # | |
P IsDigitAllT x => P IsDigitAll x Source # | |
Defined in Predicate.Data.Char type PP IsDigitAll x Source # eval :: MonadEval m => proxy IsDigitAll -> POpts -> x -> m (TT (PP IsDigitAll x)) Source # | |
P IsUpperAllT x => P IsUpperAll x Source # | |
Defined in Predicate.Data.Char type PP IsUpperAll x Source # eval :: MonadEval m => proxy IsUpperAll -> POpts -> x -> m (TT (PP IsUpperAll x)) Source # | |
P IsLowerAllT x => P IsLowerAll x Source # | |
Defined in Predicate.Data.Char type PP IsLowerAll x Source # eval :: MonadEval m => proxy IsLowerAll -> POpts -> x -> m (TT (PP IsLowerAll x)) Source # | |
P IsLatin1T x => P IsLatin1 x Source # | |
P IsSeparatorT x => P IsSeparator x Source # | |
Defined in Predicate.Data.Char type PP IsSeparator x Source # eval :: MonadEval m => proxy IsSeparator -> POpts -> x -> m (TT (PP IsSeparator x)) Source # | |
P IsOctDigitT x => P IsOctDigit x Source # | |
Defined in Predicate.Data.Char type PP IsOctDigit x Source # eval :: MonadEval m => proxy IsOctDigit -> POpts -> x -> m (TT (PP IsOctDigit x)) Source # | |
P IsHexDigitT x => P IsHexDigit x Source # | |
Defined in Predicate.Data.Char type PP IsHexDigit x Source # eval :: MonadEval m => proxy IsHexDigit -> POpts -> x -> m (TT (PP IsHexDigit x)) Source # | |
P IsControlT x => P IsControl x Source # | |
P IsPunctuationT x => P IsPunctuation x Source # | |
Defined in Predicate.Data.Char type PP IsPunctuation x Source # eval :: MonadEval m => proxy IsPunctuation -> POpts -> x -> m (TT (PP IsPunctuation x)) Source # | |
P IsSpaceT x => P IsSpace x Source # | |
P IsDigitT x => P IsDigit x Source # | |
P IsUpperT x => P IsUpper x Source # | |
P IsLowerT x => P IsLower x Source # | |
(Show a, Show b) => P Theres [These a b] Source # | |
(Show a, Show b) => P Heres [These a b] Source # | |
(Show a, Show b) => P PartitionThese [These a b] Source # | |
Defined in Predicate.Data.These type PP PartitionThese [These a b] Source # | |
(Show (f (t a)), Show (t (f a)), Traversable t, Applicative f) => P Sequence (t (f a)) Source # | |
(Show (t (t a)), Show (t a), Monad t) => P Join (t (t a)) Source # | |
(Show (t a), Show (t (t a)), Comonad t) => P Duplicate (t a) Source # | |
(Show (t a), Show a, Comonad t) => P Extract (t a) Source # | |
(Show (t a), Foldable t) => P ToList (t a) Source # | |
(Show (t a), Foldable t) => P ToNEList (t a) Source # | |
Show a => P Just' (Maybe a) Source # | |
(Show a, Show b) => P PartitionElr [Elr a b] Source # | |
Defined in Predicate.Data.Elr type PP PartitionElr [Elr a b] Source # | |
(Show a, Show b) => P PartitionEithers [Either a b] Source # | |
Defined in Predicate.Data.Either type PP PartitionEithers [Either a b] Source # | |
(Show (p a b), SwapC p, Show (p b a)) => P Swap (p a b) Source # | |
Typeable t => P UnproxyT (Proxy t) Source # | |
(AssocC p, Show (p (p a b) c), Show (p a (p b c))) => P Unassoc (p a (p b c)) Source # | |
(AssocC p, Show (p (p a b) c), Show (p a (p b c))) => P Assoc (p (p a b) c) Source # | |
ReverseITupleC x xs () => P ReverseITuple (x, xs) Source # | |
Defined in Predicate.Data.Tuple type PP ReverseITuple (x, xs) Source # eval :: MonadEval m => proxy ReverseITuple -> POpts -> (x, xs) -> m (TT (PP ReverseITuple (x, xs))) Source # | |
(Show a, Show b) => P These' (These a b) Source # | |
Show a => P That' (These x a) Source # | |
Show a => P This' (These a x) Source # | |
P Elr2Maybe (Elr a b) Source # | |
P These2Elr (These a b) Source # | |
P Elr2These (Elr a b) Source # | |
(Show a, Show b) => P EBoth' (Elr a b) Source # | |
Show a => P ERight' (Elr x a) Source # | |
Show a => P ELeft' (Elr a x) Source # | |
P ENone' (Elr x y) Source # | |
Show a => P Right' (Either x a) Source # | |
Show a => P Left' (Either a x) Source # | |
P ('[] :: [k]) a Source # | extracts the value level representation of the type level '[]
|
Typeable t => P (Hole t :: Type) a Source # | |
(KnownNat n, FailWhenT (n <=? 0) ('Text "ToITupleList:n cannot be 0"), ToITupleListC n a, xs ~ [a]) => P (ToITupleList n :: Type) xs Source # | |
Defined in Predicate.Data.Tuple type PP (ToITupleList n) xs Source # eval :: MonadEval m => proxy (ToITupleList n) -> POpts -> xs -> m (TT (PP (ToITupleList n) xs)) Source # | |
(KnownNat n, FailWhenT (n <=? 1) ('Text "Tuple':n cannot be less than two but found n=" :<>: 'ShowType n), TupleC n a, x ~ [a]) => P (Tuple' n :: Type) x Source # | |
(KnownNat n, FailWhenT (n <=? 1) ('Text "Tuple:n cannot be less than two but found n=" :<>: 'ShowType n), TupleC n a, x ~ [a], Show a) => P (Tuple n :: Type) x Source # | |
(BetweenT "ShowBase" 2 36 n, KnownNat n, Integral x) => P (ShowBase n :: Type) x Source # | |
P (FloorT t) x => P (Floor t :: Type) x Source # | |
P (CeilingT t) x => P (Ceiling t :: Type) x Source # | |
P (TruncateT t) x => P (Truncate t :: Type) x Source # | |
P (FromRationalT t) x => P (FromRational t :: Type) x Source # | |
Defined in Predicate.Data.Numeric type PP (FromRational t) x Source # eval :: MonadEval m => proxy (FromRational t) -> POpts -> x -> m (TT (PP (FromRational t) x)) Source # | |
P (FromIntegralT t) x => P (FromIntegral t :: Type) x Source # | |
Defined in Predicate.Data.Numeric type PP (FromIntegral t) x Source # eval :: MonadEval m => proxy (FromIntegral t) -> POpts -> x -> m (TT (PP (FromIntegral t) x)) Source # | |
P (FromIntegerT t) x => P (FromInteger t :: Type) x Source # | |
Defined in Predicate.Data.Numeric type PP (FromInteger t) x Source # eval :: MonadEval m => proxy (FromInteger t) -> POpts -> x -> m (TT (PP (FromInteger t) x)) Source # | |
P (MEmptyTT t) x => P (MEmptyT t :: Type) x Source # | |
P (SapT t) x => P (Sap t :: Type) x Source # | |
(Coercible t a, Show a, Show t) => P (Coerce t :: Type) a Source # | |
P (EmptyList t :: Type) x Source # | |
P (FoldAlaT t) x => P (FoldAla t :: Type) x Source # | |
(Show l, IsList l, l ~ l') => P (FromListExt l' :: Type) l Source # | |
Defined in Predicate.Data.Foldable type PP (FromListExt l') l Source # eval :: MonadEval m => proxy (FromListExt l') -> POpts -> l -> m (TT (PP (FromListExt l') l)) Source # | |
(a ~ Item t, Show t, IsList t, [a] ~ x) => P (FromList t :: Type) x Source # | |
P (IToListT t) x => P (IToList t :: Type) x Source # | |
P (MkNothing t :: Type) x Source # | |
P (IxT' n) x => P (Ix' n :: Type) x Source # | |
P (UniverseT t) x => P (Universe t :: Type) x Source # | |
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 # | |
P (ToEnumT t) x => P (ToEnum t :: Type) x Source # | |
(KnownSymbol s, FailUnlessT (CmpSymbol s "" == 'GT) ('Text "C symbol cannot be empty")) => P (C s :: Type) a Source # | |
P ('Nothing :: Maybe a1) (Maybe a2) Source # | expects Nothing otherwise it fails
if the value is Nothing then it returns
|
(Show a2, PP p x ~ Maybe a2, P p x) => P ('Just p :: Maybe a1) x Source # | tries to extract
|
P (Proxy t :: Type) a Source # | create a Proxy for a kind
|
P (DoExpandLT ps) a => P (DoL ps :: Type) a Source # | |
P (DoExpandT ps) a => P (Do ps :: Type) a Source # | |
(Show (PP p a), P p a, x ~ [a], Show a) => P (Map p :: Type) x Source # | |
(Show (ExtractL8T (PP p x)), ExtractL8C (PP p x), P p x, Show (PP p x)) => P (L8 p :: Type) x Source # | |
(Show (ExtractL7T (PP p x)), ExtractL7C (PP p x), P p x, Show (PP p x)) => P (L7 p :: Type) x Source # | |
(Show (ExtractL6T (PP p x)), ExtractL6C (PP p x), P p x, Show (PP p x)) => P (L6 p :: Type) x Source # | |
(Show (ExtractL5T (PP p x)), ExtractL5C (PP p x), P p x, Show (PP p x)) => P (L5 p :: Type) x Source # | |
(Show (ExtractL4T (PP p x)), ExtractL4C (PP p x), P p x, Show (PP p x)) => P (L4 p :: Type) x Source # | |
(Show (ExtractL3T (PP p x)), ExtractL3C (PP p x), P p x, Show (PP p x)) => P (L3 p :: Type) x Source # | |
(Show (ExtractL2T (PP p x)), ExtractL2C (PP p x), P p x, Show (PP p x)) => P (L2 p :: Type) x Source # | |
(Show (ExtractL1T (PP p x)), ExtractL1C (PP p x), P p x, Show (PP p x)) => P (L1 p :: Type) x Source # | |
(P p a, PP p a ~ Bool, x ~ f a, Show a, Foldable f) => P (Any p :: Type) x Source # | |
(P p a, PP p a ~ Bool, x ~ f a, Show a, Foldable f) => P (All p :: Type) x Source # | |
P (Fail UnproxyT p) x => P (FailP p :: Type) x Source # | |
P (Fail Id p) x => P (FailS p :: Type) x Source # | |
(PP p x ~ Bool, P p x) => P (Not p :: Type) x Source # | |
(PP p x ~ t a, P p x, Foldable t) => P (Length p :: Type) x Source # | |
P p x => P (Hide p :: Type) x Source # | |
P p a => P (W p :: Type) a Source # | |
P (EachITuple p :: Type) () Source # | |
Defined in Predicate.Data.Tuple type PP (EachITuple p) () Source # eval :: MonadEval m => proxy (EachITuple p) -> POpts -> () -> m (TT (PP (EachITuple p) ())) Source # | |
P (UncurryT p) x => P (Uncurry p :: Type) x Source # | |
P (SecondT q) x => P (Second q :: Type) x Source # | |
P (FirstT p) x => P (First p :: Type) x Source # | |
(PP p x ~ ([String] -> String), P p x) => P (ReplaceFn3 p :: Type) x Source # | |
Defined in Predicate.Data.Regex type PP (ReplaceFn3 p) x Source # eval :: MonadEval m => proxy (ReplaceFn3 p) -> POpts -> x -> m (TT (PP (ReplaceFn3 p) x)) Source # | |
(PP p x ~ (String -> String), P p x) => P (ReplaceFn2 p :: Type) x Source # | |
Defined in Predicate.Data.Regex type PP (ReplaceFn2 p) x Source # eval :: MonadEval m => proxy (ReplaceFn2 p) -> POpts -> x -> m (TT (PP (ReplaceFn2 p) x)) Source # | |
(PP p x ~ (String -> [String] -> String), P p x) => P (ReplaceFn1 p :: Type) x Source # | |
Defined in Predicate.Data.Regex type PP (ReplaceFn1 p) x Source # eval :: MonadEval m => proxy (ReplaceFn1 p) -> POpts -> x -> m (TT (PP (ReplaceFn1 p) x)) Source # | |
P (ResplitT p) x => P (Resplit p :: Type) x Source # | |
P (RescanT p) x => P (Rescan p :: Type) x Source # | |
P (ReT p) x => P (Re p :: Type) x Source # | |
(PrintC bs, (b, bs) ~ x, PrintfArg b, PP s x ~ String, P s x) => P (PrintI s :: Type) x Source # | |
(Show (PP p x), P p x) => P (ShowP p :: Type) x Source # | |
PP p x ~ proxy z => P (Proxify p :: Type) x Source # | |
P (ComparingT p) x => P (Comparing p :: Type) x Source # | |
P (NeT n) x => P (Ne n :: Type) x Source # | |
P (LtT n) x => P (Lt n :: Type) x Source # | |
P (LeT n) x => P (Le n :: Type) x Source # | |
P (SameT n) x => P (Same n :: Type) x Source # | |
P (GeT n) x => P (Ge n :: Type) x Source # | |
P (GtT n) x => P (Gt n :: Type) x Source # | |
P (ToBitsT p) x => P (ToBits p :: Type) x Source # | |
P (ReadBaseT t n) x => P (ReadBase t n :: Type) x Source # | |
(Num (PP p x), P p x, Show (PP p x)) => P (Signum p :: Type) x Source # | |
(Num (PP p x), P p x, Show (PP p x)) => P (Abs p :: Type) x Source # | |
(Num (PP p x), P p x, Show (PP p x)) => P (Negate p :: Type) x Source # | |
(a ~ PP p x, Show a, Real a, P p x) => P (ToRational p :: Type) x Source # | |
Defined in Predicate.Data.Numeric type PP (ToRational p) x Source # eval :: MonadEval m => proxy (ToRational p) -> POpts -> x -> m (TT (PP (ToRational p) x)) Source # | |
(Show (PP t a), Monoid (PP t a)) => P (MEmptyT' t :: Type) a Source # | |
(PP p x ~ NonEmpty a, P p x, Show a, Semigroup a) => P (SConcat p :: Type) x Source # | |
P (RDotExpandT ps q) a => P (RDot ps q :: Type) a Source # | |
P (DotExpandT ps q) a => P (Dot ps q :: Type) a Source # | |
(Show (PP p a), P p a) => P (Skip p :: Type) a Source # | |
P (TraverseT p) x => P (Traverse p :: Type) x Source # | |
P (EmptyList' t :: Type) x Source # | |
Defined in Predicate.Data.Lifted type PP (EmptyList' t) x Source # eval :: MonadEval m => proxy (EmptyList' t) -> POpts -> x -> m (TT (PP (EmptyList' t) x)) Source # | |
Alternative t => P (EmptyT t t1 :: Type) x Source # | |
(Show (t a), Foldable t, t a ~ PP p x, P p x) => P (Null' p :: Type) x Source # | |
(PP p x ~ a, P p x, Show a) => P (MkJust p :: Type) x Source # | |
P (MkNothing' t :: Type) a Source # | |
Defined in Predicate.Data.Maybe type PP (MkNothing' t) a Source # eval :: MonadEval m => proxy (MkNothing' t) -> POpts -> a -> m (TT (PP (MkNothing' t) a)) Source # | |
P (StderrT p) x => P (Stderr p :: Type) x Source # | |
P (StdoutT p) x => P (Stdout p :: Type) x Source # | |
(PP p x ~ String, P p x) => P (ReadEnv p :: Type) x Source # | |
(PP p x ~ String, P p x) => P (ReadDir p :: Type) x Source # | |
P (DirExistsT p) x => P (DirExists p :: Type) x Source # | |
P (FileExistsT p) x => P (FileExists p :: Type) x Source # | |
Defined in Predicate.Data.IO type PP (FileExists p) x Source # eval :: MonadEval m => proxy (FileExists p) -> POpts -> x -> m (TT (PP (FileExists p) x)) Source # | |
(PP p x ~ String, P p x) => P (ReadFileBinary p :: Type) x Source # | |
Defined in Predicate.Data.IO type PP (ReadFileBinary p) x Source # eval :: MonadEval m => proxy (ReadFileBinary p) -> POpts -> x -> m (TT (PP (ReadFileBinary p) x)) Source # | |
(PP p x ~ String, P p x) => P (ReadFile p :: Type) x Source # | |
(PP p x ~ a, Show a, Enum a, Bounded a) => P (Universe' p :: Type) x Source # | |
(Show a, Enum a, PP p x ~ a, P p x) => P (FromEnum' p :: Type) x Source # | |
P (PredBT' q) x => P (PredB' q :: Type) x Source # | |
P (SuccBT' q) x => P (SuccB' q :: Type) x Source # | |
P p x => P (Singleton p :: Type) x Source # | |
P (ChunksOfT n) x => P (ChunksOf n :: Type) x Source # | |
P (Quant p) x => P (All1 p :: Type) x Source # | |
P (QuantT p) x => P (Quant p :: Type) x Source # | |
(Integral (PP n x), P n x) => P (PrimeFactors n :: Type) x Source # | |
Defined in Predicate.Data.Extra type PP (PrimeFactors n) x Source # eval :: MonadEval m => proxy (PrimeFactors n) -> POpts -> x -> m (TT (PP (PrimeFactors n) x)) Source # | |
(Integral (PP n x), P n x) => P (Primes n :: Type) x Source # | |
([a] ~ x, GetLen ps, P (ParaImpl (LenT ps) ps) x) => P (Para ps :: Type) x Source # | |
P (ScanNAT q) x => P (ScanNA q :: Type) x Source # | |
P (MkENone t t1 :: Type) x Source # | |
(PP p x ~ LocalTime, P p x) => P (LocalTimeToUTC p :: Type) x Source # | |
Defined in Predicate.Data.DateTime type PP (LocalTimeToUTC p) x Source # eval :: MonadEval m => proxy (LocalTimeToUTC p) -> POpts -> x -> m (TT (PP (LocalTimeToUTC p) x)) Source # | |
(PP p x ~ UTCTime, P p x) => P (UTCTimeToPosix p :: Type) x Source # | |
Defined in Predicate.Data.DateTime type PP (UTCTimeToPosix p) x Source # eval :: MonadEval m => proxy (UTCTimeToPosix p) -> POpts -> x -> m (TT (PP (UTCTimeToPosix p) x)) Source # | |
(PP p x ~ Rational, P p x) => P (PosixToUTCTime p :: Type) x Source # | |
Defined in Predicate.Data.DateTime type PP (PosixToUTCTime p) x Source # eval :: MonadEval m => proxy (PosixToUTCTime p) -> POpts -> x -> m (TT (PP (PosixToUTCTime p) x)) Source # | |
(PP p x ~ TimeOfDay, P p x) => P (UnMkTime p :: Type) x Source # | |
P (MkTimeT p) x => P (MkTime p :: Type) x Source # | |
(P p x, PP p x ~ Day) => P (ToWeekYear p :: Type) x Source # | |
Defined in Predicate.Data.DateTime type PP (ToWeekYear p) x Source # eval :: MonadEval m => proxy (ToWeekYear p) -> POpts -> x -> m (TT (PP (ToWeekYear p) x)) Source # | |
(P p x, PP p x ~ Day) => P (ToWeekDate p :: Type) x Source # | |
Defined in Predicate.Data.DateTime type PP (ToWeekDate p) x Source # eval :: MonadEval m => proxy (ToWeekDate p) -> POpts -> x -> m (TT (PP (ToWeekDate p) x)) Source # | |
P (MkDayExtraT p) x => P (MkDayExtra p :: Type) x Source # | |
Defined in Predicate.Data.DateTime type PP (MkDayExtra p) x Source # eval :: MonadEval m => proxy (MkDayExtra p) -> POpts -> x -> m (TT (PP (MkDayExtra p) x)) Source # | |
(PP p x ~ Day, P p x) => P (UnMkDay p :: Type) x Source # | |
P (MkDayT p) x => P (MkDay p :: Type) x Source # | |
P (FormatTimePT p) x => P (FormatTimeP p :: Type) x Source # | |
Defined in Predicate.Data.DateTime type PP (FormatTimeP p) x Source # eval :: MonadEval m => proxy (FormatTimeP p) -> POpts -> x -> m (TT (PP (FormatTimeP p) x)) Source # | |
(Show a, P p a, PP p a ~ Bool) => P (GuardSimple p :: Type) a Source # | |
Defined in Predicate.Data.Condition type PP (GuardSimple p) a Source # eval :: MonadEval m => proxy (GuardSimple p) -> POpts -> a -> m (TT (PP (GuardSimple p) a)) Source # | |
(Show t, Bits t) => P (ZeroBits t :: Type) a Source # | |
(P p a, Show (PP p a), Bits (PP p a)) => P (PopCount p :: Type) a Source # | |
(Traversable n, P p a) => P (FMap p :: Type) (n a) Source # | |
(Traversable n, Monoid t, PP p a ~ t, P p a) => P (FoldMap p :: Type) (n a) Source # | |
(P p b, P (EachITuple p) bs) => P (EachITuple p :: Type) (b, bs) Source # | |
Defined in Predicate.Data.Tuple type PP (EachITuple p) (b, bs) Source # eval :: MonadEval m => proxy (EachITuple p) -> POpts -> (b, bs) -> m (TT (PP (EachITuple p) (b, bs))) Source # | |
(P p a, P p a') => P (Both p :: Type) (a, a') Source # | |
(Show (PP p a2), Show a2, P (p1 ': ps) a2, PP (p1 ': ps) a2 ~ [PP p1 a2], P p a2, PP p a2 ~ PP p1 a2) => P (p ': (p1 ': ps) :: [a1]) a2 Source # | |
(Show (PP p a), Show a, P p a) => P ('[p] :: [k]) a Source # | runs each predicate in turn from the promoted list
|
P (Fail (Hole t) p) x => P (FailT t p :: Type) x Source # | |
P (WrapT t p) x => P (Wrap t p :: Type) x Source # | |
(KnownNat n, P p a) => P (Width n p :: Type) a Source # | |
P (MkThatT t p) x => P (MkThat t p :: Type) x Source # | |
P (MkThisT t p) x => P (MkThis t p :: Type) x Source # | |
P (FromStringT t p) x => P (FromString t p :: Type) x Source # | |
Defined in Predicate.Data.String type PP (FromString t p) x Source # eval :: MonadEval m => proxy (FromString t p) -> POpts -> x -> m (TT (PP (FromString t p) x)) Source # | |
(GetReplaceFnSub r, PP p x ~ String, P p x) => P (ReplaceFn r p :: Type) x Source # | |
P (ReadMaybeT t p) x => P (ReadMaybe t p :: Type) x Source # | |
P (ReadPT t p) x => P (ReadP t p :: Type) x Source # | |
(P p x, Show (PP p x), Show (t (PP p x)), Applicative t) => P (Pure t p :: Type) x Source # | |
Alternative t => P (EmptyT' t p :: Type) x Source # | |
(GetBool pretty, ToJSON (PP p x), P p x) => P (EncodeJson pretty p :: Type) x Source # | |
Defined in Predicate.Data.Json type PP (EncodeJson pretty p) x Source # eval :: MonadEval m => proxy (EncodeJson pretty p) -> POpts -> x -> m (TT (PP (EncodeJson pretty p) x)) Source # | |
P (ParseJsonFileT t p) x => P (ParseJsonFile t p :: Type) x Source # | |
Defined in Predicate.Data.Json type PP (ParseJsonFile t p) x Source # eval :: MonadEval m => proxy (ParseJsonFile t p) -> POpts -> x -> m (TT (PP (ParseJsonFile t p) x)) Source # | |
P (ParseJsonT t p) x => P (ParseJson t p :: Type) x Source # | |
(P def (Proxy a), PP def (Proxy a) ~ a, KnownNat n, Show a, [a] ~ x) => P (Ix n def :: Type) x Source # | |
P (WriteFileT s p) x => P (WriteFile s p :: Type) x Source # | |
P (WriteFileT' s p) x => P (WriteFile' s p :: Type) x Source # | |
Defined in Predicate.Data.IO type PP (WriteFile' s p) x Source # eval :: MonadEval m => proxy (WriteFile' s p) -> POpts -> x -> m (TT (PP (WriteFile' s p) x)) Source # | |
P (AppendFileT s p) x => P (AppendFile s p :: Type) x Source # | |
Defined in Predicate.Data.IO type PP (AppendFile s p) x Source # eval :: MonadEval m => proxy (AppendFile s p) -> POpts -> x -> m (TT (PP (AppendFile s p) x)) Source # | |
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 # | |
P (DoNT n p) a => P (DoN n p :: Type) a Source # | |
P (RepeatT n p) a => P (Repeat n p :: Type) a Source # | |
(x ~ [a], P (ParaImpl (LenT (RepeatT n p)) (RepeatT n p)) x, GetLen (RepeatT n p)) => P (ParaN n p :: Type) x Source # | |
P (MkERightT t p) x => P (MkERight t p :: Type) x Source # | |
P (MkELeftT t p) x => P (MkELeft t p :: Type) x Source # | |
P (MkRightT t p) x => P (MkRight t p :: Type) x Source # | |
P (MkLeftT t p) x => P (MkLeft t p :: Type) x Source # | |
P (ParseTimePT t p) x => P (ParseTimeP t p :: Type) x Source # | |
Defined in Predicate.Data.DateTime type PP (ParseTimeP t p) x Source # eval :: MonadEval m => proxy (ParseTimeP t p) -> POpts -> x -> m (TT (PP (ParseTimeP t p) x)) Source # | |
([a] ~ x, GetLen ps, P (BoolsImpl (LenT ps) ps) x, PP (BoolsImpl (LenT ps) ps) x ~ Bool) => P (Bools ps :: Type) x Source # | |
([a] ~ x, GetLen ps, P (GuardsImpl (LenT ps) ps) x) => P (Guards ps :: Type) x Source # | |
P (p q) a => P (q & p :: Type) a Source # | |
P (p q) a => P (p $ q :: Type) a Source # | |
(P p a, P q a, PP p a ~ Bool, PP q a ~ Bool) => P (p ~> q :: Type) a Source # | |
(P p a, P q a, PP p a ~ Bool, PP q a ~ Bool) => P (p ||~ q :: Type) a Source # | |
(P p a, P q a, PP p a ~ Bool, PP q a ~ Bool) => P (p || q :: Type) a Source # | |
(P p a, P q a, PP p a ~ Bool, PP q a ~ Bool) => P (p &&~ q :: Type) a Source # | |
(P p a, P q a, PP p a ~ Bool, PP q a ~ Bool) => P (p && q :: Type) a Source # | |
(Show (PP p a), P p a, PP q x ~ f a, P q x, Show a, Show (f a), Foldable f) => P (Map' p q :: Type) x Source # | |
P (BetweenOpT p q) x => P (p <..> q :: Type) x Source # | |
(P prt a, PP prt a ~ String) => P (Fail t prt :: Type) a Source # | |
(Show (PP p x), P p x, Unwrapped (PP s x) ~ PP p x, Wrapped (PP s x), Show (PP s x)) => P (Wrap' s p :: Type) x Source # | |
P (LeftArrowsT p q) x => P (p << q :: Type) x Source # | |
P (RightArrowsLeftInfixT p q) x => P (p >>> q :: Type) x Source # | |
(P p a, P q (PP p a), Show (PP p a), Show (PP q (PP p a))) => P (p >> q :: Type) a Source # | |
(P prt a, PP prt a ~ String, P p a) => P (MsgI prt p :: Type) a Source # | |
(P prt a, PP prt a ~ String, P p a) => P (Msg prt p :: Type) a Source # | |
P (OnT p q) x => P (On p q :: Type) x Source # | |
P (OrAT p q) x => P (p |+ q :: Type) x Source # | |
P (AndAT p q) x => P (p &* q :: Type) x Source # | |
P (WAmpT p q) x => P (p &&& q :: Type) x Source # | |
P (ThesePairT s t) x => P (ThesePair s t :: Type) x Source # | |
(PP p x ~ String, PP q x ~ These a b, P p x, P q x) => P (TheseFail p q :: Type) x Source # | |
(PP p x ~ String, PP q x ~ These a b, P p x, P q x) => P (ThatFail p q :: Type) x Source # | |
(PP p x ~ String, PP q x ~ These a b, P p x, P q x) => P (ThisFail p q :: Type) x Source # | |
(PP q x ~ These a b, PP p x ~ (a, b), P q x, P p x) => P (TheseDef p q :: Type) x Source # | |
(PP q x ~ These a b, PP p x ~ b, P q x, P p x) => P (ThatDef p q :: Type) x Source # | |
(PP q x ~ These a b, PP p x ~ a, P q x, P p x) => P (ThisDef p q :: Type) x Source # | |
(PP p a ~ [x], PP q a ~ [y], P p a, P q a, Show x, Show y) => P (ZipThese p q :: Type) a Source # | |
(P p a, P q a, Show (PP p a), Show (PP q a)) => P (MkThese p q :: Type) a Source # | |
(Show (PP p x), P p x) => P (MkThat' t p :: Type) x Source # | |
(P p x, Show (PP p x)) => P (MkThis' t p :: Type) x Source # | |
(P p a, PP p a ~ String, Show (PP t a), IsString (PP t a)) => P (FromString' t p :: Type) a Source # | |
Defined in Predicate.Data.String type PP (FromString' t p) a Source # eval :: MonadEval m => proxy (FromString' t p) -> POpts -> a -> m (TT (PP (FromString' t p) a)) Source # | |
P (IsSuffixCIT p q) x => P (IsSuffixCI p q :: Type) x Source # | |
Defined in Predicate.Data.String type PP (IsSuffixCI p q) x Source # eval :: MonadEval m => proxy (IsSuffixCI p q) -> POpts -> x -> m (TT (PP (IsSuffixCI p q) x)) Source # | |
P (IsInfixCIT p q) x => P (IsInfixCI p q :: Type) x Source # | |
P (IsPrefixCIT p q) x => P (IsPrefixCI p q :: Type) x Source # | |
Defined in Predicate.Data.String type PP (IsPrefixCI p q) x Source # eval :: MonadEval m => proxy (IsPrefixCI p q) -> POpts -> x -> m (TT (PP (IsPrefixCI p q) x)) Source # | |
P (StripRT p q) x => P (StripR p q :: Type) x Source # | |
P (StripLT p q) x => P (StripL p q :: Type) x Source # | |
P (RescanRangesT p q) x => P (RescanRanges p q :: Type) x Source # | |
Defined in Predicate.Data.Regex type PP (RescanRanges p q) x Source # eval :: MonadEval m => proxy (RescanRanges p q) -> POpts -> x -> m (TT (PP (RescanRanges p q) x)) Source # | |
P (PrintTT s p) x => P (PrintT s p :: Type) x Source # | |
(PrintfArg (PP p x), Show (PP p x), PP s x ~ String, P s x, P p x) => P (PrintF s p :: Type) x Source # | |
(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.Data.ReadShow type PP (ReadMaybe' t p) x Source # eval :: MonadEval m => proxy (ReadMaybe' t p) -> POpts -> x -> m (TT (PP (ReadMaybe' t p) x)) Source # | |
(P p x, PP p x ~ String, Typeable (PP t x), Show (PP t x), Read (PP t x)) => P (ReadP' t p :: Type) x Source # | |
(PP p x ~ Proxy z, PP q x ~ Proxy w) => P (PApp p q :: Type) x Source # | |
(P q x, PP p x ~ proxy z, P z (PP q x)) => P (Pop0 p q :: Type) x Source # | |
(PP p a ~ String, PP p a ~ PP q a, P p a, P q a) => P (p ===~ q :: Type) a Source # | |
(Ord (PP p a), PP p a ~ PP q a, P p a, Show (PP q a), P q a) => P (p ==! q :: Type) a Source # | |
P (CmpI 'CNe p q) x => P (p /=~ q :: Type) x Source # | |
P (CmpI 'CLt p q) x => P (p <~ q :: Type) x Source # | |
P (CmpI 'CLe p q) x => P (p <=~ q :: Type) x Source # | |
P (CmpI 'CEq p q) x => P (p ==~ q :: Type) x Source # | |
P (CmpI 'CGe p q) x => P (p >=~ q :: Type) x Source # | |
P (CmpI 'CGt p q) x => P (p >~ q :: Type) x Source # | |
P (Cmp 'CNe p q) x => P (p /= q :: Type) x Source # | |
P (Cmp 'CLt p q) x => P (p < q :: Type) x Source # | |
P (Cmp 'CLe p q) x => P (p <= q :: Type) x Source # | |
P (Cmp 'CEq p q) x => P (p == q :: Type) x Source # | |
P (Cmp 'CGe p q) x => P (p >= q :: Type) x Source # | |
P (Cmp 'CGt p q) x => P (p > q :: Type) x Source # | |
(Integral (PP n x), Show (PP n x), PP n x ~ PP p x, P n x, P p x) => P (RoundUp n p :: Type) x Source # | |
(PP p x ~ [a], PP n x ~ b, P n x, P p x, Integral a, Integral b) => P (UnShowBaseN n p :: Type) x Source # | |
Defined in Predicate.Data.Numeric type PP (UnShowBaseN n p) x Source # eval :: MonadEval m => proxy (UnShowBaseN n p) -> POpts -> x -> m (TT (PP (UnShowBaseN n p) x)) Source # | |
(PP p x ~ a, P p x, PP n x ~ b, P n x, Integral a, Integral b) => P (ShowBaseN n p :: Type) x Source # | |
P (RemT p q) x => P (Rem p q :: Type) x Source # | |
P (QuotT p q) x => P (Quot p q :: Type) x Source # | |
(PP p a ~ PP q a, P p a, P q a, Show (PP p a), Integral (PP p a)) => P (QuotRem p q :: Type) a Source # | |
(PP p a ~ PP q a, P p a, P q a, Show (PP p a), Integral (PP p a)) => P (DivMod p q :: Type) a Source # | |
(PP p a ~ PP q a, P p a, P q a, Show (PP p a), Integral (PP p a)) => P (Mod p q :: Type) a Source # | |
(PP p a ~ PP q a, P p a, P q a, Show (PP p a), Integral (PP p a)) => P (Div p q :: Type) a Source # | |
P (NegateRatioT p q) x => P (p -% q :: Type) x Source # | |
(Integral (PP p x), Integral (PP q x), Eq (PP q x), P p x, P q x, Show (PP p x), Show (PP q x)) => P (p % q :: Type) x Source # | |
(PP p a ~ PP q a, Eq (PP q a), P p a, P q a, Show (PP p a), Fractional (PP p a)) => P (p / q :: Type) a Source # | |
(PP p a ~ PP q a, P p a, P q a, Show (PP q a), Floating (PP q a), Ord (PP p a)) => P (LogBase p q :: Type) a Source # | |
(PP p a ~ PP q a, P p a, P q a, Show (PP p a), Floating (PP p a), Ord (PP q a)) => P (p ** q :: Type) a Source # | |
(P p a, P q a, Show (PP p a), Show (PP q a), Num (PP p a), Integral (PP q a)) => P (p ^ q :: Type) a Source # | |
P (MultT p q) x => P (p * q :: Type) x Source # | |
P (SubT p q) x => P (p - q :: Type) x Source # | |
P (AddT p q) x => P (p + q :: Type) x Source # | |
(P p x, RealFrac (PP p x), Integral (PP t x), Show (PP t x), Show (PP p x)) => P (Floor' t p :: Type) x Source # | |
(P p x, RealFrac (PP p x), Integral (PP t x), Show (PP t x), Show (PP p x)) => P (Ceiling' t p :: Type) x Source # | |
(P p x, RealFrac (PP p x), Integral (PP t x), Show (PP t x), Show (PP p x)) => P (Truncate' t p :: Type) x Source # | |
(P p a, PP p a ~ Rational, Show (PP t a), Fractional (PP t a)) => P (FromRational' t p :: Type) a Source # | |
Defined in Predicate.Data.Numeric type PP (FromRational' t p) a Source # eval :: MonadEval m => proxy (FromRational' t p) -> POpts -> a -> m (TT (PP (FromRational' t p) a)) Source # | |
(Num (PP t a), Integral (PP p a), P p a, Show (PP t a), Show (PP p a)) => P (FromIntegral' t p :: Type) a Source # | |
Defined in Predicate.Data.Numeric type PP (FromIntegral' t p) a Source # eval :: MonadEval m => proxy (FromIntegral' t p) -> POpts -> a -> m (TT (PP (FromIntegral' t p) a)) Source # | |
(Num (PP t a), Integral (PP p a), P p a, Show (PP t a)) => P (FromInteger' t p :: Type) a Source # | |
Defined in Predicate.Data.Numeric type PP (FromInteger' t p) a Source # eval :: MonadEval m => proxy (FromInteger' t p) -> POpts -> a -> m (TT (PP (FromInteger' t p) a)) Source # | |
(P n a, Integral (PP n a), Semigroup (PP p a), P p a, Show (PP p a)) => P (STimes n p :: Type) a Source # | |
(Semigroup (PP p x), PP p x ~ PP q x, P p x, Show (PP q x), P q x) => P (p <> q :: Type) x Source # | |
P (AppT p q) x => P (p <*> q :: Type) x Source # | |
P (MBindT p q) x => P (p >>= q :: Type) x Source # | |
P (FPairT p q) x => P (p <:> q :: Type) x Source # | |
(Applicative n, PP p a ~ n x, PP q a ~ n y, JoinT (PP p a) (PP q a) ~ n (x, y), P p a, P q a) => P (FPair p q :: Type) a Source # | |
P (FMapFlipT p q) x => P (p <&> q :: Type) x Source # | |
(Traversable n, P q a, P p b, PP q a ~ n b, PP p b ~ c) => P (p <$> q :: Type) a Source # | |
P (LiftT p q) x => P (Lift p q :: Type) x Source # | |
P p a => P (K p q :: Type) a Source # | |
P (CatchT' p s) x => P (Catch' p s :: Type) x Source # | |
(P p x, P q ((String, x), Proxy (PP p x)), PP p x ~ PP q ((String, x), Proxy (PP p x))) => P (Catch p q :: Type) x Source # | |
P (SkipBothT p q) x => P (p >|> q :: Type) x Source # | |
P (SkipRT p q) x => P (p >| q :: Type) x Source # | |
P (SkipLT p q) x => P (p |> q :: Type) x Source # | |
(P p x, P q x, PP p x ~ (a -> b), FnT (PP p x) ~ b, PP q x ~ a, Show a, Show b) => P (q $& p :: Type) x Source # | |
(P p x, P q x, PP p x ~ (a -> b), FnT (PP p x) ~ b, PP q x ~ a, Show a, Show b) => P (p $$ q :: Type) x Source # | |
(Show (PP p a), P b a, P p a, PP p a ~ t x, PP b a ~ Bool, Alternative t) => P (EmptyBool' b p :: Type) a Source # | |
Defined in Predicate.Data.Lifted type PP (EmptyBool' b p) a Source # eval :: MonadEval m => proxy (EmptyBool' b p) -> POpts -> a -> m (TT (PP (EmptyBool' b p) a)) Source # | |
(P p x, P q x, Show (t b), Alternative t, t b ~ PP p x, PP q x ~ t b) => P (p <|> q :: Type) x Source # | |
(P p x, P q x, Show (t b), Show (t c), Applicative t, PP p x ~ t b, PP q x ~ t c) => P (p *> q :: Type) x Source # | |
(P p x, P q x, Show (t b), Show (t c), Applicative t, PP p x ~ t b, PP q x ~ t c) => P (p <* q :: Type) x Source # | |
(P p x, P q x, Show (PP p x), Functor t, PP q x ~ t c, ApplyConstT (PP q x) (PP p x) ~ t (PP p x)) => P (p <$ q :: Type) x Source # | |
(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.Data.Json type PP (ParseJsonFile' t p) x Source # eval :: MonadEval m => proxy (ParseJsonFile' t p) -> POpts -> x -> m (TT (PP (ParseJsonFile' t p) x)) Source # | |
(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.Data.Json type PP (ParseJson' t p) x Source # eval :: MonadEval m => proxy (ParseJson' t p) -> POpts -> x -> m (TT (PP (ParseJson' t p) x)) Source # | |
(PP p x ~ t a, Show x, P p x, Integral (PP n x), P n x, Foldable t) => P (Cycle n p :: Type) x Source # | |
P (ConcatMapT p q) x => P (ConcatMap p q :: Type) x Source # | |
(Typeable (PP t x), Show (PP t x), FoldableWithIndex (PP t x) f, PP p x ~ f a, P p x, Show x, Show a) => P (IToList' t p :: Type) x Source # | |
P (MaybeIdT n p) x => P (MaybeId n p :: Type) x Source # | |
(PP p x ~ String, PP q x ~ Maybe a, P p x, P q x) => P (JustFail p q :: Type) x Source # | |
(PP p x ~ a, PP q x ~ Maybe a, P p x, P q x) => P (JustDef p q :: Type) x Source # | |
P (MaybeBoolT b p) x => P (MaybeBool b p :: Type) x Source # | |
P (MapMaybeT p q) x => P (MapMaybe p q :: Type) x Source # | |
P (BangBangQT p q) a => P (p !!? q :: Type) a Source # | |
(P p a, P q a, Show (PP q a), Ixed (PP q a), PP p a ~ Index (PP q a), Show (Index (PP q a)), Show (IxValue (PP q a))) => P (Lookup p q :: Type) a Source # | |
P (BangBangT p q) a => P (p !! q :: Type) a Source # | |
P (EnumFromToT p q) x => P (p ... q :: Type) x Source # | |
(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 # | |
(PP p x ~ a, P p x, Enum (PP t x), Show (PP t x), Integral a) => P (ToEnum' t p :: Type) x Source # | |
(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 (PredB p q :: Type) x Source # | |
(Show a, Enum a, Integral (PP n x), P n x, PP p x ~ a, P p x) => P (SuccN n p :: Type) x Source # | |
(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 # | |
P (IMapT p q) x => P (IMap p q :: Type) x Source # | |
(PP p x ~ [a], PP q x ~ [b], P p x, P q x, Show a, Show b) => P (ZipCartesian p q :: Type) x Source # | |
Defined in Predicate.Data.List type PP (ZipCartesian p q) x Source # eval :: MonadEval m => proxy (ZipCartesian p q) -> POpts -> x -> m (TT (PP (ZipCartesian p q) x)) Source # | |
P (IsSuffixT p q) x => P (IsSuffix p q :: Type) x Source # | |
P (IsInfixT p q) x => P (IsInfix p q :: Type) x Source # | |
P (IsPrefixT p q) x => P (IsPrefix p q :: Type) x Source # | |
(PP p a ~ [x], PP q a ~ [y], P p a, P q a, Show x, Show y) => P (Zip p q :: Type) a Source # | |
P (SortOnDescT p q) x => P (SortOnDesc p q :: Type) x Source # | |
Defined in Predicate.Data.List type PP (SortOnDesc p q) x Source # eval :: MonadEval m => proxy (SortOnDesc p q) -> POpts -> x -> m (TT (PP (SortOnDesc p q) x)) Source # | |
P (SortOnT p q) x => P (SortOn p q :: Type) x Source # | |
(P p (a, a), P q x, Show a, PP q x ~ [a], PP p (a, a) ~ Ordering) => P (SortBy p q :: Type) x Source # | |
P (RemoveT p q) x => P (Remove p q :: Type) x Source # | |
P (KeepT p q) x => P (Keep p q :: Type) x Source # | |
P (DropT n p) x => P (Drop n p :: Type) x Source # | |
P (TakeT n p) x => P (Take n p :: Type) x Source # | |
(PP p a ~ [b], P n a, P p a, Show b, Integral (PP n a)) => P (SplitAt n p :: Type) a Source # | |
(P ns x, P p x, PP p x ~ [a], Show n, Show a, PP ns x ~ [n], Integral n) => P (SplitAts ns p :: Type) x Source # | |
([PP p a] ~ PP q a, P p a, P q a, Show (PP p a), Eq (PP p a)) => P (Elem p q :: Type) a Source # | |
(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.Data.List type PP (Intercalate p q) x Source # eval :: MonadEval m => proxy (Intercalate p q) -> POpts -> x -> m (TT (PP (Intercalate p q) x)) Source # | |
P (SpanT p q) x => P (Span p q :: Type) x Source # | |
(P p x, PP q a ~ [x], PP p x ~ Bool, P q a) => P (Break p q :: Type) a Source # | |
P (FilterT p q) x => P (Filter p q :: Type) x Source # | |
(Show x, PP q a ~ [x], PP p (x, x) ~ Bool, P p (x, x), P q a) => P (GroupBy p q :: Type) a Source # | |
(P p x, Show x, PP q a ~ [x], PP p x ~ Bool, P q a) => P (Partition p q :: Type) a Source # | |
P (RotateT n p) x => P (Rotate n p :: Type) x Source # | |
(P p x, P q x, Show (PP q x), Show (PP p x), Snoc (PP p x) (PP p x) (PP q x) (PP q x)) => P (p +: q :: Type) x Source # | |
(P p x, P q x, Show (PP p x), Show (PP q x), Cons (PP q x) (PP q x) (PP p x) (PP p x)) => P (p :+ q :: Type) x Source # | |
(P p x, P q x, Show (PP p x), PP p x ~ [a], PP q x ~ [a]) => P (p ++ q :: Type) x Source # | |
P (InitFailT msg q) x => P (InitFail msg q :: Type) x Source # | |
P (InitDefT p q) x => P (InitDef p q :: Type) x Source # | |
P (LastFailT msg q) x => P (LastFail msg q :: Type) x Source # | |
P (LastDefT p q) x => P (LastDef p q :: Type) x Source # | |
P (TailFailT msg q) x => P (TailFail msg q :: Type) x Source # | |
P (TailDefT p q) x => P (TailDef p q :: Type) x Source # | |
P (HeadFailT msg q) x => P (HeadFail msg q :: Type) x Source # | |
P (HeadDefT p q) x => P (HeadDef p q :: Type) x Source # | |
P (IterateWhileT p f) x => P (IterateWhile p f :: Type) x Source # | |
Defined in Predicate.Data.Iterator type PP (IterateWhile p f) x Source # eval :: MonadEval m => proxy (IterateWhile p f) -> POpts -> x -> m (TT (PP (IterateWhile p f) x)) Source # | |
P (IterateUntilT p f) x => P (IterateUntil p f :: Type) x Source # | |
Defined in Predicate.Data.Iterator type PP (IterateUntil p f) x Source # eval :: MonadEval m => proxy (IterateUntil p f) -> POpts -> x -> m (TT (PP (IterateUntil p f) x)) Source # | |
(PP q a ~ s, PP p s ~ Maybe (b, s), P q a, P p s, Show s, Show b) => P (Unfoldr p q :: Type) a Source # | |
P (ElrPairT s t) x => P (ElrPair s t :: Type) x Source # | |
(P p a, P q a) => P (MkEBoth p q :: Type) a Source # | |
P p x => P (MkERight' t p :: Type) x Source # | |
P p x => P (MkELeft' t p :: Type) x Source # | |
P (MkENone' t t1 :: Type) x Source # | |
P (EitherIdT p q) x => P (EitherId p q :: Type) x Source # | |
(PP p (a, x) ~ String, PP q x ~ Either a b, P p (a, x), P q x) => P (RightFail p q :: Type) x Source # | |
(PP p (b, x) ~ String, PP q x ~ Either a b, P p (b, x), P q x) => P (LeftFail p q :: Type) x Source # | |
(PP q x ~ Either a b, PP p (a, x) ~ b, P q x, P p (a, x)) => P (RightDef p q :: Type) x Source # | |
(PP q x ~ Either a b, PP p (b, x) ~ a, P q x, P p (b, x)) => P (LeftDef p q :: Type) x Source # | |
(Show (PP p x), P p x) => P (MkRight' t p :: Type) x Source # | |
(Show (PP p x), P p x) => P (MkLeft' t p :: Type) x Source # | |
P (DiffLocalTimeT p q) x => P (DiffLocalTime p q :: Type) x Source # | |
Defined in Predicate.Data.DateTime type PP (DiffLocalTime p q) x Source # eval :: MonadEval m => proxy (DiffLocalTime p q) -> POpts -> x -> m (TT (PP (DiffLocalTime p q) x)) Source # | |
(PP p x ~ UTCTime, PP q x ~ UTCTime, P p x, P q x) => P (DiffUTCTime p q :: Type) x Source # | |
Defined in Predicate.Data.DateTime type PP (DiffUTCTime p q) x Source # eval :: MonadEval m => proxy (DiffUTCTime p q) -> POpts -> x -> m (TT (PP (DiffUTCTime p q) x)) Source # | |
(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.Data.DateTime type PP (FormatTimeP' p q) x Source # eval :: MonadEval m => proxy (FormatTimeP' p q) -> POpts -> x -> m (TT (PP (FormatTimeP' p q) x)) Source # | |
P (ExitWhenT prt p) x => P (ExitWhen prt p :: Type) x Source # | |
(P prt a, PP prt a ~ String, P p a, PP p a ~ Bool) => P (GuardBool prt p :: Type) a Source # | |
(Show a, P prt a, PP prt a ~ String, P p a, PP p a ~ Bool) => P (Guard prt p :: Type) a Source # | |
(PP (Bools (ToGuardsT prt ps)) x ~ Bool, P (BoolsQuickT prt ps) x) => P (BoolsQuick prt ps :: Type) x Source # | |
Defined in Predicate.Data.Condition type PP (BoolsQuick prt ps) x Source # eval :: MonadEval m => proxy (BoolsQuick prt ps) -> POpts -> x -> m (TT (PP (BoolsQuick prt ps) x)) Source # | |
P (GuardsQuickT prt ps) x => P (GuardsQuick prt ps :: Type) x Source # | |
Defined in Predicate.Data.Condition type PP (GuardsQuick prt ps) x Source # eval :: MonadEval m => proxy (GuardsQuick prt ps) -> POpts -> x -> m (TT (PP (GuardsQuick prt ps) x)) Source # | |
(P p a, Show t, Bits t, Integral (PP p a)) => P (Bit t p :: Type) a Source # | |
(P p a, P q a, Show (PP q a), Bits (PP q a), Integral (PP p a)) => P (TestBit p q :: Type) a Source # | |
P (BitComplementT p q) x => P (BitComplement p q :: Type) x Source # | |
Defined in Predicate.Data.Bits type PP (BitComplement p q) x Source # eval :: MonadEval m => proxy (BitComplement p q) -> POpts -> x -> m (TT (PP (BitComplement p q) x)) Source # | |
P (BitClearT p q) x => P (BitClear p q :: Type) x Source # | |
P (BitSetT p q) x => P (BitSet p q :: Type) x Source # | |
P (BitRotateRT p q) x => P (BitRotateR p q :: Type) x Source # | |
Defined in Predicate.Data.Bits type PP (BitRotateR p q) x Source # eval :: MonadEval m => proxy (BitRotateR p q) -> POpts -> x -> m (TT (PP (BitRotateR p q) x)) Source # | |
P (BitRotateLT p q) x => P (BitRotateL p q :: Type) x Source # | |
Defined in Predicate.Data.Bits type PP (BitRotateL p q) x Source # eval :: MonadEval m => proxy (BitRotateL p q) -> POpts -> x -> m (TT (PP (BitRotateL p q) x)) Source # | |
P (BitRotateT p q) x => P (BitRotate p q :: Type) x Source # | |
P (BitShiftRT p q) x => P (BitShiftR p q :: Type) x Source # | |
P (BitShiftLT p q) x => P (BitShiftL p q :: Type) x Source # | |
P (BitShiftT p q) x => P (BitShift p q :: Type) x Source # | |
(P p a, P q a, Show (PP p a), PP p a ~ PP q a, Bits (PP p a)) => P (p .^. q :: Type) a Source # | |
(P p a, P q a, Show (PP p a), PP p a ~ PP q a, Bits (PP p a)) => P (p .|. q :: Type) a Source # | |
(P p a, P q a, Show (PP p a), PP p a ~ PP q a, Bits (PP p a)) => P (p .&. q :: Type) a Source # | |
(Show (PP p a), Show (PP q b), P p a, P q b, Show a, Show b) => P (p *** q :: Type) (a, b) Source # | |
(Bitraversable n, Monoid t, PP p a ~ t, PP q b ~ t, P p a, P q b) => P (BiFoldMap p q :: Type) (n a b) Source # | |
(Bitraversable n, P p a, P q b) => P (BiMap p q :: Type) (n a b) Source # | |
(Show (PP p a), Show (PP q b), P p a, P q b, Show a, Show b) => P (p +++ q :: Type) (Either a b) Source # | |
(Show (PP p a), P p a, P q b, PP p a ~ PP q b, Show a, Show b) => P (p ||| q :: Type) (Either a b) Source # | |
(GetROpts rs, PP p x ~ String, PP q x ~ String, P p x, P q x) => P (Resplit' rs p q :: Type) x Source # | |
(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.Data.Regex type PP (RescanRanges' rs p q) x Source # eval :: MonadEval m => proxy (RescanRanges' rs p q) -> POpts -> x -> m (TT (PP (RescanRanges' rs p q) x)) Source # | |
(GetROpts rs, PP p x ~ String, PP q x ~ String, P p x, P q x) => P (Rescan' rs p q :: Type) x Source # | |
(GetROpts rs, PP p x ~ String, PP q x ~ String, P p x, P q x) => P (Re' rs p q :: Type) x Source # | |
P (PrintLT n s p) x => P (PrintL n s p :: Type) x Source # | |
(Typeable (PP t x), BetweenT "ReadBase'" 2 36 n, Show (PP t x), Num (PP t x), KnownNat n, PP p x ~ String, P p x) => P (ReadBase' t n p :: Type) x Source # | |
(GetBool pretty, PP p x ~ String, P p x, ToJSON (PP q x), P q x) => P (EncodeJsonFile pretty p q :: Type) x Source # | |
Defined in Predicate.Data.Json type PP (EncodeJsonFile pretty p q) x Source # eval :: MonadEval m => proxy (EncodeJsonFile pretty p q) -> POpts -> x -> m (TT (PP (EncodeJsonFile pretty p q) x)) Source # | |
P (ParseTimesT t p q) x => P (ParseTimes t p q :: Type) x Source # | |
Defined in Predicate.Data.DateTime type PP (ParseTimes t p q) x Source # eval :: MonadEval m => proxy (ParseTimes t p q) -> POpts -> x -> m (TT (PP (ParseTimes t p q) x)) Source # | |
(x ~ [a], P (GuardsNT prt n p) x) => P (GuardsN prt n p :: Type) x Source # | |
P (GuardsDetailT prt ps) x => P (GuardsDetail prt ps :: Type) x Source # | |
Defined in Predicate.Data.Condition type PP (GuardsDetail prt ps) x Source # eval :: MonadEval m => proxy (GuardsDetail prt ps) -> POpts -> x -> m (TT (PP (GuardsDetail prt ps) x)) Source # | |
(x ~ [a], P (BoolsNT prt n p) x) => P (BoolsN prt n p :: Type) x Source # | |
(Ord (PP p x), Show (PP p x), PP r x ~ PP p x, PP r x ~ PP q x, P p x, P q x, P r x) => P (Between p q r :: Type) x Source # | |
(PP r x ~ (a, b), PP p a ~ Bool, PP q b ~ Bool, P p a, P q b, P r x) => P (OrA p q r :: Type) x Source # | |
(PP r x ~ (a, b), PP p a ~ Bool, PP q b ~ Bool, P p a, P q b, P r x) => P (AndA p q r :: Type) x Source # | |
P (TheseDefT' p q r) x => P (TheseDef' p q r :: Type) x Source # | |
P (ThatDefT' p q r) x => P (ThatDef' p q r :: Type) x Source # | |
P (ThisDefT' p q r) x => P (ThisDef' p q r :: Type) x Source # | |
P (TheseInSimpleT p q r) x => P (TheseInSimple p q r :: Type) x Source # | |
Defined in Predicate.Data.These type PP (TheseInSimple p q r) x Source # eval :: MonadEval m => proxy (TheseInSimple p q r) -> POpts -> x -> m (TT (PP (TheseInSimple p q r) x)) Source # | |
P (TheseIdT p q r) x => P (TheseId p q r :: Type) x Source # | |
P (ReplaceOneT p q r) x => P (ReplaceOne p q r :: Type) x Source # | |
Defined in Predicate.Data.Regex type PP (ReplaceOne p q r) x Source # eval :: MonadEval m => proxy (ReplaceOne p q r) -> POpts -> x -> m (TT (PP (ReplaceOne p q r) x)) Source # | |
P (ReplaceAllT p q r) x => P (ReplaceAll p q r :: Type) x Source # | |
Defined in Predicate.Data.Regex type PP (ReplaceAll p q r) x Source # eval :: MonadEval m => proxy (ReplaceAll p q r) -> POpts -> x -> m (TT (PP (ReplaceAll p q r) x)) Source # | |
(PP p x ~ Proxy z, PP q x ~ Proxy w, PP r x ~ Proxy v) => P (PApp2 p q r :: Type) x Source # | |
(P r x, PP p x ~ Proxy z, PP q x ~ Proxy w, P (z w) (PP r x)) => P (Pop1' p q r :: Type) x Source # | |
(P r x, PP p x ~ Proxy z, P (z q) (PP r x)) => P (Pop1 p q r :: Type) x Source # | |
P (DivIT t p q) x => P (DivI t p q :: Type) x Source # | |
(Traversable n, Applicative n, P p (a, b), P q x, P r x, PP p (a, b) ~ c, PP q x ~ n a, PP r x ~ n b) => P (LiftA2 p q r :: Type) x Source # | |
P (p r q) x => P (Flip p q r :: Type) x Source # | |
P (FFishT p q r) x => P (FFish p q r :: Type) x Source # | |
(Show (PP p a), P b a, P p a, PP b a ~ Bool, Alternative t) => P (EmptyBool t b p :: Type) a Source # | |
(P q a, P p a, Show (PP p a), Ixed (PP p a), PP q a ~ Index (PP p a), Show (Index (PP p a)), Show (IxValue (PP p a)), P r (Proxy (IxValue (PP p a))), PP r (Proxy (IxValue (PP p a))) ~ IxValue (PP p a)) => P (IxL p q r :: Type) a Source # | |
P (LookupFailT msg v w) x => P (LookupFail msg v w :: Type) x Source # | |
Defined in Predicate.Data.Index type PP (LookupFail msg v w) x Source # eval :: MonadEval m => proxy (LookupFail msg v w) -> POpts -> x -> m (TT (PP (LookupFail msg v w) x)) Source # | |
P (LookupDefT v w p) x => P (LookupDef v w p :: Type) x Source # | |
(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 # | |
(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 # | |
P (PartitionsByT p q r) x => P (PartitionsBy p q r :: Type) x Source # | |
Defined in Predicate.Data.List type PP (PartitionsBy p q r) x Source # eval :: MonadEval m => proxy (PartitionsBy p q r) -> POpts -> x -> m (TT (PP (PartitionsBy p q r) x)) Source # | |
(PP r a ~ y, P r a, PP p a ~ [x], PP q a ~ [y], P p a, P q a, Show x, Show y) => P (ZipR r p q :: Type) a Source # | |
(PP l a ~ x, P l a, PP p a ~ [x], PP q a ~ [y], P p a, P q a, Show x, Show y) => P (ZipL l p q :: Type) a Source # | |
(PP q a ~ [x], PP r a ~ [y], P q a, P r a, P p (x, y), Show x, Show y, Show (PP p (x, y))) => P (ZipWith p q r :: Type) a Source # | |
(PP p a ~ [b], P n a, P i a, P p a, Show b, Integral (PP i a), Integral (PP n a)) => P (ChunksOf' n i p :: Type) a Source # | |
P (PadRT n p q) x => P (PadR n p q :: Type) x Source # | |
P (PadLT n p q) x => P (PadL n p q :: Type) x Source # | |
(P p x, Ord t, Show x, Show t, PP q a ~ [x], PP p x ~ t, P q a) => P (PartitionBy t p q :: Type) a Source # | |
Defined in Predicate.Data.List type PP (PartitionBy t p q) a Source # eval :: MonadEval m => proxy (PartitionBy t p q) -> POpts -> a -> m (TT (PP (PartitionBy t p q) a)) Source # | |
P (IterateNUntilT n p f) x => P (IterateNUntil n p f :: Type) x Source # | |
Defined in Predicate.Data.Iterator type PP (IterateNUntil n p f) x Source # eval :: MonadEval m => proxy (IterateNUntil n p f) -> POpts -> x -> m (TT (PP (IterateNUntil n p f) x)) Source # | |
P (IterateNWhileT n p f) x => P (IterateNWhile n p f :: Type) x Source # | |
Defined in Predicate.Data.Iterator type PP (IterateNWhile n p f) x Source # eval :: MonadEval m => proxy (IterateNWhile n p f) -> POpts -> x -> m (TT (PP (IterateNWhile n p f) x)) Source # | |
P (IterateNT n p s) x => P (UnfoldN n p s :: Type) x Source # | |
P (FoldLT p q r) x => P (Foldl p q r :: Type) x Source # | |
P (FoldNT n p q) x => P (FoldN n p q :: Type) x Source # | |
P (ScanNT n p q) x => P (ScanN n p q :: Type) x Source # | |
(PP p (b, a) ~ b, PP q x ~ b, PP r x ~ [a], P p (b, a), P q x, P r x, Show b, Show a) => P (Scanl p q r :: Type) x Source # | |
P (EBothDefT p q r) x => P (EBothDef p q r :: Type) x Source # | |
P (ERightDefT p q r) x => P (ERightDef p q r :: Type) x Source # | |
P (ELeftDefT p q r) x => P (ELeftDef p q r :: Type) x Source # | |
P (ENoneDefT p q r) x => P (ENoneDef p q r :: Type) x Source # | |
P (RightDefT' p q r) x => P (RightDef' p q r :: Type) x Source # | |
P (LeftDefT' p q r) x => P (LeftDef' p q r :: Type) x Source # | |
(Show (PP p a), P p a, Show (PP q a), P q a, P b a, PP b a ~ Bool) => P (EitherBool b p q :: Type) a Source # | |
Defined in Predicate.Data.Either type PP (EitherBool b p q) a Source # eval :: MonadEval m => proxy (EitherBool b p q) -> POpts -> a -> m (TT (PP (EitherBool b p q) a)) Source # | |
(P p x, P q x, P r x, PP p x ~ Int, PP q x ~ Int, PP r x ~ Rational) => P (MkTime' p q r :: Type) x Source # | |
(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.Data.DateTime type PP (MkDayExtra' p q r) x Source # eval :: MonadEval m => proxy (MkDayExtra' p q r) -> POpts -> x -> m (TT (PP (MkDayExtra' p q r) x)) Source # | |
(P p x, P q x, P r x, PP p x ~ Int, PP q x ~ Int, PP r x ~ Int) => P (MkDay' p q r :: Type) x Source # | |
(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.Data.DateTime type PP (ParseTimes' t p q) a Source # eval :: MonadEval m => proxy (ParseTimes' t p q) -> POpts -> a -> m (TT (PP (ParseTimes' t p q) a)) Source # | |
(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.Data.DateTime type PP (ParseTimeP' t p q) a Source # eval :: MonadEval m => proxy (ParseTimeP' t p q) -> POpts -> a -> m (TT (PP (ParseTimeP' t p q) a)) Source # | |
P (CaseT' ps qs r) x => P (Case' ps qs r :: Type) x Source # | |
(Show (PP r a), P p a, PP p a ~ Bool, P q a, P r a, PP q a ~ PP r a) => P (If p q r :: Type) a Source # | |
P (ReplaceOneStringT o p q r) x => P (ReplaceOneString o p q r :: Type) x Source # | |
Defined in Predicate.Data.Regex type PP (ReplaceOneString o p q r) x Source # eval :: MonadEval m => proxy (ReplaceOneString o p q r) -> POpts -> x -> m (TT (PP (ReplaceOneString o p q r) x)) Source # | |
P (ReplaceOneT' rs p q r) x => P (ReplaceOne' rs p q r :: Type) x Source # | |
Defined in Predicate.Data.Regex type PP (ReplaceOne' rs p q r) x Source # eval :: MonadEval m => proxy (ReplaceOne' rs p q r) -> POpts -> x -> m (TT (PP (ReplaceOne' rs p q r) x)) Source # | |
P (ReplaceAllT' rs p q r) x => P (ReplaceAll' rs p q r :: Type) x Source # | |
Defined in Predicate.Data.Regex type PP (ReplaceAll' rs p q r) x Source # eval :: MonadEval m => proxy (ReplaceAll' rs p q r) -> POpts -> x -> m (TT (PP (ReplaceAll' rs p q r) x)) Source # | |
(P q (PP r x), P q (PP s x), P r x, P s x, P (p Fst Snd) (PP q (PP r x), PP q (PP s x))) => P (On' p q r s :: Type) x Source # | |
P (ReplaceOneStringT' rs o p q r) x => P (ReplaceOneString' rs o p q r :: Type) x Source # | |
Defined in Predicate.Data.Regex type PP (ReplaceOneString' rs o p q r) x Source # eval :: MonadEval m => proxy (ReplaceOneString' rs o p q r) -> POpts -> x -> m (TT (PP (ReplaceOneString' rs o p q r) x)) Source # | |
P (ReplaceAllStringT o p q r) x => P (ReplaceAllString o p q r :: Type) x Source # | |
Defined in Predicate.Data.Regex type PP (ReplaceAllString o p q r) x Source # eval :: MonadEval m => proxy (ReplaceAllString o p q r) -> POpts -> x -> m (TT (PP (ReplaceAllString o p q r) x)) Source # | |
P (ReplaceAllStringT' rs o p q r) x => P (ReplaceAllString' rs o p q r :: Type) x Source # | |
Defined in Predicate.Data.Regex type PP (ReplaceAllString' rs o p q r) x Source # eval :: MonadEval m => proxy (ReplaceAllString' rs o p q r) -> POpts -> x -> m (TT (PP (ReplaceAllString' rs o p q r) x)) Source # | |
(P s x, PP p x ~ Proxy z, PP q x ~ Proxy w, PP r x ~ Proxy v, P (z w v) (PP s x)) => P (Pop2' p q r s :: Type) x Source # | |
(P s x, PP p x ~ Proxy z, P (z q r) (PP s x)) => P (Pop2 p q r s :: Type) x Source # | |
(Show a, Show (PP p (y, a)), P n (y, Proxy z), P p (y, a), PP n (y, Proxy z) ~ PP p (y, a), z ~ PP p (y, a), P s x, P t x, PP t x ~ Maybe a, PP s x ~ y) => P (MaybeIn n p s t :: Type) x Source # | |
P (LookupFailT' msg v w q) x => P (LookupFail' msg v w q :: Type) x Source # | |
Defined in Predicate.Data.Index type PP (LookupFail' msg v w q) x Source # eval :: MonadEval m => proxy (LookupFail' msg v w q) -> POpts -> x -> m (TT (PP (LookupFail' msg v w q) x)) Source # | |
P (LookupDefT' v w p q) x => P (LookupDef' v w p q :: Type) x Source # | |
Defined in Predicate.Data.Index type PP (LookupDef' v w p q) x Source # eval :: MonadEval m => proxy (LookupDef' v w p q) -> POpts -> x -> m (TT (PP (LookupDef' v w p q) x)) Source # | |
(PP l a ~ x, PP r a ~ y, P l a, P r a, PP p a ~ [x], PP q a ~ [y], P p a, P q a, Show x, Show y) => P (ZipPad l r p q :: Type) a Source # | |
P (ElrInSimpleT n p q r) x => P (ElrInSimple n p q r :: Type) x Source # | |
Defined in Predicate.Data.Elr type PP (ElrInSimple n p q r) x Source # eval :: MonadEval m => proxy (ElrInSimple n p q r) -> POpts -> x -> m (TT (PP (ElrInSimple n p q r) x)) Source # | |
P (ElrIdT n p q r) x => P (ElrId n p q r :: Type) x Source # | |
(Show a, Show b, Show (PP q (y, b)), P p (y, a), P q (y, b), PP p (y, a) ~ PP q (y, b), P s x, P t x, PP s x ~ y, PP t x ~ Either a b) => P (EitherIn p q s t :: Type) x Source # | |
P (CaseT'' s ps qs r) x => P (Case'' s ps qs r :: Type) x Source # | |
(FailUnlessT (LenT ps == LenT qs) ((('Text "lengths are not the same " :<>: 'ShowType (LenT ps)) :<>: 'Text " vs ") :<>: 'ShowType (LenT qs)), P (CaseImplT e ps qs r) x) => P (Case e ps qs r :: Type) x Source # | |
(Show a, Show b, Show (PP r (y, (a, b))), P p (y, a), P q (y, b), P r (y, (a, b)), PP p (y, a) ~ PP q (y, b), PP q (y, b) ~ PP r (y, (a, b)), P s x, P t x, PP s x ~ y, PP t x ~ These a b) => P (TheseIn p q r s t :: Type) x Source # | |
(Show a, Show b, Show (PP r (y, (a, b))), P n y, P p (y, a), P q (y, b), P r (y, (a, b)), PP n y ~ PP p (y, a), PP p (y, a) ~ PP q (y, b), PP q (y, b) ~ PP r (y, (a, b)), P s x, P t x, PP t x ~ Elr a b, PP s x ~ y) => P (ElrIn n p q r s t :: Type) x Source # | |
P [] a Source # |
|
P ('Proxy :: Proxy t1) t2 Source # | converts the type to the corresponding
|
x ~ Elr a2 b2 => P ('ENone :: Elr a1 b1) x Source # | extracts the () from type level
|
(PP p x ~ Either a2 b2, P p x) => P ('Right p :: Either a1 b1) x Source # | extracts the
|
(PP p x ~ Either a2 b2, P p x) => P ('Left p :: Either a1 b1) x Source # | extracts the
|
(PP p x ~ These a2 b2, P p x) => P ('That p :: These a1 b1) x Source # | extracts the
|
(PP p x ~ These a2 b2, P p x) => P ('This p :: These a1 b1) x Source # | extracts the
|
(PP p x ~ Elr a2 b2, P p x) => P ('ERight p :: Elr a1 b1) x Source # | extracts the
|
(PP p x ~ Elr a2 b2, P p x) => P ('ELeft p :: Elr a1 b1) x Source # | extracts the
|
(P p a, P q a, Show (PP p a), Show (PP q a)) => P ('(p, q) :: (k1, k2)) a Source # | run the predicates in a promoted 2-tuple; similar to
|
(P p x, P q x, Show (PP p x), Show (PP q x)) => P ('Arg p q :: Arg a b) x Source # | creates a
|
(Show a2, Show b2, P p a2, P q b2, Show (PP p a2), Show (PP q b2)) => P ('These p q :: These a1 b1) (These a2 b2) Source # | extracts the (a,b) from type level
|
(Show a2, Show b2, P p a2, P q b2, Show (PP p a2), Show (PP q b2)) => P ('EBoth p q :: Elr a1 b1) (Elr a2 b2) Source # | extracts the (a,b) from type level
|
(P p a, P q a, P r a) => P ('(p, q, r) :: (k1, k2, k3)) a Source # | run the predicates in a promoted 3-tuple
|
(P p a, P q a, P r a, P s a) => P ('(p, q, r, s) :: (k1, k2, k3, k4)) a Source # | run the predicates in a promoted 4-tuple
|
(P p a, P q a, P r a, P s a, P t a) => P ('(p, q, r, s, t) :: (k1, k2, k3, k4, k5)) a Source # | run the predicates in a promoted 5-tuple
|
(P p a, P q a, P r a, P s a, P t a, P u a) => P ('(p, q, r, s, t, u) :: (k1, k2, k3, k4, k5, k6)) a Source # | run the predicates in a promoted 6-tuple
|
(P p a, P q a, P r a, P s a, P t a, P u a, P v a) => P ('(p, q, r, s, t, u, v) :: (k1, k2, k3, k4, k5, k6, k7)) a Source # | run the predicates in a promoted 7-tuple
|
(P p a, P q a, P r a, P s a, P t a, P u a, P v a, P w a) => P ('(p, q, r, s, t, u, v, w) :: (k1, k2, k3, k4, k5, k6, k7, k8)) a Source # | run the predicates in a promoted 8-tuple
|
type families
type family DoExpandLT (ps :: [k]) :: Type where ... Source #
DoExpandLT '[] = TypeError ('Text "DoExpandT '[] invalid: requires at least one predicate in the list") | |
DoExpandLT '[p] = W p | |
DoExpandLT (p ': (p1 ': '[])) = p >> p1 | |
DoExpandLT (p ': (p1 ': (p2 ': ps))) = (p >> p1) >> DoExpandLT (p2 ': ps) |