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.Globals

Description

Manages the global variables in Glambda

Synopsis

Documentation

data Globals Source #

The global variable environment maps variables to type-checked expressions

Instances

MonadReader Globals GlamE # 

Methods

ask :: GlamE Globals #

local :: (Globals -> Globals) -> GlamE a -> GlamE a #

reader :: (Globals -> a) -> GlamE a #

MonadState Globals Glam # 

Methods

get :: Glam Globals #

put :: Globals -> Glam () #

state :: (Globals -> (a, Globals)) -> Glam a #

emptyGlobals :: Globals Source #

An empty global variable environment

extend :: String -> STy ty -> Exp '[] ty -> Globals -> Globals Source #

Extend a Globals with a new binding

lookupGlobal :: MonadError Doc m => Globals -> String -> (forall ty. STy ty -> Exp '[] ty -> m r) -> m r Source #

Lookup a global variable. Fails with throwError if the variable is not bound.