Skip to content
This repository has been archived by the owner on Oct 3, 2020. It is now read-only.

jwoudenberg/fantasy-do

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

fantasy-do

NPM version Build status Dependencies

What is it? Take your pick:

  • do notation for fantasy-land javascript.
  • co for monads.
  • async/await for chainables.

It allows you take take this code:

const div = (b === 0) ? Nothing() : Just(a / b)
const result = div(8, 2)
  .map(a => a + 2)
  .chain(b => div(b, 2))
}

And write it like this:

const mdo = require('fantasy-do')
const result = mdo(function * () {
  const a = yield div(8, 2)
  b = a + 2
  return div(b, 2)
})