Skip to content

Repository files navigation

Patterns Build Status

Pattern matching for python. Works in Python 2.7, 3.3+ and pypy.

Installation

pip install patterns

Usage

frompatternsimportpatterns, Mismatch@patternsdeffactorial():
if0: 1ifnisint: n*factorial(n-1)
if []: []
if [x] +xs: [factorial(x)] +factorial(xs)
if {'n': n, 'f': f}: f(factorial(n))
assertfactorial(0) ==1assertfactorial(5) ==120assertfactorial([3,4,2]) == [6, 24, 2]
assertfactorial({'n': [5, 1], 'f': sum}) ==121factorial('hello') # raises Mismatch

See tests for more examples.

TODO

  • docs
  • aliases for structures
  • destructure objects
  • name parameter
  • better handling of Mismatch passing to function env
  • non-strict dict matching

About

Pattern matching for python

Resources

Stars

218 stars

Watchers

14 watching

Forks

Releases

Packages

Used by

Contributors

Languages