尝试在地图表达式中使用和宏作为函数名称

时间:2018-11-30 08:49:28

标签: clojure

我具有以下功能:

(defn full-house? [hand]
  (->> (split-to-two-and-three hand)
       (map #(map are-all-equal-nums? %))
       (map #(and (first %) (second %)))
       (some true?)))

效果很好。

但是,如果我尝试像这样重写第二个map子句:

(defn full-house? [hand]
  (->> (split-to-two-and-three hand)
       (map #(map are-all-equal-nums? %))
       (map #(apply and %))
       (some true?)))

我得到一个java.lang.RuntimeExceptionCan't take value of a macro: #'clojure.core/and...

在第二个map子句中,线程化数据看起来像[[x y] [p q] ...]

您能解释一下为什么会发生这种情况以及解决这种情况的正常方法吗? (对于本示例,这很好,因为每个子集合中只有两个项目。但是第二个版本无论如何看起来都更好,更短。)

0 个答案:

没有答案