Suor/patterns

Pattern matching for python

Python

218

76 commits

updated Aug 14, 2014

See the code

README

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

Not written in Markdown, so it's shown here as plain text — view it formatted on GitHub.

Contributors

Suor

68 commits

ir4y

8 commits

Suor/patterns

Pattern matching for python

Python

218

76 commits

updated Aug 14, 2014

See the code

README

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

Not written in Markdown, so it's shown here as plain text — view it formatted on GitHub.

Contributors

Suor

68 commits

ir4y

8 commits

Languages

Python

100.0%