Skip to content
A set of practical monads implemented in TypeScript
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs
examples/signal/mario
src
.editorconfig
.gh-pages.yml
.gitignore
.huskyrc
LICENSE
README.md
either.ts
functional.ts Add a Mario example Apr 14, 2019
index.ts
jest.config.js
maybe.ts Add a Mario example Apr 14, 2019
package.json
signal-dom.ts
signal.ts
tsconfig.json Initial implementation of Reader Apr 29, 2019
tslint.json
yarn.lock

README.md

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

You can’t perform that action at this time.