在此代碼,適用和不適用和部分在clojure之間有什麼區別?
user> (= (apply partial partial [+])
(partial partial +))
false
user>
是什麼(施加部分局部[+])
和
(局部的局部+)
之間的差
?
在這段代碼,
user> (= (apply + []) (+)) true
爲什麼返回值是不是假的呢?
在此代碼,適用和不適用和部分在clojure之間有什麼區別?
user> (= (apply partial partial [+])
(partial partial +))
false
user>
是什麼(施加部分局部[+])
和
(局部的局部+)
之間的差
?
在這段代碼,
user> (= (apply + []) (+)) true
爲什麼返回值是不是假的呢?
在Clojure
中沒有函數相等的一般定義。有微不足道的身份,如果兩個對象相同,他們適用於平等。但部分創建了一個新對象。例如:
user> (= (partial + 0) (partial + 0))
false
作爲人類的讀者,我們可以看到,這些相同的功能(兩者都是相同的功能,+
本身)。但是在Clojure語言中沒有邏輯允許確定這種平等。
由於
(apply + [])
;0
(+)
;0
...然後
(= (apply + []) (+))
;true
...並且,進一步@noisesmith's answer,
(= (partial +) +)
;true
...因爲partial
有一個說法返回它。
(partial +)
;#<core$_PLUS_ [email protected]>
+
;#<core$_PLUS_ [email protected]>
但partial
有幾個參數構建匿名函數對象。只有它們是相同的 - 同一個對象,函數纔是相等的。兩個這樣的電話partial
- 即使有相同的論點 - 產生兩個不同的因此不平等的對象。
(partial partial +)
;#<core$partial$fn__4198 [email protected]>
(partial partial +)
;#<core$partial$fn__4198 [email protected]>