-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Data To Class transformation.
--
-- Transform data declarations to class definitions.
--
-- The way is explained in Data Declarations to Class Definitions
-- (see the homepage).
--
-- Changes from last version:
--
--
-- - Now DTC uses haskell-src-exts instead of
-- haskell-src.
-- - New module: DataInfo.
-- - The Maybe example included (in
-- Language.Haskell.DTC.Class module).
--
@package DTC
@version 1.1.0
-- | Some useful functions.
module Language.Haskell.DTC.Mod
-- | Lift a function over [HsDecl] to a function
-- over HsModule.
modifyHsDecls :: ([Decl] -> [Decl]) -> (Module -> Module)
-- | Skip a bang in a type.
unBangType :: BangType -> Type
-- | Extract the Name of a TyVarBind.
tyVarName :: TyVarBind -> Name
-- | Lift a function over String to a function over HsName.
modifyHsName :: (String -> String) -> (Name -> Name)
-- | Class definition from a data declaration.
module Language.Haskell.DTC.Class
-- | Transform a data declaration to a class definition. The String
-- argument will be the name of the type variable of the class
-- definition.
dataToClassWith :: String -> Decl -> Decl
-- | Transform a data declaration to a class definition. Equivalent to
-- dataToClassWith "t".
dataToClass :: Decl -> Decl
module Language.Haskell.DTC.DataInfo
-- | Information about names in a data declaration.
data DataInfo
DataInfo :: Name -> [(Name, Int)] -> [(Name, [Name])] -> DataInfo
-- | The data type name.
dataName :: DataInfo -> Name
-- | Ordinary constructor names, and their number of arguments.
consList :: DataInfo -> [(Name, Int)]
-- | Record constructor names and their field names.
rconsList :: DataInfo -> [(Name, [Name])]
-- | Extract a DataInfo from a declaration. Returns Nothing
-- if the argument is not a data declaration.
dataInfo :: Decl -> Maybe DataInfo
-- | Extract DataInfo from all data declarations in a module.
moduleDataInfo :: Module -> [DataInfo]
instance Show DataInfo
-- | All you need to parse a module.
module Language.Haskell.DTC.Parser
-- | The result of a parse.
data ParseResult a :: * -> *
-- | The parse succeeded, yielding a value.
ParseOk :: a -> ParseResult a
-- | The parse failed at the specified source location, with an error
-- message.
ParseFailed :: SrcLoc -> String -> ParseResult a
-- | A complete Haskell source module.
data Module :: *
-- | Static parameters governing a parse. Note that the various parse
-- functions in Language.Haskell.Exts.Parser never look at
-- LANGUAGE pragmas, regardless of what the
-- ignoreLanguagePragmas flag is set to. Only the various
-- parseFile functions in Language.Haskell.Exts will act
-- on it, when set to False.
data ParseMode :: *
ParseMode :: String -> [Extension] -> Bool -> Bool -> [Fixity] -> ParseMode
-- | original name of the file being parsed
parseFilename :: ParseMode -> String
-- | list of extensions enabled for parsing
extensions :: ParseMode -> [Extension]
-- | if True, the parser won't care about further extensions in
-- LANGUAGE pragmas in source files
ignoreLanguagePragmas :: ParseMode -> Bool
-- | if True, the parser won't read line position information from
-- LINE pragmas in source files
ignoreLinePragmas :: ParseMode -> Bool
-- | list of fixities to be aware of
fixities :: ParseMode -> [Fixity]
-- | Default parameters for a parse. The default is an unknown filename, no
-- extensions (i.e. Haskell 98), don't ignore LANGUAGE pragmas, do ignore
-- LINE pragmas, and be aware of fixities from the Prelude.
defaultParseMode :: ParseMode
-- | Parse of a string, which should contain a complete Haskell module.
parseModule :: String -> ParseResult Module
-- | Parse of a string containing a complete Haskell module, using an
-- explicit mode.
parseModuleWithMode :: ParseMode -> String -> ParseResult Module
-- | Parse a module from a source code file. It throws an error if parsing
-- fails.
parseModuleWithSrc :: FilePath -> ParseMode -> IO Module
-- | Main module of DTC.
module Language.Haskell.DTC