On Wed, Sep 17, 2008 at 8:02 AM, Jason Merrill <[EMAIL PROTECTED]> wrote:
>
> On Sep 17, 2:20 am, Jason Merrill <[EMAIL PROTECTED]> wrote:
>> Here's a monkeypatch that makes this work(ish)
>>
>> from sage.calculus.calculus import SymbolicExpression
>> class FormalSymbolicExpression(SymbolicExpression):
>>     def __init__(self,expr):
>>         self.expr = expr
>>         # just delegate everything to the input expression
>>         for m in dir(expr):
>>             self.m = m
>>     def _repr_(self,simplify=False):
>>         return self.expr._repr_(simplify=False)
>>     # implement a _latex_ method
>>
>> SymbolicExpression.formal = lambda self:
>> FormalSymbolicExpression(self)
>>
>> def formal(expr):
>>     try:
>>         return expr.formal()
>>     except AttributeError:
>>         return expr
>
> Right... so that delegation bit doesn't actually do anything.  This
> was leading to
>
> sage: simplify(formal(exp(I*pi)))
> e^(pi*I)
>
> and presumably horrendous amounts of other strangeness.  Here's
> another try.  It doesn't actually inherit from SymbolicExpression
> anymore, which will probably cause some difficulty with isinstance
> calls, but it's maybe a little closer
>
> from sage.calculus.calculus import SymbolicExpression
> class FormalSymbolicExpression():
>    def __init__(self,expr):
>        self.expr = expr
>
>    def __getattr__(self,attrib):
>        return getattr(self.expr,attrib)
>
>    def __repr__(self,simplify=False):
>        return self.expr._repr_(simplify=False)
>
> SymbolicExpression.formal = \
>    lambda self: FormalSymbolicExpression(self)
>
> def formal(expr):
>    try:
>        return expr.formal()
>    except AttributeError:
>        return expr
>
> And now
>
> sage: simplify(formal(exp(I*pi)))
> -1

Jason,

Just a heads up -- your code above is going to become pointless when we switch
to using Ginac as a backend for symbolic manipulation, since Sage will no longer
keep its own expression tree.

William

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

Reply via email to