g-functions
v0.3.0
Published
a non-opinionated library of generic functions for functional programming in JavaScript
Downloads
1,005
Readme
G.Functions
a non-opinionated library of generic functions for functional programming in JavaScript
Installation
$ yarn add g-functions
Usage in Node.js
'use strict'
const assert = require('assert')
const G = require('g-functions')
it('maps and reduces', function () {
assert.equal(
G.reduce(G.concat, '', G.reverse(G.map(
G.toUpperCase,
G.split(' ', undefined, 'Why are you talking so loud and fast?')
))),
'WHYAREYOUTALKINGSOLOUDANDFAST?'
)
})
API
See the documentation for the list of functions.
Benefits
- non-opinionated
- point-free
- curried
Non-Opinionated
The library contains 123 functions. You won't need to refer to the documentation often, nor will the readers of your code, because the semantics are the same as for the methods of JavaScript's standard object types. This improves readability.
Point-Free
The function signatures have been modified to support point-free programming by moving the method object to the last argument.
For example, suppose you want to convert an array of strings to upper case.
Without G.Functions
array.map(string => string.toUpperCase())
With G.Functions
G.map(G.toUpperCase, array)
All Functions are Curried
All of the functions are curried so you could write this:
const arrayToUpperCase = G.map(G.toUpperCase)
arrayToUpperCase(array)
To make this work, all optional arguments are now required.
Without G.Functions
[1, 2, 3].slice()
With G.Functions
G.slice(0, undefined, [1, 2, 3])
Similar Projects
Copyright
Copyright 2017 David Braun
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
these files except in compliance with the License. You may obtain a copy of the
License at http://www.apache.org/licenses/LICENSE-2.0
. Unless required by
applicable law or agreed to in writing, software distributed under the License
is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the specific language
governing permissions and limitations under the License.