Clojure允许二进制函数(每个二进制函数?),特别是,+应用于多个args:
(+ 1 2 3) ; 6
Run Code Online (Sandbox Code Playgroud)
我理解它是如何处理的(在参数列表中减少类似):
(+ (+ 1 2) 3) => (+ 3 3) => 6
Run Code Online (Sandbox Code Playgroud)
让我们考虑关系,比如,<= =等:
(< 1 2 3) ; true
Run Code Online (Sandbox Code Playgroud)
但现在我不明白Clojure是如何对待它的.它不像上面的示例,因为(<1 2)是布尔值,并且与整数的比较是没有意义的:
(< 1 2 3) => (< (< 1 2) 3) => (< true 3) ; bad!
Run Code Online (Sandbox Code Playgroud)
这是不正确的.如果是关系,应该隐藏and在内部:
(< 1 2 3 4) => (and (< 1 2) (< 2 3) (< 3 4))
Run Code Online (Sandbox Code Playgroud)
这是问题所在.他们是如何对待的?我的意思是,对我来说,就像没有统一的功能处理(arg list基本上减少了这个功能)和比较.Clojure是否区分了这些案例?
阅读文档
如果nums以单调递增的顺序返回非nil,否则返回false.
同样,>nums必须按单调递减顺序.
如果您阅读了源代码(从文档链接),您会发现它等同于您的"隐藏and"
([x y & more]
(if (< x y)
(if (next more)
(recur y (first more) (next more))
(< y (first more)))
false)))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
189 次 |
| 最近记录: |