gpt4 book ai didi

Clojure:处理 < 和 + 的多个参数

转载 作者:行者123 更新时间:2023-12-02 18:36:39 27 4
gpt4 key购买 nike

Clojure 允许将二元函数(每个二元函数?),特别是 + 应用于多个参数:

(+ 1 2 3) ; 6

我了解它的处理方式(类似于参数列表中的减少):

(+ (+ 1 2) 3) => (+ 3 3) => 6

让我们考虑一下关系,例如 <、= 等:

(< 1 2 3) ; true

但是现在我不明白Clojure是如何对待它的。它不能像上面的示例中那样,因为 (< 1 2) 是 bool 值,与整数比较是没有意义的:

(< 1 2 3) => (< (< 1 2) 3) => (< true 3) ; bad!

这是不正确的。如果是关系,里面应该有隐藏的:

(< 1 2 3 4) => (and (< 1 2) (< 2 3) (< 3 4))

这就是问题。他们的待遇如何?我的意思是,对我来说,函数和比较没有统一的处理(arg 列表基本上用这个函数减少了)。 Clojure 会区分这些情况吗?

最佳答案

阅读the documentation

Returns non-nil if nums are in monotonically increasing order, otherwise false.

同样,对于 > nums 必须按单调递减顺序排列。

如果您阅读源代码(从文档链接),您会发现它相当于您的“隐藏

([x y & more]
(if (< x y)
(if (next more)
(recur y (first more) (next more))
(< y (first more)))
false)))

关于Clojure:处理 < 和 + 的多个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18580505/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com