Skip to main content

Matts Majestic Monads

pipeline status coverage report

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

matts-majestic-monads-0.0.5.tar.gz (6.5 kB view details)

Uploaded Source

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

Hashes for matts-majestic-monads-0.0.5.tar.gz
Algorithm Hash digest
SHA256 53b70bbc93cff7aaef6a6091fa444f6418d9b3716f91ee1908e84b83bffee3ca
MD5 94fee0db26f3c7cecd5e8a58e061a994
BLAKE2b-256 bda241ac8812596fe2357d3c683792fb9f6f415129d98378ae7573f55ed33c29

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.0.5 This release

1 file

0.0.4

1 file

0.0.3

1 file

0.0.2

1 file

0.0.1

1 file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page