@@ -1,7 +1,7 @@
1{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances,
1{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances,
2 PatternGuards #-}
2 PatternGuards #-}
4−module Core.Evaluate(normalise, specialise, hnf,
4+module Core.Evaluate(normalise, normaliseC, specialise, hnf,
5 Fun(..), Def(..), Context,
5 Fun(..), Def(..), Context,
6 addToCtxt, addTyDecl, addDatatype, addCasedef, addOperator,
6 addToCtxt, addTyDecl, addDatatype, addCasedef, addOperator,
7 lookupTy, lookupP, lookupDef, lookupVal, lookupTyEnv,
7 lookupTy, lookupP, lookupDef, lookupVal, lookupTyEnv,
@@ -51,6 +51,11 @@ instance Show (a -> b) where
51-- i.e. it's an intermediate environment that we have while type checking or
51-- i.e. it's an intermediate environment that we have while type checking or
52-- while building a proof.
52-- while building a proof.
54+normaliseC :: Context -> Env -> TT Name -> TT Name
56+ = evalState (do val <- eval ctxt emptyContext env t []
54normalise :: Context -> Env -> TT Name -> TT Name
59normalise :: Context -> Env -> TT Name -> TT Name
55normalise ctxt env t
60normalise ctxt env t
56 = evalState (do val <- eval ctxt emptyContext (map finalEntry env) (finalise t) []
61 = evalState (do val <- eval ctxt emptyContext (map finalEntry env) (finalise t) []
@@ -103,7 +108,7 @@ eval ctxt statics genv tm opts = ev True [] tm where
103 ev top env (V i) | i < length env = return $ env !! i
108 ev top env (V i) | i < length env = return $ env !! i
104 | otherwise = return $ VV i
109 | otherwise = return $ VV i
105 ev top env (Bind n (Let t v) sc)
110 ev top env (Bind n (Let t v) sc)
106− = do v' <- ev top env (finalise v)
111+ = do v' <- ev top env v --(finalise v)
107 sc' <- ev top (v' : env) sc
112 sc' <- ev top (v' : env) sc
108 wknV (-1) sc'
113 wknV (-1) sc'
109 ev top env (Bind n (NLet t v) sc)
114 ev top env (Bind n (NLet t v) sc)