回答
沒有,因爲部分創建函數只是「正常」的功能。 你可以使用,無論一些元數據,就像這樣:
(defn partial2 [f & more]
(with-meta (apply partial f more) {:partial true}))
(def partial-plus (partial2 + 1 2))
(meta partial-plus) ;;=> {:partial true}
沒有經歷過這種方法雖然後果還真以爲......
Kotarak想出了一個可行的好很多,但不總是。用串/分割爲分割功能
(defn partial? [f]
(let [[fst snd] (-> (class f) (.getName) (string/split #"\$"))]
(= ["clojure.core" "partial"] [fst snd])))
從clojure.string(1.3)或clojure.contrib.str-utils2(1.2):例如藉此:
(partial? (partial + 1)) ;;=> true
(partial? (partial + 1 2)) ;;=> false
這工作。
clojure.string也在1.2中。 – 2012-02-27 13:50:14
你也許應該測試'clojure.core',而不是'partial'。 – kotarak 2012-02-27 14:32:52
好點,固定它。 – 2012-02-27 14:44:30
部分創建的函數只是普通的函數,但是如果你對它感興趣,也許這樣可能會有所幫助? :
(defn partial?
[f]
(clojure.contrib.string/substring? "partial" (str (class f))))
聲明:我不知道這樣的事情是不是傻瓜。
你可以用黑客。
user=> (let [partial-classes (map class [(partial + 1)
(partial + 1 2)
(partial + 1 2 3)
(partial + 1 2 3 4)])]
(defn partial?
[x]
(some #(instance? % x) partial-classes)))
#'user/partial?
user=> (partial? (partial - 1))
true
user=> (partial? (partial - 1 2))
true
user=> (partial? (partial - 1 2 3))
true
user=> (partial? (apply partial - 1 2 [3 4 5]))
true
編輯:根據米歇爾的評論固定。你必須知道內部的partial
證實了哈克的本性。
- 1. 如何檢查函數是否存在?
- 2. 如何檢查一個函數是否是匿名函數R
- 3. 如何檢查一個Javascript函數是否是構造函數
- 4. 如何檢查組件prop是否是React中的函數?
- 5. 如何檢查屬性是否是Javascript中的函數
- 6. 如何檢查ID是否是數字?
- 7. 如何檢查值是否是數字
- 8. 是否有任何Rails函數來檢查部分是否存在?
- 9. 如何檢查python函數是否是龍捲風發電機
- 10. 如何正確檢查回調是否是箭頭函數?
- 11. 檢查數學函數是否有效
- 12. 檢查函數參數是否設置
- 13. 檢查鏈接是否是外部的
- 14. 如何檢查外部類型是否是內部類型?
- 15. 如何檢查參數是否傳遞給C中的函數?
- 16. 如何檢查給函數的參數是否爲列表?
- 17. 如何檢查傳入函數的參數是否爲Go?
- 18. 如何檢查函數的參數是否爲零?
- 19. 是否可以檢查函數的內部語句?
- 20. JavaScript檢查數字是否全部
- 21. 檢查SetParent函數是否工作?
- 22. 函數檢查是否有變量
- 23. PHP - 檢查函數是否包含
- 24. 函數檢查字符串是否有
- 25. 檢查它是否在map()函數
- 26. 檢查函數是否被調用?
- 27. 檢查python函數是否內置
- 28. 檢查列是否存在函數
- 29. 檢查表是否存在函數
- 30. 檢查是否從函數與循環
只是好奇:你爲什麼需要那個? – viebel 2012-02-27 12:38:40
@Yehonathan我在Clojure中實現了沉,我需要區分正常函數和部分函數。 (由於設計決定)。 – 2012-02-27 13:40:07
什麼是沉?另外,通過'#()'創建的匿名函數呢? – viebel 2012-02-27 14:25:31