Curry All Code
Feature Complete Curry Library
npm install omg-curry
const curry = require('omg-curry')
Convert a function into curry
function map (fn, default, list) {}const mapK = curry.fixed(map) const square = a => a**2
mapK(square)(0)([1, 2, 3, 4, null]) // [1, 4, 9, 16, 0]
// or reuse
const mapSquare = mapK(square)(0) mapSquare([1, 2, 3, 4, null]) // [1, 4, 9, 16, 0]
Create N-length Curry from an operator
const add = (a, b) => a+b const add4 = curry.op(add, 4)add4(1)(3)(5)(10) add4(1)(3,5)(10) add4(1,3,5,10) // 19
const addInfty = curry.op(add, Infinity)
// () to end addInfty(1)(1)(1,1)(1)(1)() // 6
const add4Lazy = curry.op(add, 4, true) // same as add4 buts evaluates at the end
const altSum = (a, b, i) => a + (-1)**i * b const altSum5 = curry.op(altSum, 5) // (a, b, c, d, e) => a - b + c - d + ealtSum5(1)(2)(3)(4,5) // 1 - 2 + 3 - 4 + 5 // 3
Convert Curry to Fixed Functions
const add4Fixed = curry.deCurry(add4Curry)
A Curry takes arguments one by one unlike functions which take all arguments at once.
// Function add(1, 2, 3) // 6// Curry add(1)(2)(3) // 6