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.
========
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
Release history Release notifications | RSS feed
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)
pyfnc-0.1.2.tar.gz
(7.1 kB
view details)
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | f1164c42a9c6d06c122c98b389e7b5d1c8f41ddc72cf9762c092fbaa4a851c47 |
|
MD5 | 6c1d290ad0bc49a4e2df6adf8a8e8ef4 |
|
BLAKE2b-256 | 9219f7e93328e03153ca3b99a01c1d30ea69f274fc7880ffd29c3ad228d2f69c |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | bcf621d2273449dd485b4208b16cbb4be357f8c8cd640a80af5652e7ab250d3e |
|
MD5 | 7ebbe6f73cf709bb068c04b4018bdfc1 |
|
BLAKE2b-256 | 595661714cede2b627d71b83b3bd13750a79317f377558f82fcfc6aa0d8dc584 |