-- 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]