自定义后缀表示法,应用/功能

Mr.*_*ard 10 customization wolfram-mathematica notation

我想在Mathematica 7中设置以下自定义表示法.

这种表示法本身并不特别有用,所以请不要提出现有的替代方案,或者指出这只能节省一些按键.

我想知道是否以及如何做到这一点.


目前,人们可以进入

f = #2 + #^2 / #3 & @@ # & ;

f[ {a, b, c} ]

Out[]= b + a^2 / c
Run Code Online (Sandbox Code Playgroud)

其中内部函数#^2 / #3 + #2 &Apply第一个参数.


我想实现语法

f = #2 + #^2 / #3 @@& ;
Run Code Online (Sandbox Code Playgroud)

并使它的行为完全相同.也就是说,@@&表示一个Function自动应用于其第一个参数的.

它需要与 符号具有相同的绑定& .


优选的是,尽管使用更难以通过文本进行通信,但是为了便于设置类似的符号,Notations这可以在尽可能的程度上而不是手动MakeBoxes的情况下完成Notations.

Mic*_*lat 9

您不能使用自己的发明的运算符语法(如@@&).Mathematica没有能力在运行时修改语法语法.

你可以至少在那里使用Notation包,但你必须在Mathematica中使用一个没有意义的符号,并且可能大多数情况下使用其中一个没有内置含义运算符,但大多数(如果有的话)它们不作为后缀运算符绑定.

在这里,例如,我将使用Notations包来定义\[Wolf]字符作为一个公认的伪后缀运算符来代替@@&:

In[1]:= Needs["Notation`"]

In[2]:= Notation[x_ \[Wolf] \[DoubleLongLeftRightArrow] (x_ @@ # &)]

In[3]:=  f=#2+#^2/#3& \[Wolf]
Out[3]= (#2+#1^2/#3&) \[Wolf]

In[4]:= f[{a,b,c}]
Out[4]= b+a^2/c
Run Code Online (Sandbox Code Playgroud)

我还会包含截图,因为这涉及到符号:

示例运算符hackery

这种方法可能失败的原因是您不能为任意符号设置运算符优先级\[Wolf].您可以使用我上面链接的无意义运算符之一,但这些运算符也具有无法更改的固定优先级.

如果你PrecedenceForm在文档中找到了一个简短的错误希望,但正如文档所说,它只会影响打印而不是评估.

HTH!