JSPM

memen-and-or

1.0.1
    • ESM via JSPM
    • ES Module Entrypoint
    • Export Map
    • Keywords
    • License
    • Repository URL
    • TypeScript Types
    • README
    • Created
    • Published
    • Downloads 3
    • Score
      100M100P100Q31021F
    • License MIT

    Simple `and` and `or` functional programming predicates

    Package Exports

    • memen-and-or
    • memen-and-or/index.js

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (memen-and-or) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    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