Module FlatCurry.Annotated.Pretty

This library provides pretty-printers for AnnotatedFlatCurry modules and all substructures (e.g., expressions). Note that annotations are ignored for pretty-printing.

Author: Bjoern Peemoeller

Version: October 2015

Summary of exported operations:

ppProg :: AProg a -> Doc  Deterministic 
pretty-print a FlatCurry module
ppHeader :: String -> [TypeDecl] -> [AFuncDecl a] -> Doc  Deterministic 
pretty-print the module header
ppExports :: [TypeDecl] -> [AFuncDecl a] -> Doc  Deterministic 
pretty-print the export list
ppTypeExport :: TypeDecl -> Doc  Deterministic 
pretty-print a type export
ppConsExports :: [ConsDecl] -> [Doc]  Deterministic 
pretty-print the export list of constructors
ppFuncExports :: [AFuncDecl a] -> [Doc]  Deterministic 
pretty-print the export list of functions
ppImports :: [String] -> Doc  Deterministic 
pretty-print a list of import statements
ppImport :: String -> Doc  Deterministic 
pretty-print a single import statement
ppOpDecls :: [OpDecl] -> Doc  Deterministic 
pretty-print a list of operator fixity declarations
ppOpDecl :: OpDecl -> Doc  Deterministic 
pretty-print a single operator fixity declaration
ppFixity :: Fixity -> Doc  Deterministic 
pretty-print the associativity keyword
ppTypeDecls :: [TypeDecl] -> Doc  Deterministic 
pretty-print a list of type declarations
ppTypeDecl :: TypeDecl -> Doc  Deterministic 
pretty-print a type declaration
ppConsDecls :: [ConsDecl] -> Doc  Deterministic 
pretty-print the constructor declarations
ppConsDecl :: ConsDecl -> Doc  Deterministic 
pretty print a single constructor
ppNewConsDecl :: NewConsDecl -> Doc  Deterministic 
pretty print a single newtype constructor
ppTypeExp :: TypeExpr -> Doc  Deterministic 
pretty a top-level type expression
ppTypeExpr :: Int -> TypeExpr -> Doc  Deterministic 
pretty-print a type expression
ppQuantifiedVars :: [(Int,Kind)] -> Doc  Deterministic 
pretty-print explicitly quantified type variables
ppTVarIndex :: Int -> Doc  Deterministic 
pretty-print a type variable
ppFuncDecls :: [AFuncDecl a] -> Doc  Deterministic 
pretty-print a list of function declarations
ppFuncDecl :: AFuncDecl a -> Doc  Deterministic 
pretty-print a function declaration
ppRule :: ARule a -> Doc  Deterministic 
pretty-print a function rule
ppExp :: AExpr a -> Doc  Deterministic 
pretty-print a top-level expression
ppExpr :: Int -> AExpr a -> Doc  Deterministic 
pretty-print an expression
ppAVarIndex :: (Int,a) -> Doc  Deterministic 
pretty-print an annotated variable
ppVarIndex :: Int -> Doc  Deterministic 
pretty-print a variable
ppLiteral :: Literal -> Doc  Deterministic 
pretty-print a literal
showEscape :: Char -> String  Deterministic 
Escape character literal
ppComb :: Int -> ((String,String),a) -> [AExpr b] -> Doc  Deterministic 
Pretty print a constructor or function call
ppDecls :: [((Int,a),AExpr b)] -> Doc  Deterministic 
pretty-print a list of declarations
ppDecl :: ((Int,a),AExpr b) -> Doc  Deterministic 
pretty-print a single declaration
ppCaseType :: CaseType -> Doc  Deterministic 
Pretty print the type of a case expression
ppBranch :: ABranchExpr a -> Doc  Deterministic 
Pretty print a case branch
ppPattern :: APattern a -> Doc  Deterministic 
Pretty print a pattern
ppPrefixOp :: (String,String) -> Doc  Deterministic 
pretty-print a prefix operator
ppInfixOp :: (String,String) -> Doc  Deterministic 
pretty-print an infix operator
ppQName :: (String,String) -> Doc  Deterministic 
Pretty-print a qualified name
isInfixOp :: (String,String) -> Bool  Deterministic 
Check whether an operator is an infix operator
isListId :: (String,String) -> Bool  Deterministic 
Check whether an identifier represents a list
isTupleId :: (String,String) -> Bool  Deterministic 
Check whether an identifier represents a tuple
indent :: Doc -> Doc  Deterministic 
Indentation

Exported operations:

ppProg :: AProg a -> Doc  Deterministic 

