tinyfun
Experimental ES6 based functional library.
Related blog post: https://medium.com/@DveMac/using-es6-to-create-a-tiny-functional-library-fe8e4667045c
Installation
npm install --save tinyfun# OR yarn add tinyfun
Building & testing
npm testnpm run build
Usage Example
import { compose, filter, prop, sort, comparator, equals, length } from 'tinyfun'
const getName = prop('name')
const byNameDesc = comparator((a, b) => getName(a) > getName(b))
const nameLenIs3 = compose(equals(3), length, getName)
const name = getName({ name: 'dog' })
const sorted = sort(byNameDesc)([ /* some things */ ])
API
// a → b → Boolean a === b // Ord a => a → a → Boolean a1 < a2 // Ord a => a → a → Boolean a1 <= a2 // Ord a => a → a → Boolean a1 < a2 // Ord a => a → a → Boolean a1 <= a2 // a → a a // s => {s: a} → a | Undefined os // [a] → Number aslength // ((y → z), (x → y), …, (o → p), ((a, b, …, n) → o)) → ((a, b, …, n) → z) WTF! fslength ? : f // Number → Number → [a] → [a] _slice // [a] → a | Undefined// String → String as0 // [a] → [a]init = // [a] → a | Undefinedlast = // [a] → [a]tail = // {k: v} → [k]keys = Objectkeys // a → [a] → Boolean _includes // [a] → [a] → [a] _concat // (a,a → Number) → [a] → [a] _sort // Functor f => (a → b) → f a → f b _map // Filterable f => (a → Boolean) → f a → f a _filter // (a, b → Boolean) → (a, b → Number) ? 1 : ? -1 : 0 // ((a, b) → a) → a → [b] → a _reduce // {k: v} → [v] // [a] → [b]flatten = // (a → Boolean) → [a] → Boolean // (a → Boolean) → [a] → a | undefined // [a] → [a] ...as // [*] → [*] → [*]union = // [*] → [*] → [*] zs = ys && // [*] → [*] → [*] zs = ys && // Chain m => (a → m b) → m a → m b // also known as flatMap // [a] → [b] → [[a,b]] // (String | RegExp) → String → [String] _split // [String] → {k: v} → v | Undefined ss // (a → String) → [a] → {String: [a]} // RegExp|String → String → String → String _replace // [k] → {k: v} → {k: v} ks