KudoJS Helper Functions
These are the functions under the kudoJS.*
namespace:
kudoJS.id
The identity function. It returns the value given to it.
id(x: any): any
Param | Type | Description |
---|---|---|
x | * |
Any |
kudoJS.once
Returns a function that, when called, fires the passed function only once.
once(f: Function): Function
Param | Type | Description |
---|---|---|
f | function |
Function to be called once |
kudoJS.curry
Returns a curried equivalent of the provided function.
curry(fn: Function): Function
Param | Type | Description |
---|---|---|
fn | function |
Function to be curried |
kudoJS.ocurry
Returns a curried equivalent of the provided function, which will accept named arguments in any order.
ocurry(fn: Function, args: Array<string>): Function
Param | Type | Description |
---|---|---|
fn | function |
Function to be curried that accepts a single named argument object |
args | Array.<string> |
Array of key names of the function's named argument object |
kudoJS.compose
Performs right-to-left function composition.
compose(...fns: Function): Function
Param | Type | Description |
---|---|---|
...fns | function |
Functions to compose |
kudoJS.constant
Takes any value and returns a function that will return the same value, no matter what you pass to it.
constant(x: any): any
Param | Type | Description |
---|---|---|
x | * |
Any |
kudoJS.fmap
Takes a function and a functor, applies the function to each of the functor's values, and returns a functor.
fmap(fn: (a: A) => B, f: Functor<A>): Functor<B>
Param | Type | Description |
---|---|---|
fn | function |
Function to be mapped |
f | Functor |
Functor |
kudoJS.assoc
Associates a value with the specified key in the object and returns a clone of the original object.
assoc(key: string, value: A, o: {[k:string]: A}): {[k:string]: A}
Param | Type | Description |
---|---|---|
key | string |
Key |
value | any |
Value to be assigned to the key in the object |
o | Object |
Object to which the value needs to be assigned against the key |
kudoJS.bimap
Maps both sides of the disjunction.
bimap(f1: (a: A) => C, f2: (b: B) => D, b: BiFunctor<A, B>): BiFunctor<C, D>
Param | Type | Description |
---|---|---|
f1 | function |
Function to be applied on the left side of the disjunction |
f2 | function |
Function to be applied on the right side of the disjunction |
b | BiFunctor |
BiFunctor |
kudoJS.chain
Chains together many computations of the same type.
chain(f: (a: A) => Monad<B>, m: Monad<A>): Monad<B>
Param | Type | Description |
---|---|---|
f | function |
Function that returns a Monad |
m | Monad |
Monad |
kudoJS.caseOf
Conditional behavior based on the structure of algebraic data types.
caseOf(o: Object, p: ADT): any
Param | Type | Description |
---|---|---|
o | Object |
An object with key as the ADT constructor name and value as the function expression |
p | PatternMatch |
An ADT that supports pattern matching |
Example:
import {caseOf, Maybe} from "fp-kudojs";
const j1 = Maybe.Just(1);
const k1 = caseOf({
Nothing: () => null,
Just: (v) => v+1
}, j1);
//k1 = 2;
kudoJS.liftAn
Combines n
separate wrapped values into one with a given function.
liftAn(f: (a: A ...an: A) => B, ar: Array<Apply<A>>): Apply<B>
Param | Type | Description |
---|---|---|
f | function |
Function with n arguments to be lifted |
ar | Apply |
Array of wrapped values (Apply<A> ). The values will be passed as arguments to the function f |
kudoJS.liftA2
Combines 2 separate wrapped values into one with a given function.
liftA2(f: (a1: A, a2: A) => B, ar1: Apply<A>, ar2: Apply<A>): Apply<B>
Param | Type | Description |
---|---|---|
f | function |
Function to be lifted |
ar1 | Apply |
Wrapped value (Apply) |
ar2 | Apply |
Wrapped value (Apply) |
kudoJS.liftA3
Combines 3 separate wrapped values into one with a given function.
liftA3(f: (a1: A, a2: A, a3: A) => B, ar1: Apply<A>, ar2: Apply<A>, ar3: Apply<A>): Apply<B>
Param | Type | Description |
---|---|---|
f | function |
Function to be lifted |
ar1 | Apply |
Wrapped value (Apply) |
ar2 | Apply |
Wrapped value (Apply) |
ar3 | Apply |
Wrapped value (Apply) |
kudoJS.liftA4
Combines 4 separate wrapped values into one with a given function.
liftA4(f: (a1: A, a2: A, a3: A, a4: A) => B, ar1: Apply<A>, ar2: Apply<A>, ar3: Apply<A>, ar4: Apply<A>): Apply<B>
Param | Type | Description |
---|---|---|
f | function |
Function to be lifted |
ar1 | Apply |
Wrapped value (Apply) |
ar2 | Apply |
Wrapped value (Apply) |
ar3 | Apply |
Wrapped value (Apply) |
ar4 | Apply |
Wrapped value (Apply) |
kudoJS.liftA5
Combines 5 separate wrapped values into one with a given function.
liftA5(f: (a1: A, a2: A, a3: A, a4: A, a5: A) => B, ar1: Apply<A>, ar2: Apply<A>, ar3: Apply<A>, ar4: Apply<A>, ar5: Apply<A>): Apply<B>
Param | Type | Description |
---|---|---|
f | function |
Function to be lifted |
ar1 | Apply |
Wrapped value (Apply) |
ar2 | Apply |
Wrapped value (Apply) |
ar3 | Apply |
Wrapped value (Apply) |
ar4 | Apply |
Wrapped value (Apply) |
ar5 | Apply |
Wrapped value (Apply) |
kudoJS.when
Returns a function that takes one argument and passes it to the given predicate function. If the predicate is satisfied, f
is run with the same argument. If the predicate is not satisfied, the argument is returned as is.
when(p: Function, f: Function): Function
Param | Type | Description |
---|---|---|
p | function |
Predicate function that returns true or false based on the argument passed |
f | function |
Function to be executed with the given argument when the predicate is satisfied |
kudoJS.prop
Returns a Maybe Just if a value exists for the given key; otherwise, returns a Nothing.
prop(key: string | number, o: { [k: string]: A; [k: number]: A }): Maybe<A>
| Param | Type | Description |
| ----- | ------------------- | ---------------- | --- |
| key | string | number
| Key |
| o | Object
| Key-Value Object |
kudoJS.pick
Returns a Maybe Just containing the object with only the specified keys if values exist for the given keys; otherwise, returns a Nothing.
pick(keys: Array<string>, o: { [k: string]: A }): Maybe<{[k: string]: A}>
Param | Type | Description |
---|---|---|
keys | Array |
Keys |
o | Object |
Key-Value Object |
kudoJS.eitherToMaybe
Converts an Either type to a Maybe type.
eitherToMaybe(e: Either<A, B>): Maybe<A>
Param | Type | Description |
---|---|---|
e | Either |
Either type |
kudoJS.maybeToEither
Converts a Maybe type to an Either type.
maybeToEither(m: Maybe<A>): Either<A>
Param | Type | Description |
---|---|---|
m | Maybe |
Maybe type |
TODO: Add more documentation and examples