operator overloading with UpValues (eg, for shifting graphics)

*To*: mathgroup at smc.vnet.net*Subject*: [mg13618] operator overloading with UpValues (eg, for shifting graphics)*From*: Daniel Reeves <dreeves at flip.eecs.umich.edu>*Date*: Fri, 7 Aug 1998 03:08:20 -0400*Organization*: University of Michigan EECS*Sender*: owner-wri-mathgroup at wolfram.com

I thought it would be nice to shift some graphics by just adding an x-y pair. It seemed like this sort of thing should do that: Unprotect[Line]; Line /: Line[pts_] + {x_,y_} := Line[pts+{x,y}] Protect[Line]; But it doesn't. The UpValue for Graphics doesn't get used. This does work: Line /: Line[pts_] + shift[x_,y_] := Line[pts+{x,y}] but then I might as well just do this: shift[Line[pts_],{x_,y_}] := Line[pts+{x,y}] The idea is to be able to just say Line[...] + {x,y} and get a shifted Line. Does anyone know a way to do that? Also, if/why Mathematica is doing "the right thing" in defying my expectations in the first example. Ie, should the Listable-ness of Plus have precedence over my UpValue for Line? Thanks, Daniel -- Daniel Reeves dreeves at umich.edu http://ai.eecs.umich.edu/people/dreeves "This isn't right. This isn't even wrong." -- Wolfgang Pauli, on a paper submitted by a physicist colleague