squishy-pants

    0.0.5 • Public • Published

    squishy-pants

    Semi-serious functional programming library.

    Build status

    Build Status

    Documentation

    Alpha documentation is found here

    Examples

    Attempt

    squishy.Attempt.Success(1).map(
      function(a) {
        return a + 1;
      }
    ).toOption().getOrElse(
      function() {
        return 0;
      }
    );
    // Outputs: 2

    Option

    squishy.Option.Some(1).map(
      function(a) {
        return a + 1;
      }
    ).getOrElse(
      function() {
        return 0;
      }
    );
    // Outputs: 2

    Promise

    squishy.Promise.of(1).map(
      function(a) {
        return a + 1;
      }
    ).fork(console.log);
    // Outputs: 2

    Stream

    squishy.Stream.fromArray([1, 2, 3, 4]).map(
      function(a) {
        return a + 1;
      }
    ).zipWithIndex().fork(console.log);
    // Outputs: Tuple2(2, 0), Tuple2(3, 1), Tuple2(4, 2), Tuple2(5, 3)

    More:

    Building

    Install the development dependencies with npm:

    npm install
    

    Run the tests with npm:

    npm test
    

    Run the tests with grunt:

    grunt default
    

    Optionally you can also run the tests parallelized with nodeunit because we use QuickCheck for testing it can take some time especially if the goal of QuickCheck is set at a high value.

    Set the number of tasks to run parallel, the --numOfParallel is optional, setting no value will set it to run 2 tasks in parallel.

    Obviously the number of tasks to be run in parallel depends on the type of CPU and the number of cores available.

    grunt par --numOfParallel=4
    

    Alternatives

    If you're looking for a serious functional programming library one that derives a lot from Haskell and Category Theory then consider looking into bilby.js. A lot of the ideas in bilby.js are also found in squishy-pants, but differ in some implementation types.

    If a tree falls in the woods, does it make a sound?

    If a pure function mutates some local data in order to produce an immutable return value, is that ok?

    Rich Hickey at http://clojure.org/transients

    Squishy-pants assumes that it is ok to mutate local data as long as that local data is not exposed and if the result is immutable.

    There is also lemonad which is in the similar vein to bibly.js and squishy-pants, with the aid of it's very good companion book Functional Javascript.

    Keywords

    none

    Install

    npm i squishy-pants

    DownloadsWeekly Downloads

    0

    Version

    0.0.5

    License

    MIT

    Last publish

    Collaborators

    • stickupkid