[obsidian] vault backup: 2023-09-02 22:58:04[
This commit is contained in:
		| @@ -64,6 +64,14 @@ impl<'a, T: Clone> Drop for EnvironmentT<'a, T> { | |||||||
| ので、evalを相互再帰するヘルパー関数とかでこういう感じにした方が楽かも | ので、evalを相互再帰するヘルパー関数とかでこういう感じにした方が楽かも | ||||||
|  |  | ||||||
| ```rust | ```rust | ||||||
|  | fn lookup(env: &mut Vec<(String, Value)>, name: &String) -> Option<Value> { | ||||||
|  |     let res = env | ||||||
|  |         .iter() | ||||||
|  |         .rev() | ||||||
|  |         .filter(|(n, _v)| name == n) | ||||||
|  |         .collect::<Vec<_>>(); | ||||||
|  |     res.get(0).map(|(_, v)| v.clone()) | ||||||
|  | } | ||||||
| fn eval_with_new_env<'a>( | fn eval_with_new_env<'a>( | ||||||
|     e_meta: Box<WithMeta<ast::Expr>>, |     e_meta: Box<WithMeta<ast::Expr>>, | ||||||
|     env: &'a mut Vec<(String, Value)>, |     env: &'a mut Vec<(String, Value)>, | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user