masala - Curry-like secret sauce for option-object accepting function

  •        23

Curry-like secret sauce for option-object accepting functions and constructors

https://github.com/imbcmdth/masala

Tags
Implementation
License
Platform

   




Related Projects

partial.lenses - Partial lenses is a comprehensive, high-performance optics library for JavaScript

  •    Javascript

We ultimately want to present the user with a rich enough editor, with features such as undo-redo and validation, for manipulating the content represented by those JSON objects. The titles property is really just one tiny part of the data model, but, in this tutorial, we only look at it, because it is sufficient for introducing most of the basic ideas. Furthermore, when updating, inserting, and removing texts, we'd like the operations to treat the JSON as immutable and create new JSON objects with the changes rather than mutate existing JSON objects, because this makes it trivial to support features such as undo-redo and can also help to avoid bugs associated with mutable state.

tonal - A functional music theory library for Javascript

  •    Javascript

tonal is a small (20kb minified, 6kb gzipped) javascript modular music theory library. It provides functions to manipulate tonal elements of music (pitches, chords, scales, keys). It deals with abstractions (not actual music). It uses a functional programing style: all functions are pure, there is no data mutation, entities are represented by data structures instead of objects, and lot of functions accept partial application.

crocks - A collection of well known Algebraic Data Types for your utter enjoyment.

  •    Javascript

crocks is a collection of popular Algebraic Data Types (ADTs) that are all the rage in functional programming. You have heard of things like Maybe and Either and heck maybe even IO, that is what these are. The main goal of crocks is to curate and provide not only a common interface between each type (where possible of course), but also provide all of the helper functions needed to hit the ground running. There are many options to use crocks to suit the needs of your, projects. When used on the backend or in an environment where size is not a big concern, the entire lib can be brought in and the various elements can be either be plucked off of or referenced by the namespace.

es-papp - A proposal for adding partial application support to JavaScript.

  •    Javascript

This proposal introduces papp and pappRight – concise ways of using partial application for functions that require no immediate this parameter. It is backwards-compatible, and is immediately useful with most any JavaScript function today. Accepting papp into the ES standard will allow JS runtimes to implement a more performant version of bind that is dedicated to partial application.

FunctionalJ

  •    Java

FunctionalJ is a library which makes it easy to use functional programming patterns in Java, such as representing functions as objects, partial function application, higher-order functions, mapping, folding, and more.


bem-constructor - A Sass library for building immutable and namespaced BEM-style CSS objects

  •    CSS

BEM Constructor is a Sass library for building immutable and namespaced BEM-style CSS objects. By enforcing a consistent and programatic way of defining objects (blocks, elements and modifiers) it ensures a more structured, robust and secure object codebase that is easy to understand and maintain. Objects defined using the constructor are impossible to modify and reassign by mistake or omission.

Functional Programming

  •    CSharp

This project brings some features from functional languages, like pattern matching, collection unfold or partial function application to C# and extends the possibilities of functional programming in C#. It's available as C# library.

functional-programming-jargon - Jargon from the functional programming world in simple terms!

  •    Javascript

Functional programming (FP) provides many advantages, and its popularity has been increasing as a result. However, each programming paradigm comes with its own unique jargon and FP is no exception. By providing a glossary, we hope to make learning FP easier. The number of arguments a function takes. From words like unary, binary, ternary, etc. This word has the distinction of being composed of two suffixes, "-ary" and "-ity." Addition, for example, takes two arguments, and so it is defined as a binary function or a function with an arity of two. Such a function may sometimes be called "dyadic" by people who prefer Greek roots to Latin. Likewise, a function that takes a variable number of arguments is called "variadic," whereas a binary function must be given two and only two arguments, currying and partial application notwithstanding (see below).

UIFontComplete - Font management (System & Custom) for iOS and tvOS

  •    Swift

This library currently provides two different options for creating UIFont objects. The first is calling the font name off of the provided Font enumeration and then calling of(size:) to provide the desired size. The other UIFont creation method offered by this library is similar to the normal UIFont constructor except that instead of providing a String of the desired font, a case of the Font enum is provided instead.

quicklens - Modify deeply nested case class fields

  •    Scala

