1

我在 Mathematica 中遇到过这个表达式:

oneStep[plus[e1_ , e2_]] := Flatten[{With[{a=e1,b=#},plus[a,b]]&/@oneStep[e2],
                                  With[{a=#,b=e2},plus[a,b]]&/@oneStep[e1]}];

但我似乎无法理解这个 &/ 符号在这个表达式中的含义。

其次:这可以写成更“人性化”的方式吗?

4

2 回答 2

3

&表示纯函数(有点像 lambda)。是的,它可以用更友好的方式编写。正如链接的文档所示:

body&

相当于

Function[x,body]

x论据在哪里。

/@是一张地图(也可以用更友好的方式编写,正如您从文档中看到的那样)。

于 2013-10-20T16:38:24.433 回答
2

补充 arshajii 的回答:

veryLongFunctionName[n_] := n + n/2;
Map[veryLongFunctionName, {1, 2, 3}]

返回:

{3/2,3,9/2}

长于:

Map[# + #/2 &, {1, 2, 3}]

长于:

# + #/2 & /@ {1, 2, 3}
于 2013-10-20T16:57:59.563 回答