# Functions

## first

</>
``pub fn first(pair: #(a, b)) -> a``

Returns the first element in a pair.

## Examples

``````> first(#(1, 2))
1
``````

## map_first

</>
``````pub fn map_first(of pair: #(a, b), with fun: fn(a) -> c) -> #(
c,
b,
)``````

Returns a new pair with the first element having had `with` applied to it.

## Examples

``````> #(1, 2) |> map_first(fn(n) { n * 2 })
#(2, 2)
``````

## map_second

</>
``````pub fn map_second(of pair: #(a, b), with fun: fn(b) -> c) -> #(
a,
c,
)``````

Returns a new pair with the second element having had `with` applied to it.

## Examples

``````> #(1, 2) |> map_second(fn(n) { n * 2 })
#(1, 4)
``````

## new

</>
``pub fn new(first: a, second: b) -> #(a, b)``

Returns a new pair with the given elements. This can also be done using the dedicated syntax instead: `new(1, 2) == #(1, 2)`.

## Examples

``````> new(1, 2)
#(1, 2)
``````

## second

</>
``pub fn second(pair: #(a, b)) -> b``

Returns the second element in a pair.

## Examples

``````> second(#(1, 2))
2
``````

## swap

</>
``pub fn swap(pair: #(a, b)) -> #(b, a)``

Returns a new pair with the elements swapped.

## Examples

``````> swap(#(1, 2))
#(2, 1)
``````