-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Manipulating Core Erlang source code
--
-- Facilities for manipulating Core Erlang source code: an abstract
-- syntax, parser and pretty-printer.
@package CoreErlang
@version 0.0.4
-- | A suite of datatypes describing the abstract syntax of CoreErlang
-- 1.0.3. http://www.it.uu.se/research/group/hipe/cerl/
module Language.CoreErlang.Syntax
-- | A CoreErlang source module.
data Module
Module :: Atom -> [Function] -> [(Atom, Const)] -> [FunDef] -> Module
-- | This type is used to represent lambdas
data FunDef
FunDef :: (Ann Function) -> (Ann Exp) -> FunDef
-- | CoreErlang expression.
data Exp
-- | variable
Var :: Var -> Exp
-- | literal constant
Lit :: Literal -> Exp
-- | function name
Fun :: Function -> Exp
-- | application
App :: Exps -> [Exps] -> Exp
-- | module call
ModCall :: (Exps, Exps) -> [Exps] -> Exp
-- | lambda expression
Lambda :: [Var] -> Exps -> Exp
-- | sequencing
Seq :: Exps -> Exps -> Exp
-- | local declaration
Let :: ([Var], Exps) -> Exps -> Exp
-- | letrec expression
LetRec :: [FunDef] -> Exps -> Exp
-- | case exp of alts end
Case :: Exps -> [Ann Alt] -> Exp
-- | tuple expression
Tuple :: [Exps] -> Exp
-- | list expression
List :: (List Exps) -> Exp
-- | binary expression
Binary :: [BitString Exps] -> Exp
-- | operator application
Op :: Atom -> [Exps] -> Exp
-- | try expression
Try :: Exps -> ([Var], Exps) -> ([Var], Exps) -> Exp
-- | receive expression
Rec :: [Ann Alt] -> TimeOut -> Exp
-- | catch expression
Catch :: Exps -> Exp
-- | CoreErlang expressions.
data Exps
-- | single expression
Exp :: (Ann Exp) -> Exps
-- | list of expressions
Exps :: (Ann [Ann Exp]) -> Exps
-- | An alt in a case expression
data Alt
Alt :: Pats -> Guard -> Exps -> Alt
-- | A guarded alternative when exp ->
-- exp. The first expression will be Boolean-valued.
data Guard
Guard :: Exps -> Guard
-- | A list of expressions
data List a
L :: [a] -> List a
LL :: [a] -> a -> List a
-- | The timeout of a receive expression
data TimeOut
TimeOut :: Exps -> Exps -> TimeOut
-- | A bitstring.
data BitString a
BitString :: a -> [Exps] -> BitString a
-- | This type is used to represent function names
data Function
Function :: (Atom, Integer) -> Function
data Pats
-- | single pattern
Pat :: Pat -> Pats
-- | list of patterns
Pats :: [Pat] -> Pats
-- | A pattern, to be matched against a value.
data Pat
-- | variable
PVar :: Var -> Pat
-- | literal constant
PLit :: Literal -> Pat
-- | tuple pattern
PTuple :: [Pat] -> Pat
-- | list pattern
PList :: (List Pat) -> Pat
-- | list of bitstring patterns
PBinary :: [BitString Pat] -> Pat
-- | alias pattern
PAlias :: Alias -> Pat
-- | An alias, used in patterns
data Alias
Alias :: Var -> Pat -> Alias
-- | literal. Values of this type hold the abstract value of the
-- literal, not the precise string representation used. For example,
-- 10, 0o12 and 0xa have the same
-- representation.
data Literal
-- | character literal
LChar :: Char -> Literal
-- | string literal
LString :: String -> Literal
-- | integer literal
LInt :: Integer -> Literal
-- | floating point literal
LFloat :: Double -> Literal
-- | atom literal
LAtom :: Atom -> Literal
-- | empty list
LNil :: Literal
-- | This type is used to represent constants
data Const
CLit :: Literal -> Const
CTuple :: [Const] -> Const
CList :: (List Const) -> Const
-- | This type is used to represent atoms
data Atom
Atom :: String -> Atom
-- | This type is used to represent variables
type Var = String
-- | An annotation for modules, variables, ...
data Ann a
-- | core erlang construct
Constr :: a -> Ann a
-- | core erlang annotated construct
Ann :: a -> [Const] -> Ann a
instance Data.Data.Data Language.CoreErlang.Syntax.Module
instance GHC.Show.Show Language.CoreErlang.Syntax.Module
instance GHC.Classes.Ord Language.CoreErlang.Syntax.Module
instance GHC.Classes.Eq Language.CoreErlang.Syntax.Module
instance Data.Data.Data a => Data.Data.Data (Language.CoreErlang.Syntax.BitString a)
instance GHC.Show.Show a => GHC.Show.Show (Language.CoreErlang.Syntax.BitString a)
instance GHC.Classes.Ord a => GHC.Classes.Ord (Language.CoreErlang.Syntax.BitString a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.CoreErlang.Syntax.BitString a)
instance Data.Data.Data Language.CoreErlang.Syntax.Alias
instance GHC.Show.Show Language.CoreErlang.Syntax.Alias
instance GHC.Classes.Ord Language.CoreErlang.Syntax.Alias
instance GHC.Classes.Eq Language.CoreErlang.Syntax.Alias
instance Data.Data.Data Language.CoreErlang.Syntax.Pat
instance GHC.Show.Show Language.CoreErlang.Syntax.Pat
instance GHC.Classes.Ord Language.CoreErlang.Syntax.Pat
instance GHC.Classes.Eq Language.CoreErlang.Syntax.Pat
instance Data.Data.Data Language.CoreErlang.Syntax.Pats
instance GHC.Show.Show Language.CoreErlang.Syntax.Pats
instance GHC.Classes.Ord Language.CoreErlang.Syntax.Pats
instance GHC.Classes.Eq Language.CoreErlang.Syntax.Pats
instance Data.Data.Data Language.CoreErlang.Syntax.Guard
instance GHC.Show.Show Language.CoreErlang.Syntax.Guard
instance GHC.Classes.Ord Language.CoreErlang.Syntax.Guard
instance GHC.Classes.Eq Language.CoreErlang.Syntax.Guard
instance Data.Data.Data Language.CoreErlang.Syntax.Alt
instance GHC.Show.Show Language.CoreErlang.Syntax.Alt
instance GHC.Classes.Ord Language.CoreErlang.Syntax.Alt
instance GHC.Classes.Eq Language.CoreErlang.Syntax.Alt
instance Data.Data.Data Language.CoreErlang.Syntax.Exps
instance GHC.Show.Show Language.CoreErlang.Syntax.Exps
instance GHC.Classes.Ord Language.CoreErlang.Syntax.Exps
instance GHC.Classes.Eq Language.CoreErlang.Syntax.Exps
instance Data.Data.Data Language.CoreErlang.Syntax.TimeOut
instance GHC.Show.Show Language.CoreErlang.Syntax.TimeOut
instance GHC.Classes.Ord Language.CoreErlang.Syntax.TimeOut
instance GHC.Classes.Eq Language.CoreErlang.Syntax.TimeOut
instance Data.Data.Data Language.CoreErlang.Syntax.Exp
instance GHC.Show.Show Language.CoreErlang.Syntax.Exp
instance GHC.Classes.Ord Language.CoreErlang.Syntax.Exp
instance GHC.Classes.Eq Language.CoreErlang.Syntax.Exp
instance Data.Data.Data Language.CoreErlang.Syntax.FunDef
instance GHC.Show.Show Language.CoreErlang.Syntax.FunDef
instance GHC.Classes.Ord Language.CoreErlang.Syntax.FunDef
instance GHC.Classes.Eq Language.CoreErlang.Syntax.FunDef
instance Data.Data.Data a => Data.Data.Data (Language.CoreErlang.Syntax.Ann a)
instance GHC.Show.Show a => GHC.Show.Show (Language.CoreErlang.Syntax.Ann a)
instance GHC.Classes.Ord a => GHC.Classes.Ord (Language.CoreErlang.Syntax.Ann a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.CoreErlang.Syntax.Ann a)
instance Data.Data.Data Language.CoreErlang.Syntax.Const
instance GHC.Show.Show Language.CoreErlang.Syntax.Const
instance GHC.Classes.Ord Language.CoreErlang.Syntax.Const
instance GHC.Classes.Eq Language.CoreErlang.Syntax.Const
instance Data.Data.Data a => Data.Data.Data (Language.CoreErlang.Syntax.List a)
instance GHC.Show.Show a => GHC.Show.Show (Language.CoreErlang.Syntax.List a)
instance GHC.Classes.Ord a => GHC.Classes.Ord (Language.CoreErlang.Syntax.List a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.CoreErlang.Syntax.List a)
instance Data.Data.Data Language.CoreErlang.Syntax.Literal
instance GHC.Show.Show Language.CoreErlang.Syntax.Literal
instance GHC.Classes.Ord Language.CoreErlang.Syntax.Literal
instance GHC.Classes.Eq Language.CoreErlang.Syntax.Literal
instance Data.Data.Data Language.CoreErlang.Syntax.Function
instance GHC.Show.Show Language.CoreErlang.Syntax.Function
instance GHC.Classes.Ord Language.CoreErlang.Syntax.Function
instance GHC.Classes.Eq Language.CoreErlang.Syntax.Function
instance Data.Data.Data Language.CoreErlang.Syntax.Atom
instance GHC.Show.Show Language.CoreErlang.Syntax.Atom
instance GHC.Classes.Ord Language.CoreErlang.Syntax.Atom
instance GHC.Classes.Eq Language.CoreErlang.Syntax.Atom
-- | Pretty printer for CoreErlang.
module Language.CoreErlang.Pretty
-- | Things that can be pretty-printed, including all the syntactic objects
-- in Language.CoreErlang.Syntax.
class Pretty a
-- | pretty-print with a given style and mode.
prettyPrintStyleMode :: Pretty a => Style -> PPMode -> a -> String
-- | pretty-print with the default style and a given mode.
prettyPrintWithMode :: Pretty a => PPMode -> a -> String
-- | pretty-print with the default style and defaultMode.
prettyPrint :: Pretty a => a -> String
-- | A rendering style. Allows us to specify constraints to choose among
-- the many different rendering options.
data Style :: *
Style :: Mode -> Int -> Float -> Style
-- | The rendering mode.
[mode] :: Style -> Mode
-- | Maximum length of a line, in characters.
[lineLength] :: Style -> Int
-- | Ratio of line length to ribbon length. A ribbon refers to the
-- characters on a line excluding indentation. So a
-- lineLength of 100, with a ribbonsPerLine of 2.0
-- would only allow up to 50 characters of ribbon to be displayed on a
-- line, while allowing it to be indented up to 50 characters.
[ribbonsPerLine] :: Style -> Float
-- | The default style (mode=PageMode, lineLength=100,
-- ribbonsPerLine=1.5).
style :: Style
-- | Rendering mode.
data Mode :: *
-- | Normal rendering (lineLength and ribbonsPerLine
-- respected').
PageMode :: Mode
-- | With zig-zag cuts.
ZigZagMode :: Mode
-- | No indentation, infinitely long lines (lineLength ignored), but
-- explicit new lines, i.e., text "one" $$ text "two", are
-- respected.
LeftMode :: Mode
-- | All on one line, lineLength ignored and explicit new lines
-- ($$) are turned into spaces.
OneLineMode :: Mode
-- | Pretty-printing parameters.
data PPMode
PPMode :: Indent -> Indent -> Indent -> Indent -> Indent -> Indent -> Indent -> PPLayout -> PPMode
-- | indentation of the alternatives in a case expression
[altIndent] :: PPMode -> Indent
-- | indentation of the declarations in a case expression
[caseIndent] :: PPMode -> Indent
-- | indentation of the declarations in a function definition
[fundefIndent] :: PPMode -> Indent
-- | indentation of the declarations in a lambda expression
[lambdaIndent] :: PPMode -> Indent
-- | indentation of the declarations in a let expression
[letIndent] :: PPMode -> Indent
-- | indentation of the declarations in a letrec expression
[letrecIndent] :: PPMode -> Indent
-- | indentation added for continuation lines that would otherwise be
-- offside
[onsideIndent] :: PPMode -> Indent
-- | Pretty-printing style to use
[layout] :: PPMode -> PPLayout
type Indent = Int
-- | Varieties of layout we can use.
data PPLayout
-- | classical layout
PPDefault :: PPLayout
-- | everything on a single line
PPNoLayout :: PPLayout
-- | The default mode: pretty-print using sensible defaults.
defaultMode :: PPMode
instance GHC.Classes.Eq Language.CoreErlang.Pretty.PPLayout
instance Language.CoreErlang.Pretty.Pretty Language.CoreErlang.Syntax.Module
instance Language.CoreErlang.Pretty.Pretty Language.CoreErlang.Syntax.Function
instance Language.CoreErlang.Pretty.Pretty Language.CoreErlang.Syntax.Const
instance Language.CoreErlang.Pretty.Pretty Language.CoreErlang.Syntax.FunDef
instance Language.CoreErlang.Pretty.Pretty Language.CoreErlang.Syntax.Literal
instance Language.CoreErlang.Pretty.Pretty Language.CoreErlang.Syntax.Atom
instance Language.CoreErlang.Pretty.Pretty Language.CoreErlang.Syntax.Exps
instance Language.CoreErlang.Pretty.Pretty Language.CoreErlang.Syntax.Exp
instance Language.CoreErlang.Pretty.Pretty a => Language.CoreErlang.Pretty.Pretty (Language.CoreErlang.Syntax.List a)
instance Language.CoreErlang.Pretty.Pretty Language.CoreErlang.Syntax.Alt
instance Language.CoreErlang.Pretty.Pretty Language.CoreErlang.Syntax.Pats
instance Language.CoreErlang.Pretty.Pretty Language.CoreErlang.Syntax.Pat
instance Language.CoreErlang.Pretty.Pretty Language.CoreErlang.Syntax.Alias
instance Language.CoreErlang.Pretty.Pretty Language.CoreErlang.Syntax.Guard
instance Language.CoreErlang.Pretty.Pretty Language.CoreErlang.Syntax.TimeOut
instance Language.CoreErlang.Pretty.Pretty a => Language.CoreErlang.Pretty.Pretty (Language.CoreErlang.Syntax.BitString a)
instance Language.CoreErlang.Pretty.Pretty a => Language.CoreErlang.Pretty.Pretty (Language.CoreErlang.Syntax.Ann a)
instance GHC.Base.Functor (Language.CoreErlang.Pretty.DocM s)
instance GHC.Base.Applicative (Language.CoreErlang.Pretty.DocM s)
instance GHC.Base.Monad (Language.CoreErlang.Pretty.DocM s)
-- | CoreErlang parser.
-- http://www.it.uu.se/research/group/hipe/cerl/
module Language.CoreErlang.Parser
-- | Parse of a string, which should contain a complete CoreErlang module
parseModule :: String -> Either ParseError (Ann Module)
-- | The abstract data type ParseError represents parse errors. It
-- provides the source position (SourcePos) of the error and a
-- list of error messages (Message). A ParseError can be
-- returned by the function parse. ParseError is an
-- instance of the Show and Eq classes.
data ParseError :: *