Clojure 使用doseq和bool函数
我是新来Clojure的 假设我有一个简单的doseq代码: f是一个布尔函数,我想知道是否所有的迭代都返回TRUE。 这就像计算每个序列的and运算符 我如何检查每次迭代的结果并在doseq之后使用它, 最好的方法是什么 例如:Clojure 使用doseq和bool函数,clojure,Clojure,我是新来Clojure的 假设我有一个简单的doseq代码: f是一个布尔函数,我想知道是否所有的迭代都返回TRUE。 这就像计算每个序列的and运算符 我如何检查每次迭代的结果并在doseq之后使用它, 最好的方法是什么 例如: (and (f? :a db) (f? :b db)...) 有许多方法可以映射和过滤集合以搜索不同的内容,希望这些示例能为您提供一些想法: user> (def db {:a 1 :b 2 :c 3 :d 4}) #'user/db user> (m
(and (f? :a db) (f? :b db)...)
有许多方法可以映射和过滤集合以搜索不同的内容,希望这些示例能为您提供一些想法:
user> (def db {:a 1 :b 2 :c 3 :d 4})
#'user/db
user> (map (fn [[k v]] (if (even? v) true false)) db)
(false false true true)
user> (filter (fn [[k v]] (if (even? v) true false)) db)
([:b 2] [:d 4])
有几种方法可以判断它们是否都是真的:
user> (reduce #(and %1 %2)
(map (fn [[k v]] (if (even? v) true false))
{:a 2 :b 4 :c 6}))
true
user> (reduce #(and %1 %2) (map (fn [[k v]] (if (even? v) true false)) db))
false
user> (not-any? false? (map (fn [[k v]] (if (even? v) true false)) db))
false
user> (not-any? false? (map (fn [[k v]] (if (even? v) true false)) {:a 2 :b 4 :c 6}))
true
查看数据库中的其他内容:
user> (filter (fn [[k v]] (if (even? v) true false)) {:a 2 :b 4 :c 6})
([:a 2] [:c 6] [:b 4])
user> (filter (fn [[k v]] (if (odd? v) true false)) {:a 2 :b 4 :c 6})
()
user> (if (empty? (filter (fn [[k v]] (if (odd? v) true false)) {:a 2 :b 4 :c 6})) "all where even" "some where odd")
"all where even"
有许多方法可以映射和过滤集合以搜索不同的内容,希望这些示例能为您提供一些想法:
user> (def db {:a 1 :b 2 :c 3 :d 4})
#'user/db
user> (map (fn [[k v]] (if (even? v) true false)) db)
(false false true true)
user> (filter (fn [[k v]] (if (even? v) true false)) db)
([:b 2] [:d 4])
有几种方法可以判断它们是否都是真的:
user> (reduce #(and %1 %2)
(map (fn [[k v]] (if (even? v) true false))
{:a 2 :b 4 :c 6}))
true
user> (reduce #(and %1 %2) (map (fn [[k v]] (if (even? v) true false)) db))
false
user> (not-any? false? (map (fn [[k v]] (if (even? v) true false)) db))
false
user> (not-any? false? (map (fn [[k v]] (if (even? v) true false)) {:a 2 :b 4 :c 6}))
true
查看数据库中的其他内容:
user> (filter (fn [[k v]] (if (even? v) true false)) {:a 2 :b 4 :c 6})
([:a 2] [:c 6] [:b 4])
user> (filter (fn [[k v]] (if (odd? v) true false)) {:a 2 :b 4 :c 6})
()
user> (if (empty? (filter (fn [[k v]] (if (odd? v) true false)) {:a 2 :b 4 :c 6})) "all where even" "some where odd")
"all where even"
你不需要评估每一个术语,只需要评估到第一个错误。如果我得到了你想要的,试试看
你不需要评估每一个术语,只需要评估到第一个错误。如果我得到了你想要的,试试看 doseq适用于身体仅为每个元素产生副作用的情况 您的示例应在以下情况下实施: doseq适用于身体仅为每个元素产生副作用的情况 您的示例应在以下情况下实施:
doseq可能不是您正在搜索的对象。doseq可能不是您正在搜索的对象