-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Utilities for accessing and manipulating fields of records -- -- Automate generation of Accessor's of the -- data-accessor package by Template Haskell functions. @package data-accessor-template @version 0.2 -- | This module provides an automatic Template Haskell routine to scour -- data type definitions and generate accessor objects for them -- automatically. module Data.Accessor.Template -- | nameDeriveAccessors n f where n is the name of a -- data type declared with data and f is a function -- from names of fields in that data type to the name of the -- corresponding accessor. If f returns Nothing, then -- no accessor is generated for that field. nameDeriveAccessors :: Name -> (String -> Maybe String) -> Q [Dec] -- | deriveAccessors n where n is the name of a data type -- declared with data looks through all the declared fields of -- the data type, and for each field ending in an underscore generates an -- accessor of the same name without the underscore. -- -- It is nameDeriveAccessors n f where f satisfies -- --
-- f (s ++ "_") = Just s -- f x = Nothing -- otherwise ---- -- For example, given the data type: -- --
-- data Score = Score { p1Score_ :: Int
-- , p2Score_ :: Int
-- , rounds :: Int
-- }
--
--
-- deriveAccessors will generate the following objects:
--
--
-- p1Score :: Accessor Score Int
-- p1Score = Accessor p1Score_ (\x s -> s { p1Score_ = x })
-- p2Score :: Accessor Score Int
-- p2Score = Accessor p2Score_ (\x s -> s { p2Score_ = x })
--
--
-- It is used with Template Haskell syntax like:
--
-- -- $( deriveAccessors ''TypeName ) ---- -- And will generate accessors when TypeName was declared using -- data or newtype. deriveAccessors :: Name -> Q [Dec]