我正在尝试了解Clojure宏如何应用于列表。以下内容让我感到困惑:
这是正常现象吗?我注意到,我传递给宏的列表在宏内部使用
我正在尝试了解Clojure宏如何应用于列表。以下内容让我感到困惑:
(defmacro islist [f] (list? f))
(islist (1 2)) ; true
(islist '(1 2)) ; false
(islist (quote (1 2))) ; true
这是正常现象吗?我注意到,我传递给宏的列表在宏内部使用
list?
进行求值时会返回false。也就是说,第二个示例特别令人困惑。