我正在查看memoize
的來源。 從像C++/Python這樣的語言的到來,這部分打我辛苦: (let [mem (atom {})] (fn [& args] (if-let [e (find @mem args)] ...
clojure什麼時候刪除變量?
我意識到memoize
返回功能,但對於存儲狀態,它採用的是當地的「變量」 mem
。但後memoize
還原函數,不應該從外部讓範圍消失。功能如何仍然可以參考mem
。
爲什麼Clojure不刪除該外部變量,以及它如何管理變量名稱。就像假設,我做了另一個memoized函數,然後memoize
使用另一個mem
。這個名字是不是與早期的mem
相沖突?
P.S:我在想,一定有很多的東西可以在那裏發生的事情,是防止,所以我寫了自己是一個容易的版本,即是這樣http://ideone.com/VZLsJp,但目前仍然可以工作,如memoize
。
@Flimzy,謝謝你的好評:D –