Higher order functions

These utility functions are exported, but are subject to change without notice.

## Index

### Variables

- propEq

### Functions

- all
- and
- any
- compose
- curry
- eq
- invoke
- is
- not
- or
- parse
- pattern
- pipe
- prop
- val

## Variables

propEq: Function = curry((name: string, _val: any, obj: any) => obj && obj[name] === _val)

Given a property name and a value, returns a function that returns a boolean based on whether the passed object has a property that matches the value let obj = { foo: 1, name: "blarg" }; let getName = propEq("name", "blarg"); getName(obj) === true

Given a property name and a value, returns a function that returns a boolean based on whether the passed object has a property that matches the value let obj = { foo: 1, name: "blarg" }; let getName = propEq("name", "blarg"); getName(obj) === true

- Defined in common/hof.ts:111

## Functions

- all(fn1: Predicate<any>): (Anonymous function)

- Check if all the elements of an array match a predicate function

- Check if all the elements of an array match a predicate function

  #### Parameters

  - ##### fn1 Predicate<any>

    :

    a predicate function `fn1`

  #### Returns (Anonymous function)

  :

  a function which takes an array and returns true if `fn1` is true for all elements of the array

  - Defined in common/hof.ts:153

- and(fn1: Predicate<any>, fn2: Predicate<any>): Predicate<any>

- Given two functions that return truthy or falsey values, returns a function that returns truthy if both functions return truthy for the given arguments

- Given two functions that return truthy or falsey values, returns a function that returns truthy if both functions return truthy for the given arguments

  #### Parameters

  - ##### fn1 Predicate<any>

  - ##### fn2 Predicate<any>

  #### Returns Predicate<any>

  - Defined in common/hof.ts:135

- any(fn1: Predicate<any>): (Anonymous function)

- #### Parameters

  - ##### fn1 Predicate<any>

  #### Returns (Anonymous function)

  - Defined in common/hof.ts:157

- compose(): (Anonymous function)

- Given a varargs list of functions, returns a function that composes the argument functions, right-to-left given: f(x), g(x), h(x) let composed = compose(f,g,h) then, composed is: f(g(h(x)))

- Given a varargs list of functions, returns a function that composes the argument functions, right-to-left given: f(x), g(x), h(x) let composed = compose(f,g,h) then, composed is: f(g(h(x)))

  #### Returns (Anonymous function)

  - Defined in common/hof.ts:75

- curry(fn: Function): Function

- Returns a new function for Partial Application of the original function.

- Returns a new function for Partial Application of the original function.

  Given a function with N parameters, returns a new function that supports partial application. The new function accepts anywhere from 1 to N parameters. When that function is called with M parameters, where M is less than N, it returns a new function that accepts the remaining parameters. It continues to accept more parameters until all N parameters have been supplied.

  This contrived example uses a partially applied function as an predicate, which returns true if an object is found in both arrays.

  example

        // returns true if an object is in both of the two arrays
        function inBoth(array1, array2, object) {
          return array1.indexOf(object) !== -1 &&
                 array2.indexOf(object) !== 1;
        }
        let obj1, obj2, obj3, obj4, obj5, obj6, obj7
        let foos = [obj1, obj3]
        let bars = [obj3, obj4, obj5]

        // A curried "copy" of inBoth
        let curriedInBoth = curry(inBoth);
        // Partially apply both the array1 and array2
        let inFoosAndBars = curriedInBoth(foos, bars);

        // Supply the final argument; since all arguments are
        // supplied, the original inBoth function is then called.
        let obj1InBoth = inFoosAndBars(obj1); // false

        // Use the inFoosAndBars as a predicate.
        // Filter, on each iteration, supplies the final argument
        let allObjs = [ obj1, obj2, obj3, obj4, obj5, obj6, obj7 ];
        let foundInBoth = allObjs.filter(inFoosAndBars); // [ obj3 ]

    Stolen from: http://stackoverflow.com/questions/4394747/javascript-curry-function

  #### Parameters

  - ##### fn Function

    :

  #### Returns Function

  :

  - Defined in common/hof.ts:53

- eq(value: any): (Anonymous function)

- Given a value, returns a Predicate function that returns true if another value is === equal to the original value

- Given a value, returns a Predicate function that returns true if another value is === equal to the original value

  #### Parameters

  - ##### value any

  #### Returns (Anonymous function)

  - Defined in common/hof.ts:166

- invoke(fnName: string): Function
- invoke(fnName: string, args: any[]): Function

- #### Parameters

  - ##### fnName string

  #### Returns Function

  - Defined in common/hof.ts:174

- #### Parameters

  - ##### fnName string

  - ##### args any[]

  #### Returns Function

  - Defined in common/hof.ts:175

- is<T>(ctor: object): (Anonymous function)

- Given a class, returns a Predicate function that returns true if the object is of that class

