【发布时间】:2015-02-24 20:18:35
【问题描述】:
我试图弄清楚 clojure 中是否有类似于 delay 的宏来获取可以稍后评估的惰性表达式/变量。
用例是Map.get/3 的默认值,因为默认值来自数据库调用,我希望仅在需要时调用它。
【问题讨论】:
-
查看 Clojure 中“延迟”的来源(此处:github.com/clojure/clojure/blob/…)看起来延迟更接近于协议而不是宏。如果我是你,我会调查 Elixir 中的协议并以这种方式进行。
-
在提问之前我检查了
delay的源代码,有趣的是delay是用java 实现的,而不是clojure——它允许对表达式进行不同的构造和操作。
标签: clojure elixir lazy-evaluation