Mathematica: Unevalued vs Defer vs Hold vs HoldForm vs HoldAllComplete vs etc etc

Ich bin verwirrt über all die eingebauten Mathematica-Funktionen, die angeblich die Auswertung auf irgendeine Weise verhindern sollen:Unevaluated, Defer, Holdund über ein halbes Dutzend der FormHold*. In der Mathematica-Dokumentation wird nur jede Funktion für sich erklärt, ohne zu erläutern, warum Sie die eine oder die andere wählen würden. Kann jemand eine zusammenhängende Erklärung all dieser Funktionen anbieten? Das Ganze kommt mir wie ein Wirrwarr vor. Wenn Sie alles mit Lisp-Makros in Verbindung bringen, ist dies möglicherweise ein guter Anfang.

Der Großteil der Mathematica-Sprache ist erstaunlich gut gestaltet, aber Wolfram scheint sich in dieser Hinsicht wirklich in eine Ecke gedrängt zu haben. Oder ich könnte etwas vermissen.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage