Maxima Function
funmake (F, [arg_1, ..., arg_n])
Returns an expression F(arg_1, ..., arg_n)
.
The return value is simplified, but not evaluated,
so the function F is not called, even if it exists.
funmake
does not attempt to distinguish array functions from ordinary functions;
when F is the name of an array function,
funmake
returns F(...)
(that is, a function call with parentheses instead of square brackets).
arraymake
returns a function call with square brackets in this case.
funmake
evaluates its arguments.
Examples:
funmake
applied to an ordinary Maxima function.
(%i1) F (x, y) := y^2 - x^2; 2 2 (%o1) F(x, y) := y - x (%i2) funmake (F, [a + 1, b + 1]); (%o2) F(a + 1, b + 1) (%i3) ''%; 2 2 (%o3) (b + 1) - (a + 1)
funmake
applied to a macro.
(%i1) G (x) ::= (x - 1)/2; x - 1 (%o1) G(x) ::= ----- 2 (%i2) funmake (G, [u]); (%o2) G(u) (%i3) ''%; u - 1 (%o3) ----- 2
funmake
applied to a subscripted function.
(%i1) H [a] (x) := (x - 1)^a; a (%o1) H (x) := (x - 1) a (%i2) funmake (H [n], [%e]); n (%o2) lambda([x], (x - 1) )(%e) (%i3) ''%; n (%o3) (%e - 1) (%i4) funmake ('(H [n]), [%e]); (%o4) H (%e) n (%i5) ''%; n (%o5) (%e - 1)
funmake
applied to a symbol which is not a defined function of any kind.
(%i1) funmake (A, [u]); (%o1) A(u) (%i2) ''%; (%o2) A(u)
funmake
evaluates its arguments, but not the return value.
(%i1) det(a,b,c) := b^2 -4*a*c; 2 (%o1) det(a, b, c) := b - 4 a c (%i2) (x : 8, y : 10, z : 12); (%o2) 12 (%i3) f : det; (%o3) det (%i4) funmake (f, [x, y, z]); (%o4) det(8, 10, 12) (%i5) ''%; (%o5) - 284
Maxima simplifies funmake
's return value.
(%i1) funmake (sin, [%pi / 2]); (%o1) 1