我正在查看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 –