Package frege.lib.PP

Compiled: Wed Dec 05 00:01:33 PST 2012 from source file: ./frege/lib/PP.fr

Package Documentation

Courtesy of Philip Wadler.

This is a port of Prof. Philip Wadlers pretty printer library to Frege. For more info see "http://homepages.inf.ed.ac.uk/wadler/papers/prettier/prettier.pdf"

Table of Content

Imports

Data Types

data DOCUMENT

Constructors

APPEND DOCUMENT   DOCUMENT
GROUP DOCUMENT   DOCUMENT
LINE
NEST Int   DOCUMENT
NONE
TEXT (String)
data Doc

Constructors

Line Int   Doc
None
Text (String)   Doc

Functions and Values

<+/> :: DOCUMENT -> DOCUMENT -> DOCUMENT

join two documents with intervening space or stack them

<+> :: DOCUMENT -> DOCUMENT -> DOCUMENT

two documents with intervening space

</> :: DOCUMENT -> DOCUMENT -> DOCUMENT

two documents stacked

<> :: DOCUMENT -> DOCUMENT -> DOCUMENT
<~/> :: DOCUMENT -> DOCUMENT -> DOCUMENT

join two documents without intervening space or stack them

be :: Int -> Int -> [(Int, DOCUMENT)] -> Doc
best :: Int -> Int -> DOCUMENT -> Doc
better :: Int -> Int -> Doc -> Doc -> Doc
block :: String -> DOCUMENT -> String -> DOCUMENT
bracket :: String -> DOCUMENT -> String -> DOCUMENT
copy :: Int -> α -> [α]
fill :: [DOCUMENT] -> DOCUMENT
fits :: Int -> Doc -> Bool
flatten :: DOCUMENT -> DOCUMENT
folddoc :: (DOCUMENT->DOCUMENT->DOCUMENT) -> [DOCUMENT] -> DOCUMENT
group :: DOCUMENT -> DOCUMENT
layout :: Doc -> String
line :: DOCUMENT
nest :: Int -> DOCUMENT -> DOCUMENT
nil :: DOCUMENT
pretty :: Int -> DOCUMENT -> String
sep :: String -> [DOCUMENT] -> DOCUMENT

like fill, but with separator between items

spread :: [DOCUMENT] -> DOCUMENT

some documents with space inbetween

stack :: [DOCUMENT] -> DOCUMENT

some documents stacked

text :: String -> DOCUMENT
tight :: String -> [DOCUMENT] -> DOCUMENT

like sep, but no space after separator

version :: Int

This is $Revision$

Functions and Values by Type

(DOCUMENT->DOCUMENT->DOCUMENT) -> [DOCUMENT] -> DOCUMENT

folddoc

String -> [DOCUMENT] -> DOCUMENT

sep, tight

String -> DOCUMENT -> String -> DOCUMENT

block, bracket

String -> Doc -> Doc

Doc.Text

String -> DOCUMENT

text, DOCUMENT.TEXT

[DOCUMENT] -> DOCUMENT

fill, spread, stack

DOCUMENT -> DOCUMENT -> DOCUMENT

<+/>, <+>, </>, <>, <~/>, DOCUMENT.GROUP, DOCUMENT.APPEND

DOCUMENT -> DOCUMENT

flatten, group

Doc -> String

layout

Int -> DOCUMENT -> String

pretty

Int -> DOCUMENT -> DOCUMENT

nest, DOCUMENT.NEST

Int -> Doc -> Doc

Doc.Line

Int -> Doc -> Bool

fits

Int -> Int -> [(Int, DOCUMENT)] -> Doc

be

Int -> Int -> DOCUMENT -> Doc

best

Int -> Int -> Doc -> Doc -> Doc

better

DOCUMENT

line, nil, DOCUMENT.LINE, DOCUMENT.NONE

Doc

Doc.None

Int

version

Int -> α -> [α]

copy

Valid HTML 4.01 Strict