From 10feb2dc8ad775a64b6db4d19c76bd6fa38044a8 Mon Sep 17 00:00:00 2001 From: Arnaud Bailly Date: Wed, 5 Nov 2025 12:07:48 +0100 Subject: fix resolution of free variables --- lambda-calcul/haskell/src/Minilang/Lambda/DeBruijn.hs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'lambda-calcul/haskell/src/Minilang/Lambda/DeBruijn.hs') diff --git a/lambda-calcul/haskell/src/Minilang/Lambda/DeBruijn.hs b/lambda-calcul/haskell/src/Minilang/Lambda/DeBruijn.hs index de179ad..025fd39 100644 --- a/lambda-calcul/haskell/src/Minilang/Lambda/DeBruijn.hs +++ b/lambda-calcul/haskell/src/Minilang/Lambda/DeBruijn.hs @@ -47,14 +47,16 @@ eval (App f a) = f' -> App f' a eval term = term -eval' :: Show ann => Env ann -> DeBruijn ann -> DeBruijn ann +eval' :: (Show ann, Eq ann) => Env ann -> DeBruijn ann -> DeBruijn ann eval' env (FV v) = case lookup v env of Just term -> term Nothing -> FV v eval' env (App f a) = case eval' env f of Lam _ body -> eval' env (substitute env 0 a body) - f' -> eval' env $ App f' a + f' -> if f' /= f + then eval' env $ App f' a + else App f' a eval' _ term = term substitute :: Env ann -> Int -> DeBruijn ann -> DeBruijn ann -> DeBruijn ann -- cgit v1.3.1