Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
awesome-functional-programming
Yet another resource for collecting articles, videos etc. regarding functional programming
https://github.com/eric-erki/awesome-functional-programming
Last synced: about 21 hours ago
JSON representation
-
Libraries
-
[Livescript](https://github.com/gkz/LiveScript)
-
[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
-
[C#](https://github.com/dotnet/roslyn)
-
[Swift](https://developer.apple.com/swift)
- **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
- **Swiftz** - Functional programming in Swift
- **LlamaKit** - Collection of must-have functional Swift tools
- **Swiftx** - Functional data types and functions for any project
- **Concurrent** - Functional Concurrency Primitives
- **Argo** - Functional JSON parsing library for Swift
- **Interstellar** - Simple and lightweight Functional Reactive Coding in Swift for the rest of us
- **Funky** - Functional programming tools and experiments in Swift
- **Functional** - A functional programming framework for Swift
- **Prelude** - Swift µframework of simple functional programming tools
-
[Python](https://www.python.org/)
-
[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
-
-
Tutorials and Articles
-
- Part 1: An Intro to Functional Programming Concepts in JavaScript
- 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
- How to Speed Up Lo-Dash ×100? Introducing Lazy Evaluation
- 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
- Partial Application in JavaScript
- Point-free programming style in F#
- Lazy, composable, and modular JavaScript
- 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
- Functional Programming for JavaScript People
- How Do I Learn Functional Programming In Javascript? - Linkpost
- 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
- Swift closures and functions
- 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
- Fold (higher-order function)
- 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
- Tuples in JavaScript
- 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
- Composing Functions in JavaScript
- Forcing Function Arity in JavaScript
- Wrapping JavaScript Functions
- The Philosophy of Ramda
- Functional programming with Javascript
- Immutable.js: The True Joy of JavaScript
- Functional Programming should be your #1 priority for 2015 — OOP cannot save us from the Cloud Monster anymore.
-
[Lenses]()
- JavaScript through the Lenses of Functional Programming
- Lenses and Virtual DOM Support Open Closed
- JavaScript through the Lenses of Functional Programming
- 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
- 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
- Линзы: Real World
-
[Monads](https://en.wikipedia.org/wiki/Monad_(functional_programming))
- 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
- 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 Marvels of Monads
- The Mother of all Monads
- Understanding Monads With JavaScript
- Monads in 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
- The Dead Simple, No Chit Chat, Zero-Analogy Haskell Monad Tutorial
- Understanding Monads
- Утилиты работы с монадами
- Монады в Javascript
-
[Purescript](http://www.purescript.org)
- Purescript will make you purr like a kitten
- PureScript + React + Electron
- Getting started in PureScript (Part 1)
- Getting Started with Purescript for Web Development
- Parsing complex foreign objects in PureScript
- Row span with PureScript pux and JavaScript redux
- Make the Leap from JavaScript to PureScript
- 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
- Building Apps with PureScript and React
- Frontend Functional Programming with PureScript and Elm
- Writing PureScript Bindings for a jQuery Plugin
- PureScript — An Intro for JavaScript Hackers
-
[Elm](http://elm-lang.org)
- Understanding Signal.forwardTo
- Learning FP the hard way: Experiences on the Elm language
- Architecture in Elm
- Switching from imperative to functional programming with games in Elm
- Introduction to ML in Elm
- Getting Started with 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
-
-
Books
-
[Elm](http://elm-lang.org)
- 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
- 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
-
-
Resources
-
[Elm](http://elm-lang.org)
- 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
- 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
- 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
- A curated list of awesome functional programming stuff in js
- 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#
- Luna. Visual and textual functional programming language with a focus on productivity, collaboration and development ergonomics
- Введение в функциональное программирование на скале
- Awesome Haskell
-
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
-
-
Videos
-
Combinators
- Lambda Jam 2014 - Eric Meijer - The Lost Art of Denotational Semantics
- SKI School: The Combinator Calculus Demystified
- Erik Meijer - Functional Programming From First Principles
- Functional programming patterns for the non-mathematician (cut)
- 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
- Learning Functional Programming with JavaScript by Anjana Vakil at JSUnconf 2016
- Elm in Purescript
- Functional JS - Lenses - JavaScript
- "Point-Free or Die: Tacit Programming in Haskell and Beyond" by Amar Shah
- 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
- Classroom Coding with Prof. Frisby
- 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
- Pure Functional Database Programming with Fixpoint Types—Rob Norris
-
-
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
-
-
Awesome
-
[Elm](http://elm-lang.org)
-
-
Languages
Categories
Sub Categories
[Elm](http://elm-lang.org)
92
Combinators
70
[Monads](https://en.wikipedia.org/wiki/Monad_(functional_programming))
35
[Lenses]()
19
[Purescript](http://www.purescript.org)
16
[Go](https://github.com/golang/go)
10
[Swift](https://developer.apple.com/swift)
10
[Javascript](https://developer.mozilla.org/en-US/docs/Web/JavaScript)
6
[Racket](https://racket-lang.org/)
2
[Livescript](https://github.com/gkz/LiveScript)
2
[C#](https://github.com/dotnet/roslyn)
1
[Python](https://www.python.org/)
1