glambda-1.0: A simply typed lambda calculus interpreter, written with GADTs

Copyright(C) 2015 Richard Eisenberg
LicenseBSD-style (see LICENSE)
MaintainerRichard Eisenberg (eir@cis.upenn.edu)
Stabilityexperimental
Safe HaskellNone
LanguageHaskell2010

Language.Glambda.Pretty

Description

Pretty-printing expressions. This allows reduction of code duplication between unchecked and checked expressions.

Synopsis

Documentation

class Pretty exp => PrettyExp exp where Source

A class for expressions that can be pretty-printed

Methods

prettyExp :: Coloring -> Prec -> exp -> Doc Source

Instances

PrettyExp UExp 
GlamVal ty => PrettyExp (Val ty) 
PrettyExp (Exp ctx ty) 

defaultPretty :: PrettyExp exp => exp -> Doc Source

Convenient implementation of pretty

data Coloring Source

Information about coloring in de Bruijn indexes and binders

defaultColoring :: Coloring Source

A Coloring for an empty context

prettyVar :: Coloring -> Int -> Doc Source

Print a variable

prettyLam :: PrettyExp exp => Coloring -> Prec -> Maybe Ty -> exp -> Doc Source

Print a lambda expression

prettyApp :: (PrettyExp exp1, PrettyExp exp2) => Coloring -> Prec -> exp1 -> exp2 -> Doc Source

Print an application

prettyArith :: (PrettyExp exp1, PrettyExp exp2) => Coloring -> Prec -> exp1 -> ArithOp ty -> exp2 -> Doc Source

Print an arithemtic expression

prettyIf :: (PrettyExp exp1, PrettyExp exp2, PrettyExp exp3) => Coloring -> Prec -> exp1 -> exp2 -> exp3 -> Doc Source

Print a conditional

prettyFix :: PrettyExp exp => Coloring -> Prec -> exp -> Doc Source

Print a fix