32

私は、何らかの方法で評価を防ぐことを目的としたすべての組み込みのMathematica関数に戸惑っています:、、、Unevaluatedおよびフォームの半ダース以上。Mathematicaのドキュメントでは、どちらかを選択する理由を説明せずに、各関数を個別に説明しています。誰かがこれらすべての機能の首尾一貫した説明を提供できますか?全体が複雑な混乱のように思えます。すべてをLispマクロに関連付けることから始めるのが良いかもしれません。DeferHoldHold*

Mathematica言語のほとんどは驚くほどうまく設計されていますが、Wolframはこの面で本当に自分自身を隅に追いやったようです。または、何かが足りない可能性があります。

4

1 に答える 1

13

これらはかなりトリッキーな構成であり、明確な説明をするのは難しいです。QUOTEそれらはLispマクロ(または、さらに言えば、Lispとの関係EVAL)ほど単純ではありません。ただし、 WolframのWebサイトでRobbyVillegasの1999年の講演「UnevaluatedExpressions」からのメモの形で利用できる良い長い議論があります。

DeferMathematica 6.0の時点で新しいので、その話からは省略されています。HoldFormこれは、フロントエンド(ベアカーネルではない)で出力されるときに削除され、入力として使用できる式が残ることを除いて、とよく似ています。これは、たとえばパレットでユーザーが編集および評価できる式をプログラムで作成する場合に非常に便利です。

于 2009-10-26T17:42:28.957 に答える