Это довольно сложные конструкции, и трудно дать четкие объяснения; они не так просты, как макросы Lisp (или, между прочим, отношения между Lisp QUOTE
и EVAL
). Тем не менее, на веб-сайте Вольфрама есть хорошее и продолжительное обсуждение в виде заметок из выступления Робби Виллегаса "Неоцененные выражения" 1999 года .
Defer
опущено в этом выступлении, потому что оно новое с Mathematica 6.0. Это очень похоже на HoldForm
, за исключением того, что когда он выводится во внешнем интерфейсе (но не в чистом ядре), он удаляется, оставляя выражение, которое можно использовать в качестве ввода. Это очень полезно, если вы хотите программно создавать выражения, которые пользователь может редактировать и оценивать, скажем, в палитре.