-- Portability : non-portable
--
-- Generic programming in Haskell;
--- see <http://www.cs.vu.nl/boilerplate>.
+-- see <http://www.cs.vu.nl/boilerplate/>.
--
-----------------------------------------------------------------------------
type GenericT = forall a. Data a => a -> a
--- | Generic queries of type "r",
+-- | Generic queries of type \"r\",
-- i.e., take any \"a\" and return an \"r\"
--
type GenericQ r = forall a. Data a => a -> r
-- | Make a generic monadic transformation for MonadPlus;
--- use "const mzero" (i.e., failure) instead of return as default.
+-- use \"const mzero\" (i.e., failure) instead of return as default.
--
mkF :: (Typeable a, Typeable b, Typeable (m a), Typeable (m b), MonadPlus m)
=> (b -> m b) -> a -> m a
gtypecount f = gcount (False `mkQ` (const True . f))
--- | Generic show: an alternative to "deriving Show"
+-- | Generic show: an alternative to \"deriving Show\"
gshow :: Data a => a -> String
-- This is a prefix-show using surrounding "(" and ")",
) `extQ` (show :: String -> String)
--- | Generic equality: an alternative to "deriving Eq"
+-- | Generic equality: an alternative to \"deriving Eq\"
geq :: Data a => a -> a -> Bool
{-
unGRead (GRead x) = x
--- | Generic read: an alternative to "deriving Read"
+-- | Generic read: an alternative to \"deriving Read\"
gread :: GenericB Maybe String
{-