✨
This commit is contained in:
@ -27,9 +27,9 @@ instance Monad CheckM where
|
|||||||
let CheckM y = f x'
|
let CheckM y = f x'
|
||||||
in y vars
|
in y vars
|
||||||
|
|
||||||
elem' :: VName -> [VName] -> Bool
|
inList :: VName -> [VName] -> Bool
|
||||||
elem' _ [] = False
|
inList _ [] = False
|
||||||
elem' x (y : ys) = if x == y then True else elem' x ys
|
inList x (y : ys) = if x == y then True else inList x ys
|
||||||
|
|
||||||
askVars :: CheckM Vars
|
askVars :: CheckM Vars
|
||||||
askVars = CheckM $ \vars -> Right vars
|
askVars = CheckM $ \vars -> Right vars
|
||||||
@ -68,7 +68,7 @@ check (KvGet e1) = check e1
|
|||||||
check (KvPut e1 e2) = checkBinOp e1 e2
|
check (KvPut e1 e2) = checkBinOp e1 e2
|
||||||
check (Var v) = do
|
check (Var v) = do
|
||||||
vars <- askVars
|
vars <- askVars
|
||||||
if elem' v vars
|
if inList v vars
|
||||||
then pure ()
|
then pure ()
|
||||||
else CheckM $ \_vars -> Left $ "Variable not in scope: "++v
|
else CheckM $ \_vars -> Left $ "Variable not in scope: "++v
|
||||||
check (Let var e1 e2) = do
|
check (Let var e1 e2) = do
|
||||||
|
Reference in New Issue
Block a user