awesome-functional-programming
Yet another resource for collecting articles, videos etc. regarding functional programming
https://github.com/eric-erki/awesome-functional-programming
Last synced: 7 days ago
JSON representation
-
Resources
-
[Elm](http://elm-lang.org)
- A curated list of awesome functional programming stuff in js
- Awesome Haskell
- Free monads
- http://chris-taylor.github.io
- FPCasts - Your source for Functional Programing Related Podcasts
- Primers
- 24 Days of PureScript
- Category Theory for Programmers: The Preface
- https://rosettacode.org/wiki/Category:Haskell
- Corecursion
- Typeclassopedia
- Javascript Monad Transformers
- Functor
- http://fprog.ru
- Scala Tour
- An es6 js maybe monad, using generators
- Trying to apply ES6 generators to create monad comprehensions. Unfortunately it looks like this will not work with monads that contain multiple values, such as arrays
- Free monad based thread simulation and FRP constructs written in JavaScript
- Brian Lonsdorf on medium
- Almost all about monads
- Notes, Thoughts, & Examples derived from reading Functional Javascript by Michael Fogus
- http://blog.codeprototype.com
- http://simplectic.com/blog
- http://www.luisatencio.net
- Lo-Fi Learning - Advanced topics from our blackboard to your screen
- gist of functional utils which written on ES6
- Category theory jargon cheat sheet
- Functional programming (page on wiki of Haskell)
- A Guide to Functional Programming Lingo for JavaScripters
- Monad
- Monad (in computer science)
- The Indexed Continuation Monad in Haskell, Scala, and C#
- A collection about Functional Reactive Programming in Swift
- What I Wish I Knew When Learning Haskell
- Введение в функциональное программирование на скале
- Monoidal Contravariant Functors and Transducers
- Unofficial a documentation of lodash-fp
- Neon - Experimental PureScript standard library
- forwardcourses about functional programming
- Monad tutorials timeline
- An overview of Elm syntax and features
- A book series on JavaScript
- Learn Haskell
- functional-frontend-architecture - A functional frontend framework.
- functional-programming-jargon - Jargon from the functional programming world in simple terms
- Functional Programming concepts, examples and patterns illustrated in Haskell, Ocaml and Python
- FP101x - Functional Programming MOOC 2015 Content Repository
- A puzzle game written on purescript
- Functional Programming Resources In JavaScript
- Formalization of the Dependent Object Types (DOT) calculus
- Building a modern functional compiler from first principles
- Source code for blog post Journey from procedural to reactive JavaScript with stops
- Code, exercises, answers, and hints to go along with the book "Functional Programming in Scala"
- Visual programming meets Haskell
- Simple examples to help you understand ES6
- Dependent Object Types (DOT)
- Pragmatic functional programming in JavaScript - Workshop material
- Answers to the exercises from https://github.com/MostlyAdequate/mostly-adequate-guide
- A list of functional javascript resources
- Collection of examples on places where Elm is different to Haskell
- Kickstart your web development with Elm
- Archive the best resources surrounding the functional programming paradigm for Javascript developers
- cor - The Language of the Web
- Functional Programming by Example
- Haskell by Example
- The official supporting materials repository for LambdaConf 2015
- Pointfree.io - convert Haskell code into pointfree Haskell code
- Code Samples Functional Programming in JavaScript, Manning 2016
- Luna. Visual and textual functional programming language with a focus on productivity, collaboration and development ergonomics
- Community driven Elm guide for JS people
- Conal Elliott blog
- http://functionaljavascript.blogspot.com
- http://buzzdecafe.github.io
- http://joneshf.github.io
- http://www.luisatencio.net
- http://clojurewerkz.org - A growing collection of open source Clojure libraries
- FunctionalTalks.org - Brilliant people giving brilliant talks on Functional Programming.
- js-funcional - A Cookbook for writing FP in JavaScript using ES6
- Category Theory Presentation
- Haskell monads for learning purposes in javascript
- Ramtuary REPL
- Haskell for Maths
- Введение в функциональное программирование на скале
- Explorations in Functional Land
- JS-monads-stable
- djinn - Generate Haskell code from a type
- λ List of resources related to Functional Programming in JS
- JSON to Elm
- Functional Programming by Example
- FunctionalTalks.org - Brilliant people giving brilliant talks on Functional Programming.
- Ramtuary REPL
- JSON to Elm
- Blog Jakub Arnold
- 24 Days of GHC Extensions
- Philip Wadler's home page
-
Combinators
- Deriving the Y Combinator in 7 Easy Steps
- B, C, K, W system
- Комбинаторы — это просто!
- Комбинаторная логика как формальная система
- combinators-js
- SKI combinator calculus
- Combinators
- Fixed-point combinator
- Combinatory logic
- Collected Lambda Calculus Functions
- Combinatory Logic: Finding and Evaluating Combinators
- Maths - Combinatory Logic
- Lambda Calculus
- From Lambda calculus to Combinator Calculus
- The SKI Combinator Calculus a universal formal system
- Lambda Calculus
- Combinatory logic
- The Y Combinator (no, not that one). A crash-course on lambda calculus
- The Quantum Electrodynamics of Functional JavaScript
- Applicative Functor / SKI combinator calculus
- To Dissect a Mockingbird: A Graphical Notation for the Lambda Calculus with Animated Reduction
- Deriving the Y Combinator in 7 Easy Steps
- Collected Lambda Calculus Functions
- From Lambda calculus to Combinator Calculus
- The SKI Combinator Calculus a universal formal system
- Combinator Birds
-
-
Awesome
-
[Elm](http://elm-lang.org)
- Awesome PureScript - A curation of awesome PureScript libraries, resources and shiny things
- Awesome Scala - A community driven list of useful Scala libraries, frameworks and software
- Awesome Elixir - A curated list of amazingly awesome Elixir and Erlang libraries, resources and shiny things
- 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
- 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
-
-
Libraries
-
[Swift](https://developer.apple.com/swift)
- **Concurrent** - Functional Concurrency Primitives
- **Funky** - Functional programming tools and experiments in Swift
- **LlamaKit** - Collection of must-have functional Swift tools
- **Prelude** - Swift µframework of simple functional programming tools
- **Swiftx** - Functional data types and functions for any project
- **Swiftz** - Functional programming in Swift
- **Argo** - Functional JSON parsing library for Swift
- **Interstellar** - Simple and lightweight Functional Reactive Coding in Swift for the rest of us
- **Swift for Windows** - is a free, open source tool that provide runtime environment for swift programming language to compile and run on Windows OS with graphical interface
- **Functional** - A functional programming framework for Swift
- **SwiftSequence** - A μframework of extensions for SequenceType in Swift 2.0, inspired by Python's itertools, Haskell's standard library, and other things
- **SINQ** - LINQ for Swift - Swift Integrated Query
- **Dollar.swift** - A functional tool-belt for Swift Language similar to Lo-Dash or Underscore.js in Javascript
-
[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
- **transducers-js** - A high performance Transducers implementation for JavaScript
- **fantasy-land** - Specification for interoperability of common algebraic structures in JavaScript
- **ramda-lens** - Lens library built on ramda
- **este** - Dev stack and starter kit for functional and universal React web apps
- **async** - Async utilities for node and the browser
- **Sugar** - A Javascript library for working with native objects
- **switch-fn** - Write a functional switch statement
- **async-to-gen** - Transform async functions to generator functions with speed and simplicity
- **1-liners** - Functional tools that couldn’t be simpler
- **Crocks - A collection of well known Monadic Containers for your utter enjoyment.**
- **linq** - linq.js - LINQ for JavaScript library
- **purify** - Functional programming library for TypeScript focusing on ADTs
- **transducers.js** - A small library for generalized transformation of data (inspired by Clojure's transducers)
- **contra** - Asynchronous flow control with a functional taste to it
- **scour** - Traverse objects and arrays with ease
- **fkit** - A functional programming toolkit for JavaScript
- **partial.lenses** - Partial lenses is a comprehensive, high-performance optics library for JavaScript
- **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
- **asyncawait** - Callback heaven for Node.js with async/await
- **nodent** - Asynchronous Javascript language extensions
- **async-csp** - CSP style channels using ES7 async/await
- **streamjs** - Lazy Object Streaming Pipeline for JavaScript
- **flow-static-land** - Implementation of common algebraic types in JavaScript + Flow
- **ramda-fantasy** - Fantasy-Land compatible types for easy integration with Ramda.js
- **TsMonad** - Little monad library designed for TypeScript
- **linq.ts** - LinQ for TypeScript
- **immutable-ext** - fantasyland extensions for immutablejs
- **trine** - A utility library for modern JavaScript
- **nimble** - A really tiny functional JavaScript and async flow-control library
- **asyncp** - Port of the async library to use Promises
- **ez-dom** - Functional library to manipulate the DOM
- **kewler** - Simple functional and immutable color manipulation library
- **maryamyriameliamurphies.js** - A library of Haskell-style morphisms ported to ES2015 JavaScript using Babel
- **operajonal** - Implementation of free monads in JavaScript, based on Haskell's operational package
- **asyncbox** - A collection of ES7 async/await utilities
- **creed** - Sophisticated and functionally-minded async with advanced features: coroutines, promises, ES2015 iterables, fantasy-land
- **free** - Combination of a free applicative functor and free monad
- **immutagen** - A library for simulating immutable generators in JavaScript
- **burrido** - Do-notation for JavaScript
- **union-type** - A small JavaScript library for defining and using union types
- **fantasydo** - Do-notation for javascript fantasy land
- **nux** - A Push-Based Functional Reactive UI Library for the Web
- **sanctuary-type-classes** - Standard library for Fantasy Land
- **cat.js** - Category Theory for JavaScript
- **it.js** - Chainable object-oriented functional combinators
- **imlazy** - Functional, declarative, immutable and lazy as you like
- **mandolin** - Painlessly enhance your JavaScript with monadic types
- **js-csp** - Communicating sequential processes for Javascript (like Clojurescript core.async, or Go)
- **barely-functional** - tiny (2.7kb) functional programming library using native es5/6 operations
- **culljs** - Functional javascript for adults - no cushions included
- **underarm** - Transducers Inspired by Underscore
- **akh-cont** - Akh continuation monad and monad transformer
- **freeky** - Free monad Collection
- **fantasy-birds** - port of the haskell package Data.Aviary.Birds. Every thing for your combinatory needs
- **lenses** - Composable kmett style lenses
- **optics** - This library is an implementation of profunctor optics using JS, heavily influenced by the PureScript Profunctor Lenses and Kmett's Lens libraries.
- **fantasy-lenses** - Composable, immutable getters and setters
- **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
- **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
- **lamb** - A lightweight, and docile, JavaScript (ES5) library to help embracing functional programming
- **alicates** - Small library for functional programming with ES2015+
- **transduce** - JavaScript transducers
- **udon** - Practical functional programming in JavaScript
- **f** - Implementing native versions of Haskell functions according to JavaScript ES6 standards
- **Slack** - Lazy functional JS library
- **funkit** - Functional toolkit for javascript
- **funko** - Naive minimalistic functional programming library
- **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
- **conjs** - a featured fork of mori, with core.async included
- **medium** - CSP-style channel library using ES7 async/await keywords
- **prelude** - Base functional programming utils for mostjs packages
- **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
- **monady** - Composable monads for functional async flow
- **pure-random** - A purely functional random number generator
- **fantasy-frees** - Free monads
- **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
- **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
- **gentoo** - Tools for ES6 generators
- **chained-promise** - Functional programming tools for recurring promises
- **tiny-tuple** - Tiny Tuple library for Client or Server
- **adt.js** - Algebraic data types for Javascript
- **fantasy-states** - State control structure
- **wu.js** - is a JavaScript library providing higher order functions (such as map, filter, and reduce) for ECMAScript 6 iterators
- **jabz** - Powerful and practical abstractions for JavaScript and TypeScript. Functors, Monads, Traversables and all that jazz
- **static-land** - Specification for common algebraic types in JavaScript based on Fantasy Land
- **daggy** - Library for creating tagged constructors
- **sanctuary** - Refuge from unsafe JavaScript
- **Fluture** - A complete Fantasy Land compatible Future library
- **lazy.js** - is a functional utility library for JavaScript, similar to Underscore and Lo-Dash, but with an underlying engine that supports many more use cases than those libraries, while offering comparable or superior performance in most scenarios
- **lamb** - A lightweight, and docile, JavaScript (ES5) library to help embracing functional programming
- **lodash-fp** - lodash with auto-curried iteratee-first data-last methods
- **csp** - CSP/Actor/Transducer Experiments
- **f** - Implementing native versions of Haskell functions according to JavaScript ES6 standards
- **fops** - Curried, functional operators
- **funkit** - Functional toolkit for javascript
- **chunkify** - A functional API to unblock your JavaScript
- **co-functional** - co-functional is a MIT licenced library that provides several functions for use with the co library
- **redash** - Compact library for writing performant functional JavaScript
- **kneden** - Transpile ES7 async/await to vanilla ES6 Promise chains: a Babel plugin
- **monad-transformers** - Practical monad transformers for JS
- **Idealist** - Functional HTTP micro-framework
- **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
- **monadic** - Do-notation and Monads for JavaScript
- **Ramda** - A practical functional library for Javascript programmers
-
[Livescript](https://github.com/gkz/LiveScript)
-
[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
- **FuncSharp** - Functional programming in C#
-
[Python](https://www.python.org/)
- **Coconut** - Simple, elegant, Pythonic functional programming
- **fn.py** - Functional programming in Python: implementation of missing features to enjoy FP
- **toolz** - A functional standard library for Python
- **funcy** - A fancy and practical functional tools
- **f** - Functional stuff for Python
- **Coconut** - Simple, elegant, Pythonic functional programming
- **pyMonet** - High abstract library for functional programming. Contains algebraic data structures known from Haskell or Scala
-
[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
-
[Clojure](https://github.com/clojure/clojure)/[ClojureScript](https://github.com/clojure/clojurescript)
-
[Racket](https://racket-lang.org/)
-
[PHP](https://github.com/php/php-src)
- **functional-php** - Primitives for functional programming in PHP
- **pramda** - Practical Functional Programming in PHP
- **ginq** - LINQ to Object inspired DSL for PHP
- **Pinq** - PHP Integrated Query, a real LINQ library for PHP
- **YaLinqo** - Yet Another LINQ to Objects for PHP
- **prelude** - Functional library for PHP
- **Non-standard PHP library (NSPL)** - Compact functional programming oriented code and more
-
[Scala](https://github.com/scala/scala)
- **scalaz** - An extension to the core Scala library for functional programming
- **cats** - Lightweight, modular, and extensible library for functional programming
- **Structures** - Functional type classes for Scala
- **rillit** - Boilerplate-free Functional Lenses for Scala 2.10
- **macroid** - A modular functional UI language for Android
-
[Kotlin](https://github.com/JetBrains/kotlin)
- **funKTionale** - Functional constructs for Kotlin
- **Forge** - Functional style JSON parsing written in Kotlin
- **funktional** - Kotlin monads
- **Arrow** - Functional programming library, which adds patterns, type classes and more
- **kotlinslang** - A functional library for Kotlin that provides functional control structures. Inspired by javaslang
-
[Java](http://www.oracle.com/technetwork/java/index.html)
- **Jinq** - LINQ-style queries for Java 8
- **Frege** - is a Haskell for the JVM. It brings purely functional programing to the Java platform.
- **functionaljava** - Functional programming in Java
- **linq4j** - A port of LINQ (Language-Integrated Query) to Java
- **javaz** - Java 8 lambda experiment
- **yeti** - Functional programming language for JVM
- **TotallyLazy** - A complete functional environment for Java
- **Vavr** - (formerly called Javaslang) object-functional library that runs with Java 8+
-
[ClojureScript](https://github.com/clojure/clojurescript)
-
[Haskell](https://www.haskell.org)
-
[F#](https://github.com/fsharp/fsharp)
- **Streams** - A lightweight F#/C# library for efficient functional-style pipelines on streams of data
- **Juniper** - FRP (Functional Reactive Programming) for the Arduino and other microcontrollers
- **FSharpx.Extras** - Functional programming and other utilities
- **hekate** - Purely Functional Graphs for F#
- **chiron** - Functional JSON library for F#
- **micron** - A minimalistic pure functional programming language
- **freya** - Functional-first web stack, including an HTTP finite state machine, built on top of OWIN
- **Lw** - is a general-purpose statically-typed functional language with advanced features.
- **Fable** - F# to JavaScript Compiler
- **ReactFSharp** - Proof of concept demo implementing a React like declarative UI API for F# on top of RX
- **FSharpPlus** - A complete and extensible base library for F#.
- **freya** - Functional-first web stack, including an HTTP finite state machine, built on top of OWIN
- **Fable** - F# to JavaScript Compiler
-
[Rust](https://github.com/rust-lang/rust)
-
[Julia](https://github.com/JuliaLang/julia)
-
[Erlang](https://www.erlang.org)
-
[OCaml](https://ocaml.org/)
-
-
Videos
-
Combinators
- Learning Functional Programming with JavaScript by Anjana Vakil at JSUnconf 2016
- Classroom Coding with Prof. Frisby
- Functional programming patterns for the non-mathematician (cut)
- Erik Meijer: Functional Programming
- Lambda Days 2015 - Kuba Waliński - Fun with Functional JavaScript
- "Everything Old is New Again: Quoted Domain Specific Languages" by Philip Wadler
- FP-Syd - PureScript: An Overview for Haskellers by Tim Docker (Jul 2015)
- Intro to PureScript -- Utah Haskell Meetup
- Monad a day 1: Reader
- Monad a day 2: Future
- Monad a day 3: State
- Lenses Quick n’ Dirty
- Frontend Masters Workshop finish up
- A Million Ways to Fold in JS
- Coyoneda in Javascript
- Freer Monad (We define Maybe and IO in the freer monad)
- Free(er) Monads in JS pt 2 (Defining an interpreter for multiple natural transformations)
- What is pure functional programming, and how it can improve our application testing? by Luca Molteni
- Start Using Elm to Build Web Applications
- Scott Wlaschin - Railway Oriented Programming — error handling in functional languages
- Lambda Jam 2014 - Eric Meijer - The Lost Art of Denotational Semantics
- SKI School: The Combinator Calculus Demystified
- Erik Meijer - Functional Programming From First Principles
- Brian Beckman: Don't fear the Monad
- Brian Beckman: The Zen of Stateless State - The State Monad
- Monads and Gonads
- Haskell Tutorial
- YOW! Lambda Jam 2016 Conor McBride - What are Types for, or are they only Against?
- Phil Freeman - Fun with Profunctors
- Monads, Monoids and Composition w/ Functional JavaScript
- Elm in Purescript
- Pure Functional Database Programming with Fixpoint Types—Rob Norris
- Functional JS - Lenses - JavaScript
- "Point-Free or Die: Tacit Programming in Haskell and Beyond" by Amar Shah
- How to Create Tetris in Elm
- Functional Programming with Kotlin
- Category theory for JavaScript programmers
- Haskell Programming Tutorial
- Professor Frisby Introduces Composable Functional JavaScript
- Russian videos about clojure and clojurescript
- Parallel and Concurrent Haskell
- «PureScript livecoding» by Dmirti Bushenko
- Classroom Coding with Prof. Frisby
- Jason Ganetsky on Making a Fast Curry: Push/Enter vs. Eval/Apply for Higher-order Languages
- Category theory for JavaScript programmers
-
-
Books
-
[Elm](http://elm-lang.org)
- Functional Programming in JavaScript
- Grokking Simplicity: Taming complex software with functional thinking - Eric Normand
- PureScript by Example
- Functional Programming in C#
- Functional Reactive Programming
- Functional Programming in Java
- Functional Programming in C++
- Functional Programming in Kotlin
- Elm in Action
- Functional JavaScript
- Functional Programming in JavaScript - Dan Mantyla
- Lenses in Functional Programming
- The Weird World of Bi-Directional Programming
- 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
- A book about functional programming in JavaScript
- Mostly adequate guide to FP (in javascript)
- Functional Javascript Workshop (console based tutorial)
- Mostly adequate guide to FP (in javascript) - russian version
- 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
- 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
-
-
Tutorials and Articles
-
- Part 1: An Intro to Functional Programming Concepts in JavaScript
- Lazy, composable, and modular JavaScript
- Functional Programming for JavaScript People
- Part 2: An Intro to Functional Programming Concepts in JavaScript
- Part 3: An Intro to Functional Programming Concepts in JavaScript
- Short cut fusion
- Say "Hello" to Lo-Dash
- Currying in JavaScript
- ECMAScript 6 and Array Comprehension
- Better Support for Functional Programming in Angular 2
- Functional UI and Components as Higher Order Functions
- Functional programming on frontend with React & ClojureScript
- Streaming Logs with Transducers and Ramda
- The power of Immutability and React
- Tacit Ramda
- Point-free programming style in F#
- Currying in JavaScript
- Элементы функциональных языков
- Functional programming in R language
- Understanding Continuations
- Leaking Space - Eliminating memory hogs
- Breaking down FRP
- Fun with promises in JavaScript
- Getting clever with lambda calculus
- Functional programming with Ramda.js
- What is a functor?
- What Is Functional Programming?
- Which Programming Languages Are Functional?
- Function Application and Definition
- Types & Kinds
- Effectful Haskell: Reader, Transformers, Typeclasses
- asynquence: The Promises You Don’t Know Yet (Part 1)
- asynquence: More Than Just Promises (Part 2)
- Going Async With ES6 Generators
- Getting Concurrent With ES6 Generators
- Understanding Transducers in JavaScript
- Lazy Iterables in JavaScript
- Continuations
- Elmish: Functional Programming in Javascript
- Debugging Functional
- More points for lazy evaluation
- Trampolines in JavaScript
- Where combinator names come from
- Category Theory for Promises/A+
- Everything Reduced: Transducers in Javascript
- Javascript Transducers 2: Stateful & Gateful
- Creating an ES6ish Compose in Javascript
- More Functional Javascript: Reducing Promises, Ramda.js, & Arrow functions again
- Functional Programming is for Dummies
- Functional Programming Principles in Scala
- Introduction to Immutable.js and Functional Programming Concepts
- Functional Programming in JavaScript - The Functional Paradigm in a Familiar Language
- See How Easily You Can Create a Promise
- Achieving point-free JavaScript with R.converge / _.over
- Introduction to Functional JavaScript
- Functions
- Higher Order Functions
- Recursion
- 3. More Functional Swift
- 2. Functional Swift
- Debouncing and Throttling Explained Through Examples
- Functional Mixins in ECMAScript 2015
- 6 Reasons Why You Should Write Functional Code
- (Basic) Lazy Evaluation and Memoization in JavaScript
- Divide and Conquer with Algebraic Structures
- Proofs of functor laws in Haskell
- Tree traversal in CoffeeScript
- Monoidal Contravariant Functors are actually useful!
- Infinite collections with ES6 generators
- Improving your functional CoffeeScript and JavaScript
- Comparing Javascript generators vs Clojurescript lazy-seq by solving a Fibonnaci problem
- Grasping Haskell: functors, applicatives and monads (part 1)
- Grasping Haskell: functors, applicatives and monads (part 2)
- Functor, Foldable, and Traversable Over Binary Tree
- Functional Components with React stateless functions and Ramda
- Promises + FP = Beautiful Streams
- Composability: from Callbacks to Categories in ES6
- Understanding F-Algebras
- Fold
- Why Functional Programming Matters
- Smarter validation
- The Algebra of Algebraic Data Types, Part 1
- The Algebra of Algebraic Data Types, Part 2
- The Algebra of Algebraic Data Types, Part 3
- Design Patterns in Haskell
- Haskell Progressive Example - An OpenGL 3D extension of the Mandelbrot set
- Functors are Containers
- From Callback to Future -> Functor -> Monad
- Slaying a UI Antipattern in Fantasyland
- Form Validation As A Higher Order Component Pt.1
- Form Validation As A Higher Order Component Pt.2
- Using JavaScript to Learn Haskell
- FFI with Haskell and Rust
- A Taste of Haskell
- BEAUTIFUL FOLDS IN SCALA
- Mutual Recursion in Final Encoding
- Semigroups
- Using F# on both the frontend and the backend
- Tuples in JavaScript
- How to Speed Up Lo-Dash ×100? Introducing Lazy Evaluation
- Swift closures and functions
- Partial Application in JavaScript
- How Do I Learn Functional Programming In Javascript? - Linkpost
- Composing Functions in JavaScript
- Forcing Function Arity in JavaScript
- Wrapping JavaScript Functions
- Functional programming with Javascript
- Immutable.js: The True Joy of JavaScript
- So You Want to be a Functional Programmer Series by Charles Scalfani
- Iffy Literals
- How to Speed Up Lo-Dash ×100? Introducing Lazy Evaluation
- Implicit Function Chaining in Lodash
- Lodash and ECMAScript 2015
- Functional JavaScript
- Functional programming in R language
- What are some limitations/disadvantages of functional programming?
- What Is Functional Programming?
- Which Programming Languages Are Functional?
- Understanding Transducers
- How Do I Learn Functional Programming In Javascript? - Linkpost
- More points for lazy evaluation
- Functional Programming Principles in Scala
- The allure of Scala.js
- The Perfect API
- Proofs of functor laws in Haskell
- Support for deriving Functor, Foldable, and Traversable instances
- Design Patterns in Haskell
- Haskell Progressive Example - An OpenGL 3D extension of the Mandelbrot set
- Using F# on both the frontend and the backend
- Functional Programming in JavaScript
- Favoring Curry
- The Philosophy of Ramda
- Ranging Near and Far
- Why Ramda?
- How Do I Learn Functional Programming In Javascript? - Linkpost
- Recursion in JavaScript
- Functional programming with Ramda
- Functional Programming should be your #1 priority for 2015
- Why using `_.chain` is a mistake
- Functional Programming In JS — With Practical Examples (Part 1)
- Stack safe Function composition
- Input and Output
- Foldable and Traversable
- The functor design pattern
- list-transformer - A beginner-friendly ListT
- From mathematics to map-reduce
-
[Monads](https://en.wikipedia.org/wiki/Monad_(functional_programming))
- Monads in JavaScript
- The Marvels of Monads
- The Mother of all Monads
- Understanding Monads With JavaScript
- Mindfuck: The Reverse State Monad
- Comonads, Monoids and Trees
- Effectful Haskell: IO, Monads, Functors
- Functors, Applicative Functors, and Monads aren't that scary
- Practical Intro to Monads in JavaScript
- The Indexed State Monad in Haskell, Scala, and C#
- Who in Their Right Mind Would Use Monads in Clojure?
- Let’s Make a Monad
- Let’s Put jQuery in a Monad
- Monads in plain JavaScript
- Practical Intro to Monads in JavaScript: Either
- Practical Intro to Monads in JavaScript: Validation
- Practical Intro to Monads in JavaScript
- Monads, promises, arrays in Javascript
- Monads
- A Gentle Intro to Monads … Maybe?
- Monads - function composition on steroids
- Rx for Haskell - My First Monad
- Monads for Dummies
- Week 3 - Introduction to Monads in JavaScript
- Монады в Javascript
- Functors, Applicatives, and Monads in Plain English
- Decision Trees Are Free Monads Over the Reader Functor
- Утилиты работы с монадами
- Ru/IO Inside
- Foldable.mapM_, Maybe, and recursive functions
- MonadFix
- Monads - Array, Promise and Maybe monads. Plus Docker is a functor
- Monoids, Functors, Applicatives, and Monads: 10 Main Ideas
- The Dead Simple, No Chit Chat, Zero-Analogy Haskell Monad Tutorial
- Understanding Monads
- Monads: Your App as a Function, Part 1
- Category Theory via C# (22) More Monad: Continuation Monad
- The Mother of all Monads
- Understanding Monads With JavaScript
- Comonads, Monoids and Trees
- Functors, Applicative Functors, and Monads aren't that scary
- Who in Their Right Mind Would Use Monads in Clojure?
- Monads in plain JavaScript
- Monads
- Monads - function composition on steroids
- Rx for Haskell - My First Monad
- Functors, Applicatives, and Monads in Plain English
- Decision Trees Are Free Monads Over the Reader Functor
- Собираемся с духом и перестаем бояться монад
- Утилиты работы с монадами
- The midnight Monad, a journey to enlightenment
- A Fistful of Monads
- A Monad in Practicality: First-Class Failures
- A Monad in Practicality: Controlling Time
- The Marvellously Mysterious JavaScript Maybe Monad
-
[Elm](http://elm-lang.org)
- Switching from imperative to functional programming with games in Elm
- Learning FP the hard way: Experiences on the Elm language
- Getting Started with Elm
- Understanding Signal.forwardTo
- Architecture in Elm
- Introduction to ML in Elm
- Understanding Elm: Signals, Mailboxes, Addresses, and Actions
- Using Mailboxes in Elm
- Developing Games In Elm - Signals
- Signals in Elm
- Elm by Example: Soup to Nuts - Part 1
- An Opening Example of Elm: building HTML by parsing parameters
- Real World Elm - Part 2 - Form Validation
- Real World Elm - Part 1
- Introduction to FRP in Elm
- Tasks and Effects in Elm
- Elm Native UI: Writing a React Native app in Elm
- A Concise Introduction to Elm
- Building A React/Redux/Elm Bridge
- Learn X in Y minutes - Where X=Elm
- Understanding Signal.forwardTo
- Signals in Elm
- Tasks and Effects in Elm
- Elm Native UI: Writing a React Native app in Elm
- Structured TodoMVC example with Elm
- 10 reasons why you should give Elm a try
- Why Elm is Going to Change the World
-
[Lenses]()
- Lenses and Virtual DOM Support Open Closed
- Basic Lensing
- Lenses with Immutable.js
- Использование линз на реальных примерах
- lens over tea #1: lenses 101, traversals 101, and some implementation details
- Functional Lenses, How Do They Work
- An Introduction Into Lenses In JavaScript Functional Getter/Setter
- Pointwise Lenses
- Линзы: Real World
- Haskell Lenses Notes
- An Intro to Lens With No Theory
- Lens you an applicative for great haskell?
- I got lenses in my Functors
- A Little Lens Starter Tutorial
- Introduction to optics: lenses and prisms
- JavaScript through the Lenses of Functional Programming
- JavaScript through the Lenses of Functional Programming
- JavaScript through the Lenses of Functional Programming
- JavaScript through the Lenses of Functional Programming
- Lenses and Virtual DOM Support Open Closed
- How functional programming lenses work
- Lens Tutorial - Introduction (part 1)
- Lens Tutorial - Stab & Traversal (Part 2)
-
[Purescript](http://www.purescript.org)
- Building Apps with PureScript and React
- Frontend Functional Programming with PureScript and Elm
- Writing PureScript Bindings for a jQuery Plugin
- Rendering a Tic-Tac-Toe board with purescript-react
- Playing Tic-Tac-Toe using purescript-signal
- Fighting node callback hell with PureScript
- Approximating PI With PureScript
- Learn X in Y minutes - Where X=purescript
- Purescript will make you purr like a kitten
- PureScript + React + Electron
- Getting started in PureScript (Part 1)
- Getting Started with Purescript for Web Development
- PureScript — An Intro for JavaScript Hackers
- Parsing complex foreign objects in PureScript
- Row span with PureScript pux and JavaScript redux
- Make the Leap from JavaScript to PureScript
- Frontend Functional Programming with PureScript and Elm
- Approximating PI With PureScript
- PureScript for Front End Developers
- Parsing complex foreign objects in PureScript
- Row span with PureScript pux and JavaScript redux
- A Real-World PureScript FE Build Setup
- PureScript for the Haskeller Where to get started in PureScript for the Haskell programmer
-
-
Languages
-
[Racket](https://racket-lang.org/)
- 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
- Agda - A dependently typed functional programming language
- Koka - A function-oriented language with effect inference
- Ela - A dynamic functional language
- Ditto - A super kawaii dependently typed language for you!
- Pyret - A programming language designed to serve as an outstanding choice for programming education while exploring the confluence of scripting and functional programming
- F* - (pronounced F star) An ML-like functional programming language aimed at program verification
- Idris - A general purpose pure functional programming language with dependent types
- Eta - A powerful language for building scalable systems on the JVM
-
-
Presentations
-
Combinators
- Awesomely descriptive JavaScript with monads
- Functional Programming from Brian Lonsdorf (awesome presentation)
- FKit: Everyday Functional Programming in JavaScript
- Getting Started with PureScript by Michael Ficarra
- Better know a language PureScript
- Functional Programming. Patterns in Scala
- CodeMash: Functional Programming Basics in ES6
- Fluent Conf: Rise of Async JavaScript
- Building Functional Islands by Mark Jones
- Reactive UIs with Halogen
- TYPESAFE SQL IN HASKELL - AN INTRODUCTION TO OPALEYE
- Playing with Graphics and Animations in Haskell by Manuel Chakravarty
- Practically workshop
- Category theory for beginners
- Domain Modeling in a Functional World
- Functional Patterns in JavaScript
- Functional Programming in JavaScript
- ECMAScript 6 Quiz
- Functional Programming from Scott Sauyet
- Better know a language PureScript
- Functional Programming. Patterns in Scala
- ECMAScript 6 Quiz
- Немного о функциональном программирование в JavaScript
- Category theory for beginners
- Functional Programming Forever
- Why Haskell?
- PureScript
- Анонимные записи в Haskell
- Collections libraries in JavaScript
- Transducers - Reducing complexity with reducers
- Remove the Boilerplate
- Map, Flatmap and Reduce are Your New Best Friends: Simpler Collections, Concurrency, and Big Data
- Монады для барабанщиков
- Fun* JavaScript Workshop - Dr. Gleb Bahmutov PhD
-
-
Youtube channels
Programming Languages
Categories
Sub Categories
[Elm](http://elm-lang.org)
174
[Javascript](https://developer.mozilla.org/en-US/docs/Web/JavaScript)
122
Combinators
112
[Monads](https://en.wikipedia.org/wiki/Monad_(functional_programming))
55
[Purescript](http://www.purescript.org)
23
[Lenses]()
23
[Go](https://github.com/golang/go)
14
[Swift](https://developer.apple.com/swift)
13
[F#](https://github.com/fsharp/fsharp)
13
[Racket](https://racket-lang.org/)
11
[Java](http://www.oracle.com/technetwork/java/index.html)
8
[PHP](https://github.com/php/php-src)
7
[Python](https://www.python.org/)
7
[C#](https://github.com/dotnet/roslyn)
7
[Kotlin](https://github.com/JetBrains/kotlin)
5
[Scala](https://github.com/scala/scala)
5
[Haskell](https://www.haskell.org)
4
[Julia](https://github.com/JuliaLang/julia)
4
[Clojure](https://github.com/clojure/clojure)/[ClojureScript](https://github.com/clojure/clojurescript)
3
[Livescript](https://github.com/gkz/LiveScript)
2
[OCaml](https://ocaml.org/)
1
[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