Hygenic Macros
Steven D'Aprano
steve at REMOVETHIScyber.com.au
Tue Oct 18 19:28:32 EDT 2005
On Tue, 18 Oct 2005 13:42:21 -0700, Robert Kern wrote:
> Steven D'Aprano wrote:
>> On Mon, 17 Oct 2005 22:23:43 -0700, 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.
>>
>> Yes, I see what you mean, it is pretty confusing. It almost looks like
>> a function that multiplies two matrices and returns the result.
>>
>> Have you tried coming up with better names for your arguments than A and
>> B? Many people find that using self-documenting variable names helps make
>> code easier to understand.
>
> Well, to be fair, his example was trivial. When you have more
> complicated matrix expressions with transposes and conjugations and more
> matrixmultiplies than you can shake a stick at, it gets ugly pretty fast.
>
> F = dot(dot(Z, F),transpose(conjugate(Z)))
No uglier than y = sin(poly(sqrt(x)))
And of course it is allowed to do this:
F = dot(Z, F)
Z = transpose(conjugate(Z))
F = dot(F, Z)
Not everything has to be a one-liner, not even in mathematics.
> versus
>
> from scipy import *
> F = mat(F)
> Z = mat(Z)
> F = Z*F*Z.H
It's a matter of taste. But calling it "almost unreadable" is an
exaggeration.
--
Steven.
More information about the Python-list
mailing list