{-# LANGUAGE Trustworthy #-}{-# LANGUAGE NoImplicitPrelude #-}------------------------------------------------------------------------------- |-- Module : Data.Tuple-- Copyright : (c) The University of Glasgow 2001-- License : BSD-style (see the file libraries/base/LICENSE)---- Maintainer : libraries@haskell.org-- Stability : stable-- Portability : portable---- Functions associated with the tuple data types.-------------------------------------------------------------------------------moduleData.Tuple(Solo (..),fst ,snd ,curry ,uncurry ,swap )whereimportGHC.Base ()-- Note [Depend on GHC.Tuple]importGHC.Tuple (Solo (..))default()-- Double isn't available yet-- ----------------------------------------------------------------------------- Standard functions over tuples-- | Extract the first component of a pair.fst ::(a ,b )->a fst :: forall a b. (a, b) -> a
fst (a
x ,b
_)=a
x -- | Extract the second component of a pair.snd ::(a ,b )->b snd :: forall a b. (a, b) -> b
snd (a
_,b
y )=b
y -- | 'curry' converts an uncurried function to a curried function.---- ==== __Examples__---- >>> curry fst 1 2-- 1curry ::((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' converts a curried function to a function on pairs.---- ==== __Examples__---- >>> uncurry (+) (1,2)-- 3---- >>> uncurry ($) (show, 1)-- "1"---- >>> map (uncurry max) [(1,2), (3,4), (6,8)]-- [2,4,8]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 the components of a pair.swap ::(a ,b )->(b ,a )swap :: forall a b. (a, b) -> (b, a)
swap (a
a ,b
b )=(b
b ,a
a )-- $setup-- >>> import Prelude hiding (curry, uncurry, fst, snd)

AltStyle によって変換されたページ (->オリジナル) /