extra-0.8: Extra functions I use.

Safe HaskellSafe-Inferred




Extra functions for working with pairs and triples. Some of these functions are available in the Control.Arrow module, but here are available specialised to pairs. Some operations work on triples.



module Data.Tuple

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 components 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.