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

Copyright(C) 2015 Richard Eisenberg
LicenseBSD-style (see LICENSE)
MaintainerRichard Eisenberg (rae@cs.brynmawr.edu)
Stabilityexperimental
Safe HaskellSafe
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

Minimal complete definition

prettyExp

Methods

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

Instances

PrettyExp UExp Source # 

Methods

prettyExp :: Coloring -> Prec -> UExp -> Doc Source #

GlamVal ty => PrettyExp (Val ty) Source # 

Methods

prettyExp :: Coloring -> Prec -> Val ty -> Doc Source #

PrettyExp (Exp ctx ty) Source # 

Methods

prettyExp :: Coloring -> Prec -> Exp ctx ty -> Doc Source #

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