All Projects → Suor → Patterns

Suor / Patterns

Licence: other
Pattern matching for python

Programming Languages

python
139335 projects - #7 most used programming language

Patterns |Build Status|

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

Installation

::

pip install patterns

Usage

.. code:: python

from patterns import patterns, Mismatch

@patterns
def factorial():
    if 0: 1
    if n is int: n * factorial(n-1)
    if []: []
    if [x] + xs: [factorial(x)] + factorial(xs)
    if {'n': n, 'f': f}: f(factorial(n))

assert factorial(0) == 1
assert factorial(5) == 120
assert factorial([3,4,2]) == [6, 24, 2]
assert factorial({'n': [5, 1], 'f': sum}) == 121

factorial('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

.. |Build Status| image:: https://travis-ci.org/Suor/patterns.svg?branch=master :target: https://travis-ci.org/Suor/patterns

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].