91 dépôts
Utilities and abstractions for functional programming patterns.
Explore 91 awesome GitHub repositories matching part of an awesome list · Functional Programming. Refine with filters or upvote what's useful.
Ce projet est un répertoire maintenu par la communauté qui sert d'index complet d'outils logiciels, de frameworks et de ressources éducatives. Il fonctionne comme une base de connaissances open source, organisant divers domaines d'ingénierie et ressources techniques dans une taxonomie structurée pour aider les développeurs à découvrir du contenu de haute qualité. Le répertoire se distingue par un modèle de revue par les pairs décentralisé, où des contributeurs indépendants organisent, vérifient et mettent à jour les entrées pour garantir leur exactitude et leur pertinence. Toutes les informations sont stockées dans un format markdown en fichiers plats, contrôlé par version, ce qui garantit l'indépendance de la plateforme, la transparence et l'auditabilité de l'ensemble de la collection. Le projet couvre une vaste surface de capacités, allant de la découverte de ressources techniques à l'avancement professionnel et à la gestion des connaissances en développement logiciel. Il donne accès à des parcours d'apprentissage structurés, des outils d'infrastructure et de sécurité, des utilitaires de gestion de données et des ressources spécialisées pour des domaines allant de la santé aux humanités numériques. Le dépôt est maintenu en tant que collection publique contrôlée par version, permettant un accès programmatique et des mises à jour pilotées par la communauté pour ses données structurées.
Deep dives into functional programming techniques and architectural benefits.
Lodash is a JavaScript utility library and data manipulation toolkit. It provides a collection of modular functions for transforming, filtering, and validating arrays, objects, strings, and numbers. The project functions as a functional programming toolkit, offering capabilities for function composition, currying, and lazy evaluation. It includes mechanisms for execution control, such as debouncing and throttling, to manage the timing and frequency of function invocations. The library covers a broad surface of data operations, including deep cloning and merging of complex nested structures,
High-performance utility library.
This is a persistent data structure library for JavaScript that provides collections which prevent the direct mutation of objects and arrays. It serves as an immutable state management tool and functional programming utility, ensuring that data remains unchanged after creation to simplify change detection and state tracking. The library enables the maintenance of application state by producing new versions of data structures during updates. It focuses on efficient data comparison by checking actual content instead of memory references and supports a functional programming workflow to prevent
Immutable data collections.
Immutable.js is a library of persistent data structures and a functional state management toolkit. It provides a collection of immutable objects and arrays that prevent direct mutation to ensure predictable state management in JavaScript applications. The library utilizes structural sharing to efficiently create new versions of data without full copying and implements lazy sequence processing to chain data transformations that execute only when values are requested. It also supports batch mutation processing, allowing multiple changes to be applied to a temporary mutable copy before returning
Library for creating and managing immutable data structures.
RxJS is a library for reactive programming that provides a framework for composing asynchronous and event-based programs. It utilizes observable sequences to model data flows, allowing developers to manage complex sequences of events through a declarative programming interface. The library implements the observer pattern to facilitate decoupled communication between data producers and subscribers. By employing a lazy execution model, streams remain dormant until a consumer explicitly subscribes, at which point data production is triggered. This approach enables the construction of predictable
Functional reactive library for data streams.
Immer is an immutable state management library used to create new versions of data structures. It allows the production of new state by mutating a temporary draft instead of using manual object spreading. The project implements structural sharing to reuse unchanged parts of a data tree between versions, which reduces memory consumption. It also functions as a JSON patch generator to calculate and output the differences between two state versions. To ensure data integrity, the library includes a state mutation protector that freezes data structures to detect and prevent accidental modificatio
Functional state management with immutability.
Underscore is a JavaScript utility library providing a suite of functional programming and data manipulation helpers. It serves as a framework for transforming data collections, composing functions, managing objects, and performing precise data type validation without modifying core language prototypes. The project includes a functional programming toolkit designed to control function execution timing and behavior through techniques such as debouncing, throttling, and partial application. It also provides a dedicated object manipulation utility for cloning, merging, picking, and omitting prop
General-purpose utility library.
Ramda is a functional JavaScript standard library and toolset for immutable data transformation and composition. It provides a comprehensive suite of pure utility functions designed to enable declarative data processing pipelines. The library is distinguished by its use of automatic function currying and a data-last argument order. These design patterns allow multi-argument functions to be partially applied, simplifying the construction of processing chains where data is passed through a sequence of operations. The toolkit covers broad data manipulation capabilities, including list processin
Functional utility library focused on composition.
Reason is a strongly typed functional language and multi-target compiler designed to produce either JavaScript for web environments or native machine code for operating systems. It serves as an OCaml-compatible language that shares an abstract syntax tree with OCaml, providing a practical syntax for the OCaml ecosystem. The project functions as a type-safe frontend language, incorporating JSX support to build user interfaces through structural elements that translate into type-safe function calls. It enables deep integration with the JavaScript ecosystem, allowing the use of existing librarie
Implements a full functional programming paradigm featuring immutability, pattern matching, and higher-order functions.
ReactiveUI is a .NET MVVM framework and functional reactive programming library designed to decouple application state from the user interface. It functions as a reactive state management tool that uses observable streams to handle mutable data and asynchronous event-driven logic. The framework provides a cross-platform UI toolkit that abstracts business logic from platform-specific views. This enables the creation of consistent user interfaces across multiple .NET platforms by utilizing platform-agnostic abstractions. The system focuses on application state management and decoupled UI testi
MVVM framework integrated with reactive extensions.
Rx.NET is a reactive programming framework and library for the .NET ecosystem used to compose asynchronous and event-based programs. It provides an observable data stream API that treats live sequences of information as collections, allowing developers to coordinate asynchronous event workflows using a declarative syntax. The project functions as an extension of language integrated query patterns to asynchronous streams. This allows for the filtering and transformation of asynchronous notifications and event sequences through the application of query operators. The framework covers asynchron
Core reactive extensions library for asynchronous programming.
language-ext is a functional programming framework for C# that provides a suite of immutable data structures and monadic types. It enables the implementation of pure functional programming patterns, utilizing containers to manage side effects, optional values, and error handling. The library is distinguished by its advanced concurrency and state management tools, including a software transactional memory system and lock-free atomic references. It also provides specialized utilities for distributed systems, such as vector clocks for causality tracking and deterministic data conflict resolution
Functional language extensions and concurrency primitives.
1loc is a JavaScript utility library and multifaceted toolkit providing a collection of single-line functions for common mathematical, string, date, and geometric operations. It functions as a set of functional programming helpers and data validation predicates designed to perform atomic transformations and validations. The project includes a geometry math library for calculating distances, angles, and spatial overlaps between points and rectangles, alongside a text manipulation library for casting, capitalizing, and analyzing string content. The toolkit covers broader capability areas inclu
Provides a set of small pure functions for atomic data transformations and functional validations.
Bacon.js is a JavaScript functional reactive programming library used for coordinating complex asynchronous data flows. It functions as an observable event stream framework and an asynchronous data flow orchestrator, allowing developers to model events as declarative streams and properties. The library distinguishes itself through its ability to manage reactive state and synchronize timing across multiple sources. It provides specialized mechanisms for atomic state synchronization to prevent glitches in derived properties and offers advanced coordination strategies such as asynchronous stream
Functional reactive programming library.
Functional library to reduce boilerplate and increase robustness.
Lazy.js is a JavaScript library that implements a lazy evaluation model for processing collections and data streams. It defers all computation until iteration begins, building chains of transformations that execute only when values are consumed, avoiding intermediate arrays and buffering. The library wraps data sources into a uniform sequence interface, enabling operations like map and filter to be chained together without materializing intermediate results. The library extends lazy processing beyond simple collections to handle asynchronous data sources, DOM events, strings, and Node.js stre
High-performance utility library.
Toolz is a Python library that implements functional programming utilities for iterable transformation, dictionary manipulation, function composition, and lazy evaluation. It provides a set of pure functions designed to work with Python's built-in data structures, enabling concise and composable data processing workflows. What distinguishes toolz is its support for curried partial application, allowing functions to be incrementally applied and reused. It includes dictionary-centric operations that handle nested structures, and offers iterable chain transformers that combine mapping, filtering
Offers a collection of functional utilities for data processing.
Sugar est une bibliothèque utilitaire JavaScript conçue pour étendre les objets et prototypes natifs avec des méthodes supplémentaires pour la manipulation et la transformation de données. Elle fonctionne comme une boîte à outils pour les utilitaires d'objets, la manipulation de dates, l'inflexion de chaînes et le polyfilling de fonctionnalités de langage standard manquantes ou défectueuses. La bibliothèque offre la possibilité de mapper des méthodes utilitaires directement sur les prototypes intégrés ou d'envelopper des valeurs dans des objets temporaires pour permettre le chaînage de méthodes sans modifier les prototypes globaux. Elle inclut également un système de polyfill pour garantir un comportement cohérent à travers différents environnements d'exécution en implémentant les fonctionnalités de langage modernes manquantes. Les capacités incluent le formatage international des dates et l'analyse de chaînes de dates humanisées. La bibliothèque gère également le traitement du langage naturel via l'inflexion et la normalisation de chaînes, la traversée profonde des propriétés d'objets imbriqués et le tri de tableaux sensible aux paramètres régionaux. De plus, elle fournit des outils pour cloner des objets mutables et définir des plages de valeurs pour les nombres, les dates et les chaînes.
Native object extension library.
Coconut est un langage de programmation fonctionnel qui compile vers Python. Il fonctionne comme un compilateur source-à-source, traduisant une syntaxe fonctionnelle de haut niveau en code Python compatible pour maintenir la compatibilité à l'exécution. Le langage introduit un système logique pour le pattern matching et la déstructuration de structures de données complexes. Il fournit un mécanisme d'optimisation des appels terminaux (tail call optimization) pour éviter les erreurs de débordement de pile lors d'appels de fonctions récursives profondes et emploie un moteur d'évaluation paresseuse pour différer les calculs jusqu'à ce que les résultats soient explicitement requis. Le projet inclut la prise en charge des types de données algébriques, des opérateurs de pipeline et de l'application partielle. Il fournit également un framework pour le traitement parallèle des données en distribuant les opérations de mapping sur plusieurs cœurs de CPU.
Adds functional programming features to Python syntax.
Returns est une bibliothèque de programmation fonctionnelle pour Python qui fournit des conteneurs typés pour gérer l'état, la gestion d'erreurs et l'optionalité. Elle sert de bibliothèque de conteneurs monadiques et de framework de gestion d'erreurs typé, remplaçant les blocs try-catch traditionnels et les vérifications de nullité par des conteneurs Result et Optional pour traiter les exceptions comme des données. Le projet se distingue par son utilisation d'un plugin d'analyse statique Mypy spécialisé pour valider les pipelines fonctionnels et émuler des types d'ordre supérieur. Il fournit des mécanismes pour isoler les effets de bord via des conteneurs IO et offre un framework pour l'injection de dépendances typée qui diffère la fourniture des dépendances jusqu'à l'exécution finale d'un calcul. La bibliothèque couvre un large éventail de primitives fonctionnelles, incluant le currying, l'application partielle et la composition de pipelines de données déclaratifs. Elle prend en charge la gestion de workflow asynchrone en enveloppant les coroutines dans des conteneurs pour enchaîner des opérations non bloquantes et inclut des utilitaires pour la gestion du cycle de vie des ressources et la vérification des lois algébriques pour les conteneurs personnalisés.
Implements type-safe monads and functional composition.