Data.FoldableWithIndex
#FoldableWithIndex
class FoldableWithIndex :: Type -> (Type -> Type) -> Constraint
class (Foldable f) <= FoldableWithIndex i f | f -> i where
A Foldable
with an additional index.
A FoldableWithIndex
instance must be compatible with its Foldable
instance
foldr f = foldrWithIndex (const f)
foldl f = foldlWithIndex (const f)
foldMap f = foldMapWithIndex (const f)
Default implementations are provided by the following functions:
foldrWithIndexDefault
foldlWithIndexDefault
foldMapWithIndexDefaultR
foldMapWithIndexDefaultL
Note: some combinations of the default implementations are unsafe to use together - causing a non-terminating mutually recursive cycle. These combinations are documented per function.
Members
foldrWithIndex :: forall a b. (i -> a -> b -> b) -> b -> f a -> b
foldlWithIndex :: forall a b. (i -> b -> a -> b) -> b -> f a -> b
foldMapWithIndex :: forall a m. Monoid m => (i -> a -> m) -> f a -> m
Instances
FoldableWithIndex Int Array
FoldableWithIndex Unit Maybe
FoldableWithIndex Unit First
FoldableWithIndex Unit Last
FoldableWithIndex Unit Additive
FoldableWithIndex Unit Dual
FoldableWithIndex Unit Disj
FoldableWithIndex Unit Conj
FoldableWithIndex Unit Multiplicative
FoldableWithIndex Unit (Either a)
FoldableWithIndex Unit (Tuple a)
FoldableWithIndex Unit Identity
FoldableWithIndex Void (Const a)
(FoldableWithIndex a f, FoldableWithIndex b g) => FoldableWithIndex (Either a b) (Product f g)
(FoldableWithIndex a f, FoldableWithIndex b g) => FoldableWithIndex (Either a b) (Coproduct f g)
(FoldableWithIndex a f, FoldableWithIndex b g) => FoldableWithIndex (Tuple a b) (Compose f g)
(FoldableWithIndex a f) => FoldableWithIndex a (App f)
#foldrWithIndexDefault
foldrWithIndexDefault :: forall i f a b. FoldableWithIndex i f => (i -> a -> b -> b) -> b -> f a -> b
A default implementation of foldrWithIndex
using foldMapWithIndex
.
Note: when defining a FoldableWithIndex
instance, this function is
unsafe to use in combination with foldMapWithIndexDefaultR
.
#foldlWithIndexDefault
foldlWithIndexDefault :: forall i f a b. FoldableWithIndex i f => (i -> b -> a -> b) -> b -> f a -> b
A default implementation of foldlWithIndex
using foldMapWithIndex
.
Note: when defining a FoldableWithIndex
instance, this function is
unsafe to use in combination with foldMapWithIndexDefaultL
.
#foldMapWithIndexDefaultR
foldMapWithIndexDefaultR :: forall i f a m. FoldableWithIndex i f => Monoid m => (i -> a -> m) -> f a -> m
A default implementation of foldMapWithIndex
using foldrWithIndex
.
Note: when defining a FoldableWithIndex
instance, this function is
unsafe to use in combination with foldrWithIndexDefault
.
#foldMapWithIndexDefaultL
foldMapWithIndexDefaultL :: forall i f a m. FoldableWithIndex i f => Monoid m => (i -> a -> m) -> f a -> m
A default implementation of foldMapWithIndex
using foldlWithIndex
.
Note: when defining a FoldableWithIndex
instance, this function is
unsafe to use in combination with foldlWithIndexDefault
.
#foldWithIndexM
foldWithIndexM :: forall i f m a b. FoldableWithIndex i f => Monad m => (i -> a -> b -> m a) -> a -> f b -> m a
Similar to 'foldlWithIndex', but the result is encapsulated in a monad.
Note: this function is not generally stack-safe, e.g., for monads which
build up thunks a la Eff
.
#traverseWithIndex_
traverseWithIndex_ :: forall i a b f m. Applicative m => FoldableWithIndex i f => (i -> a -> m b) -> f a -> m Unit
Traverse a data structure with access to the index, performing some
effects encoded by an Applicative
functor at each value, ignoring the
final result.
For example:
> traverseWithIndex_ (curry logShow) ["a", "b", "c"]
(Tuple 0 "a")
(Tuple 1 "b")
(Tuple 2 "c")
#forWithIndex_
forWithIndex_ :: forall i a b f m. Applicative m => FoldableWithIndex i f => f a -> (i -> a -> m b) -> m Unit
A version of traverseWithIndex_
with its arguments flipped.
This can be useful when running an action written using do notation for every element in a data structure:
For example:
forWithIndex_ ["a", "b", "c"] \i x -> do
logShow i
log x
#surroundMapWithIndex
surroundMapWithIndex :: forall i f a m. FoldableWithIndex i f => Semigroup m => m -> (i -> a -> m) -> f a -> m
foldMapWithIndex
but with each element surrounded by some fixed value.
For example:
> surroundMapWithIndex "*" (\i x -> show i <> x) []
= "*"
> surroundMapWithIndex "*" (\i x -> show i <> x) ["a"]
= "*0a*"
> surroundMapWithIndex "*" (\i x -> show i <> x) ["a", "b"]
= "*0a*1b*"
> surroundMapWithIndex "*" (\i x -> show i <> x) ["a", "b", "c"]
= "*0a*1b*2c*"
#allWithIndex
allWithIndex :: forall i a b f. FoldableWithIndex i f => HeytingAlgebra b => (i -> a -> b) -> f a -> b
allWithIndex f
is the same as and <<< mapWithIndex f
; map a function over the
structure, and then get the conjunction of the results.
#anyWithIndex
anyWithIndex :: forall i a b f. FoldableWithIndex i f => HeytingAlgebra b => (i -> a -> b) -> f a -> b
anyWithIndex f
is the same as or <<< mapWithIndex f
; map a function over the
structure, and then get the disjunction of the results.
#findWithIndex
findWithIndex :: forall i a f. FoldableWithIndex i f => (i -> a -> Boolean) -> f a -> Maybe { index :: i, value :: a }
Try to find an element in a data structure which satisfies a predicate with access to the index.
#findMapWithIndex
findMapWithIndex :: forall i a b f. FoldableWithIndex i f => (i -> a -> Maybe b) -> f a -> Maybe b
Try to find an element in a data structure which satisfies a predicate mapping with access to the index.
#foldrDefault
foldrDefault :: forall i f a b. FoldableWithIndex i f => (a -> b -> b) -> b -> f a -> b
A default implementation of foldr
using foldrWithIndex
#foldlDefault
foldlDefault :: forall i f a b. FoldableWithIndex i f => (b -> a -> b) -> b -> f a -> b
A default implementation of foldl
using foldlWithIndex
#foldMapDefault
foldMapDefault :: forall i f a m. FoldableWithIndex i f => Monoid m => (a -> m) -> f a -> m
A default implementation of foldMap
using foldMapWithIndex
Modules
- Attribute
- Control.Alt
- Control.Alternative
- Control.Applicative
- Control.Apply
- Control.Biapplicative
- Control.Biapply
- Control.Bind
- Control.Category
- Control.Comonad
- Control.Comonad.Cofree
- Control.Comonad.Cofree.Class
- Control.Comonad.Env
- Control.Comonad.Env.Class
- Control.Comonad.Env.Trans
- Control.Comonad.Store
- Control.Comonad.Store.Class
- Control.Comonad.Store.Trans
- Control.Comonad.Traced
- Control.Comonad.Traced.Class
- Control.Comonad.Traced.Trans
- Control.Comonad.Trans.Class
- Control.Extend
- Control.Lazy
- Control.Monad
- Control.Monad.Cont
- Control.Monad.Cont.Class
- Control.Monad.Cont.Trans
- Control.Monad.Error.Class
- Control.Monad.Except
- Control.Monad.Except.Trans
- Control.Monad.Free
- Control.Monad.Free.Class
- Control.Monad.Gen
- Control.Monad.Gen.Class
- Control.Monad.Gen.Common
- Control.Monad.Identity.Trans
- Control.Monad.List.Trans
- Control.Monad.Maybe.Trans
- Control.Monad.RWS
- Control.Monad.RWS.Trans
- Control.Monad.Reader
- Control.Monad.Reader.Class
- Control.Monad.Reader.Trans
- Control.Monad.Rec.Class
- Control.Monad.State
- Control.Monad.State.Class
- Control.Monad.State.Trans
- Control.Monad.Trampoline
- Control.Monad.Trans.Class
- Control.Monad.Writer
- Control.Monad.Writer.Class
- Control.Monad.Writer.Trans
- Control.MonadPlus
- Control.MonadZero
- Control.Parallel
- Control.Parallel.Class
- Control.Plus
- Control.Semigroupoid
- ConvertableOptions
- Cowboy.Static
- Data.Align
- Data.Array
- Data.Array.NonEmpty
- Data.Array.NonEmpty.Internal
- Data.Array.Partial
- Data.Bifoldable
- Data.Bifunctor
- Data.Bifunctor.Join
- Data.Bitraversable
- Data.Boolean
- Data.BooleanAlgebra
- Data.Bounded
- Data.Bounded.Generic
- Data.CatList
- Data.CatQueue
- Data.Char
- Data.Char.Gen
- Data.CodePoint.Unicode
- Data.CodePoint.Unicode.Internal
- Data.CodePoint.Unicode.Internal.Casing
- Data.CommutativeRing
- Data.Compactable
- Data.Comparison
- Data.Const
- Data.Coyoneda
- Data.Date
- Data.Date.Component
- Data.Date.Component.Gen
- Data.Date.Gen
- Data.DateTime
- Data.DateTime.Gen
- Data.DateTime.Instant
- Data.DateTime.Parsing
- Data.Decidable
- Data.Decide
- Data.Distributive
- Data.Divide
- Data.Divisible
- Data.DivisionRing
- Data.Either
- Data.Either.Inject
- Data.Either.Nested
- Data.Enum
- Data.Enum.Gen
- Data.Enum.Generic
- Data.Eq
- Data.Eq.Generic
- Data.Equivalence
- Data.EuclideanRing
- Data.Exists
- Data.Field
- Data.Filterable
- Data.FingerTree
- Data.FingerTree.Digit
- Data.Foldable
- Data.FoldableWithIndex
- Data.Formatter.DateTime
- Data.Formatter.Internal
- Data.Formatter.Interval
- Data.Formatter.Number
- Data.Formatter.Parser.Interval
- Data.Formatter.Parser.Number
- Data.Formatter.Parser.Utils
- Data.Function
- Data.Function.Uncurried
- Data.Functor
- Data.Functor.App
- Data.Functor.Clown
- Data.Functor.Compose
- Data.Functor.Contravariant
- Data.Functor.Coproduct
- Data.Functor.Coproduct.Inject
- Data.Functor.Coproduct.Nested
- Data.Functor.Costar
- Data.Functor.Flip
- Data.Functor.Invariant
- Data.Functor.Joker
- Data.Functor.Product
- Data.Functor.Product.Nested
- Data.Functor.Product2
- Data.Functor.Variant
- Data.FunctorWithIndex
- Data.Generic.Rep
- Data.Graph
- Data.HeytingAlgebra
- Data.HeytingAlgebra.Generic
- Data.Identity
- Data.Int
- Data.Int.Bits
- Data.Interval
- Data.Interval.Duration
- Data.Interval.Duration.Iso
- Data.Lazy
- Data.Lens
- Data.Lens.AffineTraversal
- Data.Lens.At
- Data.Lens.Common
- Data.Lens.Fold
- Data.Lens.Fold.Partial
- Data.Lens.Getter
- Data.Lens.Grate
- Data.Lens.Index
- Data.Lens.Indexed
- Data.Lens.Internal.Bazaar
- Data.Lens.Internal.Exchange
- Data.Lens.Internal.Focusing
- Data.Lens.Internal.Forget
- Data.Lens.Internal.Grating
- Data.Lens.Internal.Indexed
- Data.Lens.Internal.Market
- Data.Lens.Internal.Re
- Data.Lens.Internal.Shop
- Data.Lens.Internal.Stall
- Data.Lens.Internal.Tagged
- Data.Lens.Internal.Wander
- Data.Lens.Internal.Zipping
- Data.Lens.Iso
- Data.Lens.Iso.Newtype
- Data.Lens.Lens
- Data.Lens.Lens.Product
- Data.Lens.Lens.Tuple
- Data.Lens.Lens.Unit
- Data.Lens.Lens.Void
- Data.Lens.Prism
- Data.Lens.Prism.Coproduct
- Data.Lens.Prism.Either
- Data.Lens.Prism.Maybe
- Data.Lens.Record
- Data.Lens.Setter
- Data.Lens.Traversal
- Data.Lens.Types
- Data.Lens.Zoom
- Data.List
- Data.List.Internal
- Data.List.Lazy
- Data.List.Lazy.NonEmpty
- Data.List.Lazy.Types
- Data.List.NonEmpty
- Data.List.Partial
- Data.List.Types
- Data.List.ZipList
- Data.Map
- Data.Map.Gen
- Data.Map.Internal
- Data.Maybe
- Data.Maybe.First
- Data.Maybe.Last
- Data.MediaType
- Data.MediaType.Common
- Data.Monoid
- Data.Monoid.Additive
- Data.Monoid.Alternate
- Data.Monoid.Conj
- Data.Monoid.Disj
- Data.Monoid.Dual
- Data.Monoid.Endo
- Data.Monoid.Generic
- Data.Monoid.Multiplicative
- Data.NaturalTransformation
- Data.Newtype
- Data.NonEmpty
- Data.Nullable
- Data.Number
- Data.Number.Approximate
- Data.Number.Format
- Data.Op
- Data.Ord
- Data.Ord.Down
- Data.Ord.Generic
- Data.Ord.Max
- Data.Ord.Min
- Data.Ordering
- Data.Predicate
- Data.Profunctor
- Data.Profunctor.Choice
- Data.Profunctor.Closed
- Data.Profunctor.Cochoice
- Data.Profunctor.Costrong
- Data.Profunctor.Join
- Data.Profunctor.Split
- Data.Profunctor.Star
- Data.Profunctor.Strong
- Data.Ratio
- Data.Rational
- Data.Ring
- Data.Ring.Generic
- Data.Semigroup
- Data.Semigroup.First
- Data.Semigroup.Foldable
- Data.Semigroup.Generic
- Data.Semigroup.Last
- Data.Semigroup.Traversable
- Data.Semiring
- Data.Semiring.Free
- Data.Semiring.Generic
- Data.Sequence
- Data.Sequence.Internal
- Data.Sequence.NonEmpty
- Data.Sequence.Ordered
- Data.Set
- Data.Set.NonEmpty
- Data.Show
- Data.Show.Generic
- Data.String
- Data.String.CaseInsensitive
- Data.String.CodePoints
- Data.String.CodeUnits
- Data.String.Common
- Data.String.Gen
- Data.String.NonEmpty
- Data.String.NonEmpty.CaseInsensitive
- Data.String.NonEmpty.CodePoints
- Data.String.NonEmpty.CodeUnits
- Data.String.NonEmpty.Internal
- Data.String.Pattern
- Data.String.Regex
- Data.String.Regex.Flags
- Data.String.Regex.Unsafe
- Data.String.Unicode
- Data.String.Unsafe
- Data.Symbol
- Data.These
- Data.These.Gen
- Data.Time
- Data.Time.Component
- Data.Time.Component.Gen
- Data.Time.Duration
- Data.Time.Duration.Gen
- Data.Time.Gen
- Data.Traversable
- Data.Traversable.Accum
- Data.Traversable.Accum.Internal
- Data.TraversableWithIndex
- Data.Tuple
- Data.Tuple.Nested
- Data.Undefinable
- Data.Unfoldable
- Data.Unfoldable1
- Data.Unit
- Data.Validation.Semigroup
- Data.Validation.Semiring
- Data.Variant
- Data.Variant.Internal
- Data.Void
- Data.Witherable
- Data.Yoneda
- Debug
- Effect
- Effect.Class
- Effect.Class.Console
- Effect.Console
- Effect.Exception
- Effect.Exception.Unsafe
- Effect.Random
- Effect.Ref
- Effect.Uncurried
- Effect.Unsafe
- Erl.Atom
- Erl.Atom.Symbol
- Erl.Cowboy
- Erl.Cowboy.Handler
- Erl.Cowboy.Handlers.Common
- Erl.Cowboy.Handlers.Loop
- Erl.Cowboy.Handlers.Rest
- Erl.Cowboy.Handlers.Simple
- Erl.Cowboy.Handlers.WebSocket
- Erl.Cowboy.Req
- Erl.Cowboy.Req.Monad
- Erl.Cowboy.Routes
- Erl.Data.Binary
- Erl.Data.Binary.IOData
- Erl.Data.Binary.IOList
- Erl.Data.Binary.Type
- Erl.Data.Binary.UTF16
- Erl.Data.Binary.UTF32
- Erl.Data.Binary.UTF8
- Erl.Data.Bitstring
- Erl.Data.Bitstring.Type
- Erl.Data.Jsone
- Erl.Data.Jsone.Decode
- Erl.Data.Jsone.Decode.Class
- Erl.Data.Jsone.Decode.Combinators
- Erl.Data.Jsone.Encode
- Erl.Data.Jsone.Encode.Class
- Erl.Data.Jsone.Encode.Combinators
- Erl.Data.Jsone.Parser
- Erl.Data.Jsone.Printer
- Erl.Data.List
- Erl.Data.List.NonEmpty
- Erl.Data.List.Types
- Erl.Data.Map
- Erl.Data.Queue
- Erl.Data.Queue.Types
- Erl.Data.Tuple
- Erl.File
- Erl.FileLib
- Erl.Gun
- Erl.Gun.WsGun
- Erl.Kernel.Application
- Erl.Kernel.Erlang
- Erl.Kernel.Ets
- Erl.Kernel.Exceptions
- Erl.Kernel.File
- Erl.Kernel.Inet
- Erl.Kernel.Os
- Erl.Kernel.Tcp
- Erl.Kernel.Time
- Erl.Kernel.Udp
- Erl.ModuleName
- Erl.ModuleName.Symbol
- Erl.Otp.Types.Crypto
- Erl.Otp.Types.PublicKey
- Erl.Otp.Types.Stdlib
- Erl.Process
- Erl.Process.Raw
- Erl.Ranch
- Erl.Ranch.Transport
- Erl.Ssl
- Erl.StandardResult
- Erl.Test.EUnit
- Erl.Tests.EUnit.Discovery
- Erl.Types
- Erl.Untagged.Union
- ExpectInferred
- Foreign
- Foreign.Index
- Foreign.Keys
- Heterogeneous.Folding
- Heterogeneous.Mapping
- JSURI
- Lager
- Logger
- Math
- NativeRef
- OpenTelemetry
- OpenTelemetry.Metrics
- OpenTelemetry.Metrics.Counter
- OpenTelemetry.Metrics.Meter
- OpenTelemetry.Metrics.SumObserver
- OpenTelemetry.Metrics.UpDownCounter
- OpenTelemetry.Metrics.UpDownSumObserver
- OpenTelemetry.Metrics.ValueObserver
- OpenTelemetry.Metrics.ValueRecorder
- OpenTelemetry.Tracing
- OpenTelemetry.Tracing.Baggage
- OpenTelemetry.Tracing.Ctx
- OpenTelemetry.Tracing.Propagator.TextMap
- OpenTelemetry.Tracing.Span
- OpenTelemetry.Tracing.Tracer
- PSCI.Support
- Partial
- Partial.Unsafe
- Pathy
- Pathy.Gen
- Pathy.Name
- Pathy.Parser
- Pathy.Path
- Pathy.Phantom
- Pathy.Printer
- Pathy.Sandboxed
- Pinto
- Pinto.App
- Pinto.GenServer
- Pinto.GenStatem
- Pinto.MessageRouting
- Pinto.ModuleNames
- Pinto.Monitor
- Pinto.Supervisor
- Pinto.Supervisor.SimpleOneForOne
- Pinto.Timer
- Pinto.Types
- Prelude
- Prim
- Prim.Boolean
- Prim.Coerce
- Prim.Int
- Prim.Ordering
- Prim.Row
- Prim.RowList
- Prim.Symbol
- Prim.TypeError
- PureScript.Metadata
- Random.LCG
- Record
- Record.Builder
- Record.Prefix
- Record.Unsafe
- Record.Unsafe.Union
- Routing.Duplex
- Routing.Duplex.Generic
- Routing.Duplex.Generic.Syntax
- Routing.Duplex.Parser
- Routing.Duplex.Printer
- Routing.Duplex.Types
- RoutingDuplexMiddleware
- Safe.Coerce
- Simple.JSON
- Simple.JSON.Generics
- Simple.JSON.Generics.EnumSumRep
- Simple.JSON.Generics.TaggedSumRep
- Simple.JSON.Generics.UntaggedProductRep
- Simple.JSON.Generics.UntaggedSumRep
- SimpleBus
- Stetson
- Stetson.HandlerProxy
- Stetson.Loop
- Stetson.ModuleNames
- Stetson.Rest
- Stetson.Routing
- Stetson.Types
- Stetson.Utils
- Stetson.WebSocket
- Test.Assert
- Test.QuickCheck
- Test.QuickCheck.Arbitrary
- Test.QuickCheck.Gen
- Test.QuickCheck.Laws
- Test.QuickCheck.Laws.Control
- Test.QuickCheck.Laws.Control.Align
- Test.QuickCheck.Laws.Control.Alignable
- Test.QuickCheck.Laws.Control.Alt
- Test.QuickCheck.Laws.Control.Alternative
- Test.QuickCheck.Laws.Control.Applicative
- Test.QuickCheck.Laws.Control.Apply
- Test.QuickCheck.Laws.Control.Bind
- Test.QuickCheck.Laws.Control.Category
- Test.QuickCheck.Laws.Control.Comonad
- Test.QuickCheck.Laws.Control.Crosswalk
- Test.QuickCheck.Laws.Control.Extend
- Test.QuickCheck.Laws.Control.Monad
- Test.QuickCheck.Laws.Control.MonadPlus
- Test.QuickCheck.Laws.Control.MonadZero
- Test.QuickCheck.Laws.Control.Plus
- Test.QuickCheck.Laws.Control.Semigroupoid
- Test.QuickCheck.Laws.Data
- Test.QuickCheck.Laws.Data.BooleanAlgebra
- Test.QuickCheck.Laws.Data.Bounded
- Test.QuickCheck.Laws.Data.BoundedEnum
- Test.QuickCheck.Laws.Data.CommutativeRing
- Test.QuickCheck.Laws.Data.DivisionRing
- Test.QuickCheck.Laws.Data.Eq
- Test.QuickCheck.Laws.Data.EuclideanRing
- Test.QuickCheck.Laws.Data.Field
- Test.QuickCheck.Laws.Data.Foldable
- Test.QuickCheck.Laws.Data.Functor
- Test.QuickCheck.Laws.Data.FunctorWithIndex
- Test.QuickCheck.Laws.Data.HeytingAlgebra
- Test.QuickCheck.Laws.Data.Monoid
- Test.QuickCheck.Laws.Data.Ord
- Test.QuickCheck.Laws.Data.Ring
- Test.QuickCheck.Laws.Data.Semigroup
- Test.QuickCheck.Laws.Data.Semiring
- Text.Parsing.Indent
- Text.Parsing.Parser
- Text.Parsing.Parser.Combinators
- Text.Parsing.Parser.Expr
- Text.Parsing.Parser.Language
- Text.Parsing.Parser.Pos
- Text.Parsing.Parser.String
- Text.Parsing.Parser.Token
- Tracing.Attributes
- Type.Data.Boolean
- Type.Data.Ordering
- Type.Data.Row
- Type.Data.RowList
- Type.Data.Symbol
- Type.Equality
- Type.Function
- Type.Prelude
- Type.Proxy
- Type.Row
- Type.Row.Homogeneous
- Type.RowList
- URI
- URI.AbsoluteURI
- URI.Authority
- URI.Common
- URI.Extra.MultiHostPortPair
- URI.Extra.QueryPairs
- URI.Extra.UserPassInfo
- URI.Fragment
- URI.HierarchicalPart
- URI.Host
- URI.Host.Gen
- URI.Host.IPv4Address
- URI.Host.IPv6Address
- URI.Host.RegName
- URI.HostPortPair
- URI.HostPortPair.Gen
- URI.Path
- URI.Path.Absolute
- URI.Path.NoScheme
- URI.Path.Rootless
- URI.Path.Segment
- URI.Port
- URI.Port.Gen
- URI.Query
- URI.RelativePart
- URI.RelativeRef
- URI.Scheme
- URI.Scheme.Common
- URI.URI
- URI.URIRef
- URI.UserInfo
- Unsafe.Coerce
- Unsafe.Reference