В последнее время меня интересует лучшее понимание оптимизаций, выполняемых бэкэндами компилятора. Я подумал, что использование Mathematica для изучения этого может быть полезным, потому что это делает создание, отображение и управление синтаксическими деревьями довольно легкими.
Я думал, что начну с простого и посмотрю на постоянное распространение. Поэтому я написал простую функцию и попытался взглянуть на дерево синтаксиса.
f2[x_, y_] := Module[{temp1},
temp1 = 5;
Return[(x + temp1)*y];
]
FullForm[f2]
Результат FullForm [f2], однако, был просто f2. Я знаю, что правая часть этого выражения должна храниться где-то в Mathematica, поэтому у меня вопрос, где он находится и можно ли его изменить после создания этого правила с помощью оператора SetDelayed ": ="?
В то же время я обнаружил, что могу использовать символ Function для достижения того, к чему стремлюсь, но я все же хотел бы понять, что Mathematica делает немного лучше.
f1 = Function[{x, y}, Module[{temp1},
temp1 = 5;
Return[(x + temp1)*y]
]
]
TreeForm[f1]