aboutsummaryrefslogtreecommitdiff
path: root/rust/src/step2_eval.rs
diff options
context:
space:
mode:
authorJoel Martin <github@martintribe.org>2014-10-27 22:39:31 -0500
committerJoel Martin <github@martintribe.org>2015-01-06 21:59:00 -0600
commitbd3067230dcbd18fb1f0db7abb52c4ea1c2e227b (patch)
tree08c01aaacbc469ea4d1ad950852bf67aeb4cdcae /rust/src/step2_eval.rs
parent06fef9b51830a2aa696f3e108c56f306967ce465 (diff)
downloadmal-bd3067230dcbd18fb1f0db7abb52c4ea1c2e227b.tar.gz
mal-bd3067230dcbd18fb1f0db7abb52c4ea1c2e227b.zip
rust: add metadata support.
Diffstat (limited to 'rust/src/step2_eval.rs')
-rw-r--r--rust/src/step2_eval.rs10
1 files changed, 5 insertions, 5 deletions
diff --git a/rust/src/step2_eval.rs b/rust/src/step2_eval.rs
index 29c53d9..9e33042 100644
--- a/rust/src/step2_eval.rs
+++ b/rust/src/step2_eval.rs
@@ -29,7 +29,7 @@ fn eval_ast(ast: MalVal, env: &HashMap<String,MalVal>) -> MalRet {
None => Ok(_nil()),
}
},
- List(ref a) | Vector(ref a) => {
+ List(ref a,_) | Vector(ref a,_) => {
let mut ast_vec : Vec<MalVal> = vec![];
for mv in a.iter() {
match eval(mv.clone(), env) {
@@ -37,10 +37,10 @@ fn eval_ast(ast: MalVal, env: &HashMap<String,MalVal>) -> MalRet {
Err(e) => return Err(e),
}
}
- Ok(match *ast { List(_) => list(ast_vec),
+ Ok(match *ast { List(_,_) => list(ast_vec),
_ => vector(ast_vec) })
},
- Hash_Map(ref hm) => {
+ Hash_Map(ref hm,_) => {
let mut new_hm: HashMap<String,MalVal> = HashMap::new();
for (key, value) in hm.iter() {
match eval(value.clone(), env) {
@@ -59,7 +59,7 @@ fn eval_ast(ast: MalVal, env: &HashMap<String,MalVal>) -> MalRet {
fn eval(ast: MalVal, env: &HashMap<String,MalVal>) -> MalRet {
let ast2 = ast.clone();
match *ast2 {
- List(_) => (), // continue
+ List(_,_) => (), // continue
_ => return eval_ast(ast2, env),
}
@@ -68,7 +68,7 @@ fn eval(ast: MalVal, env: &HashMap<String,MalVal>) -> MalRet {
Err(e) => Err(e),
Ok(el) => {
match *el {
- List(ref args) => {
+ List(ref args,_) => {
let ref f = args.clone()[0];
f.apply(args.slice(1,args.len()).to_vec())
}