From afab553a5afe340b09ddc13854507746291cec5a Mon Sep 17 00:00:00 2001 From: "Tomoya Matsuura(MacBookPro)" Date: Sat, 2 Sep 2023 22:58:04 +0900 Subject: [PATCH] [obsidian] vault backup: 2023-09-02 22:58:04[ --- content/Rustでの評価文脈(環境)のRAIIっぽい実装.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/content/Rustでの評価文脈(環境)のRAIIっぽい実装.md b/content/Rustでの評価文脈(環境)のRAIIっぽい実装.md index dd9fbabb..84dfc971 100644 --- a/content/Rustでの評価文脈(環境)のRAIIっぽい実装.md +++ b/content/Rustでの評価文脈(環境)のRAIIっぽい実装.md @@ -64,6 +64,14 @@ impl<'a, T: Clone> Drop for EnvironmentT<'a, T> { ので、evalを相互再帰するヘルパー関数とかでこういう感じにした方が楽かも ```rust +fn lookup(env: &mut Vec<(String, Value)>, name: &String) -> Option { + let res = env + .iter() + .rev() + .filter(|(n, _v)| name == n) + .collect::>(); + res.get(0).map(|(_, v)| v.clone()) +} fn eval_with_new_env<'a>( e_meta: Box>, env: &'a mut Vec<(String, Value)>,