Matts Majestic Monads
This overblown library implements Functor, Applicative and Monad in Python.
Synopsis
You can use Either.convert or Maybe.convert as a decorator to convert return types.
This example converts exceptions into Left values:
from monads import Either
@Either.convert
def parse_arguments():
parser = argparse.ArgumentParser(description='Download a URL and print it')
parser.add_argument('URL', help='URL to download')
return parser.parse_args()
Once you have your Either you can use fmap and bind to operate over the contained value:
result = (
make_parser()
.fmap(parse)
.fmap(to_url)
.bind(read)
)
The methods will be passed the current value.
You should use fmap when the function will return a normal value.
When the function returns a monad, use bind.
You can use Function as a decorator to convert functions.
Once converted they become composable:
from monads import Function
@Function
def parse(parser):
return parser.parse_args()
@Function
def to_url(arguments):
return arguments.URL
both = parse.compose(to_url)
Example
There is a simple example of using this library in example.py.
This script reads a url that you provide and prints the length of the body:
➜ pipenv run python example.py 'http://python.org/'
Right(48817)
➜ pipenv run python example.py 'http://pythonasdasd.org/'
Left(<urlopen error [Errno -2] Name or service not known>)
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file matts-majestic-monads-0.0.5.tar.gz.
File metadata
- Download URL: matts-majestic-monads-0.0.5.tar.gz
- Upload date:
- Size: 6.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.4.3 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
53b70bbc93cff7aaef6a6091fa444f6418d9b3716f91ee1908e84b83bffee3ca
|
|
| MD5 |
94fee0db26f3c7cecd5e8a58e061a994
|
|
| BLAKE2b-256 |
bda241ac8812596fe2357d3c683792fb9f6f415129d98378ae7573f55ed33c29
|