Я сбив с толку всеми встроенными функциями Mathematica, которые якобы препятствуют оценке: Unevaluated
, Defer
, Hold
и более полудюжины формы Hold*
. Документация Mathematica просто объясняет каждую функцию отдельно, не объясняя, почему вы выбрали тот или иной. Может ли кто-нибудь предложить последовательное объяснение всех этих функций? Все это кажется мне запутанным беспорядком. Все это может быть связано с макросами Lisp.
Большая часть языка Mathematica удивительно хорошо разработана, но похоже, что Вольфрам действительно нарисовал себя в этом вопросе. Или я мог что-то пропустить.