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",