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.
您不能使用自己的发明的运算符语法(如@@&).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)
我还会包含截图,因为这涉及到符号:

这种方法可能失败的原因是您不能为任意符号设置运算符优先级\[Wolf].您可以使用我上面链接的无意义运算符之一,但这些运算符也具有无法更改的固定优先级.
如果你PrecedenceForm在文档中找到了一个简短的错误希望,但正如文档所说,它只会影响打印而不是评估.
HTH!