Sono sconcertato da tutti il built-in funzioni di Mathematica che pretendono di evitare che la valutazione in qualche modo: Unevaluated
, Defer
, Hold
, e più di una mezza dozzina di il modulo Hold*
. La documentazione di Mathematica spiega semplicemente ciascuna funzione in modo isolato senza spiegare perché scegliere l'una o l'altra. Qualcuno può offrire una spiegazione coerente di tutte queste funzioni? Il tutto sembra un pasticcio complicato per me. Relazionare tutto con le macro Lisp potrebbe essere un buon punto di partenza.Mathematica: non valutata vs Defer vs attesa vs HoldForm vs HoldAllComplete vs etc etc
La maggior parte del linguaggio Mathematica è incredibilmente ben progettato, ma sembra che Wolfram si sia davvero dipinto in un angolo su questo aspetto. O potrei mancare qualcosa.