为什么不(申请或[真假])在Clojure工作?

Tac*_*chy 20 clojure apply

根据我对apply的理解,它解压缩列表并将元素转换为函数的参数.

我看到(apply + [1 2 3])按预期工作,即:它相当于(+ 1 2 3).

为什么(apply或[true false])无效?是不是等同于(或真假)?

Chu*_*uck 20

因为or是宏,不是正常功能.您可以获得相同的效果(some identity [true false]).

  • `(减少#(或%1%2)false [true false ...])` (3认同)

Boz*_*sov 5

作为一种替代或者您可以使用(有些谓词科尔)。

clojure.core / some([pred coll])
返回coll 中任何x的(pred x)的第一个逻辑真值,否则返回nil。一个常见的习惯用法是使用set作为pred,例如,如果:fred在序列中,它将返回:fred,否则返回nil:(某些#{:fred} coll)