Skip to content

Commit 180d097

Browse files
authored
Merge pull request #78 from JohanWiltink/main
Parse _name in terms as undefined
2 parents 756fbeb + a0a3499 commit 180d097

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

src/lambda-calculus.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,10 @@ function parse(code) {
232232
const r = name(i);
233233
if ( r ) {
234234
const [j,name] = r;
235-
return [j,new V(name)];
235+
if ( name==="_" )
236+
return [j,new V("()")];
237+
else
238+
return [j,new V(name)];
236239
} else
237240
return null;
238241
}
@@ -325,8 +328,10 @@ function evalLC(term) {
325328
let argEnv;
326329
if ( arg?.term && arg?.env ) ({ term: arg, env: argEnv } = arg); // if callback is passed another callback, or a term
327330
const termVal = new Tuple( typeof arg === 'number' ? fromInt(arg) : arg , new Env(argEnv) );
328-
if (term.name === "_") return runEval( new Tuple(term.body, new Env(env)), stack );
329-
return runEval( new Tuple(term.body, new Env(env).setThunk(term.name, termVal)), stack );
331+
if ( term.name==="_" )
332+
return runEval( new Tuple(term.body, new Env(env)), stack );
333+
else
334+
return runEval( new Tuple(term.body, new Env(env).setThunk(term.name, termVal)), stack );
330335
}
331336
return Object.assign( result, {term,env} );
332337
}

0 commit comments

Comments
 (0)