# Omg-Curry – A JavaScript Comprehensive Curry Lib

Feature Complete Curry Library

## Features

• Fixed Functions ⟶ Curry
• Operators ⟶ Curry
• Curry ⟶ Fixed Functions
• Infinite Currying
• Lazy Curry

## Installation

`npm install omg-curry`

## Usage

`const curry = require('omg-curry')`

### Fixed Functions

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]```

### Operators

Create N-length Curry from an operator

```const add = (a, b) => a+b

// 19

// () to end
// 6

// 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 + e

altSum5(1)(2)(3)(4,5)
// 1 - 2 + 3 - 4 + 5
// 3```

### DeCurry

Convert Curry to Fixed Functions

`const add4Fixed = curry.deCurry(add4Curry)`

## WTF is Curry?

A Curry takes arguments one by one unlike functions which takes all arguments at once.

```// Function