X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=Data%2FGenerics%2FTwins.hs;h=dd2cdec132681c1b5a0d265fbda552b24d4dbc04;hb=7d090bf5e03ee22db47edfd73a0b542b32408704;hp=866c5f331aad2af9d41b22b8e3746e5494b5dec8;hpb=d2ddca1e0024bc2a12fb0e721c9b2eeaaca68c4d;p=ghc-base.git diff --git a/Data/Generics/Twins.hs b/Data/Generics/Twins.hs index 866c5f3..dd2cdec 100644 --- a/Data/Generics/Twins.hs +++ b/Data/Generics/Twins.hs @@ -1,7 +1,7 @@ ----------------------------------------------------------------------------- -- | -- Module : Data.Generics.Twins --- Copyright : (c) The University of Glasgow, CWI 2001--2003 +-- Copyright : (c) The University of Glasgow, CWI 2001--2004 -- License : BSD-style (see the file libraries/base/LICENSE) -- -- Maintainer : libraries@haskell.org @@ -45,6 +45,10 @@ import Prelude import Data.Generics.Basics import Data.Generics.Aliases +#ifdef __GLASGOW_HASKELL__ +import Prelude hiding ( GT ) +#endif + ------------------------------------------------------------------------------ @@ -83,8 +87,7 @@ gfoldlAccum k z a d = unA (gfoldl k' z' d) a -- | A type constructor for accumulation -newtype A a c d = A (a -> (a, c d)) -unA (A f) = f +newtype A a c d = A { unA :: a -> (a, c d) } -- | gmapT with accumulation @@ -99,7 +102,7 @@ gmapAccumT f a d = let (a',d') = gfoldlAccum k z a d z a x = (a, ID x) --- | gmapT with accumulation +-- | gmapM with accumulation gmapAccumM :: (Data d, Monad m) => (forall d. Data d => a -> d -> (a, m d)) -> a -> d -> (a, m d) @@ -179,8 +182,8 @@ gzipWithT f x y = case gmapAccumT perkid funs y of ([], c) -> c _ -> error "gzipWithT" where - perkid a d = (tail a, unGenericT' (head a) d) - funs = gmapQ (\k -> GenericT' (f k)) x + perkid a d = (tail a, unGT (head a) d) + funs = gmapQ (\k -> GT (f k)) x @@ -190,18 +193,18 @@ gzipWithM f x y = case gmapAccumM perkid funs y of ([], c) -> c _ -> error "gzipWithM" where - perkid a d = (tail a, unGenericM' (head a) d) - funs = gmapQ (\k -> GenericM' (f k)) x + perkid a d = (tail a, unGM (head a) d) + funs = gmapQ (\k -> GM (f k)) x --- | Twin map for monadic transformation +-- | Twin map for queries gzipWithQ :: GenericQ (GenericQ r) -> GenericQ (GenericQ [r]) gzipWithQ f x y = case gmapAccumQ perkid funs y of ([], r) -> r _ -> error "gzipWithQ" where - perkid a d = (tail a, unGenericQ' (head a) d) - funs = gmapQ (\k -> GenericQ' (f k)) x + perkid a d = (tail a, unGQ (head a) d) + funs = gmapQ (\k -> GQ (f k)) x