(original) (raw)

{-# LANGUAGE Trustworthy #-} {-# LANGUAGE NoImplicitPrelude #-}

module Data.Tuple ( Solo (..) , fst , snd , curry , uncurry , swap ) where

import GHC.Base ()
import GHC.Tuple (Solo (..))

default ()

fst :: (a,b) -> a fst :: forall a b. (a, b) -> a fst (a x,b _) = a x

snd :: (a,b) -> b snd :: forall a b. (a, b) -> b snd (a _,b y) = b y

curry :: ((a, b) -> c) -> a -> b -> c curry :: forall a b c. ((a, b) -> c) -> a -> b -> c curry (a, b) -> c f a x b y = (a, b) -> c f (a x, b y)

uncurry :: (a -> b -> c) -> ((a, b) -> c) uncurry :: forall a b c. (a -> b -> c) -> (a, b) -> c uncurry a -> b -> c f (a, b) p = a -> b -> c f ((a, b) -> a forall a b. (a, b) -> a fst (a, b) p) ((a, b) -> b forall a b. (a, b) -> b snd (a, b) p)

swap :: (a,b) -> (b,a) swap :: forall a b. (a, b) -> (b, a) swap (a a,b b) = (b b,a a)