Home

Awesome

Functional Programming in C++

List of materials and links about functional programming in C++.

English Materials

Russian Materials

Projects

Misc


English Materials

Books

Articles

Basics

Monads

Design Concepts and Approaches

Papers

Blogs

Talks and Screencasts

Talks

Screencasts

Cources

QA

StackOverflow Questions

Quora Questions


Russian Materials

Articles (Rus)

Basics (Rus)

Monads (Rus)

Design Concepts and Approaches (Rus)

Talks and Screencasts (Rus)

Talks (Rus)


Projects

Libraries

LibraryDescriptionAuthor
Boost.HanaBoost.Hana is a library with concepts borrowed from category theory?
optionalC++11/14/17 std::optional with functional-style extensions and reference supportSimon Brand
expectedC++11/14/17 std::expected with functional-style extensionsSimon Brand
FTLC++ template library for fans of functional programmingbeark
LIBF++C++ as a Pure Functional Programming LanguageGJDuck
ImmerPostmodern immutable and persistent data structures for C++Juan Pedro Bolívar Puente
LagerLibrary for functional interactive C++ programs // Redux for C++Juan Pedro Bolívar Puente
cpp_stm_freeComposable monadic STM for C++ on Free monadsAlexander Granin
CatCat: C++14/17 functional libraryNicola Bonelli
neitherA functional implementation of Either in C++14.LoopPerfect
FunctionalPlusFunctional Programming Library for C++. Write concise and readable C++ code.Tobias Hermann
Immutable++Persistent immutable data structures providing practically O(1) for appends, updates and lookups based on work by Rich Hickey and by consequence Phil Bagwell.Rasmus Andersson
OkasakiFunctional data structures in C++Bartosz Milewski
AsyncroMonadic FuturesDennis Kormalev
Cefal(Concepts-enabled) Functional Abstraction Layer for C++Dennis Kormalev

Showcase Projects

ProjectDescriptionAuthor
EwigA mini-emacs built using C++ in a functional way, using the Redux architecture. Supports efficiently editing huge file and concurrent loading/savingJuan Pedro Bolívar Puente
AmberThe 'Amber' game project demonstranting functional and declarative design in C++.Alexander Granin
cpp_lensesFunctional lenses demo in C++Alexander Granin
CMLifeFunctional Game of Life in C++. Based on functional declarative design and functional idioms (comonads, zippers etc.)Alexander Granin
coroutine_monadUsing coroutines for monadic compositionToby Allsopp
Monadic parsing in C++Monadic parsersScott Prager
monad_doEmulation of DO syntax sugar for monads in C++Evgeny Panasyuk
kari.hppExperimental library for currying in C++14Matvey Cherevko
Lambda.cppLambdas PoC implementationMatthew Might
Knuth's arrow notationImplemented in two variants: constexpr functions and templatesAlexander Granin
Constexpr monadic parsers ("Constexpr all the things")See also the talk "Constexpr all the things".Ben Deane, Jason Turner
cpp_parsec_freeMonadic parsers (based on Free monads)Alexander Granin

Misc

C++ FP Experts

The list of authors of the materials presented here, listed alphabetically. (Some authors can be missing by occasion).

Please, pm me if you don't want to be in this list. Or if you want to be there.