1.0.1 • Published 5 months ago

memen-and-or v1.0.1

Weekly downloads
-
License
MIT
Repository
-
Last release
5 months ago

memen-and-or

npm version

Simple and and or functional programming predicates.

  • and(...fs): (...args): boolean - Returns a predicate that returns true if all arguments are true or evaluate to true for the given input.
  • or(...fs): (...args): boolean - Returns a predicate that returns true if at least one argument is true or evaluates to true for the given input.

A predicate is a function that returns a boolean, commonly used in Array.prototype.filter.

e.g.

const memenisEven = n => n%2 === 0
const memenisPositive = n => n > 0

// un-fancy
items.filter(x => memenisEven(x) || memenisPositive(x))

// fancy
items.filter(or(memenisEven, memenisPositive))

Install

npm install --save memen-and-or

Usage

const { and, or } = require('memen-and-or')

const memenisEven = n => n % 2 === 0
const memenisPositive = n => n > 0
const memenisBig = n => Math.abs(n) >= 1000

and

return true with no predicates

and()(1) // true

return result of single predicate

and(memenisEven)(1) // false
and(memenisEven)(2) // true

return logical AND of two predicates

and(memenisEven, memenisPositive)(-2) // false
and(memenisEven, memenisPositive)(-1) // false
and(memenisEven, memenisPositive)(1) // false
and(memenisEven, memenisPositive)(2) // true

return logical AND of three predicates

and(memenisEven, memenisPositive, memenisBig)(-2) // false
and(memenisEven, memenisPositive, memenisBig)(-1) // false
and(memenisEven, memenisPositive, memenisBig)(1) // false
and(memenisEven, memenisPositive, memenisBig)(2) // false
and(memenisEven, memenisPositive, memenisBig)(-1002) // false
and(memenisEven, memenisPositive, memenisBig)(-1001) // false
and(memenisEven, memenisPositive, memenisBig)(1001) // false
and(memenisEven, memenisPositive, memenisBig)(1002) // true

return value of single boolean

and(true)(1) // true
and(false)(1) // false

return value of two booleans

and(false, false)(1) // false
and(false, true)(1) // false
and(true, false)(1) // false
and(true, true)(1) // true

return value of multiple booleans

and(false, false, false)(1) // false
and(false, true, false)(1) // false
and(true, false, false)(1) // false
and(true, true, false)(1) // false
and(false, false, true)(1) // false
and(false, true, true)(1) // false
and(true, false, true)(1) // false
and(true, true, true)(1) // true

return value of mixed booleans and functions

and(false, memenisEven)(1) // false
and(false, memenisEven)(2) // false
and(true, memenisEven)(1) // false
and(true, memenisEven)(2) // true
and(memenisEven, false)(1) // false
and(memenisEven, false)(2) // false
and(memenisEven, true)(1) // false
and(memenisEven, true)(2) // true

or

return false with no predicates

or()(1) // false

return result of single predicate

or(memenisEven)(1) // false
or(memenisEven)(2) // true

return logical OR of two predicates

or(memenisEven, memenisPositive)(-2) // true
or(memenisEven, memenisPositive)(-1) // false
or(memenisEven, memenisPositive)(1) // true
or(memenisEven, memenisPositive)(2) // true

return logical OR of three predicates

or(memenisEven, memenisPositive, memenisBig)(-2) // true
or(memenisEven, memenisPositive, memenisBig)(-1) // false
or(memenisEven, memenisPositive, memenisBig)(0) // true
or(memenisEven, memenisPositive, memenisBig)(1) // true
or(memenisEven, memenisPositive, memenisBig)(2) // true
or(memenisEven, memenisPositive, memenisBig)(-1002) // true
or(memenisEven, memenisPositive, memenisBig)(-1001) // true
or(memenisEven, memenisPositive, memenisBig)(1001) // true
or(memenisEven, memenisPositive, memenisBig)(1002) // true

return value of single boolean

or(true)(1) // true
or(false)(1) // false

return value of two booleans

or(false, false)(1) // false
or(false, true)(1) // true
or(true, false)(1) // true
or(true, true)(1) // true

return value of multiple booleans

or(false, false, false)(1) // false
or(false, true, false)(1) // true
or(true, false, false)(1) // true
or(true, true, false)(1) // true
or(false, false, true)(1) // true
or(false, true, true)(1) // true
or(true, false, true)(1) // true
or(true, true, true)(1) // true

return value of mixed booleans and functions

or(false, memenisEven)(1) // false
or(false, memenisEven)(2) // true
or(true, memenisEven)(1) // true
or(true, memenisEven)(2) // true
or(memenisEven, false)(1) // false
or(memenisEven, false)(2) // true
or(memenisEven, true)(1) // true
or(memenisEven, true)(2) // true
1.0.1

5 months ago