- Given a class, returns a Predicate function that returns true if the object is of that class

  #### Type parameters

  - #### T

  #### Parameters

  - ##### ctor object

    - ##### constructor: function

      - new __type(...args: any[]): T

      - #### Parameters

        - ##### ...args: Rest any[]

        #### Returns T

        - Defined in common/hof.ts:161

  #### Returns (Anonymous function)

  - Defined in common/hof.ts:161

- not(fn: Predicate<any>): (Anonymous function)

- Given a function that returns a truthy or falsey value, returns a function that returns the opposite (falsey or truthy) value given the same inputs

- Given a function that returns a truthy or falsey value, returns a function that returns the opposite (falsey or truthy) value given the same inputs

  #### Parameters

  - ##### fn Predicate<any>

  #### Returns (Anonymous function)

  - Defined in common/hof.ts:128

- or(fn1: Predicate<any>, fn2: Predicate<any>): Predicate<any>

- Given two functions that return truthy or falsey values, returns a function that returns truthy if at least one of the functions returns truthy for the given arguments

- Given two functions that return truthy or falsey values, returns a function that returns truthy if at least one of the functions returns truthy for the given arguments

  #### Parameters

  - ##### fn1 Predicate<any>

  - ##### fn2 Predicate<any>

  #### Returns Predicate<any>

  - Defined in common/hof.ts:143

- parse(name: string): any

- Given a dotted property name, returns a function that returns a nested property from an object, or undefined let obj = { id: 1, nestedObj: { foo: 1, name: "blarg" }, }; let getName = prop("nestedObj.name"); getName(obj) === "blarg" let propNotFound = prop("this.property.doesnt.exist"); propNotFound(obj) === undefined

- Given a dotted property name, returns a function that returns a nested property from an object, or undefined let obj = { id: 1, nestedObj: { foo: 1, name: "blarg" }, }; let getName = prop("nestedObj.name"); getName(obj) === "blarg" let propNotFound = prop("this.property.doesnt.exist"); propNotFound(obj) === undefined

  #### Parameters

  - ##### name string

  #### Returns any

  - Defined in common/hof.ts:121

- pattern(struct: Function[][]): Function

- Sorta like Pattern Matching (a functional programming conditional construct)

- Sorta like Pattern Matching (a functional programming conditional construct)

  See http://c2.com/cgi/wiki?PatternMatching

  This is a conditional construct which allows a series of predicates and output functions to be checked and then applied. Each predicate receives the input. If the predicate returns truthy, then its matching output function (mapping function) is provided with the input and, then the result is returned.

  Each combination (2-tuple) of predicate + output function should be placed in an array of size 2: [ predicate, mapFn ]

  These 2-tuples should be put in an outer array.

  example

        // Here's a 2-tuple where the first element is the isString predicate
        // and the second element is a function that returns a description of the input
        let firstTuple = [ angular.isString, (input) => `Heres your string ${input}` ];

        // Second tuple: predicate "isNumber", mapfn returns a description
        let secondTuple = [ angular.isNumber, (input) => `(${input}) That's a number!` ];

        let third = [ (input) => input === null,  (input) => `Oh, null...` ];

        let fourth = [ (input) => input === undefined,  (input) => `notdefined` ];

        let descriptionOf = pattern([ firstTuple, secondTuple, third, fourth ]);

        console.log(descriptionOf(undefined)); // 'notdefined'
        console.log(descriptionOf(55)); // '(55) That's a number!'
        console.log(descriptionOf("foo")); // 'Here's your string foo'

  #### Parameters

  - ##### struct Function[][]

    :

    A 2D array. Each element of the array should be an array, a 2-tuple, with a Predicate and a mapping/output function

  #### Returns Function

  :

  - Defined in common/hof.ts:221

- pipe(...funcs: Function[]): function

- Given a varargs list of functions, returns a function that is composes the argument functions, left-to-right given: f(x), g(x), h(x) let piped = pipe(f,g,h); then, piped is: h(g(f(x)))

- Given a varargs list of functions, returns a function that is composes the argument functions, left-to-right given: f(x), g(x), h(x) let piped = pipe(f,g,h); then, piped is: h(g(f(x)))

  #### Parameters

  - ##### ...funcs: Rest Function[]

  #### Returns function

  - - (obj: any): any

    - #### Parameters

      - ##### obj any

      #### Returns any

  - Defined in common/hof.ts:91

- prop(name: string): (Anonymous function)

- Given a property name, returns a function that returns that property from an object let obj = { foo: 1, name: "blarg" }; let getName = prop("name"); getName(obj) === "blarg"

- Given a property name, returns a function that returns that property from an object let obj = { foo: 1, name: "blarg" }; let getName = prop("name"); getName(obj) === "blarg"

  #### Parameters

  - ##### name string

  #### Returns (Anonymous function)

  - Defined in common/hof.ts:101

- val<T>(v: T): (Anonymous function)

- Given a value, returns a function which returns the value

- Given a value, returns a function which returns the value

  #### Type parameters

  - #### T

  #### Parameters

  - ##### v T

  #### Returns (Anonymous function)

  - Defined in common/hof.ts:170

Generated using TypeDoc