1.2.2 • Published 6 years ago

fpb v1.2.2

Weekly downloads
4
License
ISC
Repository
github
Last release
6 years ago

fpb

npm version Shippable Codecov private

fpb.js is a JavaScript library providing functions for your Functional programming

Getting Started

install

Install via npm

npm install fpb

Use && Feature

- 1、Function first

funtion is the first argument 

e.g

   fpb.filter(x=> x<3, [2,3,4])  //==> [2]
   fpb.map(x=> x*2, [2,3,4])  //==> [4, 6, 8]

- 2、Everything is auto curried

fpb.js providing A lot of functions, and Most of them are auto curried , except 'chain', 'reduce', 'reduceRight', 'curry'

e.g

   fpb.filter(x=> x<3)( [2,3,4])  //==> [2]
   fpb.map(x=> x*2)( [2,3,4])  //==> [4, 6, 8]
   fpb.add(1, 2) //=> 3
   fpb.add(1)(2) //=> 3
   
   let add = (x, y, z) = x + y + z
   let addN = fpb.curry(add)
   addN(1)(2)(3) //==> 6
   addN()(1)(2)()(3) //==> 6
   addN(1, 2)(3) // ==> 6

- 3、compose

you can compose funtions easily. see a huge example

e.g

 const every = fpb.every,
    values = fpb.values,
    add = fpb.add,
    filter = fpb.filter,
    compose = fpb.compose,
    let filterBigThan2 = filter(x => x > 2)
    let add10 = add(10)
    sum = fpb.sum
        let obj = {
            a: 1,
            b: 2,
            c: 3,
            d: 4
        }
  let composeFn = compose(add10, sum, filterBigThan2, values)
  composeFn(obj) //==> 17

- 4、chainAble (lazy chain)

the functions in fpb.js also support chain calls, you can also code in OOP style if you like,and all the functions is lazy call, they would not execute until the force functions executed e.g

 const stooges1 = [{ name: 'curly', age: 25 }, { name: 'moe', age: 21 }, { name: 'larry', age: 23 }];
 const a1 = fpb.chain(stooges1)
    .map(function (stooge) { return stooge.name + ' is ' + stooge.age; })
    .size()
    .log()
    .force() //=> 3

License

1.2.2

6 years ago

1.2.1

6 years ago

1.2.0

6 years ago

1.1.5

6 years ago

1.1.4

6 years ago

1.1.3

6 years ago

1.1.2

6 years ago

1.1.1

6 years ago

1.0.2

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago