Ответ Майкла хорош, но он делает различие каждый раз, когда вызывается g(x)
. (Также обычно вы видите его в операторе block
, чтобы гарантировать правильную локализацию y
).
Существует способ заставить RHS оценить во время определения
и с общим x
.
Синтаксис
(%i1) f(x) := 2*x^4;
4
(%o1) f(x) := 2 x
(%i2) g(x) := ''(diff(f(x), x) - 8);
3
(%o2) g(x) := 8 x - 8
(%i3) g(0);
(%o3) - 8
Сравните с блочной конструкцией:
(%i4) h(x) := block([y], subst([y = x], diff(f(y), y) - 8));
(%o4) h(x) := block([y], subst([y = x], diff(f(y), y) - 8))
(%i5) h(0);
(%o5) - 8
Уведомление (% o4), показывающее, что RHS не оценена.
Ссылка: http://www.math.utexas.edu/pipermail/maxima/2007/004706.html