maeby

2.0.0 • Public • Published

maeby

Build Status Coverage Status

the maybe monad - in JS - with some adornments

about

This is mostly just a fun project to learn more about monads. The exposed interface tries to stick closely to a textbook monad interface, but adds a bit of convenience to accommodate the syntax and semantics of JS.

installation

$ npm add maeby
# or
$ yarn add maeby

example

import { maybe, just, nothing } from 'maeby'

const flakyCaps = name =>
  Math.random() > 0.5 ? name.toUpperCase() : null

maybe(flakyCaps('hey'))
  .bind(curtGreeting => `${curtGreeting}! how's it goin?`)
  // ^ equivalent to:
  // .bind(curtGreeting => just(`${curtGreeting}! how's it goin?`))
  .unwrap()
  // ^ convert back to the plain unwrapped JS value

api

maybe (value: T): Maybe<T>

just (value: T): Maybe<T>

nothing (): Maybe<T>

bind<T, U> (instance: Maybe<T>, transform: (value: T) => (Maybe<U> | U)): Maybe<U>

js <T> (m: Maybe<T>): ?T

Readme

Keywords

none

Package Sidebar

Install

npm i maeby

Weekly Downloads

0

Version

2.0.0

License

MIT

Unpacked Size

9.22 kB

Total Files

5

Last publish

Collaborators

  • dan-f