什么是美元符号$用于内部?

时间:2011-05-10 23:42:07

标签: wolfram-mathematica

内部使用的符号$是什么?

我不是指复合形式为x$388$5等,而只是$本身。

我想知道这是否是用于表示法的有效对象,或者如果我这样做会破坏。

2 个答案:

答案 0 :(得分:4)

将用户变量以奇数个$字符结尾(不计算第一个字符)是不明智的。 x $,y $$$和$$都是变量名称的不良选择。

这是因为将奇数个$附加到标识符是一种称为“词法重命名”的技术,当高阶函数返回使用相同变量名的函数时,Mathematica内核使用该技术来避免变量名中的冲突。父母。该技术用于各种范围构造,包括Function,Module,With和Rule;这是功能:

的示例
In[1]:= f = Function[{x, y}, Function[{x}, x+y]]
Out[1]= Function[{x, y}, Function[{x}, x + y]]
In[2]:= f[2,3]
Out[2]= Function[{x$}, x$ + 3]
In[3]:= ?*`x$
Global`x$
Attributes[x$] = {Temporary}

简而言之,附加$ characters是一种系统内部重命名机制,Mathematica将此表单的标识符识别为具有Temporary属性的$ -less表单的“词法重命名”版本。不建议在您自己的代码中使用此表单的变量。

Mathematica是一种术语重写语言,可以通过使用内部重写机制(如“词法重命名”)来表现为词法范围的函数式语言。

答案 1 :(得分:2)

在版本7中,符号System`$

以前已经在一个新内核中创建了,但据我所知,并没有用于任何东西。在版本8中,未预先创建符号$

In[1]:= Context["$"]

During evaluation of In[1]:= Context::notfound: Symbol $ not found. >>

Out[1]= Context["$"]

我同意Szabolcs$上下文中使用System的代码在将来版本中可能会中断,以及修改系统符号的任何其他代码。