2

我需要执行以下操作:

(defn make-menu [] (for [i (range 3)] '(+ i 100)))

我需要 make-menu 返回: ('(+ 0 100) '(+ 1 100) '(+ 2 100))

请注意,向量包含非评估函数。

是否可以在 Clojure 中执行此操作?

谢谢你的帮助!

雅库布

4

1 回答 1

5
(defn make-menu [] (for [i (range 3)] (list '+ i 100)))

或者

(defn make-menu [] (for [i (range 3)] `(+ ~i 100)))

第一种形式只是三个元素的列表:符号 + 引用,i 计算为 for 列表理解中绑定的值和 100。

第二种形式是语法引用的示例。注意普通引用和语法引用之间的区别':第二个允许通过前缀来评估子表单~。它也完全限定符号,因此+变为clojure.core/+. 普通引用只是引用引用形式中的每个子元素,因此无法进行评估。

于 2013-01-25T18:00:22.687 回答