Re: Foo /: Plus[b_Foo] := b
- To: mathgroup at smc.vnet.net
- Subject: [mg114593] Re: Foo /: Plus[b_Foo] := b
- From: Daniel Lichtblau <danl at wolfram.com>
- Date: Thu, 9 Dec 2010 06:02:42 -0500 (EST)
Leonid Shifrin wrote: > Hi kj, > > Now you have entered the forbidden territory :) > > Here is a very crude way to fix your example: > > ClearAttributes[Plus, OneIdentity] > > In[5]:= 1 + Foo[1] > > Out[5]= 1 + Foo[1] > > SetAttributes[Plus, OneIdentity] > > Have a look at attributes Flat and OneIdentity (they tend to be considered > together, and > for a good reason), both in the Help, and, even better, in some past > Mathgroup discussions, > for the explanation. But this is not for the faint-hearted :). > > The bottom line: your UpValue is not at all innocent, given the set of > Arttributes of Plus. > > Hope this helps. > > Regards, > Leonid There are early references in popular culture. The illustrious Mr. T said something to the effect that "I pity the Foo who mixes UpValues with OneIdentity." Daniel Lichtblau Wolfram Research