Clojure 允许将二进制函数(每个二进制函数?),特别是,+
应用于多个参数:
(+ 1 2 3) ; 6
我了解它的处理方式(在参数列表中类似于减少):
(+ (+ 1 2) 3) => (+ 3 3) => 6
让我们考虑关系,比如 <、= 等:
(< 1 2 3) ; true
但是现在我不明白 Clojure 是如何处理它的。它不能像上面的示例那样,因为 (< 1 2) 是布尔值,并且与整数的比较是没有意义的:
(< 1 2 3) => (< (< 1 2) 3) => (< true 3) ; bad!
这是不正确的。万一有关系,里面应该有隐藏and
:
(< 1 2 3 4) => (and (< 1 2) (< 2 3) (< 3 4))
这是问题。他们是如何被对待的?我的意思是,对我来说,就好像没有对函数(arg list 基本上用这个函数减少)和比较进行统一处理。Clojure 是否区分这些情况?