我对所有声称以某种方式阻止评估的内置 Mathematica 函数感到困惑:Unevaluated
、Defer
、Hold
和超过六种形式的Hold*
. Mathematica 文档只是单独解释了每个函数,而没有解释为什么要选择其中一个。任何人都可以对所有这些功能提供一个连贯的解释吗?整件事对我来说似乎是一团糟。将这一切与 Lisp 宏联系起来可能是一个不错的起点。
大多数 Mathematica 语言都经过精心设计,但似乎 Wolfram 真的在这方面把自己画到了一个角落。或者我可能会遗漏一些东西。