Awesome Functional Programming
Yet another resource for collecting articles, videos etc. regarding functional programming
This page lists names, links and short descriptions. The original list on GitHub is the source and belongs to its authors.
Tutorials and Articles
Part 1: An Intro to Functional Programming Concepts in JavaScript
An introduction to Functional Programming Concepts in JavaScript. Uses the Ramda library to teach the concepts of composition, pointfree style, and functors through the simplest of examples.
Favoring Curry
Practical applications of currying using Ramda.
Why Ramda?
To those not used to functional programming, Ramda seems to serve no purpose whatsoever. However, it does offer a different style of coding, a style that’s taken for granted in purely functional programming languages: Ramda makes it simple for you to build complex logic through functional…
Lazy, composable, and modular JavaScript
Use four new features of ES6 – iterables, generators, fat arrows, and for-of – in conjunction with higher-order functions, function composition, and lazy evaluation, to write cleaner and more modular JavaScript.
Why Curry Helps
A short overview of how to write reusable and declarative code using currying.
Functional programming with Javascript
Another introduction to Functional Programming in JavaScript with a focus on three key themes: computation as the application of functions, statelessness, avoiding side effects.
Category Theory in JavaScript
(must have)
A Gentle Introduction to Functional JavaScript: Part 1
A four-part series introduction functional programming in JavaScript that gets you up to speed what all the hype about functional programming is all about.
Functional Programming for JavaScript People
A complete introduction to functional programming patterns by Chet Corcos with a lot of javascript examples.
Fold (higher-order function)
Like a blanket being folded up, this function iterates a collection and in each step combines the current item with everything that has already been folded.
Understanding F-Algebras
Bartosz Milewski explains F-algebras and shows how to use them in the context of catamorphisms.
So You Want to be a Functional Programmer Series by Charles Scalfani
Easy to understand, with some examples, introduction to Functional Programming in Javascript and Elm.
Tutorials and Articles >Lenses
Tutorials and Articles >Monads
Monads in JavaScript
An introduction to the Monad design pattern in JavaScript.
Comonads, Monoids and Trees
(awesome article)
Tutorials and Articles >Purescript
Tutorials and Articles >Elm
Learning FP the hard way: Experiences on the Elm language
Experiences on the Elm language.
Switching from imperative to functional programming with games in Elm
Switching from imperative to functional programming with games in Elm.
Getting Started with Elm
Series of Elm education tutorials.
Learn X in Y minutes - Where X=Elm
Syntax and features overview. The Elm page on learnxinyminutes.com
Books
Mostly adequate guide to FP (in javascript)
This is a book on the functional paradigm in general using the world’s most popular functional programming language: JavaScript. It’s a practical introduction that builds up intuition through real-world examples. Strongly recommended. By Brian Lonsdorf (2016)
Functional Javascript Workshop (console based tutorial)
The goal of this workshop is to create realistic problems that can be solved using terse, vanilla, idiomatic JavaScript to teach fundamental functional programming features of JavaScript.
Functional Programming in JavaScript
teaches JavaScript developers functional techniques that will improve extensibility, modularity, reusability, testability, and performance. Through concrete examples and jargon-free explanations, this book teaches you how to apply functional programming to real-life development tasks. By Luis…
Learn you a Haskell for great good! (A beginner's guide)
by Miran Lipovača
Learn you some Erlang for great good!
Learn you some Erlang - for great good! A very thorough resource covering everything from beginning Erlang programming to large-scale development and deployment.
A book about functional programming in JavaScript
This book explores the core principles of functional programming (FP) that can be applied to JavaScript. But what makes this book different is that it approaches these principles without all the heavy terminology.
Parallel Computing: Theory and Practice
Umut A. Acar 2016
Haskell in Depth
Explores the important language features and programming skills you’ll need to build production-quality software using Haskell.
Grokking Simplicity: Taming complex software with functional thinking - Eric Normand
teaches functional programming from first principles. It uses JavaScript for all code examples and it uses real-world scenarios. By Eric Normand (2019)
OCaml Programming: Correct + Efficient + Beautiful
by Michael R. Clarkson
Resources
Category Theory for Programmers: The Preface
by Bartosz Milewski
A curated list of awesome functional programming stuff in js
Functional programming stuff in JavaScript.
An overview of Elm syntax and features
Syntax and features overview.
Elm weekly
. The wonderful world of the Elm programming language, in your inbox.
Functional Javascript Workshop (console based tutorial)
The goal of this workshop is to create realistic problems that can be solved using terse, vanilla, idiomatic JavaScript to teach fundamental functional programming features of JavaScript.
Introduction to Functional Programming (course from edx.org)
Fall 2014 MOOC on edX by DelftX featuring Haskell as the primary language of focus.
functional-programming-jargon - Jargon from the functional programming world in simple terms
Jargon from the functional programming world explained in JavaScript.
functional-frontend-architecture - A functional frontend framework.
A functional frontend framework. Based on Ramda + union-type-js + Flyd + Snabbdom
A book series on JavaScript
Possibly the best book written on modern JavaScript, completely readable online for free, or can be bought to support the author.
Functional Programming in Javascript (Online tutorial)
A series of interactive exercises introducing five basic ingredients of functional (reactive) programming: the map, filter, concatAll, reduce, and zip functions.
A puzzle game written on purescript
A puzzle game inspired by functional programming.
What I Wish I Knew When Learning Haskell
amazing guide for all kinds of things.
Learn Haskell
(cc0) - This is a recommended path for learning Haskell based on experience helping others
Collection of examples on places where Elm is different to Haskell
Collection of examples on places where Elm is different to Haskell, targeted at Elm beginners coming from Haskell backgrounds.
Kickstart your web development with Elm
A collection of notes for web developers looking into moving to Elm.
Coeffects: Context-aware programming languages
Context-aware programming languages.
Haskell MOOC
An online course on functional programming with Haskell programming language, and a live interactive Telegram community.
Resources >Combinators
Presentations
Functional Programming Patterns
(must have)
Videos
Classroom Coding with Prof. Frisby
A series that builds a “practical” web application with React and functional programming in JavaScript.
Functional programming patterns for the non-mathematician (cut)
Learn about practical use cases for functors, applicatives, and monads.
Brian Beckman: Don't fear the Monad
by Dr. Brian Beckman (Channel 9 2012) [1:07:10]
Learning Functional Programming with JavaScript by Anjana Vakil at JSUnconf 2016
A simple and understandable introduction of functional proramming in javascript.
The fuel for the Functional Programming engine
Michal Plachta
Functional Programming with TypeScript
Discover functional programming with Typescript and create a library like fp-ts alongside Sahand Javid in this beginner-friendly YouTube playlist.
Youtube channels
Libraries >Javascript
Lodash - A JavaScript utility library delivering consistency, modularity, performance, & extras
Utility library delivering consistency, customization, performance, & extras. A better and faster Underscore.js.
Ramda - A practical functional library for Javascript programmers
Utility library with a focus on flexible functional composition enabled by automatic currying and reversed argument order. Avoids mutating data.
fantasy-land - Specification for interoperability of common algebraic structures in JavaScript
Specification for interoperability of common algebraic structures in JavaScript
Crocks - A collection of well known Monadic Containers for your utter enjoyment.
A collection of popular Algebraic Data Types with the main goal to curate and provide not only a common interface between each type, but also all of the helper functions needed to hit the ground running. -TS.
sanctuary - Refuge from unsafe JavaScript
official site
creed - Sophisticated and functionally-minded async with advanced features: coroutines, promises, ES2015 iterables,…
Hyper performant & full featured like Bluebird, but FP-oriented. Coroutines, generators, promises, ES2015 iterables, & fantasy-land spec.
js-csp - Communicating sequential processes for Javascript (like Clojurescript core.async, or Go)
用于 JavaScript 的顺序通信进程 CSP(如 ClojureScript core.async 或 Go)。
contra - Asynchronous flow control with a functional taste to it
Asynchronous flow control with a functional taste to it.
async - Async utilities for node and the browser
Async utilities for node and the browser.
Sugar - A Javascript library for working with native objects
A JavaScript library for working with native objects.
este - Dev stack and starter kit for functional and universal React web apps
The most complete React/Flux dev stack and starter kit for isomorphic functional web apps.
fantasy-lenses - Composable, immutable getters and setters
Composable, immutable getters and setters. (Profunctor lenses WIP)
fantasy-birds - port of the haskell package Data.Aviary.Birds. Every thing for your combinatory needs
Port of the Haskell package Data.Aviary.Birds. Everything for your combinatory needs.
daggy - Library for creating tagged constructors
Library for creating tagged constructors.
barely-functional - tiny (2.7kb) functional programming library using native es5/6 operations
A tiny (2.7kb) functional programming library using native ES5/6 operations. -TS.
Fluture - A complete Fantasy Land compatible Future library
A Future library with included control utilities, high performance and great error messages.
1-liners - Functional tools that couldn’t be simpler
Functional tools that couldn’t be simpler. A dead simple functional utility belt, hand-crafted with love and attention. -TS.
immutable-ext - fantasyland extensions for immutablejs
FantasyLand extensions for Immutable.js.
optics - This library is an implementation of profunctor optics using JS, heavily influenced by the PureScript…
Profunctor optics (Lens, Prism, iso).
static-land - Specification for common algebraic types in JavaScript based on Fantasy Land
Specification similar to Fantasy Land but based on static methods rather than instance methods.
union-type - A small JavaScript library for defining and using union types
A small JavaScript library for defining and using union types.
freeky - Free monad Collection
A collection of Free monads.
imlazy - Functional, declarative, immutable and lazy as you like
Library for creating and manipulating lazy iterables using the ES2015 iteration protocols.
partial.lenses - Partial lenses is a comprehensive, high-performance optics library for JavaScript
Partial lenses is a comprehensive, high-performance optics library for JavaScript.
ramda-lens - Lens library built on ramda
ram: :mag_right: Lens library built on Ramda.
lenses - Composable kmett style lenses
Composable kmett style lenses.
purify - Functional programming library for TypeScript focusing on ADTs
Functional programming library for TypeScript focusing on ADTs. +CT, +TS.
Libraries >Livescript
Libraries >Java
Frege - is a Haskell for the JVM. It brings purely functional programing to the Java platform.
Pure functional programming language in the spirit of Haskell.
functionaljava - Functional programming in Java
Functional Java is an open source library facilitating functional programming in Java. The library implements numerous basic and advanced programming abstractions that assist composition oriented development. Functional Java also serves as a platform for learning functional programming concepts by…
Jinq - LINQ-style queries for Java 8
🔴Typesafe database queries via symbolic execution of Java 8 Lambdas (on top of JPA or jOOQ).
Libraries >Clojure/ClojureScript
Libraries >ClojureScript
re-frame - A Reagent Framework For Writing SPAs, in Clojurescript
Badges, logo, TOC, etc. Stands out by being a giant, well-written essay about the tech, how to use it, the philosophy behind it, and how it fits into the greater ecosystem.
Libraries >Scala
scalaz - An extension to the core Scala library for functional programming
Type classes and instances for data structures.
Libraries >Kotlin
funKTionale - Functional constructs for Kotlin
Functional constructs for Kotlin
Libraries >F#
FSharpx.Extras - Functional programming and other utilities
A collection of libraries and tools for use with F#.
Juniper - FRP (Functional Reactive Programming) for the Arduino and other microcontrollers
Functional Reactive Programming for the Arduino and other microcontrollers.
Libraries >C#
language-ext - C# functional language extensions and 'Erlang like' concurrency system
C# functional language extensions and 'Erlang like' concurrency system.
Libraries >Swift
Swiftz - Functional programming in Swift
Functional programming in Swift.
LlamaKit - Collection of must-have functional Swift tools
Collection of must-have functional Swift tools.
Prelude - Swift µframework of simple functional programming tools
Swift µframework of simple functional programming tools.
Swiftx - Functional data types and functions for any project
Functional data types and functions for any project.
Concurrent - Functional Concurrency Primitives
Functional Concurrency Primitives.
Argo - Functional JSON parsing library for Swift
JSON parsing library for Swift, inspired by Aeson.
SwiftSequence - A μframework of extensions for SequenceType in Swift 2.0, inspired by Python's itertools, Haskell's…
A μframework of extensions for SequenceType in Swift 2.0, inspired by Python's itertools, Haskell's standard library, and other things.
Libraries >Python
fn.py - Functional programming in Python: implementation of missing features to enjoy FP
"Functional programming in Python: implementation of missing features to enjoy FP" (unmaintained since 2014). Unmaintained fork.
funcy - A fancy and practical functional tools
"A fancy and practical functional tools".
toolz - A functional standard library for Python
A collection of functional utilities for iterators, functions, and dictionaries. Also available as cytoolz for Cython-accelerated performance.
pyMonet - High abstract library for functional programming. Contains algebraic data structures known from Haskell or…
"High abstract python library for functional programming. Contains algebraic data structures known from Haskell or Scala".
Libraries >PHP
Libraries >Rust
Libraries >Julia
Libraries >Go
go-linq - .NET LINQ-like query methods for Go
.NET LINQ-like query methods for Go.
Libraries >Haskell
ghcvm - A Haskell to JVM compiler that supports GHC Haskell
A Haskell to JVM compiler that supports GHC Haskell.
Libraries >Erlang
Libraries >OCaml
Libraries >Racket
Languages
Lean
Lean is a functional programming language that makes it easy to write correct and maintainable code.
Pyret
A programming language designed to serve as an outstanding choice for programming education while exploring the confluence of scripting and functional programming
Ela
A dynamic functional language
Eta
A powerful language for building scalable systems on the JVM
Koka
A function-oriented language with effect inference
Ditto
A super kawaii dependently typed language for you!
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
Agda
A dependently typed functional programming 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
Related lists in Miscellaneous
See categoryAwesome OpenClaw Skills
VoltAgent/awesome-openclaw-skills
The awesome collection of OpenClaw skills. 5,400+ skills filtered and categorized from the official OpenClaw Skills Registry.🦞
Awesome DeepSeek Harness (DSH) Plugin
awesome-dsh-plugin/awesome-dsh-plugin
A curated list of plugins for DeepSeek Harness (dsh) · DeepSeek Harness 插件精选列表
Awesome Guidelines
Kristories/awesome-guidelines
Programming style, best practices, and coding conventions.
Awesome
sindresorhus/awesome
😎 Awesome lists about all kinds of interesting topics [NOTE: Pull requests are temporarily disabled until I have a chance to catch up with the existing ones]
Awesome Prompts
ai-boost/awesome-prompts
Curated list of chatgpt prompts from the top-rated GPTs in the GPTs Store. Prompt Engineering, prompt attack & prompt protect. Advanced Prompt Engineering papers.
Awesome README
matiassingers/awesome-readme
A curated list of awesome READMEs