feat: do statement for blocks
This commit is contained in:
parent
5bdc677763
commit
58d1ffe48f
1 changed files with 13 additions and 1 deletions
14
src/env/core.rs
vendored
14
src/env/core.rs
vendored
|
@ -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<String, Node> {
|
|||
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",
|
||||
|
|
Loading…
Reference in a new issue