I seem to remember a rather ugly hack at some point in the past that created a new "operator" like so
A |dot| B where dot was an object which had the OR operator for left and right arguments redefined seperately so that it only made sense when used in that syntax. I guess you could hack something together along the same lines. I just wish I could remember what it was called, it's on the ActiveState Cookbook somewhere. On 18 Oct 2005, at 13:17, Adriaan Renting wrote: > Using numarray/pylab there's also dot: > >>>> from pylab import * >>>> A = array(range(10)) >>>> B = array(range(10)) >>>> A * B >>>> > [ 0, 1, 4, 9,16,25,36,49,64,81,] > >>>> dot(A, B) >>>> > 285 > > It might also make your code more readable. I would like "A dot B", > but even using ipython > I can only get as close as "dot A, B" > > >>>> Dan Farina <[EMAIL PROTECTED]> 10/18/05 1:33 pm >>> >>>> > David Pokorny wrote: > >> Hi, >> >> Just wondering if anyone has considered macros for Python. I have one >> good use case. In "R", the statistical programming language, you can >> multiply matrices with A %*% B (A*B corresponds to pointwise >> multiplication). In Python, I have to type >> >> import Numeric >> matrixmultiply(A,B) >> >> which makes my code almost unreadable. >> >> Thanks, >> David >> > > The problem here is that Python's parse trees are of non-trivial > ugliness. > > A page on the compiler.ast module: > http://docs.python.org/lib/node792.html > > it is, in fact, perfectly possible to write yourself a pre- > processor for > your particular application. You may have to fiddle with the token > you > want for notation depending on how the AST fleshes out (% is used > by at > least a couple of things, after all). My cursory familiarity with > python grammar suggests to me that this particular choice of token > could > be a problem. > > I would say try it and see. Keep in mind though that since > Python's AST > is not a trivial matter like it is in Lisp and the like that doing > metaprogramming of this sort probably falls into the category of black > magic unless it turns out to be very trivial. > > Another option is to define your own tiny class that will override the > __mult__ method so that you can simply do: > > A * B > > Which may not be what you want. > > df > -- > http://mail.python.org/mailman/listinfo/python-list > > -- > http://mail.python.org/mailman/listinfo/python-list > -- http://mail.python.org/mailman/listinfo/python-list