Question

Je suis déconcerté par toutes les fonctions intégrées de Mathematica censées empêcher l'évaluation de quelque manière que ce soit: Non évalué , Différer , En attente et plus d’une demi-douzaine de la forme Hold * . La documentation de Mathematica explique simplement chaque fonction séparément, sans expliquer pourquoi vous choisiriez l'une ou l'autre. Quelqu'un peut-il offrir une explication cohérente de toutes ces fonctions? Tout cela me semble être un fouillis compliqué. Relier tout cela aux macros Lisp peut être un bon point de départ.

La plupart des langues de Mathematica sont incroyablement bien conçues, mais il semble que Wolfram se soit vraiment mis en quatre sur cet aspect. Ou je pourrais manquer quelque chose.

Était-ce utile?

La solution

Ce sont des constructions assez délicates, et il est difficile de donner des explications claires; ils ne sont pas aussi simples que les macros Lisp (ou, en l'occurrence, la relation entre QUOTE et EVAL de Lisp). Cependant, une longue et longue discussion est disponible sous la forme de notes de la conférence de 1999 de Robby Villegas. Expressions non évaluées " sur le site Web de Wolfram.

Defer est omis de cette présentation, car il s'agit d'une nouveauté pour Mathematica 6.0. Cela ressemble beaucoup à HoldForm , sauf que lorsqu'il est sorti dans un frontal (mais pas dans un noyau nu), il est supprimé, ce qui laisse une expression qui peut être utilisée comme entrée. Ceci est très utile si vous voulez construire par programmation des expressions qu'un utilisateur peut éditer et évaluer, par exemple dans une palette.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top