g-functions

0.3.0 • Public • Published

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.

Package Sidebar

Install

npm i g-functions

Weekly Downloads

5

Version

0.3.0

License

Apache-2.0

Last publish

Collaborators

  • nodeguy