.each can only be used inside a modify and "unwraps" the container (currently supports Lists, Options and Mapss - only values are unwrapped for maps). You can add support for your own containers by providing an implicit QuicklensFunctor[C] with the appropriate C type parameter. Similarly to .each, you can use .eachWhere(p) where p is a predicate to modify only the elements which satisfy the condition. All other elements remain unchanged.

fastmod - A fast partial replacement for the codemod tool

  •    Rust

fastmod is a fast partial replacement for codemod. Like codemod, it is a tool to assist you with large-scale codebase refactors, and it supports most of codemod's options. fastmod's major philosophical difference from codemod is that it is focused on improving the use case "I want to use interactive mode to make sure my regex is correct, and then I want to apply the regex everywhere". For this use case, it offers much better performance than codemod. Accordingly, fastmod does not support codemod's --start, --end, or --count options, nor does it support anything like codemod's Python API. For each match of the regex, you'll be shown a colored diff and asked if you want to accept the change (the replacement of the <font> tag with a <span> tag), reject it, or edit the line in question in your $EDITOR of choice.

moize - The consistently-fast, complete memoization solution for JS

  •    Javascript

moize is a consistently blazing fast memoization library for JavaScript. It handles multiple parameters (including default values) without any additional configuration, and offers a large number of options to satisfy any number of potential use-cases. All parameter types are supported, including circular objects, functions, etc. There are also a number of shortcut methods to memoize for unique use-cases.

parameter - A parameter verify tools.

  •    Javascript

A parameter verify tools. Note: when options.convert enabled, all built-in rules check for primitive input param and convert it to rule's default convertType(which defined below), you can also enable this feature for specific rule by convertType options in each rule definition.

inadyn-mt - dynamic DNS client

  •    C

inadyn-mt - inadyn, inadyn-advanced fork. A multi-OS (*NIX, BSD, NT,

jquery-boilerplate - A jump-start for jQuery plugins development

  •    Javascript

So, you've tried your hand at writing jQuery plugins and you're comfortable putting together something that probably works. Awesome! Thing is, you think there might be better ways you could be writing them - you've seen them done a number of different ways in the wild, but aren't really sure what the differences between these patterns are or how to get started with them.This project won't seek to provide a perfect solution to every possible pattern, but will attempt to cover a simple template for beginners and above. By using a basic defaults object, simple constructor for assigning the element to work with and extending options with defaults and a lightweight wrapper around the constructor to avoid issues with multiple instantiations.

fkit - A functional programming toolkit for JavaScript.

  •    Javascript

FKit (pronounced eff-kit) is a functional programming toolkit for JavaScript. It provides many functions for solving common problems with functions, objects, arrays, and strings. It aims to provide reusable building blocks while maintaining a laser focus on everyday utility. Why reinvent the wheel? FKit provides many functions for solving everyday problems to do with functions, arrays, objects, and strings.

pointfree-fantasy - Point free wrappers for fantasy land

  •    Javascript

Point-free wrappers for fantasy-land. Functions are curried using lodash's curry function, and receive their data last. Gives us aliases with our familar haskell names as well. pointfree-fantasy implements a point-free version of the fantasy-land spec, in order to promote a less cluttered, more Haskell-like approach to algebraic programming. We'll justify this approach using Functor as an example.

verve-lang - A functional language for the working hacker

  •    Haskell

Verve is a functional language for the working hacker. It was designed with users that come from other language paradigms in mind (primarily object-oriented). It aims to ease the path into the functional programming world by offering a more familiar take on functional idioms, like you'd find in most modern languages. Verve has lists, classes, objects, lambdas, interfaces and more, and it tries to give them all a beginner-friendly API, but all the concepts found here have can be expressed in purely functional languages.

Streams - Lazy evaluation in C++ - http://jscheiny.github.io/Streams/

  •    C++

Streams is a C++ library that provides lazy evaluation and functional-style transformations on the data, to ease the use of C++ standard library containers and algorithms. Streams support many common functional operations such as map, filter, and reduce, as well as various other useful operations such as various set operations (union, intersection, difference), partial sum, and adjacent difference, as well as many others. To use, simply #include "Stream.h", and compile using a C++14 compatible compiler. All streams classes/functions can be found in the stream namespace.






We have large collection of open source products. Follow the tags from Tag Cloud >>


Open source products are scattered around the web. Please provide information about the open source projects you own / you use. Add Projects.