The little algebra of callbacks.

Usage no npm install needed!

<script type="module">
  import callgebra from '';



The little algebra of callbacks.


This package exports functions for composing callbacks. You can read about the idea in my Medium post about composable callbacks.



$ npm install --save callgebra

On Node 12 and up, this module can be loaded directly with import or require. On Node versions below 12, require or the esm-loader can be used.

import {of, callback} from 'callgebra';
callback (console.log) (of (42));

Deno and Modern Browsers

You can load the EcmaScript module from various content delivery networks:

Old Browsers and Code Pens

There's a UMD file included in the NPM package, also available via jsDelivr:

This file adds flutureProject to the global scope, or use CommonJS/AMD when available.

const {of, callback} = require ('callgebra');
callback (console.log) (of (42));


type Callback a b = (b -> a) -> a

of :: a -⁠> Callback b a

Creates a callback for a given return value.

chain :: (a -⁠> Callback c b) -⁠> Callback c a -⁠> Callback c b

Sequence two callback-accepting functions.

map :: (a -⁠> b) -⁠> Callback c a -⁠> Callback c b

Modify the return value of a callback.

ap :: Callback c (a -⁠> b) -⁠> Callback c a -⁠> Callback c b

Apply the function returned by one callback to the value returned by another.

callback :: (a -⁠> b) -⁠> Callback b a -⁠> b

Given a function and a Callback, runs the Callback using the function.