awesome-functional-python
by sfermigier
A curated list of awesome things related to functional programming in Python.
AI summary
Functional reference
A curated list of resources and references related to functional programming in Python.
- stars
- 2.3K
- forks
- 137
- watching
- 77
- awesome list
- 1
- entries
- 107
What's in the list
107 links in 6 sections, with live GitHub stats.activeno commit in 2y
Official documentation
- Functional Programming HOWTO
"In this document, we’ll take a tour of Python’s features suitable for implementing programs in a functional style"
Books
- Functional Programming in Python
Book by David Mertz (O'Reilly)
- Functional Python Programming
Book by Steve Lott (Packtpub, 2015)
Talks
- slides
Functional Programming with Python ( ) - Alexey Kachayev, UA PYCon 2012
- slides
Purely Functional Programming in Python: Pure Fun ( ) - Christopher Armstrong, PyTenessee 2015
- video
Side Effects are a Public API ( ) - Christopher Armstrong, Strangeloop 2015
- video
Functional Programming with Python ( ) - Mike Müller, PyCon US 2013
- video
Using Functional Programming for efficient Data Processing and Analysis ( ) - Reuben Cummings, PyCon US 2017
- slides
Immutable Programming Writing Functional Python ( , ), Calen Pennington, PyCon 2017
- Slides
Functional Programming inside OOP? It’s possible with Python ( ) - Carlos Villavicencio, EuroPython 2021
- Slides
A Hitchhiker’s Guide to functools ( ) - Scott Irwin, EuroPython 2021
- Video
Writing Functional Code in Python ( ) - Vic Kumar, PyCon 2022
- video
Functionalish programming in Python with effect ( ), Robert Collins, NZ PyCon 2015
- slides
Monadic Parsing in Python ( ), Alexey Kachayev, KyivPy 2014
- slides
Immutability and Python - Introducing Pyrsistent ( ), Tobias Gustafsson, 2014
- slides
Understanding Transducers ( , ), Austin Bingham, PyCon Belarus 2015
- video
Functional Performance with Core Data Structures ( ), Matthew Rocklin, PyData SV 2014
- video
Old School - Functional Data Analysis ( ), Matthew Rocklin, PyData NYC 2013
- video
Learning Data Science Using Functional Python ( , ), Joel Grus, PyData Seattle 2015
Other resources
- Functional Programming with Python
by Christopher Armstrong, O'Reilly
- Functional Programming in 7 days
by Mohammed Kashif, Udemy
- Functional Programming in Python
by Dan Bader, Real Python
- Origins of Python's "Functional" Features
, Guido Van Rossum, 2009
- A practical introduction to functional programming
(with examples in Python), by Mary Rose Cook (year unknown)
- Immutable data structures in Python
, Robert Rees, 2014
- Understanding Transducers through Python
, by Robert Smallshire. "In this 8 parts series we take an in-depth look at transducers. Transducers – a portmanteau of ‘transform reducers’ – are a new functional programming concept introduced into the Clojure programming language."
- Thinking Functionally with Python and Django at eShares Inc.
, Kyle Hanson, 2017
- Simple dependent types in Python
Nikita Sobolev, 2019
- Python exceptions considered an anti-pattern
, Nikita Sobolev, 2019
- Enforcing Single Responsibility Principle in Python
Nikita Sobolev, 2019
- Typed functional Dependency Injection in Python
Nikita Sobolev, 2020
- Typeclasses in Python
N. Sobolev, 2021
- Tail Recursion Elimination
Guido van Rossum, 2009
- Final Words on Tail Calls
Guido van Rossum, 2009
- The fate of reduce() in Python 3000
Guido van Rossum, 2005
- Best Practices for Using Functional Programming in Python
Kite Blog, 2018
- Why we need a Python functional programming initiative: a manifesto
(Dead initiative) - Leftfile 2023
- Practical Functional Reactive Programming
(PDF), John Peterson, Ken Roe, and Alan Cleary, 2014
- Python Generators
, Samuel Lampa, From talk at PySthlm meetup, Oct 2013
Libraries
toolz
★4702 - "A functional standard library for Python"
more-itertools
★3734 - "More routines for operating on iterables, beyond itertools"
funcy
★3376 - "A fancy and practical functional tools"
fn.py
★3352 - "Functional programming in Python: implementation of missing features to enjoy FP" (unmaintained since 2014).
PyFunctional
★2402 - "Python library for functional programming with collections in a data pipeline style"
Pipe
★1951 - "A Python library to use infix notation in Python"
Pydash
★1326 - "The kitchen sink of Python utility libraries for doing "stuff" in a functional way. Based on the Lo-Dash Javascript library"
hask
★860 - "Haskell language features and standard libraries in pure Python"
OSlash
★715 - "Functors, Applicatives, And Monads in Python"
Expression
★493 - "Pragmatic functional programming for Python inspired by F#". Successor of OSlash
Effect
★372 - "Effect isolation in Python, to facilitate more purely functional code"
Underscore.py
★291 - "A Python port of excellent javascript library underscore.js"
fnc
★256 - "Functional programming in Python with generators and other utilities"
PyMonad
★197 - "a small library implementing monads and related data abstractions -- functors, applicative functors, and monoids -- for use in implementing functional style programs"
Flupy
★193 - Implements a fluent interface for operating on python iterables
pfun
★150 - "Pure functional programming in python"
Phi
★134 - "A library that intends to remove as much of the pain as possible from your functional programming experience in Python."
pyramda
★127 - "Python package supporting heavy functional programming through currying. Translation of the Ramda library from javascript to python"
unpythonic
★91 - "Supercharge your Python with parts of Lisp and Haskell."
ziopy
★76 - "ZIO for Python (with ZIO = A type-safe, composable library for async and concurrent programming in Scala)"
pyMonet
★34 - "High abstract python library for functional programming. Contains algebraic data structures known from Haskell or Scala"
Compose
★32 - The classic compose, with all the Pythonic features
pyeffects
★31 - "Handle side-effects in Python like a boss. Implements functional types for Either, Option, Try, and Future."
Iterpy
★10 - map, filter etc. as methods on a sequence
returns
★3572 - "Make your functions return something meaningful, typed, and safe!"
result
★1581 - A simple Rust like Result type for Python 3. Fully type annotated
Option
★85 - Rust-like Option and Result types in Python
Meiga
★76 - A simple, typed and monad-based Result type for Python
maybe
★64 - A simple Rust like Maybe type for Python 3. Fully type annotated
Safetywrap
★44 - Fully typesafe, Rust-like Result and Option types for Python
Pyrsistent
★2028 - "Persistent/Immutable/Functional data structures for Python"
Immutables
★1132 - "An immutable mapping type for Python."
Discodb
★99 - "An efficient, immutable, persistent mapping object"
Funktown
★75 - "Immutable Data Structures for Python"
Amino
★35 - "functional data structures and type classes"
- Pysistence
"Pysistence is a project that seeks to make functional programming in python easier"
pampy
★3516 - "Pampy: The Pattern Matching for Python you always dreamed of."
python-pattern-matching
★162 - "Python pattern matching like functional languages."
patmat
★29 - "Functional-style recursive pattern matching in Python. Crazy stuff."
apm
★107 - "Pattern Matching for Python 3.8+ in a simple, yet powerful, extensible manner."
Tranducers-Python
★201 - "Transducers are composable algorithmic transformations"
Transducers
★55 - "This is a port of the transducer concept from Clojure to Python, with an emphasis on providing as Pythonic as interpretation of transducers as possible, rather than reproducing Clojurisms more literally"
RxPy
★4790 - "Reactive Extensions for Python"
broqer
★74 - "Library to operate with continuous streams of data in a reactive style"
sodium-python
★4 - "Python implementation of Sodium - Functional Reactive Programming (FRP) Library"
Glom
★1914 - "Python's nested data operator (and CLI), for all your declarative restructuring needs."
python-lenses
★310 - "A python lens library for manipulating deeply nested immutable structures"
deal
★743 - "Design by contract for Python with many validators support."
classes
★667 - "Smart, pythonic, ad-hoc, typed polymorphism for Python."
chainable
★193 - "Method chaining built on generators"
ADT
★172 - Algebraic data types for Python
sumtypes
★42 - "Sum Types, aka Tagged Unions, for Python"
python-mini-lambda
★14 - "Simple Lambda functions without lambda x: and with string conversion capability"
slist
★12 - "A drop-in replacement for the python mutable list. But with much more methods for typesafe method chaining."
Orinoco
★11 - "Functional composable pipelines allowing clean separation of the business logic and its implementation"
py-frm
★1 - "Proof-of-concept Functional-Relational Mapping (FRM) for Python"
Languages
Hy
★5134 - "A dialect of Lisp that's embedded in Python"
Coconut
★4091 - "Simple, elegant, Pythonic functional programming"
Basilisp
★279 - "A Clojure-compatible(-ish) Lisp dialect targeting Python 3.8+"
pixie
★2347 - "A lightweight and native lisp built in RPython". ( )
Mochi
★915 - "A dynamically typed programming language for functional programming and actor-style programming."
dg (aka dogelang)
★577 - "A programming language that compiles to CPython bytecode, much like Scala compiles to JVM's. That essentially means that dg is an alternative syntax for Python 3."
Pycket
★258 - "A rudimentary Racket implementation using RPython"
Tydy
★52 - "Tydy is a statically typed, functional-first programming language in the ML tradition. tydy is an implementation of Tydy as a Python library."
Arza
★5 - "Arza is a functional programming language that compiles to Python. It is a statically typed language with type inference and type classes."
- (How to Write a (Lisp) Interpreter (in Python))
and - a couple of famous articles by Peter Norvig
Nothing in this list matches your filter.
Featured in 1 awesome list
Each link jumps to the spot where the list mentions awesome-functional-python.