HORIZON HASKELLDocslts/ghc-9.10.x248f8f02026-10-05Search names, modules, packages, or :: a typeCtrl K

GHC 9.10.3 · lts/ghc-9.10.x · 248f8f0 · 2026-10-05

Modulesyb-0.7.3Haskell98

Data.Generics.Twins

"Scrap your boilerplate" --- Generic programming in Haskell See http://www.cs.uu.nl/wiki/GenericProgramming/SYB. The present module provides support for multi-parameter traversal, which is also demonstrated with generic operations like equality.

  • 13 values
  • Packagesyb-0.7.3
  • Exports13
  • LanguageHaskell98
  • LicenceBSD-3-Clause
  • SourceTwins.hs

Generic folds and maps that also accumulate

7 declarations
valuegfoldlAccum
  1. :: Data d
  2. => forall e r. Data e => a -> c (e -> r) -> e -> (a, c r)
  3. -> forall g. a -> g -> (a, c g)
  4. -> a
  5. -> d
  6. -> (a, c d)
#

gfoldl with accumulation

valuegmapAccumT
  1. :: Data d
  2. => forall e. Data e => a -> e -> (a, e)
  3. -> a
  4. -> d
  5. -> (a, d)
#

gmapT with accumulation

valuegmapAccumM
  1. :: (Data d, Monad m)
  2. => forall e. Data e => a -> e -> (a, m e)
  3. -> a
  4. -> d
  5. -> (a, m d)
#

gmapM with accumulation

valuegmapAccumQl
  1. :: Data d
  2. => r -> r' -> r
  3. -> r
  4. -> forall e. Data e => a -> e -> (a, r')
  5. -> a
  6. -> d
  7. -> (a, r)
#

gmapQl with accumulation

valuegmapAccumQr
  1. :: Data d
  2. => r' -> r -> r
  3. -> r
  4. -> forall e. Data e => a -> e -> (a, r')
  5. -> a
  6. -> d
  7. -> (a, r)
#

gmapQr with accumulation

valuegmapAccumQ
  1. :: Data d
  2. => forall e. Data e => a -> e -> (a, q)
  3. -> a
  4. -> d
  5. -> (a, [q])
#

gmapQ with accumulation

Mapping combinators for twin traversal

3 declarations

Typical twin traversals

3 declarations
valuegeq :: Data a => a -> a -> Bool
#

Generic equality: an alternative to "deriving Eq"