diff options
| author | Joel Martin <github@martintribe.org> | 2014-10-27 22:39:31 -0500 |
|---|---|---|
| committer | Joel Martin <github@martintribe.org> | 2015-01-06 21:59:00 -0600 |
| commit | bd3067230dcbd18fb1f0db7abb52c4ea1c2e227b (patch) | |
| tree | 08c01aaacbc469ea4d1ad950852bf67aeb4cdcae /rust/src/step2_eval.rs | |
| parent | 06fef9b51830a2aa696f3e108c56f306967ce465 (diff) | |
| download | mal-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.rs | 10 |
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()) } |
