glambda 1.0.1 → 1.0.2
raw patch · 19 files changed
+37/−31 lines, 19 filesdep −eitherdep ~mtldep ~transformersPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies removed: either
Dependency ranges changed: mtl, transformers
API changes (from Hackage documentation)
- Language.Glambda.Exp: App :: Exp ctx (arg -> res) -> Exp ctx arg -> Exp ctx res
- Language.Glambda.Exp: Arith :: Exp ctx Int -> ArithOp ty -> Exp ctx Int -> Exp ctx ty
- Language.Glambda.Exp: BoolE :: Bool -> Exp ctx Bool
- Language.Glambda.Exp: Cond :: Exp ctx Bool -> Exp ctx ty -> Exp ctx ty -> Exp ctx ty
- Language.Glambda.Exp: ES :: Elem xs x -> Elem (y : xs) x
- Language.Glambda.Exp: EZ :: Elem (x : xs) x
- Language.Glambda.Exp: Fix :: Exp ctx (ty -> ty) -> Exp ctx ty
- Language.Glambda.Exp: IntE :: Int -> Exp ctx Int
- Language.Glambda.Exp: Lam :: Exp (arg : ctx) res -> Exp ctx (arg -> res)
- Language.Glambda.Exp: Var :: Elem ctx ty -> Exp ctx ty
- Language.Glambda.Exp: instance GlamVal (a -> b)
- Language.Glambda.Exp: instance GlamVal Bool
- Language.Glambda.Exp: instance GlamVal Int
- Language.Glambda.Exp: instance GlamVal ty => Pretty (Val ty)
- Language.Glambda.Exp: instance GlamVal ty => PrettyExp (Val ty)
- Language.Glambda.Exp: instance Pretty (Exp ctx ty)
- Language.Glambda.Exp: instance PrettyExp (Exp ctx ty)
- Language.Glambda.Monad: instance Applicative Glam
- Language.Glambda.Monad: instance Applicative GlamE
- Language.Glambda.Monad: instance Functor Glam
- Language.Glambda.Monad: instance Functor GlamE
- Language.Glambda.Monad: instance GlamM Glam
- Language.Glambda.Monad: instance GlamM GlamE
- Language.Glambda.Monad: instance Monad Glam
- Language.Glambda.Monad: instance Monad GlamE
- Language.Glambda.Monad: instance MonadError Doc GlamE
- Language.Glambda.Monad: instance MonadIO Glam
- Language.Glambda.Monad: instance MonadReader Globals GlamE
- Language.Glambda.Monad: instance MonadState Globals Glam
- Language.Glambda.Repl: instance [overlap ok] Pretty a => Reportable a
- Language.Glambda.Repl: instance [overlap ok] Reportable ()
- Language.Glambda.Repl: instance [overlap ok] Reportable Doc
- Language.Glambda.Repl: instance [overlap ok] Reportable Globals
- Language.Glambda.Statement: instance Pretty Statement
- Language.Glambda.Token: Divide :: ArithOp Int
- Language.Glambda.Token: Equals :: ArithOp Bool
- Language.Glambda.Token: Greater :: ArithOp Bool
- Language.Glambda.Token: GreaterE :: ArithOp Bool
- Language.Glambda.Token: Less :: ArithOp Bool
- Language.Glambda.Token: LessE :: ArithOp Bool
- Language.Glambda.Token: Minus :: ArithOp Int
- Language.Glambda.Token: Mod :: ArithOp Int
- Language.Glambda.Token: Plus :: ArithOp Int
- Language.Glambda.Token: Times :: ArithOp Int
- Language.Glambda.Token: UArithOp :: ArithOp ty -> UArithOp
- Language.Glambda.Token: instance Eq (ArithOp ty)
- Language.Glambda.Token: instance Eq Token
- Language.Glambda.Token: instance Eq UArithOp
- Language.Glambda.Token: instance Pretty (ArithOp ty)
- Language.Glambda.Token: instance Pretty LToken
- Language.Glambda.Token: instance Pretty Token
- Language.Glambda.Token: instance Pretty UArithOp
- Language.Glambda.Token: instance Show (ArithOp ty)
- Language.Glambda.Token: instance Show LToken
- Language.Glambda.Token: instance Show Token
- Language.Glambda.Token: instance Show UArithOp
- Language.Glambda.Type: SArr :: STy arg -> STy res -> STy (arg -> res)
- Language.Glambda.Type: SBoolTy :: STy Bool
- Language.Glambda.Type: SCons :: STy h -> SCtx t -> SCtx (h : t)
- Language.Glambda.Type: SIntTy :: STy Int
- Language.Glambda.Type: SNil :: SCtx []
- Language.Glambda.Type: instance (ITy arg, ITy res) => ITy (arg -> res)
- Language.Glambda.Type: instance Eq Ty
- Language.Glambda.Type: instance ITy Bool
- Language.Glambda.Type: instance ITy Int
- Language.Glambda.Type: instance Pretty (STy ty)
- Language.Glambda.Type: instance Pretty Ty
- Language.Glambda.Type: instance Show Ty
- Language.Glambda.Unchecked: instance Pretty UExp
- Language.Glambda.Unchecked: instance PrettyExp UExp
- Language.Glambda.Util: Refl :: (:~:) k a1 a1
- Language.Glambda.Util: instance Pretty ParseError
+ Language.Glambda.Exp: [App] :: Exp ctx (arg -> res) -> Exp ctx arg -> Exp ctx res
+ Language.Glambda.Exp: [Arith] :: Exp ctx Int -> ArithOp ty -> Exp ctx Int -> Exp ctx ty
+ Language.Glambda.Exp: [BoolE] :: Bool -> Exp ctx Bool
+ Language.Glambda.Exp: [Cond] :: Exp ctx Bool -> Exp ctx ty -> Exp ctx ty -> Exp ctx ty
+ Language.Glambda.Exp: [ES] :: Elem xs x -> Elem (y : xs) x
+ Language.Glambda.Exp: [EZ] :: Elem (x : xs) x
+ Language.Glambda.Exp: [Fix] :: Exp ctx (ty -> ty) -> Exp ctx ty
+ Language.Glambda.Exp: [IntE] :: Int -> Exp ctx Int
+ Language.Glambda.Exp: [Lam] :: Exp (arg : ctx) res -> Exp ctx (arg -> res)
+ Language.Glambda.Exp: [Var] :: Elem ctx ty -> Exp ctx ty
+ Language.Glambda.Exp: data family Val t;
+ Language.Glambda.Exp: instance Language.Glambda.Exp.GlamVal (a -> b)
+ Language.Glambda.Exp: instance Language.Glambda.Exp.GlamVal GHC.Types.Bool
+ Language.Glambda.Exp: instance Language.Glambda.Exp.GlamVal GHC.Types.Int
+ Language.Glambda.Exp: instance Language.Glambda.Exp.GlamVal ty => Language.Glambda.Pretty.PrettyExp (Language.Glambda.Exp.Val ty)
+ Language.Glambda.Exp: instance Language.Glambda.Exp.GlamVal ty => Text.PrettyPrint.ANSI.Leijen.Internal.Pretty (Language.Glambda.Exp.Val ty)
+ Language.Glambda.Exp: instance Language.Glambda.Pretty.PrettyExp (Language.Glambda.Exp.Exp ctx ty)
+ Language.Glambda.Exp: instance Text.PrettyPrint.ANSI.Leijen.Internal.Pretty (Language.Glambda.Exp.Exp ctx ty)
+ Language.Glambda.Exp: }
+ Language.Glambda.Monad: instance Control.Monad.Error.Class.MonadError Text.PrettyPrint.ANSI.Leijen.Internal.Doc Language.Glambda.Monad.GlamE
+ Language.Glambda.Monad: instance Control.Monad.IO.Class.MonadIO Language.Glambda.Monad.Glam
+ Language.Glambda.Monad: instance Control.Monad.Reader.Class.MonadReader Language.Glambda.Globals.Globals Language.Glambda.Monad.GlamE
+ Language.Glambda.Monad: instance Control.Monad.State.Class.MonadState Language.Glambda.Globals.Globals Language.Glambda.Monad.Glam
+ Language.Glambda.Monad: instance GHC.Base.Applicative Language.Glambda.Monad.Glam
+ Language.Glambda.Monad: instance GHC.Base.Applicative Language.Glambda.Monad.GlamE
+ Language.Glambda.Monad: instance GHC.Base.Functor Language.Glambda.Monad.Glam
+ Language.Glambda.Monad: instance GHC.Base.Functor Language.Glambda.Monad.GlamE
+ Language.Glambda.Monad: instance GHC.Base.Monad Language.Glambda.Monad.Glam
+ Language.Glambda.Monad: instance GHC.Base.Monad Language.Glambda.Monad.GlamE
+ Language.Glambda.Monad: instance Language.Glambda.Monad.GlamM Language.Glambda.Monad.Glam
+ Language.Glambda.Monad: instance Language.Glambda.Monad.GlamM Language.Glambda.Monad.GlamE
+ Language.Glambda.Repl: instance Language.Glambda.Repl.Reportable ()
+ Language.Glambda.Repl: instance Language.Glambda.Repl.Reportable Language.Glambda.Globals.Globals
+ Language.Glambda.Repl: instance Language.Glambda.Repl.Reportable Text.PrettyPrint.ANSI.Leijen.Internal.Doc
+ Language.Glambda.Repl: instance Text.PrettyPrint.ANSI.Leijen.Internal.Pretty a => Language.Glambda.Repl.Reportable a
+ Language.Glambda.Statement: instance Text.PrettyPrint.ANSI.Leijen.Internal.Pretty Language.Glambda.Statement.Statement
+ Language.Glambda.Token: [Less, LessE, Greater, GreaterE, Equals] :: ArithOp Bool
+ Language.Glambda.Token: [Plus, Minus, Times, Divide, Mod] :: ArithOp Int
+ Language.Glambda.Token: [UArithOp] :: ITy ty => ArithOp ty -> UArithOp
+ Language.Glambda.Token: instance GHC.Classes.Eq (Language.Glambda.Token.ArithOp ty)
+ Language.Glambda.Token: instance GHC.Classes.Eq Language.Glambda.Token.Token
+ Language.Glambda.Token: instance GHC.Classes.Eq Language.Glambda.Token.UArithOp
+ Language.Glambda.Token: instance GHC.Show.Show (Language.Glambda.Token.ArithOp ty)
+ Language.Glambda.Token: instance GHC.Show.Show Language.Glambda.Token.LToken
+ Language.Glambda.Token: instance GHC.Show.Show Language.Glambda.Token.Token
+ Language.Glambda.Token: instance GHC.Show.Show Language.Glambda.Token.UArithOp
+ Language.Glambda.Token: instance Text.PrettyPrint.ANSI.Leijen.Internal.Pretty (Language.Glambda.Token.ArithOp ty)
+ Language.Glambda.Token: instance Text.PrettyPrint.ANSI.Leijen.Internal.Pretty Language.Glambda.Token.LToken
+ Language.Glambda.Token: instance Text.PrettyPrint.ANSI.Leijen.Internal.Pretty Language.Glambda.Token.Token
+ Language.Glambda.Token: instance Text.PrettyPrint.ANSI.Leijen.Internal.Pretty Language.Glambda.Token.UArithOp
+ Language.Glambda.Type: [SArr] :: STy arg -> STy res -> STy (arg -> res)
+ Language.Glambda.Type: [SBoolTy] :: STy Bool
+ Language.Glambda.Type: [SCons] :: STy h -> SCtx t -> SCtx (h : t)
+ Language.Glambda.Type: [SIntTy] :: STy Int
+ Language.Glambda.Type: [SNil] :: SCtx '[]
+ Language.Glambda.Type: instance (Language.Glambda.Type.ITy arg, Language.Glambda.Type.ITy res) => Language.Glambda.Type.ITy (arg -> res)
+ Language.Glambda.Type: instance GHC.Classes.Eq Language.Glambda.Type.Ty
+ Language.Glambda.Type: instance GHC.Show.Show Language.Glambda.Type.Ty
+ Language.Glambda.Type: instance Language.Glambda.Type.ITy GHC.Types.Bool
+ Language.Glambda.Type: instance Language.Glambda.Type.ITy GHC.Types.Int
+ Language.Glambda.Type: instance Text.PrettyPrint.ANSI.Leijen.Internal.Pretty (Language.Glambda.Type.STy ty)
+ Language.Glambda.Type: instance Text.PrettyPrint.ANSI.Leijen.Internal.Pretty Language.Glambda.Type.Ty
+ Language.Glambda.Unchecked: instance Language.Glambda.Pretty.PrettyExp Language.Glambda.Unchecked.UExp
+ Language.Glambda.Unchecked: instance Text.PrettyPrint.ANSI.Leijen.Internal.Pretty Language.Glambda.Unchecked.UExp
+ Language.Glambda.Util: [Refl] :: (:~:) k a a
+ Language.Glambda.Util: instance Text.PrettyPrint.ANSI.Leijen.Internal.Pretty Text.Parsec.Error.ParseError
- Language.Glambda.Check: check :: (MonadError Doc m, MonadReader Globals m) => UExp -> (forall t. STy t -> Exp [] t -> m r) -> m r
+ Language.Glambda.Check: check :: (MonadError Doc m, MonadReader Globals m) => UExp -> (forall t. STy t -> Exp '[] t -> m r) -> m r
- Language.Glambda.Eval: eval :: Exp [] t -> Val t
+ Language.Glambda.Eval: eval :: Exp '[] t -> Val t
- Language.Glambda.Eval: step :: Exp [] t -> Either (Exp [] t) (Val t)
+ Language.Glambda.Eval: step :: Exp '[] t -> Either (Exp '[] t) (Val t)
- Language.Glambda.Exp: class GlamVal t where data family Val t
+ Language.Glambda.Exp: class GlamVal t where data Val t where {
- Language.Glambda.Exp: val :: GlamVal t => Val t -> Exp [] t
+ Language.Glambda.Exp: val :: GlamVal t => Val t -> Exp '[] t
- Language.Glambda.Globals: extend :: String -> STy ty -> Exp [] ty -> Globals -> Globals
+ Language.Glambda.Globals: extend :: String -> STy ty -> Exp '[] ty -> Globals -> Globals
- Language.Glambda.Globals: lookupGlobal :: MonadError Doc m => Globals -> String -> (forall ty. STy ty -> Exp [] ty -> m r) -> m r
+ Language.Glambda.Globals: lookupGlobal :: MonadError Doc m => Globals -> String -> (forall ty. STy ty -> Exp '[] ty -> m r) -> m r
- Language.Glambda.Shift: shift :: Exp ts2 ty -> Exp (t : ts2) ty
+ Language.Glambda.Shift: shift :: forall ts2 t ty. Exp ts2 ty -> Exp (t : ts2) ty
- Language.Glambda.Shift: subst :: Exp ts2 s -> Exp (s : ts2) t -> Exp ts2 t
+ Language.Glambda.Shift: subst :: forall ts2 s t. Exp ts2 s -> Exp (s : ts2) t -> Exp ts2 t
- Language.Glambda.Type: emptyContext :: SCtx []
+ Language.Glambda.Type: emptyContext :: SCtx '[]
- Language.Glambda.Util: data (:~:) (a :: k) (b :: k) :: k -> k -> *
+ Language.Glambda.Util: data (:~:) k (a :: k) (b :: k) :: forall k. k -> k -> *
Files
- CHANGES.md +5/−0
- glambda.cabal +8/−9
- src/Language/Glambda/Check.hs +1/−1
- src/Language/Glambda/Eval.hs +1/−1
- src/Language/Glambda/Exp.hs +1/−1
- src/Language/Glambda/Globals.hs +1/−1
- src/Language/Glambda/Lex.hs +1/−1
- src/Language/Glambda/Monad.hs +4/−5
- src/Language/Glambda/Parse.hs +1/−1
- src/Language/Glambda/Pretty.hs +1/−1
- src/Language/Glambda/Repl.hs +1/−1
- src/Language/Glambda/Shift.hs +1/−1
- src/Language/Glambda/Statement.hs +1/−1
- src/Language/Glambda/Token.hs +1/−1
- src/Language/Glambda/Type.hs +1/−1
- src/Language/Glambda/Unchecked.hs +1/−1
- src/Language/Glambda/Util.hs +1/−1
- tests/Tests/Check.hs +5/−2
- tests/Tests/Util.hs +1/−1
CHANGES.md view
@@ -1,6 +1,11 @@ Release notes for glambda ========================= +1.0.2+-----++Update package dependencies to drop dependency on `either`.+ 1.0.1 -----
glambda.cabal view
@@ -1,11 +1,11 @@ name: glambda-version: 1.0.1+version: 1.0.2 cabal-version: >= 1.10 synopsis: A simply typed lambda calculus interpreter, written with GADTs homepage: https://github.com/goldfirere/glambda category: Compilers/Interpreters-author: Richard Eisenberg <eir@cis.upenn.edu>-maintainer: Richard Eisenberg <eir@cis.upenn.edu>+author: Richard Eisenberg <rae@cs.brynmawr.edu>+maintainer: Richard Eisenberg <rae@cs.brynmawr.edu> bug-reports: https://github.com/goldfirere/glambda/issues stability: unknown extra-source-files: README.md, CHANGES.md@@ -22,14 +22,13 @@ source-repository this type: git location: https://github.com/goldfirere/glambda.git- tag: v1.0.1+ tag: v1.0.2 library build-depends: base == 4.* , ansi-wl-pprint >= 0.6.7.1- , transformers >= 0.3.0.0- , either >= 4.0- , mtl >= 2.1.3.1+ , mtl >= 2.2.1+ , transformers >= 0.4.0.0 , containers >= 0.5 , parsec >= 3.1 , haskeline >= 0.7.1.1@@ -81,8 +80,8 @@ , glambda , template-haskell , ansi-wl-pprint >= 0.6.7.1- , either >= 4.0- , mtl >= 2.1.3.1+ , mtl >= 2.2.1+ , transformers >= 0.4.0.0 , parsec >= 3.1 , tasty >= 0.8.1 , tasty-hunit >= 0.9
src/Language/Glambda/Check.hs view
@@ -10,7 +10,7 @@ -- Module : Language.Glambda.Unchecked -- Copyright : (C) 2015 Richard Eisenberg -- License : BSD-style (see LICENSE)--- Maintainer : Richard Eisenberg (eir@cis.upenn.edu)+-- Maintainer : Richard Eisenberg (rae@cs.brynmawr.edu) -- Stability : experimental -- -- The glambda typechecker.
src/Language/Glambda/Eval.hs view
@@ -8,7 +8,7 @@ -- Module : Language.Glambda.Eval -- Copyright : (C) 2015 Richard Eisenberg -- License : BSD-style (see LICENSE)--- Maintainer : Richard Eisenberg (eir@cis.upenn.edu)+-- Maintainer : Richard Eisenberg (rae@cs.brynmawr.edu) -- Stability : experimental -- -- Glambda expression evaluators for checked expressions.
src/Language/Glambda/Exp.hs view
@@ -6,7 +6,7 @@ -- Module : Language.Glambda.Exp -- Copyright : (C) 2015 Richard Eisenberg -- License : BSD-style (see LICENSE)--- Maintainer : Richard Eisenberg (eir@cis.upenn.edu)+-- Maintainer : Richard Eisenberg (rae@cs.brynmawr.edu) -- Stability : experimental -- -- The Exp GADT. Glambda expressions encoded in an 'Exp' value are
src/Language/Glambda/Globals.hs view
@@ -6,7 +6,7 @@ -- Module : Language.Glambda.Globals -- Copyright : (C) 2015 Richard Eisenberg -- License : BSD-style (see LICENSE)--- Maintainer : Richard Eisenberg (eir@cis.upenn.edu)+-- Maintainer : Richard Eisenberg (rae@cs.brynmawr.edu) -- Stability : experimental -- -- Manages the global variables in Glambda
src/Language/Glambda/Lex.hs view
@@ -3,7 +3,7 @@ -- Module : Language.Glambda.Lex -- Copyright : (C) 2015 Richard Eisenberg -- License : BSD-style (see LICENSE)--- Maintainer : Richard Eisenberg (eir@cis.upenn.edu)+-- Maintainer : Richard Eisenberg (rae@cs.brynmawr.edu) -- Stability : experimental -- -- Lexes a Glambda program string into a sequence of tokens
src/Language/Glambda/Monad.hs view
@@ -7,7 +7,7 @@ -- Module : Language.Glambda.Monad -- Copyright : (C) 2015 Richard Eisenberg -- License : BSD-style (see LICENSE)--- Maintainer : Richard Eisenberg (eir@cis.upenn.edu)+-- Maintainer : Richard Eisenberg (rae@cs.brynmawr.edu) -- Stability : experimental -- -- The Glam monad, allowing for pretty-printed output to the user, failing@@ -34,9 +34,8 @@ import Text.PrettyPrint.ANSI.Leijen import Control.Monad.Trans.Maybe-import Control.Monad.Trans.Either+import Control.Monad.Except import Control.Monad.Reader-import Control.Monad.Error import Control.Monad.State import System.IO @@ -50,7 +49,7 @@ deriving (Monad, Functor, Applicative, MonadState Globals, MonadIO) -- | Like the 'Glam' monad, but also supporting error messages via 'Doc's-newtype GlamE a = GlamE { unGlamE :: EitherT Doc Glam a }+newtype GlamE a = GlamE { unGlamE :: ExceptT Doc Glam a } deriving (Monad, Functor, Applicative, MonadError Doc) instance MonadReader Globals GlamE where@@ -106,4 +105,4 @@ -- | Run a 'GlamE' computation runGlamE :: GlamE a -> Glam (Either Doc a) runGlamE thing_inside- = runEitherT $ unGlamE thing_inside+ = runExceptT $ unGlamE thing_inside
src/Language/Glambda/Parse.hs view
@@ -5,7 +5,7 @@ -- Module : Language.Glambda.Parse -- Copyright : (C) 2015 Richard Eisenberg -- License : BSD-style (see LICENSE)--- Maintainer : Richard Eisenberg (eir@cis.upenn.edu)+-- Maintainer : Richard Eisenberg (rae@cs.brynmawr.edu) -- Stability : experimental -- -- Parses tokens into the un-type-checked AST. "Parsing", in glambda,
src/Language/Glambda/Pretty.hs view
@@ -14,7 +14,7 @@ -- Module : Language.Glambda.Pretty -- Copyright : (C) 2015 Richard Eisenberg -- License : BSD-style (see LICENSE)--- Maintainer : Richard Eisenberg (eir@cis.upenn.edu)+-- Maintainer : Richard Eisenberg (rae@cs.brynmawr.edu) -- Stability : experimental -- -- Pretty-printing expressions. This allows reduction of code duplication
src/Language/Glambda/Repl.hs view
@@ -11,7 +11,7 @@ -- Module : Language.Glambda.Repl -- Copyright : (C) 2015 Richard Eisenberg -- License : BSD-style (see LICENSE)--- Maintainer : Richard Eisenberg (eir@cis.upenn.edu)+-- Maintainer : Richard Eisenberg (rae@cs.brynmawr.edu) -- Stability : experimental -- -- Implements a REPL for glambda.
src/Language/Glambda/Shift.hs view
@@ -6,7 +6,7 @@ -- Module : Language.Glambda.Shift -- Copyright : (C) 2015 Richard Eisenberg -- License : BSD-style (see LICENSE)--- Maintainer : Richard Eisenberg (eir@cis.upenn.edu)+-- Maintainer : Richard Eisenberg (rae@cs.brynmawr.edu) -- Stability : experimental -- -- de Bruijn shifting and substitution
src/Language/Glambda/Statement.hs view
@@ -3,7 +3,7 @@ -- Module : Language.Glambda.Statement -- Copyright : (C) 2015 Richard Eisenberg -- License : BSD-style (see LICENSE)--- Maintainer : Richard Eisenberg (eir@cis.upenn.edu)+-- Maintainer : Richard Eisenberg (rae@cs.brynmawr.edu) -- Stability : experimental -- -- Defines the Glambda Statement type, which can either be a bare
src/Language/Glambda/Token.hs view
@@ -5,7 +5,7 @@ -- Module : Language.Glambda.Token -- Copyright : (C) 2015 Richard Eisenberg -- License : BSD-style (see LICENSE)--- Maintainer : Richard Eisenberg (eir@cis.upenn.edu)+-- Maintainer : Richard Eisenberg (rae@cs.brynmawr.edu) -- Stability : experimental -- -- Defines a lexical token
src/Language/Glambda/Type.hs view
@@ -6,7 +6,7 @@ -- Module : Language.Glambda.Type -- Copyright : (C) 2015 Richard Eisenberg -- License : BSD-style (see LICENSE)--- Maintainer : Richard Eisenberg (eir@cis.upenn.edu)+-- Maintainer : Richard Eisenberg (rae@cs.brynmawr.edu) -- Stability : experimental -- -- Defines types
src/Language/Glambda/Unchecked.hs view
@@ -3,7 +3,7 @@ -- Module : Language.Glambda.Unchecked -- Copyright : (C) 2015 Richard Eisenberg -- License : BSD-style (see LICENSE)--- Maintainer : Richard Eisenberg (eir@cis.upenn.edu)+-- Maintainer : Richard Eisenberg (rae@cs.brynmawr.edu) -- Stability : experimental -- -- Defines the AST for un-type-checked expressions
src/Language/Glambda/Util.hs view
@@ -6,7 +6,7 @@ -- Module : Language.Glambda.Util -- Copyright : (C) 2015 Richard Eisenberg -- License : BSD-style (see LICENSE)--- Maintainer : Richard Eisenberg (eir@cis.upenn.edu)+-- Maintainer : Richard Eisenberg (rae@cs.brynmawr.edu) -- Stability : experimental -- -- Utility exports (and re-exports) for glambda. This module is meant to
tests/Tests/Check.hs view
@@ -13,7 +13,7 @@ import Language.Glambda.Globals import Language.Glambda.Util -import Control.Monad.Trans.Either+import Control.Monad.Trans.Except import Control.Monad.Reader import Text.PrettyPrint.ANSI.Leijen@@ -53,7 +53,7 @@ checkTests = testGroup "Typechecker" $ List.map (\(expr_str, m_result) -> testCase ("`" ++ expr_str ++ "'") $- (case flip runReader id_globals $ runEitherT $ do+ (case flip runReader id_globals $ runExceptT $ do uexp <- hoistEither $ Arrow.left text $ parseExp =<< lex expr_str check uexp $ \sty exp -> return $ case m_result of@@ -65,6 +65,9 @@ of Left _ -> assertBool "unexpected failure" (isNothing m_result) Right b -> b)) checkTestCases++hoistEither :: Monad m => Either e a -> ExceptT e m a+hoistEither = ExceptT . return id_globals :: Globals id_globals = extend "id_int" (SIntTy `SArr` SIntTy) (Lam (Var EZ)) emptyGlobals
tests/Tests/Util.hs view
@@ -6,7 +6,7 @@ -- Module : Tests.Util -- Copyright : (C) 2015 Richard Eisenberg -- License : BSD-style (see LICENSE)--- Maintainer : Richard Eisenberg (eir@cis.upenn.edu)+-- Maintainer : Richard Eisenberg (rae@cs.brynmawr.edu) -- Stability : experimental -- -- Utility definnitions for testing glambda