Finally got a few moments to put the implicit subs syntax code together and get it ready to submit. Here it is.
-Lance # HG changeset patch # User [EMAIL PROTECTED] # Date 1228878177 25200 # Node ID dc86dcc8d059f0a2cd3eb498b595c8a45775aa92 # Parent d1019a5c66d12d524fe64359c1bd8054cab0cfa9 Substitution syntax extension - implements f({x:1,y:2}) as shorthand for f.subs({x:1,y:2}) diff -r d1019a5c66d1 -r dc86dcc8d059 sympy/core/basic.py --- a/sympy/core/basic.py Tue Nov 18 17:36:24 2008 +0100 +++ b/sympy/core/basic.py Tue Dec 09 20:02:57 2008 -0700 @@ -1932,9 +1932,25 @@ from sympy.integrals import integrate return integrate(self, *args, **kwargs) - #XXX fix the removeme - def __call__(self, *args, **removeme): - return Function(self[0])(*args) + def __call__(self, subs_dict): + ''' + Implements a convenient way to call the subs method. A dictionary object + is accepted where the ductionary key is the value to be replaced, and + the value is what the key expression will be replaced with. + + Example: + >>> x,y,z = symbols('xyz') + >>> f = x+y+x*y + >>> f({x:z}) + z + y + z*y + >>> f({x*y,z}) + x + y + z + + This is equivalent to calling f.subs({...}) + ''' + if not isinstance(sequence, dict): + raise TypeError('A dictionary object is expected for making substitutions.') + return self.subs(subs_dict) def __float__(self): result = self.evalf() diff -r d1019a5c66d1 -r dc86dcc8d059 sympy/core/tests/test_subs.py --- a/sympy/core/tests/test_subs.py Tue Nov 18 17:36:24 2008 +0100 +++ b/sympy/core/tests/test_subs.py Tue Dec 09 20:02:57 2008 -0700 @@ -169,3 +169,10 @@ assert (f(x,y)).subs(f,sin) == f(x,y) assert (sin(x)+atan2(x,y)).subs([[atan2,f],[sin,g]]) == f(x,y) + g (x) assert (g(f(x+y, x))).subs([[f, l], [g, exp]]) == exp(x + sin(x + y)) + +def test_implicit_subs_syntax(): + x, y, z = map(Symbol, 'xyz') + f = x + y + x*y + assert f({x:z}) == f.subs({x:z}) + assert f({x:z}) == z + y + z*y + assert f({x*y:z}) == x + y + z --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sympy-patches" group. To post to this group, send email to sympy-patches@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sympy-patches?hl=en -~----------~----~----~----~------~----~------~--~---