{-| Module : FiniteCategories
Description : Utilitary functions for tuples.
Copyright : Guillaume Sabbagh 2021
License : GPL-3
Maintainer : guillaumesabbagh@protonmail.com
Stability : experimental
Portability : portable
Utilitary functions for tuples.
-}
module Utils.Tuple
(
fst3,
snd3,
trd3,
uncurry3
)
where
-- | Returns the first element of a triplet.
fst3 :: (a,b,c) -> a
fst3 (x,_,_) = x
-- | Returns the second element of a triplet.
snd3 :: (a,b,c) -> b
snd3 (_,x,_) = x
-- | Returns the third element of a triplet.
trd3 :: (a,b,c) -> c
trd3 (_,_,x) = x
-- | Uncurry 3 arguments.
uncurry3 :: (a -> b -> c -> d) -> (a,b,c) -> d
uncurry3 f (a,b,c) = f a b c