Estoy desconcertado por toda la incorporada en funciones de Mathematica que pretenden evitar que la evaluación de alguna manera: Unevaluated
, Defer
, Hold
, y más de media docena de el formulario Hold*
. La documentación de Mathematica simplemente explica cada función de forma aislada sin explicar por qué elegiría una u otra. ¿Alguien puede ofrecer una explicación coherente de todas estas funciones? Todo parece un lío enrevesado para mí. Relacionarlo todo con las macros de Lisp podría ser un buen lugar para comenzar.Mathematica: sin evaluar vs vs Defer Hold vs vs HoldForm HoldAllComplete vs etc, etc
La mayor parte del lenguaje de Mathematica está sorprendentemente bien diseñado, pero parece que Wolfram realmente se arrinconó en este aspecto. O podría estar perdiendo algo.