0.13.0 • Published 8 years ago

fp-standard v0.13.0

Weekly downloads
-
License
ISC
Repository
-
Last release
8 years ago

fp-standard

Build Status

The missing standard library for JavaScript. This lightweight library is meant to fill the gap between Ramda (functional) and Lodash (performance) while providing you with the tools you need to write sane JavaScript. All functions are auto-curried and expect data as the last argument to encourage composition.

Usage

npm i --save fp-standard

After installing the dependency, there are a few ways to use this library:

ES6 Module

import * as f from 'fp-standard'

const name = f.prop('name')
name({ name: 'Bob' }) // => Bob

Or, if you have full control over your code base and don't want to continually import/prefix all of the functions, you can install the library to a context.

Installer

import install from 'fp-standard/installer'

// Node/Webpack/etc:
install(global)

// Directly in the browser:
install(window)

// Now all of the functions are available on the scope you installed it to:
prop('name', { name: 'Bob' }) // => Bob

fp-standard vs. Ramda vs. Lodash

Categoryfp-standardRamdaLodashLodash-FP
Minified (kb)7.941.170.181.2
100% ImmutableYesYesNoYes
Auto-CurryYesYesNoYes
Object EqualityValueValueReferenceReference
IE 9+YesYesYesYes

Benchmarks

Improved formatting to come soon!

[
  // Reduce
  // -------------------------
  [
    "fp-standard | 1,007,237  ops/sec ±1.84%   (82 runs sampled)",
    "ramda       | 16,457     ops/sec ±2.01%   (88 runs sampled)",
    "lodash      | 81,662     ops/sec ±1.56%   (82 runs sampled)",
    "lodash/fp   | 339,761    ops/sec ±1.47%   (79 runs sampled)"
  ],
  // Map
  // -------------------------
  [
    "fp-standard | 586,940    ops/sec ±2.18%   (83 runs sampled)",
    "ramda       | 447,594    ops/sec ±2.03%   (88 runs sampled)",
    "lodash      | 70,825     ops/sec ±2.01%   (81 runs sampled)",
    "lodash/fp   | 380,222    ops/sec ±1.58%   (83 runs sampled)"
  ],
  // Filter
  // -------------------------
  [
    "fp-standard | 317,629    ops/sec ±0.71%   (95 runs sampled)",
    "ramda       | 326,238    ops/sec ±1.12%   (89 runs sampled)",
    "lodash      | 72,329     ops/sec ±0.86%   (93 runs sampled)",
    "lodash/fp   | 266,918    ops/sec ±1.97%   (87 runs sampled)"
  ],
  // Reject
  // -------------------------
  [
    "fp-standard | 324,369    ops/sec ±1.35%   (78 runs sampled)",
    "ramda       | 45,971     ops/sec ±1.49%   (80 runs sampled)",
    "lodash      | 38,072     ops/sec ±2.10%   (84 runs sampled)",
    "lodash/fp   | 34,872     ops/sec ±1.49%   (81 runs sampled)"
  ]
]