[Python-Dev] PEP 275: "Switching on Multiple Values", Rev 1.1

Thomas Wouters thomas@xs4all.net
Tue, 13 Nov 2001 20:16:56 +0100


On Tue, Nov 13, 2001 at 03:32:55PM +0100, Jack Jansen wrote:

> Even though I'm not sure I like the switch idea (and I won't even contemplate 
> how Guido will react when he comes back and sees what we've been spending our 
> time on:-) there's one very special case of switch that I would like, and 
> that's the Algol 68 style switch on type. If we had something like
>   def foo(x):
>      switch type(x):
>         case int:
>           do something
>         case string:
>           do something else
> this would be a nice point to hook into for something that tries to compile 
> Python to C or somesuch.

Unfortunately, type-names/objects aren't compile-time constants, so we can't
implement this without some kind of namespace-modification-notification
technique. Hmm... Or perhaps we could do the normal lookup, compare the
then-current 'int' vs. the one we looked up, and if they aren't equal
re-initialize the jump dict.... But *shudder*.

> Hmm, you would probably need a tuple-based switch as well:
>    switch type(x), type(y):
>      case int, int:
>         ....

I think you mean 'case (int, int):' there. Constant-tuples aren't really a
problem to implement, though it would require either a lot of code
duplication or a bit of refactoring, which is why my proof-of-concept
doesn't offer them.

-- 
Thomas Wouters <thomas@xs4all.net>

Hi! I'm a .signature virus! copy me into your .signature file to help me spread!