From: SourceForge.net <no...@so...> - 2009-12-30 05:56:33
|
Bugs item #2922933, was opened at 2009-12-29 19:35 Message generated for change (Comment added) made by alex108 You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=104933&aid=2922933&group_id=4933 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Lisp Core Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Rui Maciel (rui_maciel) Assigned to: Nobody/Anonymous (nobody) Summary: Defining function from expression doesn't relate arguments Initial Comment: Let's say we have the following expression: a: (x - 1)*x*(y - 1)*y*(z - 1)*z/8; and let's say we declare the following function: f(x,y,z) := a; If we pass arguments to that function, the function fails to replace the expression's variables with the value of the arguments passed to the function. For example: (%i387) f(0,0,0); (x - 1) x (y - 1) y (z - 1) z (%o387) ----------------------------- 8 Yet, if the expression's variables are substituted in the function declaration then everything works as expected: (%i388) f(b,c,d) := subst([x=b,y=c,z=d],a); (%o388) f(b, c, d) := subst([x = b, y = c, z = d], a) (%i389) f(0,0,0); (%o389) 0 That extra call to subst() should not be needed in order to successfully declare a function from an expression. ---------------------------------------------------------------------- Comment By: Aleksas Domarkas (alex108) Date: 2009-12-30 07:56 Message: You can successfully declare a function from an expression: (%i1) (x - 1)*x*(y - 1)*y*(z - 1)*z/8; (%o1) ((x-1)*x*(y-1)*y*(z-1)*z)/8 (%i2) define(f(x,y,z),%); (%o2) f(x,y,z):=((x-1)*x*(y-1)*y*(z-1)*z)/8 (%i3) f(0,0,0); (%o3) 0 ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=104933&aid=2922933&group_id=4933 |