uri / maybe-proxy

Maybe monad implemented using Proxy for maximum sweetness

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

maybe-proxy

This maybe monad implemented with a Proxy. This monad let's you chain method calls without relying on a higher order then/chain/andThen function

var {Maybe} = require("./index");

function apiRequest() {
  if (Math.random() < 0.5) {
   return {person: {name: 'bobby', projects: [{lang: 'elixir', name: 'brute'}]}};
  } else {
  return {projects: []};
  }
}

var lang = maybePerson.person.projects[0].lang.value
console.log(lang)

Use value to return the current value. This returns the value or null.

andThen is still useful if wanting to use a function not implemented on the underlying value:

function someOp(value) {
  console.log("Performing some op", value)
}
maybePerson.person.projects.andThen(projects => someOp(projects))

Chaining methods together with will always return a new Maybe.

var maybeProjects = maybePerson.projects
console.log(maybePerson.value) // prints null or value
console.log(maybeProjects.value) // prints null or value

maybeProjects.andThen(value => { // only prints value if value is not null
  console.log(value)
  return value // value must be return if chaining is to continue
}).andThen(v => someOp(v)).andThen(v => someOtherOp(v))

About

Maybe monad implemented using Proxy for maximum sweetness


Languages

Language:JavaScript 100.0%