From 9495c3b12ac3bee7094cca52ea0f6227bf3b3cbd Mon Sep 17 00:00:00 2001 From: sebastianselander Date: Mon, 15 May 2023 13:45:50 +0200 Subject: [PATCH] Fixed error message --- sample-programs/eta_test2.crf | 4 ++-- sample-programs/lambda_calculus-2.crf | 11 ++++------- src/Renamer/Renamer.hs | 2 +- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/sample-programs/eta_test2.crf b/sample-programs/eta_test2.crf index f7a1555..d4ba56f 100644 --- a/sample-programs/eta_test2.crf +++ b/sample-programs/eta_test2.crf @@ -13,7 +13,7 @@ add x y = x + y sum : List Int -> Int sum xs = case xs of Nil => 0 - Cons a as => a + (sum xs) + Cons x xs => x + (sum xs) main : Int -main = sum (map (add 1) (Cons 1 Nil)) +main = sum (map (add 1) (Cons 4 (Cons 3 (Cons 2 (Cons 1 Nil))))) diff --git a/sample-programs/lambda_calculus-2.crf b/sample-programs/lambda_calculus-2.crf index acf7885..bfa08bc 100644 --- a/sample-programs/lambda_calculus-2.crf +++ b/sample-programs/lambda_calculus-2.crf @@ -1,9 +1,6 @@ -data List a where - Nil : List a - Cons : a -> List a -> List a - -data Pair a b where - Pair : a -> b -> Pair a b +-- data List a where +-- Nil : List a +-- Cons : a -> List a -> List a data Exp where EVar : Char -> Exp @@ -34,7 +31,7 @@ eval cxt exp = case exp of EAbs x e => VClosure cxt x e EApp e1 e2 => case eval cxt e1 of -- FIXME segmentation fault när man löser f istället för 1000 - VClosure delta x f => eval delta (EInt 1000) + VClosure delta x f => eval delta f -- EApp e1 e2 => case eval cxt e1 of -- VClosure delta x f => -- let v = VClosure cxt x e2 in diff --git a/src/Renamer/Renamer.hs b/src/Renamer/Renamer.hs index 1eee3f0..825ef31 100644 --- a/src/Renamer/Renamer.hs +++ b/src/Renamer/Renamer.hs @@ -94,7 +94,7 @@ newtype Rn a = Rn {runRn :: ExceptT String (State Cxt) a} getName :: LIdent -> Rn LIdent getName name = maybeToRightM err =<< gets (Map.lookup name . names) - where err = "Can't find new name " ++ printTree name + where err = "Unbound variable: '" ++ printTree name ++ "'" newName :: LIdent -> Rn LIdent newName name = do