From 7b01ac45fc682f5b247e7ef37a01c4905b3eb8e4 Mon Sep 17 00:00:00 2001 From: minneelyyyy Date: Wed, 16 Oct 2024 16:38:28 -0400 Subject: [PATCH] re-implement lambdas --- src/parser.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/parser.rs b/src/parser.rs index 2376996..caa68b7 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -242,7 +242,13 @@ impl ParseTree { Op::NotEqualTo => two_arg!(NotEqualTo, tokens, globals, locals), Op::And => two_arg!(And, tokens, globals, locals), Op::Or => two_arg!(Or, tokens, globals, locals), - Op::LambdaDefine(_arg_count) => todo!(), + Op::LambdaDefine(arg_count) => { + let mut f = ParseTree::parse_function(tokens, arg_count)?; + + f.body = Some(Box::new(ParseTree::parse(tokens, globals, locals)?)); + + Ok(ParseTree::LambdaDefinition(f)) + } Op::NonCall => todo!(), op => Err(ParseError::UnwantedToken(Token::Operator(op))), }