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

Wolfram mathematica 在mathematica中如何区分多层纯函数中的槽,wolfram-mathematica,Wolfram Mathematica,例如,我可能有 {1, 2, 3, 4, 5} // Select[#1, ((*** + 1 &) > 2) &] & 在这里,***也希望为1,但不被识别为最外层的1。有没有办法区分这两者 谢谢。我不确定我是否理解这个问题。你的预期产出是多少?。。{2,3,4,5}?... 如果是这样的话,插槽之间就没有逻辑上的混淆:列表中的每个元素,即Select的第一个参数,都将被输入到函数中,而第二个参数将被输入到函数中。以下几点效果不错: {1,2,3,4,5}//

例如,我可能有

{1, 2, 3, 4, 5} // Select[#1, ((*** + 1 &) > 2) &] &
在这里,***也希望为1,但不被识别为最外层的1。有没有办法区分这两者


谢谢。

我不确定我是否理解这个问题。你的预期产出是多少?。。{2,3,4,5}?... 如果是这样的话,插槽之间就没有逻辑上的混淆:列表中的每个元素,即Select的第一个参数,都将被输入到函数中,而第二个参数将被输入到函数中。以下几点效果不错:

{1,2,3,4,5}//选择[,+1>2&]&

如果发生冲突,您可以使用函数[{x,y,…},…]表示法代替插槽/符号和表示法,例如


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

如果代码中的符号太多,请重试

{1, 2, 3, 4, 5} // Select[#1, ((# + 1) > 2) &] &
这样,1从列表中提取一个元素并将其传递给比较测试函数。所以在效果1中,确实得到了相同的元素


将+1&>2&作为比较函数没有实际意义,因为外部函数无法传递其参数。您已经有效地编写了F>2&,并且即使F是一个纯函数,它的参数也没有插槽。对于你的工作方式,你必须写+1&[]>2&,这相当于F[]>2&。

如果你在那里发布你想要的结果两个好的答案,这个问题会更容易理解@Leo回答了嵌套匿名函数通常出现的问题@Timo意识到了Liang的特殊代码中的错误。您发布的代码片段是否相当于{1,2,3,4,5}//Select[1,>1&]&?我还应该补充一点,使用Function[]表示法通常可以帮助您整理匿名函数,以防混淆。例如,你原来的+1&>2&正如蒂莫指出的,没有意义,它将等价于函数[{x},函数[{y},y+1]>2]];有了这个符号,错误就更容易看出来了。