List Maxima:将函数累计应用于列表';s原子
有没有一种方法可以将函数累积应用于列表的每个原子?例如:List Maxima:将函数累计应用于列表';s原子,list,maxima,List,Maxima,有没有一种方法可以将函数累积应用于列表的每个原子?例如: wishedFunction("+",[1,2,4,7,3]) 将计算((1+2)+4)+7)+3,并因此返回17 换句话说,我正在寻找一个最大值,相当于 我已经阅读了map()和scanmap()函数的文档,但它们的行为方式不同 有什么建议吗?看起来像是lreduce,而朋友(rreduce,xreduce,tree\u reduce)并没有按你想要的方式行事。我不知道有哪个函数能做到这一点;也许你可以为它输入一个功能请求。见: 这里
wishedFunction("+",[1,2,4,7,3])
将计算((1+2)+4)+7)+3,并因此返回17
换句话说,我正在寻找一个最大值,相当于
我已经阅读了map()
和scanmap()
函数的文档,但它们的行为方式不同
有什么建议吗?看起来像是lreduce
,而朋友(rreduce
,xreduce
,tree\u reduce
)并没有按你想要的方式行事。我不知道有哪个函数能做到这一点;也许你可以为它输入一个功能请求。见:
这里有一个函数可以做到这一点。免责声明:我没有想太多
(%i41) foo (f, L) :=
block ([x0 : first (L)],
cons (first (L),
makelist (x0 : f(x0, x), x, rest (L)))) $
(%i42) foo (g, [1,2,3,4]);
(%o42) [1, g(1, 2), g(g(1, 2), 3), g(g(g(1, 2), 3), 4)]
(%i43) foo ("+", [1,2,3,4]);
(%o43) [1, 3, 6, 10]
实际上,您正在寻找的确实是一个内置的reduce
函数(lreduce
,rreduce
,xreduce
,tree\u reduce
)
对不起,我误解了你的问题。我想你们需要一个函数,它返回一个包含累加部分结果的列表。显然这是不正确的。很抱歉造成混淆。谢谢您的回答:我刚刚按照您的建议在sourceforge上添加了一张票证。
(%i1) xreduce ("+", [1,2,4,7,3]);
(%o1) 17