Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Maybe monad implemented using Proxy for maximum sweetness

Notifications You must be signed in to change notification settings

uri/maybe-proxy

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

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

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
Morty Proxy This is a proxified and sanitized view of the page, visit original site.