extra-0.4: Extra functions I use.

Safe HaskellSafe-Inferred

Data.Tuple.Extra

Contents

Description

Extra functions for working with tuples. Some of these functions are available in the Control.Arrow module, but here are available specialised to pairs.

Synopsis

Specialised Arrow functions

first :: (a -> a') -> (a, b) -> (a', b)Source

Update the first component of a pair.

 first succ (1,"test") == (2,"test")

second :: (b -> b') -> (a, b) -> (a, b')Source

Update the second component of a pair.

 second reverse (1,"test") == (1,"tset")

(***) :: (a -> a') -> (b -> b') -> (a, b) -> (a', b')Source

Given two functions, apply one to the first component and one to the second. A specialised version of ***.

 (succ *** reverse) (1,"test") == (2,"tset")

(&&&) :: (a -> b) -> (a -> c) -> a -> (b, c)Source

Given two functions, apply both to a single argument to form a pair. A specialised version of &&&.

 (succ &&& pred) 1 == (2,0)

More pair operations

dupe :: a -> (a, a)Source

Duplicate a single value into a pair.

 dupe 12 == (12, 12)

both :: (a -> b) -> (a, a) -> (b, b)Source

Apply a single function to both componenets of a pair.

 both succ (1,2) == (2,3)

Extract from a triple

fst3 :: (a, b, c) -> aSource

Extract the fst of a triple.

snd3 :: (a, b, c) -> bSource

Extract the snd of a triple.

thd3 :: (a, b, c) -> cSource

Extract the final element of a triple.