feat: do statement for blocks

This commit is contained in:
Roman Godmaire 2024-05-04 18:05:09 -04:00
parent 5bdc677763
commit 58d1ffe48f

14
src/env/core.rs vendored
View file

@ -2,7 +2,7 @@ use std::borrow::Borrow;
use std::collections::HashMap; use std::collections::HashMap;
use crate::error::Error; use crate::error::Error;
use crate::evaluator::eval_node; use crate::evaluator::{eval, eval_node};
use crate::macros::arg_count; use crate::macros::arg_count;
use crate::node::Node; use crate::node::Node;
@ -347,6 +347,18 @@ pub(super) fn core() -> HashMap<String, Node> {
Ok(Node::String(val.to_string())) 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 // IO
( (
"display", "display",