module Language.Haskell.TH.DeriveField where import Language.Haskell.TH.Syntax import Language.Haskell.TH.Lib deriveField :: String -> String -> String -> Name -> Q [Dec] deriveField cls clsOp fld name = sequenceQ [ instanceD (cxt []) (appT (conT (mkName cls)) (conT name)) [ funD (mkName clsOp) [ clause [] (normalB (varE (mkName fld))) [] ] ] ]