awesome-functional-python
A curated list of awesome things related to functional programming in Python.
https://github.com/sfermigier/awesome-functional-python
Last synced: 1 day ago
JSON representation
-
Awesome Functional Python
-
Books
- Functional Python Programming - Book by Steve Lott (Packtpub, 2015).
- Functional Python Programming - Book by Steve Lott (Packtpub, 2015).
- Functional Python Programming - Book by Steve Lott (Packtpub, 2015).
-
Talks
- slides - Alexey Kachayev, UA PYCon 2012.
- slides - Christopher Armstrong, PyTenessee 2015.
- slides
- video - Mike Müller, PyCon US 2013.
- slides
- video - Reuben Cummings, PyCon US 2017.
- slides
- Slides - Carlos Villavicencio, EuroPython 2021.
- Slides - Scott Irwin, EuroPython 2021.
- Video - Vic Kumar, PyCon 2022
- video
- slides
- video
- video
- video - pcIkk4S7JiDmeXGCyyGhCs)), Joel Grus, PyData Seattle 2015.
- slides - Alexey Kachayev, UA PYCon 2012.
- video - Christopher Armstrong, Strangeloop 2015
-
Other resources
- Functional Programming with Python - by Christopher Armstrong, O'Reilly.
- Origins of Python's "Functional" Features
- Thinking Functionally with Python and Django at eShares Inc.
- 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
- Why we need a Python functional programming initiative: a manifesto - Leftfile 2023
- Practical Functional Reactive Programming
- Python Generators
- Functools — The Power of Higher-Order Functions in Python - M. Heinz, 2021
- Functools — The Power of Higher-Order Functions in Python - M. Heinz, 2021
- Functools — The Power of Higher-Order Functions in Python - M. Heinz, 2021
- Functools — The Power of Higher-Order Functions in Python - M. Heinz, 2021
- Functools — The Power of Higher-Order Functions in Python - M. Heinz, 2021
- Functools — The Power of Higher-Order Functions in Python - M. Heinz, 2021
- Functools — The Power of Higher-Order Functions in Python - M. Heinz, 2021
- Functools — The Power of Higher-Order Functions in Python - M. Heinz, 2021
- Functools — The Power of Higher-Order Functions in Python - M. Heinz, 2021
- Functools — The Power of Higher-Order Functions in Python - M. Heinz, 2021
- Functools — The Power of Higher-Order Functions in Python - M. Heinz, 2021
- Functools — The Power of Higher-Order Functions in Python - M. Heinz, 2021
- Typed functional Dependency Injection in Python - Nikita Sobolev, 2020.
- Functools — The Power of Higher-Order Functions in Python - M. Heinz, 2021
- Best Practices for Using Functional Programming in Python - Kite Blog, 2018.
- Functools — The Power of Higher-Order Functions in Python - M. Heinz, 2021
- Functools — The Power of Higher-Order Functions in Python - M. Heinz, 2021
- Functools — The Power of Higher-Order Functions in Python - M. Heinz, 2021
- Functools — The Power of Higher-Order Functions in Python - M. Heinz, 2021
- Immutable data structures in Python
- Understanding Transducers through Python - depth look at transducers. Transducers – a portmanteau of ‘transform reducers’ – are a new functional programming concept introduced into the Clojure programming language."
- 4 Part Series on Functional Programming Techniques and Design In Python
- 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
- Why we need a Python functional programming initiative: a manifesto - Leftfile 2023
- Functools — The Power of Higher-Order Functions in Python - M. Heinz, 2021
- Functools — The Power of Higher-Order Functions in Python - M. Heinz, 2021
- Functools — The Power of Higher-Order Functions in Python - M. Heinz, 2021
- Functools — The Power of Higher-Order Functions in Python - M. Heinz, 2021
- Functools — The Power of Higher-Order Functions in Python - M. Heinz, 2021
- Functools — The Power of Higher-Order Functions in Python - M. Heinz, 2021
- Functools — The Power of Higher-Order Functions in Python - M. Heinz, 2021
- Functools — The Power of Higher-Order Functions in Python - M. Heinz, 2021
- Functools — The Power of Higher-Order Functions in Python - M. Heinz, 2021
- Functools — The Power of Higher-Order Functions in Python - M. Heinz, 2021
- Functools — The Power of Higher-Order Functions in Python - M. Heinz, 2021
- Functools — The Power of Higher-Order Functions in Python - M. Heinz, 2021
- Functools — The Power of Higher-Order Functions in Python - M. Heinz, 2021
- Functools — The Power of Higher-Order Functions in Python - M. Heinz, 2021
- Functools — The Power of Higher-Order Functions in Python - M. Heinz, 2021
- Understanding Transducers through Python - depth look at transducers. Transducers – a portmanteau of ‘transform reducers’ – are a new functional programming concept introduced into the Clojure programming language."
- Functools — The Power of Higher-Order Functions in Python - M. Heinz, 2021
- Functools — The Power of Higher-Order Functions in Python - M. Heinz, 2021
- Functools — The Power of Higher-Order Functions in Python - M. Heinz, 2021
- Functools — The Power of Higher-Order Functions in Python - M. Heinz, 2021
- Thinking Functionally with Python and Django at eShares Inc.
- Practical Functional Reactive Programming
- Functional Programming in 7 days - by Mohammed Kashif, Udemy.
- Functional Programming in Python - by Dan Bader, Real Python.
- A practical introduction to functional programming
- Simple dependent types in Python - Nikita Sobolev, 2019.
- Python exceptions considered an anti-pattern
- Enforcing Single Responsibility Principle in Python - Nikita Sobolev, 2019.
- Functional Programming with Python - by Christopher Armstrong, O'Reilly.
-
Libraries
- Python 3.10
- Pydash - "The kitchen sink of Python utility libraries for doing "stuff" in a functional way. Based on the Lo-Dash Javascript library".
- OSlash - "Functors, Applicatives, And Monads in Python".
- Effect - "Effect isolation in Python, to facilitate more purely functional code".
- Underscore.py - "A Python port of excellent javascript library underscore.js".
- Flupy - Implements a fluent interface for operating on python iterables.
- pfun - "Pure functional programming in python".
- Phi - "A library that intends to remove as much of the pain as possible from your functional programming experience in Python."
- pyramda - "Python package supporting heavy functional programming through currying. Translation of the Ramda library from javascript to python".
- ziopy - "ZIO for Python (with ZIO = A type-safe, composable library for async and concurrent programming in Scala)"
- pyMonet - "High abstract python library for functional programming. Contains algebraic data structures known from Haskell or Scala".
- Compose - The classic compose, with all the Pythonic features.
- pyeffects - "Handle side-effects in Python like a boss. Implements functional types for Either, Option, Try, and Future."
- returns - "Make your functions return something meaningful, typed, and safe!"
- Option - Rust-like Option and Result types in Python.
- Meiga - A simple, typed and monad-based Result type for Python.
- maybe - (Unmaintained) A simple Rust like Maybe type for Python 3. Fully type annotated.
- Safetywrap - Fully typesafe, Rust-like Result and Option types for Python.
- Pyrsistent - "Persistent/Immutable/Functional data structures for Python".
- Immutables - "An immutable mapping type for Python."
- Discodb - "An efficient, immutable, persistent mapping object".
- Funktown - "Immutable Data Structures for Python".
- Amino - "functional data structures and type classes".
- Pysistence - "Pysistence is a project that seeks to make functional programming in python easier".
- pampy - "Pampy: The Pattern Matching for Python you always dreamed of."
- patmat - "Functional-style recursive pattern matching in Python. Crazy stuff."
- Transducers - "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 - "Reactive Extensions for Python".
- sodium-python - "Python implementation of Sodium - Functional Reactive Programming (FRP) Library"
- toolz - "A functional standard library for Python".
- funcy - "A fancy and practical functional tools".
- fn.py - "Functional programming in Python: implementation of missing features to enjoy FP" (unmaintained since 2014). [Unmaintained fork](https://github.com/fnpy/fn.py).
- PyFunctional - "Python library for functional programming with collections in a data pipeline style".
- Pipe - "A Python library to use infix notation in Python".
- hask - "Haskell language features and standard libraries in pure Python".
- fnc - "Functional programming in Python with generators and other utilities".
- PyMonad - "a small library implementing monads and related data abstractions -- functors, applicative functors, and monoids -- for use in implementing functional style programs".
- unpythonic - "Supercharge your Python with parts of Lisp and Haskell."
- Iterpy - map, filter etc. as methods on a sequence.
- result - (Unmaintained) A simple Rust like Result type for Python 3. Fully type annotated.
- python-pattern-matching - "Python pattern matching like functional languages."
- apm - "Pattern Matching for Python 3.8+ in a simple, yet powerful, extensible manner."
- Tranducers-Python - "Transducers are composable algorithmic transformations".
- broqer - "Library to operate with continuous streams of data in a reactive style"
- Glom - "Python's nested data operator (and CLI), for all your declarative restructuring needs.".
- python-lenses - "A python lens library for manipulating deeply nested immutable structures".
- classes - "Smart, pythonic, ad-hoc, typed polymorphism for Python."
- ADT - Algebraic data types for Python
- sumtypes - "Sum Types, aka Tagged Unions, for Python".
- python-mini-lambda - "Simple Lambda functions without lambda x: and with string conversion capability"
- slist - "A drop-in replacement for the python mutable list. But with much more methods for typesafe method chaining."
- Orinoco - "Functional composable pipelines allowing clean separation of the business logic and its implementation"
- py-frm - "Proof-of-concept Functional-Relational Mapping (FRM) for Python"
-
Languages
- Hy - "A dialect of Lisp that's embedded in Python".
- Coconut - "Simple, elegant, Pythonic functional programming".
- (How to Write a (Lisp) Interpreter (in Python)) - a couple of famous articles by Peter Norvig.
- Basilisp - "A Clojure-compatible(-ish) Lisp dialect targeting Python 3.8+".
- pixie - "A lightweight and native lisp built in RPython". ([Discussion on HN](https://news.ycombinator.com/item?id=13420092))
- Mochi - "A dynamically typed programming language for functional programming and actor-style programming.".
- Hy - "A dialect of Lisp that's embedded in Python".
- Coconut - "Simple, elegant, Pythonic functional programming".
- Arza - "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)) - a couple of famous articles by Peter Norvig.
- dg (aka dogelang) - "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 - "A rudimentary Racket implementation using RPython".
- More languages that compile to 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".
Categories
Sub Categories
Keywords
python
27
functional-programming
13
python3
12
functional
6
mypy
6
immutable
4
type-safety
4
monads
4
typing
3
result-type
3
result
3
railway-oriented-programming
3
fp
3
utilities
3
immutable-datastructures
3
reactive
2
effects
2
data
2
rust
2
immutable-collections
2
programming-language
2
language
2
compiler
2
pattern-matching
2
option-type
2
mypy-stubs
2
mypy-plugins
2
option
2
pep484
1
optional
1
async
1
asyncio
1
curry
1
currying
1
effect-system
1
immutable-objects
1
python-3
1
static-code-analysis
1
types
1
zio
1
datastructures
1
apis
1
cli
1
data-transformation
1
declarative
1
dictionaries
1
nested-structures
1
frozen
1
hamt
1
lodash
1