tal-0.1.0.0: An implementation of Typed Assembly Language (Morrisett, Walker, Crary, Glew)

Safe HaskellNone
LanguageHaskell2010

Util

Synopsis

Documentation

patUnbind :: (Alpha p, Alpha t) => p -> Bind p t -> t Source #

data Prim Source #

Constructors

Plus 
Minus 
Times 

Instances

Eq Prim Source # 

Methods

(==) :: Prim -> Prim -> Bool #

(/=) :: Prim -> Prim -> Bool #

Ord Prim Source # 

Methods

compare :: Prim -> Prim -> Ordering #

(<) :: Prim -> Prim -> Bool #

(<=) :: Prim -> Prim -> Bool #

(>) :: Prim -> Prim -> Bool #

(>=) :: Prim -> Prim -> Bool #

max :: Prim -> Prim -> Prim #

min :: Prim -> Prim -> Prim #

Show Prim Source # 

Methods

showsPrec :: Int -> Prim -> ShowS #

show :: Prim -> String #

showList :: [Prim] -> ShowS #

Rep Prim Source # 

Methods

rep :: R Prim #

Alpha Prim Source # 

Methods

swaps' :: AlphaCtx -> Perm AnyName -> Prim -> Prim #

fv' :: Collection f => AlphaCtx -> Prim -> f AnyName #

lfreshen' :: LFresh m => AlphaCtx -> Prim -> (Prim -> Perm AnyName -> m b) -> m b #

freshen' :: Fresh m => AlphaCtx -> Prim -> m (Prim, Perm AnyName) #

aeq' :: AlphaCtx -> Prim -> Prim -> Bool #

acompare' :: AlphaCtx -> Prim -> Prim -> Ordering #

close :: Alpha b => AlphaCtx -> b -> Prim -> Prim #

open :: Alpha b => AlphaCtx -> b -> Prim -> Prim #

isPat :: Prim -> Maybe [AnyName] #

isTerm :: Prim -> Bool #

isEmbed :: Prim -> Bool #

nthpatrec :: Prim -> NthCont #

findpatrec :: Prim -> AnyName -> FindResult #

Rep1 ctx0 Prim Source # 

Methods

rep1 :: R1 ctx0 Prim #

Subst Val Prim # 
Subst Ty Prim # 
Subst Val Prim # 
Subst Ty Prim # 
Subst Val Prim # 
Subst Ty Prim # 
Subst Tm Prim # 
Subst Ty Prim # 

rPrim1 :: forall ctx. () -> () -> () -> R1 ctx Prim Source #

runM :: M a -> a Source #

pp :: Display t => t -> String Source #

pretty-print

class Display t where Source #

Minimal complete definition

display

Methods

display :: t -> DM Doc Source #

Convert a value to a Doc.

Instances

Display Bool Source # 

Methods

display :: Bool -> DM Doc Source #

Display Char Source # 

Methods

display :: Char -> DM Doc Source #

Display Double Source # 

Methods

display :: Double -> DM Doc Source #

Display Float Source # 

Methods

display :: Float -> DM Doc Source #

Display Int Source # 

Methods

display :: Int -> DM Doc Source #

Display Integer Source # 

Methods

display :: Integer -> DM Doc Source #

Display String Source # 

Methods

display :: String -> DM Doc Source #

Display Heap Source # 

Methods

display :: Heap -> DM Doc Source #

Display Tm Source # 

Methods

display :: Tm -> DM Doc Source #

Display Decl Source # 

Methods

display :: Decl -> DM Doc Source #

Display AnnVal Source # 

Methods

display :: AnnVal -> DM Doc Source #

Display Val Source # 

Methods

display :: Val -> DM Doc Source #

Display Ty Source # 

Methods

display :: Ty -> DM Doc Source #

Display Heap Source # 

Methods

display :: Heap -> DM Doc Source #

Display HeapVal Source # 

Methods

display :: HeapVal -> DM Doc Source #

Display Tm Source # 

Methods

display :: Tm -> DM Doc Source #

Display Decl Source # 

Methods

display :: Decl -> DM Doc Source #

Display Val Source # 

Methods

display :: Val -> DM Doc Source #

Display Ty Source # 

Methods

display :: Ty -> DM Doc Source #

Display InstrSeq Source # 

