awesome-functional-python
Functional reference
A curated list of resources and references related to functional programming in Python.
A curated list of awesome things related to functional programming in Python.
2k stars
77 watching
137 forks
last commit: 15 days ago
Linked from 1 awesome list
awesomefunctional-programmingpython
Awesome Functional Python / 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" | ||
Awesome Functional Python / Books | |||
Functional Programming in Python | Book by David Mertz (O'Reilly) | ||
Functional Python Programming | Book by Steve Lott (Packtpub, 2015) | ||
Awesome Functional Python / 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 | ||
Awesome Functional Python / 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 | ||
4 Part Series on Functional Programming Techniques and Design In Python | M. Kocher, 2019 | ||
Typeclasses in Python | N. Sobolev, 2021 | ||
Functools — The Power of Higher-Order Functions in Python | M. Heinz, 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 | ||
Awesome Functional Python / Libraries | |||
toolz | 4,704 | 20 days ago | ★4702 - "A functional standard library for Python" |
more-itertools | 3,739 | about 1 month ago | ★3734 - "More routines for operating on iterables, beyond itertools" |
funcy | 3,382 | 3 months ago | ★3376 - "A fancy and practical functional tools" |
fn.py | 3,351 | about 2 years ago | ★3352 - "Functional programming in Python: implementation of missing features to enjoy FP" (unmaintained since 2014). |
PyFunctional | 2,403 | 5 months ago | ★2402 - "Python library for functional programming with collections in a data pipeline style" |
Pipe | 1,954 | 5 months ago | ★1951 - "A Python library to use infix notation in Python" |
Pydash | 1,331 | 17 days ago | ★1326 - "The kitchen sink of Python utility libraries for doing "stuff" in a functional way. Based on the Lo-Dash Javascript library" |
hask | 860 | over 6 years ago | ★860 - "Haskell language features and standard libraries in pure Python" |
OSlash | 716 | 7 months ago | ★715 - "Functors, Applicatives, And Monads in Python" |
Expression | 494 | 25 days ago | ★493 - "Pragmatic functional programming for Python inspired by F#". Successor of OSlash |
Effect | 372 | over 2 years ago | ★372 - "Effect isolation in Python, to facilitate more purely functional code" |
Underscore.py | 291 | almost 2 years ago | ★291 - "A Python port of excellent javascript library underscore.js" |
fnc | 256 | about 1 year ago | ★256 - "Functional programming in Python with generators and other utilities" |
PyMonad | 198 | 7 months ago | ★197 - "a small library implementing monads and related data abstractions -- functors, applicative functors, and monoids -- for use in implementing functional style programs" |
Flupy | 193 | 2 months ago | ★193 - Implements a fluent interface for operating on python iterables |
pfun | 151 | about 1 year ago | ★150 - "Pure functional programming in python" |
Phi | 134 | over 6 years ago | ★134 - "A library that intends to remove as much of the pain as possible from your functional programming experience in Python." |
pyramda | 127 | about 4 years ago | ★127 - "Python package supporting heavy functional programming through currying. Translation of the Ramda library from javascript to python" |
unpythonic | 91 | about 2 months ago | ★91 - "Supercharge your Python with parts of Lisp and Haskell." |
ziopy | 82 | about 1 year ago | ★76 - "ZIO for Python (with ZIO = A type-safe, composable library for async and concurrent programming in Scala)" |
pyMonet | 34 | over 4 years ago | ★34 - "High abstract python library for functional programming. Contains algebraic data structures known from Haskell or Scala" |
Compose | 33 | about 2 months ago | ★32 - The classic compose, with all the Pythonic features |
pyeffects | 31 | 4 months ago | ★31 - "Handle side-effects in Python like a boss. Implements functional types for Either, Option, Try, and Future." |
Iterpy | 10 | 3 months ago | ★10 - map, filter etc. as methods on a sequence |
returns | 3,594 | 6 days ago | ★3572 - "Make your functions return something meaningful, typed, and safe!" |
result | 1,597 | 3 months ago | ★1581 - A simple Rust like Result type for Python 3. Fully type annotated |
Option | 85 | 11 months ago | ★85 - Rust-like Option and Result types in Python |
Meiga | 76 | about 1 month ago | ★76 - A simple, typed and monad-based Result type for Python |
maybe | 67 | 3 months ago | ★64 - A simple Rust like Maybe type for Python 3. Fully type annotated |
Safetywrap | 44 | about 4 years ago | ★44 - Fully typesafe, Rust-like Result and Option types for Python |
Pyrsistent | 2,031 | 7 months ago | ★2028 - "Persistent/Immutable/Functional data structures for Python" |
Immutables | 1,135 | about 1 month ago | ★1132 - "An immutable mapping type for Python." |
Discodb | 99 | almost 6 years ago | ★99 - "An efficient, immutable, persistent mapping object" |
Funktown | 75 | about 9 years ago | ★75 - "Immutable Data Structures for Python" |
Amino | 35 | almost 6 years ago | ★35 - "functional data structures and type classes" |
Pysistence | "Pysistence is a project that seeks to make functional programming in python easier" | ||
pampy | 3,516 | over 2 years ago | ★3516 - "Pampy: The Pattern Matching for Python you always dreamed of." |
python-pattern-matching | 162 | almost 4 years ago | ★162 - "Python pattern matching like functional languages." |
patmat | 29 | over 8 years ago | ★29 - "Functional-style recursive pattern matching in Python. Crazy stuff." |
apm | 107 | over 1 year ago | ★107 - "Pattern Matching for Python 3.8+ in a simple, yet powerful, extensible manner." |
Tranducers-Python | 201 | over 1 year ago | ★201 - "Transducers are composable algorithmic transformations" |
Transducers | 55 | over 7 years ago | ★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 | 4,801 | 14 days ago | ★4790 - "Reactive Extensions for Python" |
broqer | 74 | 10 months ago | ★74 - "Library to operate with continuous streams of data in a reactive style" |
sodium-python | 4 | over 1 year ago | ★4 - "Python implementation of Sodium - Functional Reactive Programming (FRP) Library" |
Glom | 1,917 | 18 days ago | ★1914 - "Python's nested data operator (and CLI), for all your declarative restructuring needs." |
python-lenses | 311 | about 1 year ago | ★310 - "A python lens library for manipulating deeply nested immutable structures" |
deal | 754 | 13 days ago | ★743 - "Design by contract for Python with many validators support." |
classes | 670 | about 2 months ago | ★667 - "Smart, pythonic, ad-hoc, typed polymorphism for Python." |
chainable | 193 | 2 months ago | ★193 - "Method chaining built on generators" |
ADT | 172 | over 3 years ago | ★172 - Algebraic data types for Python |
sumtypes | 42 | almost 3 years ago | ★42 - "Sum Types, aka Tagged Unions, for Python" |
python-mini-lambda | 14 | over 4 years ago | ★14 - "Simple Lambda functions without lambda x: and with string conversion capability" |
slist | 12 | 25 days ago | ★12 - "A drop-in replacement for the python mutable list. But with much more methods for typesafe method chaining." |
Orinoco | 11 | 6 months ago | ★11 - "Functional composable pipelines allowing clean separation of the business logic and its implementation" |
py-frm | 1 | 12 months ago | ★1 - "Proof-of-concept Functional-Relational Mapping (FRM) for Python" |
Awesome Functional Python / Languages | |||
Hy | 5,143 | 24 days ago | ★5134 - "A dialect of Lisp that's embedded in Python" |
Coconut | 4,098 | 8 days ago | ★4091 - "Simple, elegant, Pythonic functional programming" |
Basilisp | 286 | 8 days ago | ★279 - "A Clojure-compatible(-ish) Lisp dialect targeting Python 3.8+" |
pixie | 2,349 | about 4 years ago | ★2347 - "A lightweight and native lisp built in RPython". ( ) |
Mochi | 915 | over 8 years ago | ★915 - "A dynamically typed programming language for functional programming and actor-style programming." |
dg (aka dogelang) | 576 | over 4 years ago | ★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 | 16 days ago | ★258 - "A rudimentary Racket implementation using RPython" |
Tydy | 52 | about 6 years ago | ★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 | over 6 years ago | ★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 |