From 80a41fbbd8782f5576770711b697ce82445337fc Mon Sep 17 00:00:00 2001 From: Kacarott Date: Mon, 14 Mar 2022 19:13:31 +0100 Subject: [PATCH 1/2] Fix #80 --- src/lambda-calculus.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lambda-calculus.js b/src/lambda-calculus.js index 20a9c87..9c83dea 100644 --- a/src/lambda-calculus.js +++ b/src/lambda-calculus.js @@ -372,7 +372,7 @@ function evalLC(term) { env = new Env(env).setThunk(term.name, new Tuple(lastTerm, lastEnv)); term = term.body; } else { // Pass the function some other function. - term = lastTerm(awaitArg(term, stack, env)); + term = lastTerm(awaitArg(term, [], env)); } } else if ( term instanceof Tuple ) { // for primitives From cd0cfbe6dfe408fd69527b44669c2dd4e172e399 Mon Sep 17 00:00:00 2001 From: Kacarott Date: Mon, 14 Mar 2022 19:20:45 +0100 Subject: [PATCH 2/2] Give _ in body a defname --- src/lambda-calculus.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/lambda-calculus.js b/src/lambda-calculus.js index 9c83dea..e09a058 100644 --- a/src/lambda-calculus.js +++ b/src/lambda-calculus.js @@ -231,11 +231,13 @@ function parse(code) { function v(i) { const r = name(i); if ( r ) { - const [j,name] = r; - if ( name==="_" ) - return [j,new V("()")]; - else - return [j,new V(name)]; + const [j,termName] = r; + if ( termName==="_" ) { + const undef = new V("()"); + undef.defName = name(0)[1]; + return [j,undef]; + } else + return [j,new V(termName)]; } else return null; }