[project @ 2004-07-26 17:22:41 by ross]
[ghc-base.git] / Data / Tuple.hs
index 88d2c67..3fb4074 100644 (file)
 --
 -----------------------------------------------------------------------------
 
-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)
-  ) 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__ */
+
+#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)
@@ -215,18 +257,20 @@ data (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
 -- ---------------------------------------------------------------------------
 -- Standard functions over tuples
 
-#ifndef __HUGS__
+#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  /* __HUGS__ */
+#endif  /* neither __HUGS__ nor __NHC__ */