[Python-3000] Generic function PEP won't make it in time (original) (raw)

Talin talin at acm.org
Thu Apr 26 18:00:45 CEST 2007


Phillip J. Eby wrote:

In particular, when you implement generic functions using generic functions, it reads a lot like trying to explain the relationships between "type" and "object" (i.e. type being its own type and an instance of object, and object being a subclass of type). You can say what needs to be said in a fairly short space, but saying it in a way that lets people actually wrap their heads around it takes a bit more text. :)

I meant to comment on this earlier, and forgot.

I kind of wonder about the idea of implementing generic functions using generic functions. It's one of those ideas that is so obviously elegant and clever, that it's very easy for a programmer to fall in love with. As someone who frequently finds himself in a similar situation, I often discover later that the clever idea I loved wasn't the most practical.

I've occasionally been accused of being an "architecture astronaut", someone whose designs have a theoretical purity that is far above the heads of most of its users, to the point where it is hard for them to wrap their head around the design:

http://www.joelonsoftware.com/articles/fog0000000018.html

Related to this is my tendency towards "dual-duty design", in which every line of code is serving multiple agendas (like the way that all of the major components on an airplane serve more than one functions - the wings are not only the primary lift surfaces, they are also the fuel tanks and the mounting points for landing gear, engines, running lights, and so on.)

The advantage of this is that it makes the code very compact and dense, with lots of ideas being embodied in a relatively few lines of code.

The problem with this is that someone who comes along and reads my code may not be able to make any sense of it, especially if they are only aware of the primary agenda that is informing the code.

Now, I may be talking out of my butt here - I don't know much about your situation, or what rationales you have for designing things the way that you have. However, I would suggest that you might want to consider what your actual, practical needs are, and if there is a way to get them that is more straightforward and easy to explain.

-- Talin



More information about the Python-3000 mailing list