我想對我的列表應用一系列測試,並確保所有測試都通過了。 在Clojure中是否有類似「andmap」的函數?clojure中是否有類似「andmap」的函數?
5
A
回答
9
1
every?
會問「這個函數是否對每個seq的成員都返回true」,這與我認爲你所要求的接近。對every?
的改進將採用函數列表,並詢問「這個seq的每個成員的所有這些謂詞是否正確」。
這是第一次嘗試:
(defn andmap? [data tests]
(every? true? (for [d data, f tests]
(f d))))
user> (andmap? '(2 4 8) [even? pos?])
true
user> (andmap? '(2 4 8) [even? odd?])
false
1
我寫andmap
宏這需要謂詞作爲參數,並建立一個功能,「環繞的謂詞的and
」,即
(andmap integer? odd?)
==>
(fn [x] (and (integer? x)
(odd? x)))
(它並不擴展到,這個確實是這個,但是它擴展到相當於這個的東西)
這具有shortcuircuts的謂詞所以你可以寫
(every? (andmap integer? odd?) [1 3 "a string"])
沒有得到一個運行時異常,你會與Arthurs answer獲得優勢。
這裏是andmap
定義:
(defmacro andmap ([] `(fn [& x#] true)) ([p & ps] `(fn [& x#] (and (apply ~p x#) (apply (andmap [email protected]) x#)))))
也可以定義andmap
作爲函數在其上的謂詞也短路由於lazyness:
(defn andmap [& ps] (fn [& x] (every? true? (map (fn [p] (apply p x)) ps))))
的謂詞andmap可以接受任意數量的參數,因此可以寫入
(map (andmap #(and (integer? %1)
(integer? %2))
#(and (odd? %1)
(even? %2))
<)
[1 3 9]
[2 6 "string"])
其中評估爲(true true false)
。
2
Clojure 1.3將添加每個pred(以及與「或」版本相關的some-fn)。
clojure.core /每-預解碼 ([P] [P1 P2] [P1 P2 P3] [P1 P2 P3 & PS])
採用一組謂詞和返回一個函數f,則返回true如果構成謂詞的所有 都對其所有參數返回邏輯真值,否則返回 false。請注意,f是短路的,因爲它將停止執行第一個參數,該參數會觸發原始謂詞的邏輯錯誤結果。
一個幼稚的做法是:
(DEFN每-PRED [& preds(FN [&參數](每一個#(每%參數)preds))?)
但實際實施將會有更好的表現。
相關問題
- 1. Python是否有andmap/ormap?
- 2. Elixir是否具有類似於Clojure的持久數據結構?
- 3. 在python中是否有類似*或**的clojure?
- 4. mysql的SQL_CALC_FOUND_ROWS在postgresql中是否有類似的函數?
- 5. 是否有一個類似於opencv中的matlab bwboundaries的函數?
- 6. 在asp.net razor中是否有類似於Eval()的函數?
- 7. 在PHP 5.2中是否有類似於stristr()的函數?
- 8. Angular 2.0是否有類似於Angular 1中的`$ setPristine`函數?
- 9. 在linux中是否有類似於lsof命令的perl函數?
- 10. 在JavaScript中是否有類似utf8-encode(php)的函數?
- 11. 在scala中是否有類似Map.keySet的部分函數?
- 12. 在vanilla JavaScript中是否有類似prototype.toArray的函數?
- 13. numpy中是否有函數比較類似numpy.where函數的多維數組?
- 14. slf4j中是否有類似org.apache.log4j.EnhancedPatternLayout的類?
- 15. 是否有類似於Python計數器功能的Javascript函數?
- 16. 是否有一個安全的「mkdir()」類似的函數?
- 17. 是否有類似於mysql的sqlsrv庫的函數mysql_real_escape_string?
- 18. 是否有類似strip_tags()和trim()的UTF-8函數?
- 19. 是否有Int.isWholeNumber()函數或類似的東西?
- 20. PHP是否有一個函數()[key]類似的語法?
- 21. javascript中是否有unique()函數來刪除數組中的類似元素?
- 22. Chrome中是否有globalStorage的類似物?
- 23. Javascript中是否有類似Python的numpy.apply_along_axis?
- 24. asp.net中是否有類似java的servlet
- 25. 是否有命名私有函數的Clojure約定?
- 26. mysql是否有類似autoupdate
- 27. JavaScript中是否存在類似checkdate()的php函數?
- 28. R中是否存在expand.grid類似的函數,返回排列?
- 29. Excel中是否存在類似於聚結的函數?
- 30. 在Linux中,是否存在類似於_clearfp()和_statusfp()的函數?
你能添加一個emaple輸入和輸出嗎? – 2009-07-31 21:50:09