diff options
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/main.rs b/src/main.rs index 30bd136..d7a2196 100644 --- a/src/main.rs +++ b/src/main.rs @@ -191,13 +191,15 @@ fn repl(mut binds: Vec<SExp>) -> Result<(), io::Error> { } let orig_expression = match parse_to_ast(&input) { - Ok(SCons(a, b)) if *b == Atom(Nil) => *a, + Ok(SCons(a, b)) if *b == Atom(Nil) && *a != Atom(Nil) => *a, + Ok(Atom(Nil)) => scons(Nil, Nil), Ok(t) => t, Err(e) => { println!("Syntax error: {}", e); continue; }, }; + if let Some((name, _value)) = orig_expression.clone().check_let() { let mut expr = scons(orig_expression.clone(), scons(Nil, Nil)); for i in 1..=binds.len() { |