Data.Tuple.HT
- mapPair :: (a -> c, b -> d) -> (a, b) -> (c, d)
- mapFst :: (a -> c) -> (a, b) -> (c, b)
- mapSnd :: (b -> c) -> (a, b) -> (a, c)
- swap :: (a, b) -> (b, a)
- forcePair :: (a, b) -> (a, b)
- fst3 :: (a, b, c) -> a
- snd3 :: (a, b, c) -> b
- thd3 :: (a, b, c) -> c
- curry3 :: ((a, b, c) -> d) -> a -> b -> c -> d
- uncurry3 :: (a -> b -> c -> d) -> (a, b, c) -> d
Pair
mapPair :: (a -> c, b -> d) -> (a, b) -> (c, d)
Cf. '(Control.Arrow.***)'.
Apply two functions on corresponding values in a pair,
where the pattern match on the pair constructor is lazy.
This is crucial in recursions such as the of partition
.
mapFst :: (a -> c) -> (a, b) -> (c, b)
Control.Arrow.first
mapSnd :: (b -> c) -> (a, b) -> (a, c)
Control.Arrow.second
swap :: (a, b) -> (b, a)
forcePair :: (a, b) -> (a, b)
Triple
fst3 :: (a, b, c) -> a
snd3 :: (a, b, c) -> b
thd3 :: (a, b, c) -> c
curry3 :: ((a, b, c) -> d) -> a -> b -> c -> d
uncurry3 :: (a -> b -> c -> d) -> (a, b, c) -> d