X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=Data%2FTuple.hs;h=a1495854a5982aa2ae141848a4de544de871bc83;hb=c926c49d6a535729214d31815a748520561191a6;hp=735a12ae2728c7b69e55a7151f836b0f918b228f;hpb=746ef6a7fd71bb1e9ebe3cd107c5f9f79f3b7a68;p=ghc-base.git diff --git a/Data/Tuple.hs b/Data/Tuple.hs index 735a12a..a149585 100644 --- a/Data/Tuple.hs +++ b/Data/Tuple.hs @@ -1,9 +1,9 @@ -{-# OPTIONS -fno-implicit-prelude #-} +{-# OPTIONS_GHC -fno-implicit-prelude #-} ----------------------------------------------------------------------------- -- | -- Module : Data.Tuple -- Copyright : (c) The University of Glasgow 2001 --- License : BSD-style (see the file libraries/core/LICENSE) +-- License : BSD-style (see the file libraries/base/LICENSE) -- -- Maintainer : libraries@haskell.org -- Stability : experimental @@ -13,21 +13,60 @@ -- ----------------------------------------------------------------------------- -module Data.Tuple ( - module Data.Tuple - -- tuples 1..37, - -- fst :: (a,b) -> a - -- snd :: (a,b) -> a - -- curry :: ((a, b) -> c) -> a -> b -> c - -- uncurry :: (a -> b -> c) -> ((a, b) -> c) - ) where +module Data.Tuple + ( fst -- :: (a,b) -> a + , snd -- :: (a,b) -> a + , curry -- :: ((a, b) -> c) -> a -> b -> c + , uncurry -- :: (a -> b -> c) -> ((a, b) -> c) +#ifdef __NHC__ + , (,)(..) + , (,,)(..) + , (,,,)(..) + , (,,,,)(..) + , (,,,,,)(..) + , (,,,,,,)(..) + , (,,,,,,,)(..) + , (,,,,,,,,)(..) + , (,,,,,,,,,)(..) + , (,,,,,,,,,,)(..) + , (,,,,,,,,,,,)(..) + , (,,,,,,,,,,,,)(..) + , (,,,,,,,,,,,,,)(..) + , (,,,,,,,,,,,,,,)(..) +#endif + ) + where #ifdef __GLASGOW_HASKELL__ import GHC.Base +#endif /* __GLASGOW_HASKELL__ */ -default () -- Double isn't available yet +#ifdef __NHC__ +import Prelude +import Prelude + ( (,)(..) + , (,,)(..) + , (,,,)(..) + , (,,,,)(..) + , (,,,,,)(..) + , (,,,,,,)(..) + , (,,,,,,,)(..) + , (,,,,,,,,)(..) + , (,,,,,,,,,)(..) + , (,,,,,,,,,,)(..) + , (,,,,,,,,,,,)(..) + , (,,,,,,,,,,,,)(..) + , (,,,,,,,,,,,,,)(..) + , (,,,,,,,,,,,,,,)(..) + -- nhc98's prelude only supplies tuple instances up to size 15 + , fst, snd + , curry, uncurry + ) #endif +default () -- Double isn't available yet + +#ifdef __GLASGOW_HASKELL__ data (,) a b = (,) a b deriving (Eq, Ord) data (,,) a b c = (,,) a b c deriving (Eq, Ord) data (,,,) a b c d = (,,,) a b c d deriving (Eq, Ord) @@ -213,21 +252,25 @@ data (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, data (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ t_ u_ v_ w_ x_ y_ z_ a__ b__ c__ d__ e__ f__ g__ h__ i__ j__ k__ l__ m__ n__ o__ p__ q__ r__ s__ t__ u__ v__ w__ x__ y__ z__ a___ b___ c___ d___ e___ f___ g___ h___ i___ j___ k___ l___ m___ n___ o___ p___ q___ r___ s___ t___ u___ v___ = (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ t_ u_ v_ w_ x_ y_ z_ a__ b__ c__ d__ e__ f__ g__ h__ i__ j__ k__ l__ m__ n__ o__ p__ q__ r__ s__ t__ u__ v__ w__ x__ y__ z__ a___ b___ c___ d___ e___ f___ g___ h___ i___ j___ k___ l___ m___ n___ o___ p___ q___ r___ s___ t___ u___ v___ -} +#endif /* __GLASGOW_HASKELL__ */ -- --------------------------------------------------------------------------- -- Standard functions over tuples +#if !defined(__HUGS__) && !defined(__NHC__) +-- | Extract the first component of a pair. fst :: (a,b) -> a fst (x,_) = x +-- | Extract the second component of a pair. snd :: (a,b) -> b snd (_,y) = y --- curry converts an uncurried function to a curried function; --- uncurry converts a curried function to a function on pairs. +-- | 'curry' converts an uncurried function to a curried function. curry :: ((a, b) -> c) -> a -> b -> c curry f x y = f (x, y) +-- | 'uncurry' converts a curried function to a function on pairs. uncurry :: (a -> b -> c) -> ((a, b) -> c) uncurry f p = f (fst p) (snd p) - +#endif /* neither __HUGS__ nor __NHC__ */