Wolfram语言的等价物是什么;请用ClojureScript折叠好吗?

Wolfram语言的等价物是什么;请用ClojureScript折叠好吗?,clojure,clojurescript,Clojure,Clojurescript,在Wolfram语言中又称Mathematica(Lisp) 评估为 g[g[g[0,a],b],c] 那么什么时候 f[x_,y_]:=10 x + y 然后 计算结果为(从数字创建一个数字) 在ClojureScript中,Wolfram Language的折叠是什么?给你: (reduce (fn [r x] (+ (* r 10) x)) 0 [1 2 3 4]) 给你: (reduce (fn [r x] (+ (* r 10) x)) 0 [1 2 3

在Wolfram语言中又称Mathematica(Lisp)

评估为

g[g[g[0,a],b],c]
那么什么时候

f[x_,y_]:=10 x + y
然后

计算结果为(从数字创建一个数字)

在ClojureScript中,Wolfram Language的折叠是什么?

给你:

(reduce 
  (fn [r x] (+ (* r 10) x)) 
  0 [1 2 3 4])
给你:

(reduce 
  (fn [r x] (+ (* r 10) x)) 
  0 [1 2 3 4])

数学函数fold有几种风格:左折和右折,它们在应用函数的方向上有所不同Clojure's reduce向左折叠

同样在clojure中,与其他具有fold的语言相比,reduce函数将使用几个不同数量的参数调用

首先让我们定义一个函数,告诉我们它是args

user> (defn ++ [& args]
        (println "++ called with" args)
        (apply + args))
#'user/++
如果列表为空,则调用reduce函数时不带任何参数以生成“identity”值。加法恒等式为零,for/it为1,等等

user> (reduce ++ [])
++ called with nil
0
对于单个项目列表,根本不调用它

user> (reduce ++ [1])
1
对于其余的情况,它使用两个参数调用,并将函数应用于左关联运算符(在inflix语言中)或lisp中的普通旧函数调用

user> (reduce ++ [1 2])
++ called with (1 2)
3
user> (reduce ++ [1 2 3])
++ called with (1 2)
++ called with (3 3)
6

数学函数fold有几种风格:左折和右折,它们在应用函数的方向上有所不同Clojure's reduce向左折叠

同样在clojure中,与其他具有fold的语言相比,reduce函数将使用几个不同数量的参数调用

首先让我们定义一个函数,告诉我们它是args

user> (defn ++ [& args]
        (println "++ called with" args)
        (apply + args))
#'user/++
如果列表为空,则调用reduce函数时不带任何参数以生成“identity”值。加法恒等式为零,for/it为1,等等

user> (reduce ++ [])
++ called with nil
0
对于单个项目列表,根本不调用它

user> (reduce ++ [1])
1
对于其余的情况,它使用两个参数调用,并将函数应用于左关联运算符(在inflix语言中)或lisp中的普通旧函数调用

user> (reduce ++ [1 2])
++ called with (1 2)
3
user> (reduce ++ [1 2 3])
++ called with (1 2)
++ called with (3 3)
6

这不只是一种形式的约化吗?如果你这么说,那么这个例子是如何用约化来完成的?这不只是一种形式的约化吗?如果你这么说,那么这个例子是如何用约化来完成的?在Mathematica中,Fold[f,0,{1,2,3,a}]将计算为1230+a,这在ClojureScript中是不太可能的,对吗?我认为这取决于你传递的函数的行为。对于符号数学,有如下库。不确定它是否在clojurescript中可用。有趣的是,我会检查这个。现在我对reduce as is很满意。在Mathematica中,Fold[f,0,{1,2,3,a}]将计算为1230+a,这在ClojureScript中是不太可能的,对吧?我认为这取决于你传递的函数的行为。对于符号数学,有如下库。不确定它是否在clojurescript中可用。有趣的是,我会检查这个。目前,我对reduce as is感到满意。