All Projects → klaussinani → Arare

klaussinani / Arare

Licence: mit
Lightweight curried functional programming library

Programming Languages

javascript
184084 projects - #8 most used programming language
es6
455 projects

Projects that are alternatives of or similar to Arare

Observable
The easiest way to observe values in Swift.
Stars: ✭ 346 (+172.44%)
Mutual labels:  programming, library, functional
Yalinqo
Yet Another LINQ to Objects for PHP [Simplified BSD]
Stars: ✭ 400 (+214.96%)
Mutual labels:  library, functional
Structopt
Parse command line arguments by defining a struct
Stars: ✭ 323 (+154.33%)
Mutual labels:  library, lightweight
Fkit
A functional programming toolkit for JavaScript.
Stars: ✭ 588 (+362.99%)
Mutual labels:  library, functional
Simple Php Router
Simple, fast and yet powerful PHP router that is easy to get integrated and in any project. Heavily inspired by the way Laravel handles routing, with both simplicity and expand-ability in mind.
Stars: ✭ 279 (+119.69%)
Mutual labels:  library, lightweight
Rex
Your RegEx companion.
Stars: ✭ 283 (+122.83%)
Mutual labels:  library, functional
Fbg
Lightweight C 2D graphics API agnostic library with parallelism support
Stars: ✭ 349 (+174.8%)
Mutual labels:  library, lightweight
Humblelogging
HumbleLogging is a lightweight C++ logging framework. It aims to be extendible, easy to understand and as fast as possible.
Stars: ✭ 15 (-88.19%)
Mutual labels:  library, lightweight
Librg
🚀 Making multi-player gamedev simpler since 2017
Stars: ✭ 813 (+540.16%)
Mutual labels:  library, lightweight
Remeda
A utility library for JavaScript and TypeScript.
Stars: ✭ 774 (+509.45%)
Mutual labels:  programming, functional
Swiftz-Validation
A data structure for validations. It implements the applicative functor interface
Stars: ✭ 15 (-88.19%)
Mutual labels:  functional, programming
Coq Ext Lib
A library of Coq definitions, theorems, and tactics. [[email protected],@liyishuai]
Stars: ✭ 102 (-19.69%)
Mutual labels:  programming, library
mimsa
small programming language. pls be gentle.
Stars: ✭ 23 (-81.89%)
Mutual labels:  functional, programming
Typed
The TypeScript Standard Library
Stars: ✭ 124 (-2.36%)
Mutual labels:  library, functional
advxml
A lightweight, simple and functional library DSL to work with XML in Scala with Cats
Stars: ✭ 54 (-57.48%)
Mutual labels:  lightweight, functional
polyrpc
PolyRPC, A multi-tier functional programming language
Stars: ✭ 16 (-87.4%)
Mutual labels:  functional, programming
Libonnx
A lightweight, portable pure C99 onnx inference engine for embedded devices with hardware acceleration support.
Stars: ✭ 217 (+70.87%)
Mutual labels:  library, lightweight
Permissionsswiftui
A SwiftUI package to beautifully display and handle permissions.
Stars: ✭ 220 (+73.23%)
Mutual labels:  programming, library
Handright
A lightweight Python library for simulating Chinese handwriting
Stars: ✭ 634 (+399.21%)
Mutual labels:  library, lightweight
Siler
⚡ Flat-files and plain-old PHP functions rockin'on as a set of general purpose high-level abstractions.
Stars: ✭ 1,056 (+731.5%)
Mutual labels:  library, functional

Arare

Lightweight auto-curried functional programming library

Header

Build Status

Description

Lightweight and without any external dependencies arare enables you to write tacit, point-free, declarative & clean code while avoiding side-effects and mutations. Internally the library itself, comprised of over 200 functions, follows the functional programming paradigm and is materialized using fundamental functional qualities such as currying, recursion, tail calls, high-order functions, referential transparency, side-effects elimination and function composition. Additionally, arare utilizes automatic variadic currying for its functions, thus allowing the user to write more flexible, practical & minimal code, compared to regular strict currying. Finally, the library comes with a build-in interactive REPL environment, useful for directly inspecting and experimenting with all available modules without leaving the console.

Please note that project is in its early days and that it is currently under active development.

Come over to Gitter or Twitter to share your thoughts on the project.

Highlights

  • Over 200 available functions
  • Build-in interactive REPL
  • Point-free & tacit
  • High-order & pure functions
  • Automatic variadic currying
  • Declarative & minimal syntax
  • Side-effects & mutations free
  • Lightweight with zero dependencies
  • Build with functional code
  • Actively developed

Contents

Install

npm install arare

Usage

Import arare and start using directly any of the available modules.

const A = require('arare')

A.map(A.add(10), A.range(1, 4, 1))
//=> [11, 12, 13]

Alternatively, select and import only the modules that you need.

const {add, map, range} = require('arare')

map(add(10), range(1, 4, 1))
//=> [11, 12, 13]

REPL

Initially, install arare globally in order to be able to access the REPL environment.

npm install -g arare

To launch the REPL simply type arare from anywhere in your console.

arare # launch REPL
REPL

API

The following lists contain all available functions grouped into categories according to the type of their respective returning value.

An alphabetically ordered list of all available functions can be found here.

Any

Functions whose return value varies according to their input.

Array

Functions whose return value is an array.

Boolean

Functions whose return value is a boolean.

Function

Functions whose return value is a function.

Number

Functions whose return value is a number.

String

Functions whose return value is a string.

Object

Functions whose return value is a plain object.

Undefined

Functions whose return value is undefined.

Development

  • Fork the repository and clone it to your machine
  • Navigate to your local fork: cd arare
  • Install the project dependencies: npm install or yarn install
  • Lint the code and run the tests: npm test or yarn test

Team

License

MIT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].