gpt4 book ai didi

function - Clojure 首先和休息

转载 作者:行者123 更新时间:2023-12-04 22:49:28 25 4
gpt4 key购买 nike

为什么我会得到 2 个不同的值

(apply (first '(+ 1 2)) (rest '(+ 1 2)))
> 2


(apply + '(1 2))
> 3

什么时候
(first '(+ 1 2)) 
> +


(rest '(+ 1 2))
> (1 2)

我尝试减少并得到相同的值
(reduce (first '(+ 1 2)) (rest '(+ 1 2)))
> 2

最佳答案

你的问题是你试图调用符号 '+而不是函数+ .当您调用一个符号时,它会尝试在第一个参数中查找该符号(例如,如果它是 {'a 1 '+ 5 'b 2} 你会得到 5 )。如果您传递第二个参数,则返回该值而不是 nil如果在第一个参数中找不到符号。所以当你调用('+ 1 2) ,它会尝试查找 '+在 1 中失败,所以它返回 2。

顺便说一下,这就是使用 '(+ 1 2) 创建列表的区别。和 (list + 1 2) .前者创建符号 +、1 和 2 的列表。因为 '1 和 1 相同,所以没关系。但是符号'+不是Var clojure.core/+,所以后者获取Var的值而前者只是获取符号。所以如果你已经完成了(list + 1 2) ,你可以按照书面的方式工作。

关于function - Clojure 首先和休息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11054988/

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