Funx.Monoid.Optics.TraversalCombine (funx v0.8.4)

View Source

The 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 a TraversalCombine monoid.
  • unwrap/1: Extracts the traversal from a TraversalCombine wrapper.

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

t()

@type t() :: %Funx.Monoid.Optics.TraversalCombine{
  traversal: Funx.Optics.Traversal.t()
}

Functions

new(traversal)

@spec new(Funx.Optics.Traversal.t()) :: t()

Wraps a traversal in a TraversalCombine monoid.

unwrap(traversal_combine)

@spec unwrap(t()) :: Funx.Optics.Traversal.t()

Extracts the traversal from a TraversalCombine wrapper.