Functional Pattern Matching for Python
Project description
Splarnektity provides a limited, but valuable, form of functional pattern matching to Python, a la OCaml, Erlang, Haskell, et al.. Another way of thinking of this is: pattern matching over Python lists.
Here is a quick example of Splarnektity’s usage:
from splarnektity import FMatch
sexpr = ('person',
('name', 'john'),
('address', ('line1', '123 Townville'), ('zip', 54321)),
('age', 24),
('favorite foods', 'pizza', 'dorritos'),
)
for x in sexpr[1:]:
f = FMatch(x)
V1, V2 = f.var(2)
if f.when(('name', V1)):
print 'name: ', V1.v
elif f.when(('address', ('line1', V1), ('zip', V2))) and V2.int:
print 'address line1: ', V1.v
print 'address zip: ', V2.v
elif f.when(('age', V1)) and V1.int:
print 'age: ', V1.v
elif f.when(('favorite foods', V1.others)): # variable length matching
print 'favorite foods:', V1.v
The result of this example is:
name: john
address line1: 123 Townville
address zip: 54321
age: 24
favorite foods: ('pizza', 'dorritos')