curry
Currying and partial application utilities.
Currying
Provides features related to currying.
currying is the technique of translating the evaluation of a function that takes multiple arguments into evaluating a sequence of functions, each with a single argument.
curry
curry
returns curried function.
import { curry } from "https://deno.land/x/curry@$VERSION/mod.ts";
declare const fn: (a: string, b: number, c: boolean) => void;
const curriedFn = curry(fn);
curriedFn("")(0)(false);
curriedFn("", 0)(false);
curriedFn("", 0, false);
Partial application
Partial application refers to the process of fixing a number of arguments to a function, producing another function of smaller arity.
It has the following characteristics:
- The
length
property is not strict. - The
name
property isbound
.
papplyLeft
Create a bound function with arguments fixed from the left.
import { papplyLeft } from "https://deno.land/x/curry@$VERSION/mod.ts";
declare const fn: (a: string, b: number, c: boolean) => void;
const ternary = papplyLeft(fn);
const binary = papplyLeft(fn, "");
const unary = papplyLeft(fn, "", 0);
const nullary = papplyLeft(fn, "", 0, false);
papplyRight
Create a bound function with arguments fixed from the right
import { papplyRight } from "https://deno.land/x/curry@$VERSION/mod.ts";
declare const fn: (a: string, b: number, c: boolean) => void;
const binary = papplyRight(fn, false);
const unary = papplyRight(fn, false, 0);
const nullary = papplyRight(fn, false, 0, "");
papplyRest
Create a bound function with fixed arguments except the first one.
import { papplyRest } from "https://deno.land/x/curry@$VERSION/mod.ts";
declare const fn: (a: string, b: number, c: boolean) => void;
const binary = papplyRest(fn, 0);
const unary = papplyRest(fn, 0, false);
API
See deno doc for all APIs.
License
Copyright © 2023-present Tomoki Miyauchi.
Released under the MIT license