From 58d1ffe48fd6921d23d178ee9074e828f2e2b1ef Mon Sep 17 00:00:00 2001 From: Roman Godmaire Date: Sat, 4 May 2024 18:05:09 -0400 Subject: [PATCH] feat: do statement for blocks --- src/env/core.rs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/env/core.rs b/src/env/core.rs index a6d1606..af7d632 100644 --- a/src/env/core.rs +++ b/src/env/core.rs @@ -2,7 +2,7 @@ use std::borrow::Borrow; use std::collections::HashMap; use crate::error::Error; -use crate::evaluator::eval_node; +use crate::evaluator::{eval, eval_node}; use crate::macros::arg_count; use crate::node::Node; @@ -347,6 +347,18 @@ pub(super) fn core() -> HashMap { Ok(Node::String(val.to_string())) }), ), + ( + "do", + Node::Special(|env, args| { + let res = eval(env, args)?; + + if let Some(res) = res.last() { + return Ok(res.to_owned()); + } + + Ok(Node::Nil) + }), + ), // IO ( "display",