質問

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

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

役に立ちましたか?

解決

これらはかなりトリッキーな構造であり、明確な説明をするのは難しいです。それらは、Lispマクロほど単純ではありません(または、その点で、Lispの QUOTE EVAL の関係)。ただし、 Robby Villegasの1999年の講演"からのメモの形式で利用できる、長くて長い議論があります。 Wolframのウェブサイト上の未評価の表現"

Defer はMathematica 6.0の新機能であるため、この講演では省略されています。 HoldForm によく似ていますが、フロントエンドで出力される(ただし、裸のカーネルではない)場合は削除され、入力として使用できる式が残ります。これは、たとえばパレットでユーザーが編集および評価できる式をプログラムで作成する場合に非常に便利です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top