Have ideas to improve npm?Join in the discussion! »

    trampa

    1.0.1 • Public • Published

    trampa

    Trampolines, to emulate tail-call recursion.

    Build Status NPM version Dependency Status devDependency Status Code Climate

    Synopsis

    var trampa = require("trampa");
     
    function loop(n, acc) {
      return n === 0 ? trampa.wrap(acc) : trampa.lazy(function () {
        return loop(- 1, acc + 1);
      });
    }
     
    loop(123456789, 0).run(); // doesn't cause stack overflow!

    API

    • isTrampoline(t: obj): bool — Returns, whether t is a trampolined object.

    • wrap(t: Trampoline a | a): Trampoline a — Wrap t into trampoline, if it's not already one.

    • lazy(t : () -> Trampoline a | a) — Wrap lazy computation into trampoline. Useful when constructing computations.

    • Trampoline.jump(f : a -> b | Trampoline b)map or flatmap trampoline computation. Like .then for promises.

    • Trampoline.run(): a — Run the trampoline synchronously resulting a value.

    Changelog

    • 1.0.02015-07-14 — Initial release

    Install

    npm i trampa

    DownloadsWeekly Downloads

    86,239

    Version

    1.0.1

    License

    MIT

    Unpacked Size

    32.2 kB

    Total Files

    10

    Last publish

    Collaborators

    • avatar