Methods

display :: InstrSeq -> DM Doc Source #

Display Instruction Source # 
Display HeapVal Source # 

Methods

display :: HeapVal -> DM Doc Source #

Display SmallVal Source # 

Methods

display :: SmallVal -> DM Doc Source #

Display WordVal Source # 

Methods

display :: WordVal -> DM Doc Source #

Display Label Source # 

Methods

display :: Label -> DM Doc Source #

Display Ty Source # 

Methods

display :: Ty -> DM Doc Source #

Display Tm Source # 

Methods

display :: Tm -> DM Doc Source #

Display Decl Source # 

Methods

display :: Decl -> DM Doc Source #

Display AnnVal Source # 

Methods

display :: AnnVal -> DM Doc Source #

Display Val Source # 

Methods

display :: Val -> DM Doc Source #

Display Ty Source # 

Methods

display :: Ty -> DM Doc Source #

Display Tm Source # 

Methods

display :: Tm -> DM Doc Source #

Display Ty Source # 

Methods

display :: Ty -> DM Doc Source #

Display a => Display [(Register, a)] Source # 

Methods

display :: [(Register, a)] -> DM Doc Source #

Rep a => Display (Name a) Source # 

Methods

display :: Name a -> DM Doc Source #

Display a => Display (Ann a) Source # 

Methods

display :: Ann a -> DM Doc Source #

Display a => Display (Pack a) Source # 

Methods

display :: Pack a -> DM Doc Source #

Display a => Display (TyApp a) Source # 

Methods

display :: TyApp a -> DM Doc Source #

Display (Tm, Heap) Source # 

Methods

display :: (Tm, Heap) -> DM Doc Source #

Display (ValName, Embed Ty) Source # 

Methods

display :: (ValName, Embed Ty) -> DM Doc Source #

Display (Tm, Heap) Source # 

Methods

display :: (Tm, Heap) -> DM Doc Source #

Display (Ty, Flag) Source # 

Methods

display :: (Ty, Flag) -> DM Doc Source #

Display (ValName, Embed Ty) Source # 

Methods

display :: (ValName, Embed Ty) -> DM Doc Source #

Display (Ty, Flag) Source # 

Methods

display :: (Ty, Flag) -> DM Doc Source #

Display (ValName, Embed Ty) Source # 

Methods

display :: (ValName, Embed Ty) -> DM Doc Source #

Display a => Display (Map Label a) Source # 

Methods

display :: Map Label a -> DM Doc Source #

Display a => Display (Map Register a) Source # 

Methods

display :: Map Register a -> DM Doc Source #

Display (Heap, RegisterFile, InstrSeq) Source # 

newtype DM a Source #

Constructors

DM 

Instances

Monad DM Source # 

Methods

(>>=) :: DM a -> (a -> DM b) -> DM b #

(>>) :: DM a -> DM b -> DM b #

return :: a -> DM a #

fail :: String -> DM a #

Functor DM Source # 

Methods

fmap :: (a -> b) -> DM a -> DM b #

(<$) :: a -> DM b -> DM a #

Applicative DM Source # 

Methods

pure :: a -> DM a #

(<*>) :: DM (a -> b) -> DM a -> DM b #

(*>) :: DM a -> DM b -> DM b #

(<*) :: DM a -> DM b -> DM a #

LFresh DM Source # 

Methods

lfresh :: Rep a => Name a -> DM (Name a) #

avoid :: [AnyName] -> DM a -> DM a #

getAvoids :: DM (Set AnyName) #

MonadReader DispInfo DM Source # 

Methods

ask :: DM DispInfo #

local :: (DispInfo -> DispInfo) -> DM a -> DM a #

reader :: (DispInfo -> a) -> DM a #

data DispInfo Source #

The data structure for information about the display

Constructors

DI 

Fields

Instances

MonadReader DispInfo DM Source # 

Methods

ask :: DM DispInfo #

local :: (DispInfo -> DispInfo) -> DM a -> DM a #

reader :: (DispInfo -> a) -> DM a #

initDI :: DispInfo Source #

An empty DispInfo context

withPrec :: Int -> DM a -> DM a Source #

intersperse :: Doc -> [Doc] -> [Doc] Source #

displayList :: Display t => [t] -> DM Doc Source #