clojure中应用和不应用以及部分的区别是什么?

clojure中应用和不应用以及部分的区别是什么?,clojure,functional-programming,Clojure,Functional Programming,在这部法典中 user> (= (apply partial partial [+]) (partial partial +)) false user> user> (= (apply + []) (+)) true 两者的区别是什么 (应用部分[+]) 及 (部分+) ? 在这部法典中 user> (= (apply partial partial [+]) (partial partial +)) false user>

在这部法典中

user> (= (apply partial partial [+])
     (partial partial +))
false
user> 
user> (= (apply +  [])
     (+))
true
两者的区别是什么

(应用部分[+])

(部分+)

?

在这部法典中

user> (= (apply partial partial [+])
     (partial partial +))
false
user> 
user> (= (apply +  [])
     (+))
true
那么为什么返回值不是false呢?

因为

(apply +  [])
;0

(+)
;0
。。。然后

(= (apply + []) (+))
;true

。。。此外

。。。因为带有一个参数的
partial
返回它

(partial +)
;#<core$_PLUS_ clojure.core$_PLUS_@5746e7cc>

+
;#<core$_PLUS_ clojure.core$_PLUS_@5746e7cc>

。。。然后

(= (apply + []) (+))
;true

。。。此外

。。。因为带有一个参数的
partial
返回它

(partial +)
;#<core$_PLUS_ clojure.core$_PLUS_@5746e7cc>

+
;#<core$_PLUS_ clojure.core$_PLUS_@5746e7cc>

Clojure
中没有函数相等的一般定义。如果两个对象相同,则它们应用为相等,这是一个微不足道的恒等式。但局部创建了一个新对象。例如:

user> (= (partial + 0) (partial + 0))
false

作为人类读者,我们可以看到它们是相同的函数(并且两者都是与
+
本身相同的函数)。但是Clojure语言中没有逻辑来确定这种相等。

Clojure中没有函数相等的一般定义。如果两个对象相同,则它们应用为相等,这是一个微不足道的恒等式。但局部创建了一个新对象。例如:

user> (= (partial + 0) (partial + 0))
false
作为人类读者,我们可以看到它们是相同的函数(并且两者都是与
+
本身相同的函数)。但Clojure语言中没有逻辑可以确定这种平等