Неразумно иметь пользовательские переменные, оканчивающиеся нечетным числом $ символов (не считая первого символа).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}
Короче говоря, добавление $ символов является внутренним системным механизмом переименования, и идентификаторы этой формы распознаются Mathematica как «переименованные» версии $ -lessформы, с временным атрибутом.Не рекомендуется использовать переменные этой формы в вашем собственном коде.
Mathematica - это язык переписывания терминов, который может вести себя как функциональный язык с лексической областью, используя внутренние механизмы переписывания, такие как «лексическое переименование».