Skip to main content

simplemonads

Let's make monads easy, fun, and productive.

Platform support

Just pip install simplemonads and you're done. You can also download this single file into your project and use it as you wish without dependencies. Works across all platforms, so CPython >= 3.5 (Windows, Linux, Mac, Android, iOS), in a single standalone html file, multiple files in the browser with dynamic loading, and even on microcontrollers with micropython.

Docs

Read the docs here.

Example GUI using monads: Success, Failure, Just, Reader, and Printer

Screenshot of test_reader.py

import simplemonads as sm

try:

    class Deps(sm.Protocol):
        "Dependencies for your application"

        def popup(self, msg: str) -> None:
            "Display a popup with the specified message."


except:
    pass


@sm.run
class TestReader:
    @classmethod
    def make(cls, create: "sm.Callable[[],sm.Any]") -> "sm.Callable[[],Deps]":
        gui = create()

        class GuiDeps:
            def popup(self, x: str):
                gui.Popup(x)

        return GuiDeps

    @classmethod
    def app(cls, divide_by_zero: bool = False) -> sm.Reader:
        data = sm.Success(sm.Just(7))
        double = lambda x: x + (lambda y: y * 2)
        triple = lambda x: x + (lambda y: y * 3)
        result = data + triple + double

        if divide_by_zero:
            result += lambda x: x + (lambda x: x / 0)

        def effect(deps: "Deps") -> "sm.Monad":
            msg = "Answer to the Universe: "
            err = "Whoops, an error happened: "
            result | {
                sm.Success: lambda x: x
                | {sm.Just: lambda val: deps.popup(msg + str(val))},
                sm.Failure: lambda x: deps.popup(err + x),
            }
            return result

        return sm.Reader(effect)

    @classmethod
    def main(cls):
        gui = sm.Success() + (lambda x: __import__("PySimpleGUI")) | {
            sm.Success: lambda x: x,
            sm.Failure: lambda x: sm.Printer(),
        }

        return cls.app() + cls.make(lambda: gui)

Metadata

Release files for simplemonads 1.0.12

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for simplemonads 1.0.12
File Size Uploaded
simplemonads-1.0.12.tar.gz 4.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for simplemonads 1.0.12
File Interpreter ABI Platform
simplemonads-1.0.12-py3-none-any.whl Python 3 none any Details

Total release size: 8.5 kB

Release files / simplemonads-1.0.12.tar.gz

Download URL simplemonads-1.0.12.tar.gz
Size 4.2 kB
Tags Source
SHA-256 checksum
How to use checksums
8771f05dcd05e8bc9715c61d073de2d69f380ec000074cbf628aee637c533cba
BLAKE2b-256 checksum
How to use checksums
d0bceb65f2bdb3d9f3bd995aeb68420707ee971fceccd03b07886d7bde90e18e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.4 CPython/3.9.0 Linux/5.4.0-1031-azure

Release files / simplemonads-1.0.12-py3-none-any.whl

Download URL simplemonads-1.0.12-py3-none-any.whl
Size 4.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
dd81c5f2f6a5bc920eca02ef65a7e9a2d70153399fbf8a0a1bcfce3b0d2eb6cf
BLAKE2b-256 checksum
How to use checksums
ec6f14075b15d707d7aec69622a7a96d791ceb7f0af539820236ee8811e50e8c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.4 CPython/3.9.0 Linux/5.4.0-1031-azure

Release history Release notifications | RSS feed

This release

1.0.12 This release

2 release files

1.0.10

2 release files

1.0.9

2 release files

1.0.8

2 release files

1.0.7

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.1.0

2 release files

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