gpt4 book ai didi

wolfram-mathematica - 覆盖无序函数的默认显示顺序

转载 作者:行者123 更新时间:2023-12-04 08:29:52 24 4
gpt4 key购买 nike

在最近的两个问题( 12 )中,之前的发帖者试图控制 Plus 的输出顺序,这是一个 Orderless功能。迈克尔·皮拉特 indicated在内部,Orderless功能 Sort他们的参数导致了困难。然而,他告诫不要制作PlusOrderless .前两个问题的解决方案相当于创建一个显示为 Plus 的函数。但不是 Orderless本身。这当然有效,但我的问题是我们如何更改默认值 Sort命令?

最佳答案

我需要做更多的研究,但这里有两种方法;问题是,您实际上并没有使用 Orderless属性。 Simon 应该因为使用来自 his answer to question 1 的条件使用模式匹配的技术而获得半分。你引用了。

乱搞 Order , OrderedQSort不会带你去任何地方,因为 Orderless函数排序与这些方法等价,但实际上并不与它们排序。

第一种方法,来自西蒙的回答,是使用 Condition :

In[1]:= ClearAll[f, g]

In[2]:= f[stuff__] /; ! OrderedQ[{stuff}, Greater] :=
f[Sequence@@Sort[{stuff}, Greater]]

In[3]:= f[1, 2, 3]
Out[3]= f[3, 2, 1]

In[4]:= f[3, 2, 1]
Out[4]= f[3, 2, 1]

如果参数的顺序不是所需的顺序,则评估 f[stuff__] 的定义,然后转换为该顺序。

另一种技术是获得更底层的信息并使用 $Pre $PreRead :
In[5]:= $Pre = 
Function[{expr},
expr /. g[stuff__] :> g[Sequence @@ Sort[{stuff}, Greater]]];

In[6]:= g[1, 2, 3]
Out[6]= g[3, 2, 1]

In[7]:= g[3, 2, 1]
Out[7]= g[3, 2, 1]

这两种方法都存在一些问题,例如,特定的 $Pre功能不能很好地与例如 HoldForm[g[1,2,3]] .

所以,这是现在可以玩的东西。我希望在对此进行更多研究后进行更新。

关于wolfram-mathematica - 覆盖无序函数的默认显示顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4111778/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com