Module FlatCurry.Annotated.Pretty

Category
meta
Author
Bjoern Peemoeller
Version
October 2015

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

Exported Functions


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