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 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",
|
||||||
|
|
Loading…
Reference in a new issue