| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Predicate.Data.Foldable
Description
promoted foldable functions
Documentation
similar to concat
>>>pz @Concat (Just "abc")Val "abc"
>>>pz @Concat (Left 123)Val []
>>>pz @Concat ["abc","D","eF","","G"]Val "abcDeFG"
>>>pz @(Snd >> Concat) ('x',["abc","D","eF","","G"])Val "abcDeFG"
similar to concatMap
similar to cycle but for a fixed number n: for an empty list it just returns an empty list
>>>pz @(Cycle 5 Id) [1,2]Val [1,2,1,2,1]
>>>pz @(Cycle 5 Id) []Val []
data FoldAla (t :: Type) Source #
wraps each item in the foldable container and then unwraps the mconcatenated result: uses Wrapped
>>>pz @(FoldAla (SG.Sum _)) [44, 12, 3]Val 59
>>>pz @(FoldAla (SG.Product _)) [44, 12, 3]Val 1584
>>>type Ands' = FoldAla SG.All>>>pz @Ands' [True,False,True,True]Val False
>>>pz @Ands' [True,True,True]Val True
>>>pz @Ands' []Val True
>>>type Ors' = FoldAla SG.Any>>>pz @Ors' [False,False,False]Val False
>>>pz @Ors' []Val False
>>>pz @Ors' [False,False,False,True]Val True
>>>type AllPositive' = Map Positive >> FoldAla SG.All>>>pz @AllPositive' [3,1,-5,10,2,3]Val False
>>>type AllNegative' = Map Negative >> FoldAla SG.All>>>pz @AllNegative' [-1,-5,-10,-2,-3]Val True
>>>:set -XKindSignatures>>>type Max' (t :: Type) = FoldAla (SG.Max t) -- requires t be Bounded for monoid instance>>>pz @(Max' Int) [10,4,5,12,3,4]Val 12
>>>pl @(FoldAla (SG.Sum _)) [14,8,17,13]Present 52 ((>>) 52 | {getSum = 52}) Val 52
>>>pl @(FoldAla (SG.Max _)) [14 :: Int,8,17,13] -- allowed as the values are Bounded!Present 17 ((>>) 17 | {getMax = 17}) Val 17
>>>pl @((Len >> (Elem Id '[4,7,1] || (Mod Id 3 >> Same 0))) || (FoldAla (SG.Sum _) >> Gt 200)) [1..20]True (False || True) Val True
>>>pl @((Len >> (Elem Id '[4,7,1] || (Mod Id 3 >> Same 0))) || (FoldAla (SG.Sum _) >> Gt 200)) [1..19]False (False || False | ((>>) False | {1 == 0}) || ((>>) False | {190 > 200})) Val False
>>>pl @((Len >> (Elem Id '[4,7,1] || (Mod Id 3 >> Same 0))) || (FoldAla (SG.Sum _) >> Gt 200)) []True (True || False) Val True
>>>pl @((Len >> (Elem Id '[4,7,1] || (Mod Id 3 >> Same 0))) &&& FoldAla (SG.Sum _)) [1..20]Present (False,210) ('(False,210)) Val (False,210)
>>>pl @(FoldAla SG.Any) [False,False,True,False]Present True ((>>) True | {getAny = True}) Val True
>>>pl @(FoldAla SG.All) [False,False,True,False]Present False ((>>) False | {getAll = False}) Val False
>>>pl @(FoldAla (SG.Sum _)) (Just 13)Present 13 ((>>) 13 | {getSum = 13}) Val 13
>>>pl @(FoldAla (SG.Sum _)) [1..10]Present 55 ((>>) 55 | {getSum = 55}) Val 55
similar to foldMap
>>>pl @(FoldMap (Wrap (SG.Sum _) Id)) (Left "x")Present Sum {getSum = 0} (FoldMap <skipped>) Val (Sum {getSum = 0})
>>>pz @(FoldMap (Wrap (SG.Sum _) Id)) [1..5]Val (Sum {getSum = 15})
>>>pl @(FoldMap (Wrap (SG.Sum _) Id)) (Right 123)Present Sum {getSum = 123} (FoldMap Wrap Sum {getSum = 123} | 123) Val (Sum {getSum = 123})
>>>pl @(FoldMap (Map Len)) (Just ["abc","defg","h"])Present [3,4,1] (FoldMap Map [3,4,1] | ["abc","defg","h"]) Val [3,4,1]
>>>pz @(FoldMap (Map Len)) (Just ["abc","defg","h"])Val [3,4,1]
>>>pz @(FoldMap (Wrap (SG.Sum _) Len)) ["abc","defg","h"]Val (Sum {getSum = 8})
>>>pz @(FoldMap (FoldMap (Wrap (SG.Sum _) Id))) (Just [1..10])Val (Sum {getSum = 55})
invokes toList
>>>pz @ToListExt (M.fromList [(1,'x'),(4,'y')])Val [(1,'x'),(4,'y')]
>>>pz @ToListExt (T.pack "abc")Val "abc"
data FromList (t :: Type) Source #
invokes fromList
>>>run @('OMsg "Fred" ':# 'OLite ':# 'OColorOff) @(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]}) Val (fromList [1,2,5])
>>>pl @(FromList (M.Map _ _) >> Id !! C "y") [('x',True),('y',False)]Present False ((>>) False | {IxL('y') False | p=fromList [('x',True),('y',False)] | q='y'}) Val False
>>>pl @(FromList (M.Map _ _) >> Id !! C "z") [('x',True),('y',False)]Error (!!) index not found (IxL('z') | fromList [('x',True),('y',False)]) Fail "(!!) index not found"
>>>pl @(FromList (M.Map _ _)) [(4,"x"),(5,"dd")]Present fromList [(4,"x"),(5,"dd")] (FromList fromList [(4,"x"),(5,"dd")]) Val (fromList [(4,"x"),(5,"dd")])
data FromListExt (t :: Type) Source #
invokes fromList
requires the OverloadedLists extension
>>>:set -XOverloadedLists>>>pz @(FromListExt (M.Map _ _)) [(4,"x"),(5,"dd")]Val (fromList [(4,"x"),(5,"dd")])
Instances
| Show (FromListExt t) Source # | |
Defined in Predicate.Data.Foldable Methods showsPrec :: Int -> FromListExt t -> ShowS # show :: FromListExt t -> String # showList :: [FromListExt t] -> ShowS # | |
| (Show l, IsList l, l ~ l') => P (FromListExt l' :: Type) l Source # | |
Defined in Predicate.Data.Foldable Associated Types type PP (FromListExt l') l Source # Methods eval :: MonadEval m => proxy (FromListExt l') -> POpts -> l -> m (TT (PP (FromListExt l') l)) Source # | |
| type PP (FromListExt l' :: Type) l Source # | |
Defined in Predicate.Data.Foldable | |
similar to toList
>>>pz @ToList "aBc"Val "aBc"
>>>pz @ToList (Just 14)Val [14]
>>>pz @ToList NothingVal []
>>>pz @ToList (Left "xx")Val []
>>>pz @ToList (These 12 "xx")Val ["xx"]
>>>pl @ToList (M.fromList $ zip [0..] "abcd")Present "abcd" (ToList fromList [(0,'a'),(1,'b'),(2,'c'),(3,'d')]) Val "abcd"
>>>pl @ToList (Just 123)Present [123] (ToList Just 123) Val [123]
>>>pl @ToList (M.fromList (zip ['a'..] [9,2,7,4]))Present [9,2,7,4] (ToList fromList [('a',9),('b',2),('c',7),('d',4)]) Val [9,2,7,4]
data IToList (t :: Type) Source #
similar to itoList
>>>pz @(IToList _) ("aBc" :: String)Val [(0,'a'),(1,'B'),(2,'c')]
>>>pl @(IToList _) ("abcd" :: String)Present [(0,'a'),(1,'b'),(2,'c'),(3,'d')] (IToList(Int) [(0,'a'),(1,'b'),(2,'c'),(3,'d')] | "abcd") Val [(0,'a'),(1,'b'),(2,'c'),(3,'d')]
>>>pl @(IToList _) (M.fromList $ itoList ("abcd" :: String))Present [(0,'a'),(1,'b'),(2,'c'),(3,'d')] (IToList(Int) [(0,'a'),(1,'b'),(2,'c'),(3,'d')] | fromList [(0,'a'),(1,'b'),(2,'c'),(3,'d')]) Val [(0,'a'),(1,'b'),(2,'c'),(3,'d')]
>>>pl @(IToList _) [9,2,7,4]Present [(0,9),(1,2),(2,7),(3,4)] (IToList(Int) [(0,9),(1,2),(2,7),(3,4)] | [9,2,7,4]) Val [(0,9),(1,2),(2,7),(3,4)]
>>>pl @(IToList _) (M.fromList (zip ['a'..] [9,2,7,4]))Present [('a',9),('b',2),('c',7),('d',4)] (IToList(Char) [('a',9),('b',2),('c',7),('d',4)] | fromList [('a',9),('b',2),('c',7),('d',4)]) Val [('a',9),('b',2),('c',7),('d',4)]
>>>pl @(IToList _) (Just 234)Present [((),234)] (IToList(()) [((),234)] | Just 234) Val [((),234)]
>>>pl @(IToList _) (Nothing @Double)Present [] (IToList(()) [] | Nothing) Val []
>>>pl @(IToList _) [1..5]Present [(0,1),(1,2),(2,3),(3,4),(4,5)] (IToList(Int) [(0,1),(1,2),(2,3),(3,4),(4,5)] | [1,2,3,4,5]) Val [(0,1),(1,2),(2,3),(3,4),(4,5)]
>>>pl @(IToList _) ['a','b','c']Present [(0,'a'),(1,'b'),(2,'c')] (IToList(Int) [(0,'a'),(1,'b'),(2,'c')] | "abc") Val [(0,'a'),(1,'b'),(2,'c')]
explicit version of IToList with an extra parameter p to point to the value
>>>pz @(IToList' (Hole _) Snd) (True,"aBc" :: String)Val [(0,'a'),(1,'B'),(2,'c')]
create a NonEmpty list from a Foldable
>>>pz @ToNEList []Fail "empty list"
>>>pz @ToNEList [1,2,3,4,5]Val (1 :| [2,3,4,5])
gets the singleton value from a foldable
>>>pl @OneP [10..15]Error OneP:expected one element(6) Fail "OneP:expected one element(6)"
>>>pl @OneP [10]Present 10 (OneP) Val 10
>>>pl @OneP []Error OneP:expected one element(empty) Fail "OneP:expected one element(empty)"
>>>pl @OneP (Just 10)Present 10 (OneP) Val 10
>>>pl @OneP NothingError OneP:expected one element(empty) Fail "OneP:expected one element(empty)"
similar to null using Foldable
>>>pz @Null [1,2,3,4]Val False
>>>pz @Null []Val True
>>>pz @Null NothingVal True
explicit version of Null with an extra parameter p to point to the value
>>>pz @IsEmpty [1,2,3,4]Val False
>>>pz @IsEmpty []Val True
>>>pz @IsEmpty LTVal False
>>>pz @IsEmpty EQVal True
>>>pl @IsEmpty ("failed11" :: T.Text)False (IsEmpty | "failed11") Val False
>>>pl @IsEmpty ("" :: T.Text)True (IsEmpty | "") Val True
similar to and
>>>pz @Ands [True,True,True]Val True
>>>pl @Ands [True,True,True,False]False (Ands(4) i=3 | [True,True,True,False]) Val False
>>>pz @Ands []Val True
similar to or
>>>pz @Ors [False,False,False]Val False
>>>pl @Ors [True,True,True,False]True (Ors(4) i=0 | [True,True,True,False]) Val True
>>>pl @Ors []False (Ors(0) | []) Val False