awesome-functional-programming
Yet another resource for collecting articles, videos etc. regarding functional programming
https://github.com/eric-erki/awesome-functional-programming
Last synced: 12 days ago
JSON representation
-
Awesome
-
[Elm](http://elm-lang.org)
- Awesome Scala - A community driven list of useful Scala libraries, frameworks and software
- Awesome PureScript - A curation of awesome PureScript libraries, resources and shiny things
- Awesome Elixir - A curated list of amazingly awesome Elixir and Erlang libraries, resources and shiny things
- Awesome Haskell - A curated list of awesome Haskell frameworks, libraries and software
- Awesome Elm - A curated list of useful Elm tutorials, libraries and software. Inspired by awesome list
- Awesome F# - A curated list of awesome F# frameworks, libraries, software and resources
- Awesome Functional Python - A curated list of awesome things related to functional programming in Python
- Awesome Coq - A curated list of awesome Coq frameworks, libraries and software
-
-
Books
-
[Elm](http://elm-lang.org)
- Functional Reactive Programming
- Functional Programming in Java
- Functional Programming in C++
- Functional Programming in C#
- Functional Programming in Kotlin
- Elm in Action
- Functional JavaScript
- Functional Programming in JavaScript - Dan Mantyla
- PureScript by Example
- Lenses in Functional Programming
- The Weird World of Bi-Directional Programming
- Functional Programming in JavaScript
- Excerpt Funtional Programming JavaScript
- Elm tutorial book
- Purescript Pux
- Elm by Example - Grzegorz Balcerek
- Learning Haskell
- learning Scalaz
- О Haskell по-человечески
- F# for Fun and Profit eBook
- Learn you an Agda
- The Transparent Web
- JavaScript Allongé, the "Six" Edition
- Parallel Computing: Theory and Practice
- Haskell Tutorial and Cookbook
- Get Programming with Haskell
- Haskell in Depth
- Grokking Simplicity: Taming complex software with functional thinking - Eric Normand
- Mostly adequate guide to FP (in javascript)
- Mostly adequate guide to FP (in javascript) - russian version
- Functional Javascript Workshop (console based tutorial)
- Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire
- Excerpt Funtional Programming JavaScript
- Learning Haskell
- Programming with Refinement Types - An Introduction to LiquidHaskell
- learning Scalaz
- A book about functional programming in JavaScript
- Parallel Computing: Theory and Practice
- Розплутаний ClojureScript
- The Neophyte's Guide to Scala
- Programming with Refinement Types - An Introduction to LiquidHaskell
- Learn you a Haskell for great good! (A beginner's guide)
- Functional JavaScript: Introducing Functional Programming with Underscore.js - Michael Fogus
- The Transparent Web
- A big list of books about functional programming
- An Introduction to Elm
- Learn F#
-
-
Languages
-
[Racket](https://racket-lang.org/)
- Ela - A dynamic functional language
- Coq - A formal proof management system. It provides a formal language to write mathematical definitions, executable algorithms and theorems together with an environment for semi-interactive development of machine-checked proofs
- Ela - A dynamic functional language
- Koka - A function-oriented language with effect inference
- Ditto - A super kawaii dependently typed language for you!
- Agda - A dependently typed functional programming language
-
-
Libraries
-
[C#](https://github.com/dotnet/roslyn)
- **functional.net** - Library of functions and list extensions for C#
- **language-ext** - C# functional language extensions and 'Erlang like' concurrency system
- **FuncSharp** - Functional programming in C#
- **monadsharp** - A collection of monads for C# that provide some functional programming flavor
- **csharp-probability-monad** - A probabilistic programming framework for C#
- **Ramda.NET** - Practical functional C# port from Ramda.js
-
[Clojure](https://github.com/clojure/clojure)/[ClojureScript](https://github.com/clojure/clojurescript)
-
[ClojureScript](https://github.com/clojure/clojurescript)
-
[Erlang](https://www.erlang.org)
-
[F#](https://github.com/fsharp/fsharp)
- **FSharpx.Extras** - Functional programming and other utilities
- **chiron** - Functional JSON library for F#
- **hekate** - Purely Functional Graphs for F#
- **freya** - Functional-first web stack, including an HTTP finite state machine, built on top of OWIN
- **micron** - A minimalistic pure functional programming language
- **Lw** - is a general-purpose statically-typed functional language with advanced features.
- **Streams** - A lightweight F#/C# library for efficient functional-style pipelines on streams of data
- **Fable** - F# to JavaScript Compiler
- **ReactFSharp** - Proof of concept demo implementing a React like declarative UI API for F# on top of RX
- **Juniper** - FRP (Functional Reactive Programming) for the Arduino and other microcontrollers
-
[Go](https://github.com/golang/go)
- **The Oden Programming Language** - Oden is an experimental, statically typed, functional programming language, built for the Go ecosystem
- **The Oden Programming Language** - Oden is an experimental, statically typed, functional programming language, built for the Go ecosystem
- **The Oden Programming Language** - Oden is an experimental, statically typed, functional programming language, built for the Go ecosystem
- **The Oden Programming Language** - Oden is an experimental, statically typed, functional programming language, built for the Go ecosystem
- **The Oden Programming Language** - Oden is an experimental, statically typed, functional programming language, built for the Go ecosystem
- **The Oden Programming Language** - Oden is an experimental, statically typed, functional programming language, built for the Go ecosystem
- **The Oden Programming Language** - Oden is an experimental, statically typed, functional programming language, built for the Go ecosystem
- **The Oden Programming Language** - Oden is an experimental, statically typed, functional programming language, built for the Go ecosystem
- **The Oden Programming Language** - Oden is an experimental, statically typed, functional programming language, built for the Go ecosystem
- **The Oden Programming Language** - Oden is an experimental, statically typed, functional programming language, built for the Go ecosystem
- **The Oden Programming Language** - Oden is an experimental, statically typed, functional programming language, built for the Go ecosystem
- **The Oden Programming Language** - Oden is an experimental, statically typed, functional programming language, built for the Go ecosystem
- **go-linq** - .NET LINQ-like query methods for Go
- **The Oden Programming Language** - Oden is an experimental, statically typed, functional programming language, built for the Go ecosystem
-
[Haskell](https://www.haskell.org)
-
[Java](http://www.oracle.com/technetwork/java/index.html)
- **Frege** - is a Haskell for the JVM. It brings purely functional programing to the Java platform.
- **functionaljava** - Functional programming in Java
- **yeti** - Functional programming language for JVM
- **Jinq** - LINQ-style queries for Java 8
- **linq4j** - A port of LINQ (Language-Integrated Query) to Java
- **javaz** - Java 8 lambda experiment
-
[Javascript](https://developer.mozilla.org/en-US/docs/Web/JavaScript)
- **functional.js** - The functional JavaScript library
- **fn.js** - A JavaScript library built to encourage a functional programming style & strategy
- **bilby.js** - is a serious functional programming library
- **monet.js** - Monadic types library for JavaScript
- **ftoer** - A pragmatic library facilitating functional programming in javascript
- **cali** - A JavaScript utility library with a functional programming flavor
- **fantasy-land** - Specification for interoperability of common algebraic structures in JavaScript
- **Crocks - A collection of well known Monadic Containers for your utter enjoyment.**
- **wu.js** - is a JavaScript library providing higher order functions (such as map, filter, and reduce) for ECMAScript 6 iterators
- **pointfree-fantasy** - Point free wrappers for fantasy land
- **folktalejs** - Robust, Scalable, DRY. Folktale is a suite of libraries for generic functional programming in JavaScript that allows you to write elegant modular applications with fewer bugs, and more reuse
- **lamb** - A lightweight, and docile, JavaScript (ES5) library to help embracing functional programming
- **trine** - A utility library for modern JavaScript
- **alicates** - Small library for functional programming with ES2015+
- **creed** - Sophisticated and functionally-minded async with advanced features: coroutines, promises, ES2015 iterables, fantasy-land
- **js-csp** - Communicating sequential processes for Javascript (like Clojurescript core.async, or Go)
- **transducers-js** - A high performance Transducers implementation for JavaScript
- **transducers.js** - A small library for generalized transformation of data (inspired by Clojure's transducers)
- **underarm** - Transducers Inspired by Underscore
- **transduce** - JavaScript transducers
- **fkit** - A functional programming toolkit for JavaScript
- **contra** - Asynchronous flow control with a functional taste to it
- **neo-async** - Neo-Async is thought to be used as a drop-in replacement for Async, it almost fully covers its functionality and runs faster
- **async** - Async utilities for node and the browser
- **nimble** - A really tiny functional JavaScript and async flow-control library
- **udon** - Practical functional programming in JavaScript
- **culljs** - Functional javascript for adults - no cushions included
- **it.js** - Chainable object-oriented functional combinators
- **linq** - linq.js - LINQ for JavaScript library
- **Sugar** - A Javascript library for working with native objects
- **cat.js** - Category Theory for JavaScript
- **f** - Implementing native versions of Haskell functions according to JavaScript ES6 standards
- **este** - Dev stack and starter kit for functional and universal React web apps
- **Slack** - Lazy functional JS library
- **nux** - A Push-Based Functional Reactive UI Library for the Web
- **nodent** - Asynchronous Javascript language extensions
- **funkit** - Functional toolkit for javascript
- **funko** - Naive minimalistic functional programming library
- **fantasy-lenses** - Composable, immutable getters and setters
- **co-functional** - co-functional is a MIT licenced library that provides several functions for use with the co library
- **iterablejs** - Lazy-loading wrapper for iterable items and common functional programming operations
- **async-csp** - CSP style channels using ES7 async/await
- **conjs** - a featured fork of mori, with core.async included
- **switch-fn** - Write a functional switch statement
- **asyncawait** - Callback heaven for Node.js with async/await
- **asyncbox** - A collection of ES7 async/await utilities
- **medium** - CSP-style channel library using ES7 async/await keywords
- **prelude** - Base functional programming utils for mostjs packages
- **fantasy-birds** - port of the haskell package Data.Aviary.Birds. Every thing for your combinatory needs
- **scour** - Traverse objects and arrays with ease
- **monad-transformers** - Practical monad transformers for JS
- **lazy-either** - A lazy implementation of the Fantasy Land Either type
- **parallel-future** - Run Futures in parallel
- **futurize** - Turn callback-style functions or promises into futures
- **barely-functional** - tiny (2.7kb) functional programming library using native es5/6 operations
- **fantasydo** - Do-notation for javascript fantasy land
- **linq.ts** - LinQ for TypeScript
- **1-liners** - Functional tools that couldn’t be simpler
- **immutable-ext** - fantasyland extensions for immutablejs
- **optics** - This library is an implementation of profunctor optics using JS, heavily influenced by the PureScript Profunctor Lenses and Kmett's Lens libraries.
- **monady** - Composable monads for functional async flow
- **pure-random** - A purely functional random number generator
- **kewler** - Simple functional and immutable color manipulation library
- **union-type** - A small JavaScript library for defining and using union types
- **fantasy-frees** - Free monads
- **ramda-fantasy** - Fantasy-Land compatible types for easy integration with Ramda.js
- **fantasy-derivations** - Use methods on ADTs whether or not they're defined
- **fantasy-do** - Do notation for javascript
- **future-io** - A fantasy-land compliant monadic IO library for Node.js.
- **List-in-JS** - List in JS provides List like List of Haskell. List in JS implements Fantasy Land Specification. List is a Setoid, a Semigroup, a Monoid, a Functor, an Applicative Functor, Foldable, Traversable, a Chain and a Monad
- **doM.js** - "do" monad syntax for JavaScript
- **do-notation** - Do notation for Fantasy Land monad types
- **burrido** - Do-notation for JavaScript
- **monadic** - Do-notation and Monads for JavaScript
- **async-ls** - Higher order functions, compositions and common operations for asynchronous programming in LiveScript
- **florida** - Pure functional accessor factories in js
- **mandolin** - Painlessly enhance your JavaScript with monadic types
- **operajonal** - Implementation of free monads in JavaScript, based on Haskell's operational package
- **free** - Combination of a free applicative functor and free monad
- **freeky** - Free monad Collection
- **immutagen** - A library for simulating immutable generators in JavaScript
- **gentoo** - Tools for ES6 generators
- **TsMonad** - Little monad library designed for TypeScript
- **async-to-gen** - Transform async functions to generator functions with speed and simplicity
- **imlazy** - Functional, declarative, immutable and lazy as you like
- **partial.lenses** - Partial lenses is a comprehensive, high-performance optics library for JavaScript
- **ramda-lens** - Lens library built on ramda
- **lenses** - Composable kmett style lenses
- **streamjs** - Lazy Object Streaming Pipeline for JavaScript
- **chained-promise** - Functional programming tools for recurring promises
- **maryamyriameliamurphies.js** - A library of Haskell-style morphisms ported to ES2015 JavaScript using Babel
- **asyncp** - Port of the async library to use Promises
- **flow-static-land** - Implementation of common algebraic types in JavaScript + Flow
- **tiny-tuple** - Tiny Tuple library for Client or Server
- **adt.js** - Algebraic data types for Javascript
-
Programming Languages
Categories
Sub Categories
[Elm](http://elm-lang.org)
208
Combinators
118
[Javascript](https://developer.mozilla.org/en-US/docs/Web/JavaScript)
107
[Monads](https://en.wikipedia.org/wiki/Monad_(functional_programming))
73
[Purescript](http://www.purescript.org)
31
[Lenses]()
25
[Go](https://github.com/golang/go)
14
[Swift](https://developer.apple.com/swift)
12
[F#](https://github.com/fsharp/fsharp)
10
[PHP](https://github.com/php/php-src)
7
[Racket](https://racket-lang.org/)
7
[Python](https://www.python.org/)
7
[Java](http://www.oracle.com/technetwork/java/index.html)
6
[C#](https://github.com/dotnet/roslyn)
6
[Scala](https://github.com/scala/scala)
5
[Haskell](https://www.haskell.org)
3
[Kotlin](https://github.com/JetBrains/kotlin)
3
[Clojure](https://github.com/clojure/clojure)/[ClojureScript](https://github.com/clojure/clojurescript)
3
[Livescript](https://github.com/gkz/LiveScript)
2
[Julia](https://github.com/JuliaLang/julia)
2
[Erlang](https://www.erlang.org)
1
[Rust](https://github.com/rust-lang/rust)
1
[ClojureScript](https://github.com/clojure/clojurescript)
1
Keywords
functional-programming
23
javascript
18
monad
8
python
5
haskell
5
functional
5
fantasy-land
5
typescript
4
async
4
awesome
4
fp
3
functor
3
functional-languages
3
tutorial
3
awesome-list
3
immutable
3
education
3
book
3
linq
3
monoid
3
monads
3
json
2
optics
2
kotlin
2
clojure
2
library
2
purescript
2
scala
2
php
2
algebraic-data-types
2
training-materials
2
training-providers
2
generator
2
type-theory
2
elm
2
scalajs
2
curry
2
es2015
2
compiler
2
linq-to-objects
2
programming-language
2
sugar
1
polyfill
1
semigroup
1
records
1
utility-library
1
structural-equality
1
native-objects
1
unary-functions
1
predicate-functions
1