0.0.1 • Published 6 years ago
@earthtone/pffp-helpers v0.0.1
Point-free Functional Programming Helpers
A collection of curried point-free implementations for common list operations.
Usage
All functions take a function as the first argument, and data as its second. Since all functions are curried, you can provide arguments one at a time, and receive functions in return until all arguments are provided.
import { map, filter } from '@earthtone/pffp-helpers'
const isString = s => typeof s === 'string'
const uppercase = s => s.toUpperCase()
const onlyStrings = filter(isString)
const uppercaseAll = map(uppercase)
const harmonia = {
  year: 1970,
  guitar: 'rother',
  keys: 'roedelius',
  rhythms: 'moebius'
}
console.log(uppercaseAll(onlyStrings(harmonia))) // -> { guitar: 'ROTHER', keys: 'ROEDELIUS', rhythms: 'MOEBIUS' }map, filter, and find all operate on Arrays internally, so all callback functions are passed only the values of an Object. If you have a more advanced application that requires your callback to be aware of an Objects keys, you can use reduce.
import { isObject } from '@earthtone/tiny-predicates'
import { map, reduce } from '@earthtone/pffp-helpers'
const freeJazz = {
  year: 1961,
  alto: 'ornette coleman',
  pocket_trumpet: 'don cherry',
  bass_1: 'scott lafaro',
  drums_1: 'billy higgins',
  bass_clarinet: 'eric dolphy',
  trumpet: 'freddie hubbard',
  bass_2: 'charlie haden',
  drums_2: 'ed blackwell'
}
const onlyTrumpets = reduce((a, [key, val]) => {
  if (/trumpet/.test(key) && isObject(a)) {
    a[key] = val
    return a
  } else {
    return a
  }
}, {})
const getLastname = map(name => name.split(' ')[1])
console.log(getLastName(onlyTrumpets(freeJazz))) // -> { pocket_trumpet: 'cherry', trumpet: 'hubbard' }Functions
- map: point-free implementation of- Array.prototype.mapthat works on- Arrayand- Objectprimitives
- reduce: point-free implementation of- Array.prototype.reducethat works on- Arrayand- Objectprimitives
- filter: point-free implementation of- Array.prototype.filterthat works on- Arrayand- Objectprimitives
- find: point-free implementation of- Array.prototype.findthat works on- Arrayand- Objectprimitives
- toPairs: point-free implementation of- Object.entriesfor turning- Objectprimitives into iterables
- fromPairs: point-free function for transforming a 2D key/value- Arrayinto an- Objectprimitive
0.0.1
6 years ago