相关疑难解决方法(0)

哪个更好?:(减少+ ...)或(应用+ ...)?

我应该用吗?

(apply + (filter prime? (range 1 20)))
Run Code Online (Sandbox Code Playgroud)

要么

(reduce + (filter prime? (range 1 20)))
Run Code Online (Sandbox Code Playgroud)

编辑:这是优化工具包中的素数来源.

(defn prime?  [n]  
  (cond
    (or (= n 2) (= n 3))          true
    (or (divisible? n 2) (< n 2)) false
    :else                        
     (let [sqrt-n (Math/sqrt n)]
       (loop [i 3]
           (cond
              (divisible? n i) false
              (< sqrt-n i)     true
              :else            (recur (+ i 2)))))))
Run Code Online (Sandbox Code Playgroud)

lisp scheme clojure

13
推荐指数
5
解决办法
2425
查看次数

在函数式语言中实际使用fold/reduce

Fold(又名reduce)被认为是一个非常重要的高阶函数.Map可以表示fold(见这里).但这对我来说听起来比实际更具有学术性.典型的用途可能是获得总和,产品或数字的最大值,但这些函数通常接受任意数量的参数.那么为什么写的(fold + 0 '(2 3 5))时候(+ 2 3 5)工作正常.我的问题是,在什么情况下使用最简单或最自然fold

lisp reduce functional-programming fold

9
推荐指数
4
解决办法
5058
查看次数

在clojure中,什么是计算整数向量平均值的有效方法

我有:

(def data [[1 3 4 7 9] [7 6 3 2 7] [1 9 8 6 2]])
Run Code Online (Sandbox Code Playgroud)

我想平均这些(元素明智得到):

[3 6 5 5 6]
Run Code Online (Sandbox Code Playgroud)

就像你在MATLAB中一样:

mean([1 3 4 7 9; 7 6 3 2 7; 1 9 8 6 2])
Run Code Online (Sandbox Code Playgroud)

有了Incanter,我可以这样做:

(map #(/ % (count m)) (apply plus data))
Run Code Online (Sandbox Code Playgroud)

如果数据相当大(我有很多),有更好的方法吗?事先
算出来有帮助(count m)吗?
它是否有助于defn#(/ % (count m))事先?

matlab clojure

7
推荐指数
3
解决办法
5284
查看次数

在Clojure中的列表/序列中添加项目

必须有一个简单的方法来做到这一点,我显然想念它:|

如何在clojure中的列表\序列中添加项目(区别不明确)?

我尝试过以下方法:

Clojure> (add [1 2 3])
java.lang.RuntimeException: Unable to resolve symbol: add in this context
Clojure> (+ [1 2 3])
java.lang.ClassCastException: Cannot cast clojure.lang.PersistentVector to java.lang.Number
Clojure> (apply merge-with + [1 2 3])
java.lang.IllegalArgumentException: Don't know how to create ISeq from: java.lang.Long
Clojure> (add-items [1 2 3])
java.lang.RuntimeException: Unable to resolve symbol: add-items in this context
Run Code Online (Sandbox Code Playgroud)

clojure

7
推荐指数
1
解决办法
2580
查看次数

如何对hashmap中的所有值求和?

在Clojure中,我有一张这样的地图:

(def data {:a 1 :b 2 :c 3})
Run Code Online (Sandbox Code Playgroud)

我想总结所有元素并得到6结果.我知道我应该使用reduce,但我不知道如何正确地做到这一点.

reduce sum clojure hashmap

2
推荐指数
2
解决办法
759
查看次数

标签 统计

clojure ×4

lisp ×2

reduce ×2

fold ×1

functional-programming ×1

hashmap ×1

matlab ×1

scheme ×1

sum ×1