Funx.Monoid.Optics.TraversalCombine (funx v0.8.4)
View SourceThe Funx.Monoid.Optics.TraversalCombine module provides a monoid wrapper for parallel traversal combination.
This wrapper allows traversals to be used with generic monoid operations like m_concat/2,
enabling functional aggregation of multiple optics into a single multi-focus traversal.
Wrapping and Unwrapping
new/1: Wraps a traversal in aTraversalCombinemonoid.unwrap/1: Extracts the traversal from aTraversalCombinewrapper.
Monoid Operations (via protocol)
empty/1: Returns the identity traversal (no foci).append/2: Combines two traversals by concatenating their foci.wrap/2: Wraps an optic into a single-focus traversal.
Examples
iex> alias Funx.Monoid.Optics.TraversalCombine
iex> alias Funx.Optics.{Lens, Traversal}
iex> optics = [Lens.key(:name), Lens.key(:age)]
iex> t = Funx.Monoid.Utils.m_concat(%TraversalCombine{}, optics)
iex> Traversal.to_list(%{name: "Alice", age: 30}, t)
["Alice", 30]
Summary
Functions
Wraps a traversal in a TraversalCombine monoid.
Extracts the traversal from a TraversalCombine wrapper.
Types
@type t() :: %Funx.Monoid.Optics.TraversalCombine{ traversal: Funx.Optics.Traversal.t() }
Functions
@spec new(Funx.Optics.Traversal.t()) :: t()
Wraps a traversal in a TraversalCombine monoid.
@spec unwrap(t()) :: Funx.Optics.Traversal.t()
Extracts the traversal from a TraversalCombine wrapper.