Hi, I'm new to the list and apologies for going off-topic a bit (this has nothing to do with performance): If Python implements switch statements it would be a shame not to have pattern-matching in switch statements too. This is a feature that has long been used in functional languages like ML. For example, here's pattern matching on a tuple: def foo(a,b): switch (f(a), g(b)): case (c,1): something(c) # if g(b)==1, assigns c = f(a) case (1,d): something(d) # if f(a)==1, assigns d = g(b) case (c,_): something(c) # any tuple: assigns c = f(a), _ is wildcard Some syntactic sugar related to this would be a way to pattern-match on arbitrary objects as is now done with tuples: def foo(pair, number): Pair(x,y) = pair # assert isinstance(pair,Pair), assigns x and y int(i) = number # assert type(x)==IntType, assign i (To implement this, classes would have a __tuple__ method that returns the tuple for matching. By convention it should return the arguments to its __init__ method.) Note how type-checking happens in a very natural way: a = int(a) # convert a int(a) = a # type-check a Combining the two: def sum(pairOrInt): switch pairOrInt: case int(a): return a case Pair(x,y): return sum(x)+sum(y) Here's some documentation on how it's done in Cyclone, a C variant from AT&T that seems to have a strong ML influence: http://www.research.att.com/projects/cyclone/online-manual/main-screen005.html ---------------------------------------------------------------------- Brian Slesinsky
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4