# View Source Moar.Tuple(Moar v1.19.3)

Tuple-related functions.

# Link to this section Summary

## Functions

Converts a list of tuples to a single tuple whose first element is the first element of each tuple in the list (which must all be the same), and whose second element is a list containing the second elements of each tuple in the list.

Reduces a list of tuples to map where values are consolidated by the first element of each input tuple.

# Link to this section Functions

Link to this function

# from_list!(list)

View Source
`@spec from_list!([any()]) :: {any(), [any()]}`

Converts a list of tuples to a single tuple whose first element is the first element of each tuple in the list (which must all be the same), and whose second element is a list containing the second elements of each tuple in the list.

Raises if the list contains tuples whose first elements are not all the same.

``````iex> Moar.Tuple.from_list!([{:ok, :a}, {:ok, :b}])
{:ok, [:a, :b]}

iex> Moar.Tuple.from_list!([{:a, 1}, {:a, 2}, {:a, 3}])
{:a, [1, 2, 3]}

iex> Moar.Tuple.from_list!([{:a, 1}, {:b, 2}, {:a, 3}])
** (RuntimeError) Expected all items in the list to have have the same first element, but got: [:a, :b]``````
Link to this function

# reduce(list)

View Source
`@spec reduce([any()]) :: map()`

Reduces a list of tuples to map where values are consolidated by the first element of each input tuple.

``````iex> Moar.Tuple.reduce([{:ok, 1}, {:ok, 2}])
%{ok: [1, 2]}

iex> Moar.Tuple.reduce([{:ok, 1}, {:ok, 2}, {:error, 3}, {:ok, 4}])
%{ok: [1, 2, 4], error: }``````