Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 1,000,000+ packages pre-installed, including naan with all npm packages installed. Try it out:

var naan = require("naan")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

naan v1.3.11

async and flexible currying for js


Naan.js is a library that provides a set of useful functions for creating partially applied functions. It was originally created to work with node.js but also works in the browser, so long as you have also included the async module.

The best way to understand what naan does is to see it in action:

Quick Examples

var statFoo = naan.curry(fs.stat, 'foo.txt');
statFoo(function(err, data) {
  // stat result from foo

var renameToFoo = naan.positionCurry(fs.rename, fs.rename, 'foo.txt', 1);
renameToFoo('bar.txt', function(err) {
  // 'bar.txt' has been renamed to 'foo.txt'

var readFooContents = naan.curry(fs.readFile, 'foo.txt');
var writeFooContents = naan.cook(fs.writeFile, readFooContents, 1);
writeFooContents('bar.txt', function(err) {
  // The contents of 'foo.txt' has been written to 'bar.txt'

// Naan works great with Async!
var readers = ['foo.txt', 'bar.txt', 'bob.txt'].map(function(file) {
  return naan.curry(fs.readFile)
async.parallel(readers, function(err, contents) {
  // contents == contents of foo.txt, bar.txt & bob.txt

These are a few of the basic uses of Naan. Each of the available functions are listed below.


For node, just use npm:

npm install naan

In the Browser

Tested in IE9+. It currently uses some ES5 stuff which doesn't work in IE8, but this will be fixed shortly.

For info on how to test in the browser, see testing.

<script src="async.min.js"></script>
<script src="naan.min.js"></script>
  var createDiv = naan.curry(document.createElement, 'div');

Development: naan.js - 9.5kb Uncompressed

Production: naan.min.js - 3.0kb Minified




Return control

Group Curries

RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free