如何在mathematica中区分多级纯函数中的槽

Qia*_* Li 3 wolfram-mathematica

例如,我可能有

{1, 2, 3, 4, 5} // Select[#1, ((*** + 1 &) > 2) &] &
Run Code Online (Sandbox Code Playgroud)

在这里,***也想成为#1,但不被认为是最外层的#1.有什么办法可以区分这两者吗?

谢谢.

Leo*_*yev 6

我不确定我理解这个问题.你的预期输出是多少?... {2,3,4,5}?...如果是这样,插槽之间没有逻辑混淆:列表中第一个参数的每个元素都Select将被输入一个函数(第二个)参数).以下工作正常:

{1, 2, 3, 4, 5} // Select[#, ((# + 1) > 2) &] &

如果出现冲突,而不是插槽/符号表示法,您可以使用Function[{x,y,...},...]符号,例如

{1, 2, 3, 4, 5} // Select[#, Function[{x}, (x + 1) > 2]] &