Options
All
  • Public
  • Public/Protected
  • All
Menu

Monadism

Monadism

npm license GitHub issues github

A set of practical monads implemented in TypeScript, with the goal of being easy to learn and use in daily work.

Installation

Install with Yarn:

yarn add monadism

Or with npm:

npm i monadism

Then, import ES-module style:

import {Just, Nothing, maybe} from 'monadism'

Or, via require:

const {Just, Nothing, maybe} = require('monadism')

Docs

  • Maybe
    • Represent optional values (A) without null or undefined.
  • Either
    • A value that can be either the type on the Left, or the type on the Right.
  • State
    • A Monad which can be used to model a single piece of mutable state (S).
  • Reader
    • A computation with a return value (A) which can read values from a shared environment (E).
  • Writer
    • Accumulate a secondary story (S) value alongside the return value (A) of a computation.
  • Signal

Influences

Monadism builds on the inspiration of a variety of different projects. Check them out for a deep dive into things like category theory and different data structures!

  • purescript-transformers - Monad and comonad transformers based on mtl.
  • bs-abstract - Bucklescript interfaces and implementations for category theory and abstract algebra.
  • fp-ts - A library for typed functional programming in TypeScript.
  • TsMonad - Little monad library designed for TypeScript.

Examples

Signal

Monadism Mario

examples/signal/mario

An example of a Mario game screen using Signals to manage user input and game state. Adapted from Michael Ficarra's example at https://github.com/michaelficarra/purescript-demo-mario

Mario

Play a live demo here!

Development

Install dependencies with Yarn:

yarn

Or with npm:

npm i

To build changes to the TypeScript code:

yarn build

To build in watch mode:

yarn build.wach

To build the docs:

yarn build.docs

Authors

Generated using TypeDoc