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
Example GUI using monads: Success, Failure, Just, Reader, and Printer
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)
| File | Size | Uploaded | |
|---|---|---|---|
| simplemonads-1.0.12.tar.gz | 4.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|