| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Data.Profunctor.Optic.Fold
Contents
Synopsis
- type Fold s a = forall p. (Choice p, Representable p, Applicative (Rep p), forall x. Contravariant (p x)) => Optic' p s a
- type Ixfold i s a = forall p. (Choice p, Representable p, Applicative (Rep p), forall x. Contravariant (p x)) => IndexedOptic' p i s a
- fold_ :: Foldable f => (s -> f a) -> Fold s a
- folding :: Traversable f => (s -> a) -> Fold (f s) a
- foldVl :: (forall f. Applicative f => (a -> f b) -> s -> f t) -> Fold s a
- ifoldVl :: (forall f. Applicative f => (i -> a -> f b) -> s -> f t) -> Ixfold i s a
- afold :: Monoid r => ((a -> r) -> s -> r) -> APrimView r s t a b
- aifold :: Monoid r => ((i -> a -> r) -> s -> r) -> AIxfold r i s a
- type Fold1 s a = forall p. (Strong p, Representable p, Apply (Rep p), forall x. Contravariant (p x)) => Optic' p s a
- type Ixfold1 i s a = forall p. (Strong p, Representable p, Apply (Rep p), forall x. Contravariant (p x)) => IndexedOptic' p i s a
- fold1_ :: Foldable1 f => (s -> f a) -> Fold1 s a
- folding1 :: Traversable1 f => (s -> a) -> Fold1 (f s) a
- fold1Vl :: (forall f. Apply f => (a -> f b) -> s -> f t) -> Fold1 s a
- ifold1Vl :: (forall f. Apply f => (i -> a -> f b) -> s -> f t) -> Ixfold1 i s a
- afold1 :: ((a -> r) -> s -> r) -> APrimView r s t a b
- aifold1 :: ((i -> a -> r) -> s -> r) -> AIxfold1 r i s a
- folded :: Traversable f => Fold (f a) a
- folded_ :: Foldable f => Fold (f a) a
- folded1 :: Traversable1 f => Fold1 (f a) a
- folded1_ :: Foldable1 f => Fold1 (f a) a
- ifolded :: FoldableWithKey f => Ixfold (Key f) (f a) a
- ifoldedRep :: Representable f => Traversable f => Ixfold (Rep f) (f a) a
- ifolded1 :: FoldableWithKey1 f => Ixfold1 (Key f) (f a) a
- aifolded :: FoldableWithKey f => Monoid r => AIxfold r (Key f) (f a) a
- aifolded1 :: FoldableWithKey1 f => Semigroup r => AIxfold1 r (Key f) (f a) a
- withFold :: Monoid r => APrimView r s t a b -> (a -> r) -> s -> r
- withIxfold :: Monoid r => AIxfold r i s a -> (i -> a -> r) -> i -> s -> r
- withFold1 :: Semigroup r => APrimView r s t a b -> (a -> r) -> s -> r
- withIxfold1 :: Semigroup r => AIxfold1 r i s a -> (i -> a -> r) -> i -> s -> r
- lists :: AFold (Endo [a]) s a -> s -> [a]
- (^..) :: s -> AFold (Endo [a]) s a -> [a]
- ilists :: (Additive - Monoid) i => AIxfold (Endo [(i, a)]) i s a -> s -> [(i, a)]
- ilistsFrom :: AIxfold (Endo [(i, a)]) i s a -> i -> s -> [(i, a)]
- (^%%) :: (Additive - Monoid) i => s -> AIxfold (Endo [(i, a)]) i s a -> [(i, a)]
- nelists :: AFold1 (Nedl a) s a -> s -> NonEmpty a
- folds :: Monoid a => AFold a s a -> s -> a
- ifolds :: (Additive - Monoid) i => Monoid a => AIxfold (Additive i, a) i s a -> s -> (i, a)
- folds1 :: Semigroup a => AFold1 a s a -> s -> a
- foldsa :: Applicative f => Monoid (f a) => AFold (f a) s a -> s -> f a
- foldsr :: AFold (Endo r) s a -> (a -> r -> r) -> r -> s -> r
- ifoldsr :: (Additive - Monoid) i => AIxfold (Endo r) i s a -> (i -> a -> r -> r) -> r -> s -> r
- ifoldsrFrom :: AIxfold (Endo r) i s a -> (i -> a -> r -> r) -> i -> r -> s -> r
- foldsl :: AFold ((Endo - Dual) r) s a -> (r -> a -> r) -> r -> s -> r
- ifoldsl :: (Additive - Monoid) i => AIxfold ((Endo - Dual) r) i s a -> (i -> r -> a -> r) -> r -> s -> r
- ifoldslFrom :: AIxfold ((Endo - Dual) r) i s a -> (i -> r -> a -> r) -> i -> r -> s -> r
- foldsr' :: AFold ((Endo - Dual) (Endo r)) s a -> (a -> r -> r) -> r -> s -> r
- ifoldsr' :: (Additive - Monoid) i => AIxfold ((Endo - Dual) (r -> r)) i s a -> (i -> a -> r -> r) -> r -> s -> r
- foldsl' :: AFold ((Endo - Endo) r) s a -> (r -> a -> r) -> r -> s -> r
- ifoldsl' :: (Additive - Monoid) i => AIxfold (Endo (r -> r)) i s a -> (i -> r -> a -> r) -> r -> s -> r
- foldsrM :: Monad m => AFold ((Endo - Dual) (r -> m r)) s a -> (a -> r -> m r) -> r -> s -> m r
- ifoldsrM :: (Additive - Monoid) i => Monad m => AIxfold ((Endo - Dual) (r -> m r)) i s a -> (i -> a -> r -> m r) -> r -> s -> m r
- foldslM :: Monad m => AFold (Endo (r -> m r)) s a -> (r -> a -> m r) -> r -> s -> m r
- ifoldslM :: (Additive - Monoid) i => Monad m => AIxfold (Endo (r -> m r)) i s a -> (i -> r -> a -> m r) -> r -> s -> m r
- traverses_ :: Applicative f => AFold (Endo (f ())) s a -> (a -> f r) -> s -> f ()
- itraverses_ :: (Additive - Monoid) i => Applicative f => AIxfold (Endo (f ())) i s a -> (i -> a -> f r) -> s -> f ()
- newtype Nedl a = Nedl {}
Fold & Ixfold
type Fold s a = forall p. (Choice p, Representable p, Applicative (Rep p), forall x. Contravariant (p x)) => Optic' p s a Source #
type Ixfold i s a = forall p. (Choice p, Representable p, Applicative (Rep p), forall x. Contravariant (p x)) => IndexedOptic' p i s a Source #
folding :: Traversable f => (s -> a) -> Fold (f s) a Source #
foldVl :: (forall f. Applicative f => (a -> f b) -> s -> f t) -> Fold s a Source #
ifoldVl :: (forall f. Applicative f => (i -> a -> f b) -> s -> f t) -> Ixfold i s a Source #
afold :: Monoid r => ((a -> r) -> s -> r) -> APrimView r s t a b Source #
TODO: Document
afold :: Monoid r => ((a -> r) -> s -> r) -> AFold r s a
Fold1 & Ixfold1
type Fold1 s a = forall p. (Strong p, Representable p, Apply (Rep p), forall x. Contravariant (p x)) => Optic' p s a Source #
type Ixfold1 i s a = forall p. (Strong p, Representable p, Apply (Rep p), forall x. Contravariant (p x)) => IndexedOptic' p i s a Source #
folding1 :: Traversable1 f => (s -> a) -> Fold1 (f s) a Source #
Obtain a Fold1 from a Traversable1 functor.
folding1f ≡traversed1.toffolding1f ≡fold1Vltraverse1.tof
afold1 :: ((a -> r) -> s -> r) -> APrimView r s t a b Source #
TODO: Document
afold1 :: ((a -> r) -> s -> r) -> AFold1 r s a
Optics
folded :: Traversable f => Fold (f a) a Source #
Obtain a Fold from a Traversable functor.
folded1 :: Traversable1 f => Fold1 (f a) a Source #
Obtain a Fold1 from a Traversable1 functor.
Indexed optics
ifolded :: FoldableWithKey f => Ixfold (Key f) (f a) a Source #
Obtain an AIxfold from a FoldableWithKey.
f^%%ifolded≡toKeyedListf
ifoldedRep :: Representable f => Traversable f => Ixfold (Rep f) (f a) a Source #
Obtain an Ixfold from a Representable functor.
ifolded1 :: FoldableWithKey1 f => Ixfold1 (Key f) (f a) a Source #
Obtain an Ixfold1 from a FoldableWithKey1.
aifolded :: FoldableWithKey f => Monoid r => AIxfold r (Key f) (f a) a Source #
Obtain an AIxfold from a FoldableWithKey.
aifolded1 :: FoldableWithKey1 f => Semigroup r => AIxfold1 r (Key f) (f a) a Source #
Obtain an AIxfold1 from a FoldableWithKey1.
Primitive operators
withIxfold :: Monoid r => AIxfold r i s a -> (i -> a -> r) -> i -> s -> r Source #
Map an indexed optic to a monoid and combine the results.
Note that most indexed optics do not use their output index:
withIxfold1 :: Semigroup r => AIxfold1 r i s a -> (i -> a -> r) -> i -> s -> r Source #
Map an indexed optic to a semigroup and combine the results.
>>>:t flip withIxfold1 Map.singletonflip withIxfold1 Map.singleton :: Ord i => AIxfold1 (Map i a) i s a -> i -> s -> Map i a
withIxfold1::Semigroupr =>AIxfold1r s a -> (i -> a -> r) -> i -> s -> r
Operators
(^..) :: s -> AFold (Endo [a]) s a -> [a] infixl 8 Source #
Infix alias of lists.
toListxs ≡ xs^..folding(^..) ≡fliplists
>>>[[1,2], [3 :: Int64]] ^.. id[[[1,2],[3]]]>>>[[1,2], [3 :: Int64]] ^.. traversed[[1,2],[3]]>>>[[1,2], [3 :: Int64]] ^.. traversed . traversed[1,2,3]
>>>(1,2) ^.. bitraversed[1,2]
(^..) :: s ->Views a -> a :: s ->Folds a -> a :: s ->Lens's a -> a :: s ->Iso's a -> a :: s ->Traversal's a -> a :: s ->Prism's a -> a :: s ->Affine's a -> [a]
ilistsFrom :: AIxfold (Endo [(i, a)]) i s a -> i -> s -> [(i, a)] Source #
Collect the foci of an indexed optic into a list of index-value pairs.
This is only for use with the few indexed optics that don't ignore their
output index. You most likely want to use ilists.
(^%%) :: (Additive - Monoid) i => s -> AIxfold (Endo [(i, a)]) i s a -> [(i, a)] infixl 8 Source #
Infix version of ilists.
nelists :: AFold1 (Nedl a) s a -> s -> NonEmpty a Source #
Extract a NonEmpty of the foci of an optic.
>>>nelists bitraversed1 ('h' :| "ello", 'w' :| "orld")('h' :| "ello") :| ['w' :| "orld"]
ifolds :: (Additive - Monoid) i => Monoid a => AIxfold (Additive i, a) i s a -> s -> (i, a) Source #
TODO: Document
foldsa :: Applicative f => Monoid (f a) => AFold (f a) s a -> s -> f a Source #
TODO: Document
foldsa :: Fold s a -> s -> [a] foldsa :: Applicative f => Setter s t a b -> s -> f a
foldsr :: AFold (Endo r) s a -> (a -> r -> r) -> r -> s -> r Source #
Right fold over an optic.
>>>foldsr folded (+) 0 [1..5::Int64]15
ifoldsr :: (Additive - Monoid) i => AIxfold (Endo r) i s a -> (i -> a -> r -> r) -> r -> s -> r Source #
ifoldsrFrom :: AIxfold (Endo r) i s a -> (i -> a -> r -> r) -> i -> r -> s -> r Source #
Indexed right fold over an indexed optic, using an initial index value.
This is only for use with the few indexed optics that don't ignore their
output index. You most likely want to use ifoldsr.
foldsl :: AFold ((Endo - Dual) r) s a -> (r -> a -> r) -> r -> s -> r Source #
Left fold over an optic.
ifoldsl :: (Additive - Monoid) i => AIxfold ((Endo - Dual) r) i s a -> (i -> r -> a -> r) -> r -> s -> r Source #
ifoldslFrom :: AIxfold ((Endo - Dual) r) i s a -> (i -> r -> a -> r) -> i -> r -> s -> r Source #
Left fold over an indexed optic, using an initial index value.
This is only for use with the few indexed optics that don't ignore their
output index. You most likely want to use ifoldsl.
foldsr' :: AFold ((Endo - Dual) (Endo r)) s a -> (a -> r -> r) -> r -> s -> r Source #
Strict right fold over an optic.
ifoldsr' :: (Additive - Monoid) i => AIxfold ((Endo - Dual) (r -> r)) i s a -> (i -> a -> r -> r) -> r -> s -> r Source #
foldsl' :: AFold ((Endo - Endo) r) s a -> (r -> a -> r) -> r -> s -> r Source #
Strict left fold over an optic.
foldl'≡foldsl'folding
foldsl'::Iso's a -> (c -> a -> c) -> c -> s -> cfoldsl'::Lens's a -> (c -> a -> c) -> c -> s -> cfoldsl'::Views a -> (c -> a -> c) -> c -> s -> cfoldsl'::Folds a -> (c -> a -> c) -> c -> s -> cfoldsl'::Traversal's a -> (c -> a -> c) -> c -> s -> cfoldsl'::Affine's a -> (c -> a -> c) -> c -> s -> c
ifoldsl' :: (Additive - Monoid) i => AIxfold (Endo (r -> r)) i s a -> (i -> r -> a -> r) -> r -> s -> r Source #
foldsrM :: Monad m => AFold ((Endo - Dual) (r -> m r)) s a -> (a -> r -> m r) -> r -> s -> m r Source #
Monadic right fold over an optic.
ifoldsrM :: (Additive - Monoid) i => Monad m => AIxfold ((Endo - Dual) (r -> m r)) i s a -> (i -> a -> r -> m r) -> r -> s -> m r Source #
foldslM :: Monad m => AFold (Endo (r -> m r)) s a -> (r -> a -> m r) -> r -> s -> m r Source #
Monadic left fold over an optic.
ifoldslM :: (Additive - Monoid) i => Monad m => AIxfold (Endo (r -> m r)) i s a -> (i -> r -> a -> m r) -> r -> s -> m r Source #
traverses_ :: Applicative f => AFold (Endo (f ())) s a -> (a -> f r) -> s -> f () Source #
Applicative fold over an optic.
>>>traverses_ both putStrLn ("hello","world")hello world
traverse_≡traverses_folded
itraverses_ :: (Additive - Monoid) i => Applicative f => AIxfold (Endo (f ())) i s a -> (i -> a -> f r) -> s -> f () Source #
Applicative fold over an indexed optic.