UNPKG

memen-and-or

Version:

Simple `and` and `or` functional programming predicates

183 lines (151 loc) 4.78 kB
# memen-and-or [![npm version](https://img.shields.io/npm/v/memen-and-or.svg)](https://npmjs.org/package/memen-and-or) 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. ```js 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 ```sh npm install --save memen-and-or ``` ## Usage ```js 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 ```js and()(1) // true ``` #### return result of single predicate ```js and(memenisEven)(1) // false and(memenisEven)(2) // true ``` #### return logical AND of two predicates ```js 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 ```js 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 ```js and(true)(1) // true and(false)(1) // false ``` #### return value of two booleans ```js 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 ```js 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 ```js 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 ```js or()(1) // false ``` #### return result of single predicate ```js or(memenisEven)(1) // false or(memenisEven)(2) // true ``` #### return logical OR of two predicates ```js 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 ```js 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 ```js or(true)(1) // true or(false)(1) // false ``` #### return value of two booleans ```js 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 ```js 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 ```js 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 ```