我在Mathematica中遇到过这个表达:
oneStep[plus[e1_ , e2_]] := Flatten[{With[{a=e1,b=#},plus[a,b]]&/@oneStep[e2],
With[{a=#,b=e2},plus[a,b]]&/@oneStep[e1]}];
但我似乎无法理解此& /符号在此表达式中的含义。
其次:这可以用更“人性化”的方式写出来吗?
答案 0 :(得分:3)
&
表示pure function(有点像lambda)。是的,它可以用更友好的方式编写。如链接文档所示:
body&
相当于
Function[x,body]
其中x
是参数。
/@
是map(也可以用更友好的方式编写,正如您从文档中看到的那样)。
答案 1 :(得分:1)
补充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}