【发布时间】:2015-07-29 15:00:00
【问题描述】:
我想创建一个 ||像其他语言一样与 Clojure 进行比较。
(defmacro ||
[source & other]
`(loop [s# [~source ~@other]]
(println s#)
(let [fs# (first s#)]
(if fs#
fs#
(if (= (count s#) 1)
fs#
(recur (next s#)))))))
但这行不通。 fs# 值是报价数据。
喜欢这个
(def a [1])
(defn b []
(println 11111))
(|| (get a 0) (b))
我希望结果为 1,这是 (get a 0) 但结果是 (get a 0) 这是表达式,而不是 var。如何创建 ||宏?
【问题讨论】: