Dear all,

I have been puzzled, and annoyed, by an unexpected side-effect.  It
can be demonstrated in the notebook by the following example.  It
models the speed as distance / time, then solve for the distance, then
evaluate the distance with different arguments:

var('v d t')
equation  = v == d / t
solution = solve(equation, d, solution_dict = True)
d_   = solution[0][d]; print d_ #-> t*v
constants= {v: 2}
print d_(constants, t=3) #--> 6
# BEWARE: the previous call has the side effect that t=3 in later
evaluation !
print d_(constants) #--> 6 : the side-effect is apparent here !
print d_ #--> t*v

I would expect d_(constants) to result in t*2, but instead its using a
previous assignment of t to yield 6 !

I'm using Sage for an engineering pblm, and I find it useful to
separate constants from arguments.  The side effect is thus annoying
to me: is there any other way to evaluate a function with constants
and arguments, without any side-effect with the arguments ?  I'm new
to this forum, so not sure if it has been raised before. Sorry if
there is an easy answer.

Thanks in advance.
PC

--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-support@googlegroups.com
To unsubscribe from this group, send email to 
sage-support-unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/sage-support
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to