函数式编程 – Mathematica相当于Ruby的注入

是否有像 Ruby注入的Mathematica函数?例如,如果我想要列表中元素的产品,在Ruby中我可以写:

list.inject(1) { |prod,el| prod * el }

我发现我可以在Mathematica中使用Product:

Apply[Product,list]

然而,这对我来说不够通用(如果我不只是想要产品或数字的总和).与注射最接近的是什么?

解决方法

相当于 Fold.
我认为这通常被称为“减少” – 无论如何,这就是Python名称.

翻译你的例子:

Fold[#1*#2&,1,list]

#1 *#2&是一个二进制lambda函数,它的参数倍增.
在这种情况下,您可以使用Times代替:

Fold[Times,list]

或者当然只是将Times应用于列表:

Apply[Times,list]

或者,简而言之:

Times @@ list

注意:您使用Product而不是Times的问题中的版本将不起作用.
Product是其他东西,即Sum的类比.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...