Skip to main content

Functional style dictionary and list classes + decorators for pattern matching function dispatch

Project description

Overview
========

Functional style 'list' and 'dict' classes & decorators for pattern matching function dispatch.

For more information, visit http://www.systemical.com/doc/opensource/pyfnc


Examples
========

Dictionary class 'dic' with 'return self' functionality:

>>> d=dic({"k2":"v2"})
>>> dr=d.update({"k1":"v1"})
>>> self.assertEqual(d, dr)

List class 'liste' with 'return self' functionality and integrated 'map', 'reduce' and 'filter' functions:

>>> l=liste()
>>> lr=l.extend([1,2,3])
>>> self.assertEqual(len(l), 3)
>>> self.assertEqual(l, lr)

>>> f=lambda x:x+10

>>> lm=l.map(f)
>>> self.assertEqual(lm, [11, 12, 13])
>>> self.assertEqual(l, [11, 12, 13])


Erlang style function dispatch:

>>> @pattern('male', str)
... def greet_male(p1, p2):
... return "Hello M. %s!" % p2

>>> @pattern('female', str)
... def greet_female(p1, p2):
... return "Hello Mrs. %s!" % p2

>>> @patterned
... def greet(p1, p2):
... pass

>>> print greet("male", "Dupont")
"Hello M. Dupont!"

>>> print greet("female", "Corriveau")
"Hello Mrs. Corriveau!"


Clean looking reducers:


@pattern(False, any)
def comp_reducer_FA(p1, p2):
return False

@pattern(str, str)
def comp_reducer_SS(p1, p2):
if p1==p2:
return p1
return False

@patterned
def comp_reducer(p1, p2):
'''
Reducer

Check if all strings are equal
'''


def strings_comparator(l):
'''
Returns the common string if all elements of 'l' are equal
else returns False
'''
if len(l)<2:
return False

return reduce(comp_reducer, l)


Tests
=====

Tests can be performed using `nosetests` in the root directory.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

pyfnc-0.1.2.zip (13.6 kB view details)

Uploaded Source

pyfnc-0.1.2.tar.gz (7.1 kB view details)

Uploaded Source

File details

Details for the file pyfnc-0.1.2.zip.

File metadata

  • Download URL: pyfnc-0.1.2.zip
  • Upload date:
  • Size: 13.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pyfnc-0.1.2.zip
Algorithm Hash digest
SHA256 f1164c42a9c6d06c122c98b389e7b5d1c8f41ddc72cf9762c092fbaa4a851c47
MD5 6c1d290ad0bc49a4e2df6adf8a8e8ef4
BLAKE2b-256 9219f7e93328e03153ca3b99a01c1d30ea69f274fc7880ffd29c3ad228d2f69c

See more details on using hashes here.

File details

Details for the file pyfnc-0.1.2.tar.gz.

File metadata

  • Download URL: pyfnc-0.1.2.tar.gz
  • Upload date:
  • Size: 7.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pyfnc-0.1.2.tar.gz
Algorithm Hash digest
SHA256 bcf621d2273449dd485b4208b16cbb4be357f8c8cd640a80af5652e7ab250d3e
MD5 7ebbe6f73cf709bb068c04b4018bdfc1
BLAKE2b-256 595661714cede2b627d71b83b3bd13750a79317f377558f82fcfc6aa0d8dc584

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page