pretty-print a FlatCurry module

ppHeader :: String -> [TypeDecl] -> [AFuncDecl a] -> Doc  Deterministic 

pretty-print the module header

ppExports :: [TypeDecl] -> [AFuncDecl a] -> Doc  Deterministic 

pretty-print the export list

ppTypeExport :: TypeDecl -> Doc  Deterministic 

pretty-print a type export

Further infos:
  • partially defined

ppConsExports :: [ConsDecl] -> [Doc]  Deterministic 

pretty-print the export list of constructors

ppFuncExports :: [AFuncDecl a] -> [Doc]  Deterministic 

pretty-print the export list of functions

ppImports :: [String] -> Doc  Deterministic 

pretty-print a list of import statements

ppImport :: String -> Doc  Deterministic 

pretty-print a single import statement

ppOpDecls :: [OpDecl] -> Doc  Deterministic 

pretty-print a list of operator fixity declarations

ppOpDecl :: OpDecl -> Doc  Deterministic 

pretty-print a single operator fixity declaration

ppFixity :: Fixity -> Doc  Deterministic 

pretty-print the associativity keyword

Further infos:
  • solution complete, i.e., able to compute all solutions

ppTypeDecls :: [TypeDecl] -> Doc  Deterministic 

pretty-print a list of type declarations

ppTypeDecl :: TypeDecl -> Doc  Deterministic 

pretty-print a type declaration

ppConsDecls :: [ConsDecl] -> Doc  Deterministic 

pretty-print the constructor declarations

ppConsDecl :: ConsDecl -> Doc  Deterministic 

pretty print a single constructor

ppNewConsDecl :: NewConsDecl -> Doc  Deterministic 

pretty print a single newtype constructor

ppTypeExp :: TypeExpr -> Doc  Deterministic 

pretty a top-level type expression

ppTypeExpr :: Int -> TypeExpr -> Doc  Deterministic 

pretty-print a type expression

Further infos:
  • partially defined

ppQuantifiedVars :: [(Int,Kind)] -> Doc  Deterministic 

pretty-print explicitly quantified type variables

Further infos:
  • partially defined

ppTVarIndex :: Int -> Doc  Deterministic 

pretty-print a type variable

ppFuncDecls :: [AFuncDecl a] -> Doc  Deterministic 

pretty-print a list of function declarations

ppFuncDecl :: AFuncDecl a -> Doc  Deterministic 

pretty-print a function declaration

ppRule :: ARule a -> Doc  Deterministic 

pretty-print a function rule

Further infos:
  • partially defined

ppExp :: AExpr a -> Doc  Deterministic 

pretty-print a top-level expression

ppExpr :: Int -> AExpr a -> Doc  Deterministic 

pretty-print an expression

Further infos:
  • partially defined

ppAVarIndex :: (Int,a) -> Doc  Deterministic 

pretty-print an annotated variable

Further infos:
  • partially defined

ppVarIndex :: Int -> Doc  Deterministic 

pretty-print a variable

Further infos:
  • partially defined

ppLiteral :: Literal -> Doc  Deterministic 

pretty-print a literal

showEscape :: Char -> String  Deterministic 

Escape character literal

ppComb :: Int -> ((String,String),a) -> [AExpr b] -> Doc  Deterministic 

Pretty print a constructor or function call

Further infos:
  • partially defined

ppDecls :: [((Int,a),AExpr b)] -> Doc  Deterministic 

pretty-print a list of declarations

ppDecl :: ((Int,a),AExpr b) -> Doc  Deterministic 

pretty-print a single declaration

ppCaseType :: CaseType -> Doc  Deterministic 

Pretty print the type of a case expression

Further infos:
  • solution complete, i.e., able to compute all solutions

ppBranch :: ABranchExpr a -> Doc  Deterministic 

Pretty print a case branch

ppPattern :: APattern a -> Doc  Deterministic 

Pretty print a pattern

Further infos:
  • partially defined

ppPrefixOp :: (String,String) -> Doc  Deterministic 

pretty-print a prefix operator

ppInfixOp :: (String,String) -> Doc  Deterministic 

pretty-print an infix operator

ppQName :: (String,String) -> Doc  Deterministic 

Pretty-print a qualified name

isInfixOp :: (String,String) -> Bool  Deterministic 

Check whether an operator is an infix operator

isListId :: (String,String) -> Bool  Deterministic 

Check whether an identifier represents a list

isTupleId :: (String,String) -> Bool  Deterministic 

Check whether an identifier represents a tuple

indent :: Doc -> Doc  Deterministic 

Indentation