Знаю про атрибуты
HoldFirst и пр., но у меня несколько другая ситуация: вычисляться не должно
e в
f[...][e], а атрибуты можно присвоить только символу.
Попробовал так:
Код:
f1[var_, indexCount_][HoldPattern[e_]] := Sum @@ Prepend[{{var, indexCount}}, Unevaluated@e]
f2[var_, indexCount_] := Function[{e}, Sum @@ Prepend[{{var, indexCount}}, Unevaluated@e], HoldFirst]
но всё тщётно: в процессе вычисления
Код:
a = {1, 2, 3};
a[[i]] // f1[i, 3]
a[[i]] // f2[i, 3]
всё же выводятся сообщения
Part::pspec о том что
i — не целое и не список целых, т. е. вычисление
e происходит, ну и
Trace об этом сообщит.
Может быть, это всё-таки как-то можно сделать?