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: 12 months 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,726 | 11 months ago | ★4702 - "A functional standard library for Python" |
| more-itertools | 3,758 | 11 months ago | ★3734 - "More routines for operating on iterables, beyond itertools" |
| funcy | 3,392 | about 1 year ago | ★3376 - "A fancy and practical functional tools" |
| fn.py | 3,352 | about 3 years ago | ★3352 - "Functional programming in Python: implementation of missing features to enjoy FP" (unmaintained since 2014). |
| PyFunctional | 2,407 | over 1 year ago | ★2402 - "Python library for functional programming with collections in a data pipeline style" |
| Pipe | 1,965 | over 1 year ago | ★1951 - "A Python library to use infix notation in Python" |
| Pydash | 1,341 | 12 months ago | ★1326 - "The kitchen sink of Python utility libraries for doing "stuff" in a functional way. Based on the Lo-Dash Javascript library" |
| hask | 862 | about 7 years ago | ★860 - "Haskell language features and standard libraries in pure Python" |
| OSlash | 720 | over 1 year ago | ★715 - "Functors, Applicatives, And Monads in Python" |
| Expression | 535 | 12 months ago | ★493 - "Pragmatic functional programming for Python inspired by F#". Successor of OSlash |
| Effect | 372 | over 3 years ago | ★372 - "Effect isolation in Python, to facilitate more purely functional code" |
| Underscore.py | 291 | almost 3 years ago | ★291 - "A Python port of excellent javascript library underscore.js" |
| fnc | 258 | about 2 years ago | ★256 - "Functional programming in Python with generators and other utilities" |
| PyMonad | 199 | over 1 year 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 | about 1 year ago | ★193 - Implements a fluent interface for operating on python iterables |
| pfun | 150 | almost 2 years ago | ★150 - "Pure functional programming in python" |
| Phi | 134 | about 7 years ago | ★134 - "A library that intends to remove as much of the pain as possible from your functional programming experience in Python." |
| pyramda | 126 | about 5 years ago | ★127 - "Python package supporting heavy functional programming through currying. Translation of the Ramda library from javascript to python" |
| unpythonic | 92 | about 1 year ago | ★91 - "Supercharge your Python with parts of Lisp and Haskell." |
| ziopy | 82 | almost 2 years ago | ★76 - "ZIO for Python (with ZIO = A type-safe, composable library for async and concurrent programming in Scala)" |
| pyMonet | 34 | over 5 years ago | ★34 - "High abstract python library for functional programming. Contains algebraic data structures known from Haskell or Scala" |
| Compose | 33 | about 1 year ago | ★32 - The classic compose, with all the Pythonic features |
| pyeffects | 31 | over 1 year ago | ★31 - "Handle side-effects in Python like a boss. Implements functional types for Either, Option, Try, and Future." |
| Iterpy | 11 | 10 months ago | ★10 - map, filter etc. as methods on a sequence |
| returns | 3,687 | 10 months ago | ★3572 - "Make your functions return something meaningful, typed, and safe!" |
| result | 1,625 | about 1 year ago | ★1581 - A simple Rust like Result type for Python 3. Fully type annotated |
| Option | 85 | almost 2 years ago | ★85 - Rust-like Option and Result types in Python |
| Meiga | 76 | about 1 year ago | ★76 - A simple, typed and monad-based Result type for Python |
| maybe | 71 | 11 months ago | ★64 - A simple Rust like Maybe type for Python 3. Fully type annotated |
| Safetywrap | 44 | about 5 years ago | ★44 - Fully typesafe, Rust-like Result and Option types for Python |
| Pyrsistent | 2,039 | over 1 year ago | ★2028 - "Persistent/Immutable/Functional data structures for Python" |
| Immutables | 1,134 | about 1 year ago | ★1132 - "An immutable mapping type for Python." |
| Discodb | 98 | over 6 years ago | ★99 - "An efficient, immutable, persistent mapping object" |
| Funktown | 75 | about 10 years ago | ★75 - "Immutable Data Structures for Python" |
| Amino | 36 | over 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,515 | over 3 years ago | ★3516 - "Pampy: The Pattern Matching for Python you always dreamed of." |
| python-pattern-matching | 162 | over 4 years ago | ★162 - "Python pattern matching like functional languages." |
| patmat | 29 | over 9 years ago | ★29 - "Functional-style recursive pattern matching in Python. Crazy stuff." |
| apm | 107 | over 2 years ago | ★107 - "Pattern Matching for Python 3.8+ in a simple, yet powerful, extensible manner." |
| Tranducers-Python | 201 | over 2 years ago | ★201 - "Transducers are composable algorithmic transformations" |
| Transducers | 55 | over 8 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,819 | 12 months ago | ★4790 - "Reactive Extensions for Python" |
| broqer | 74 | almost 2 years ago | ★74 - "Library to operate with continuous streams of data in a reactive style" |
| sodium-python | 4 | over 2 years ago | ★4 - "Python implementation of Sodium - Functional Reactive Programming (FRP) Library" |
| Glom | 1,920 | 11 months ago | ★1914 - "Python's nested data operator (and CLI), for all your declarative restructuring needs." |
| python-lenses | 316 | almost 2 years ago | ★310 - "A python lens library for manipulating deeply nested immutable structures" |
| deal | 760 | 12 months ago | ★743 - "Design by contract for Python with many validators support." |
| classes | 678 | 11 months ago | ★667 - "Smart, pythonic, ad-hoc, typed polymorphism for Python." |
| chainable | 193 | about 1 year ago | ★193 - "Method chaining built on generators" |
| ADT | 171 | over 4 years ago | ★172 - Algebraic data types for Python |
| sumtypes | 42 | almost 4 years ago | ★42 - "Sum Types, aka Tagged Unions, for Python" |
| python-mini-lambda | 14 | over 5 years ago | ★14 - "Simple Lambda functions without lambda x: and with string conversion capability" |
| slist | 12 | 12 months ago | ★12 - "A drop-in replacement for the python mutable list. But with much more methods for typesafe method chaining." |
| Orinoco | 11 | over 1 year ago | ★11 - "Functional composable pipelines allowing clean separation of the business logic and its implementation" |
| py-frm | 1 | almost 2 years ago | ★1 - "Proof-of-concept Functional-Relational Mapping (FRM) for Python" |
Awesome Functional Python / Languages | |||
| Hy | 5,153 | 12 months ago | ★5134 - "A dialect of Lisp that's embedded in Python" |
| Coconut | 4,114 | 11 months ago | ★4091 - "Simple, elegant, Pythonic functional programming" |
| Basilisp | 301 | 11 months ago | ★279 - "A Clojure-compatible(-ish) Lisp dialect targeting Python 3.8+" |
| pixie | 2,349 | almost 5 years ago | ★2347 - "A lightweight and native lisp built in RPython". ( ) |
| Mochi | 914 | over 9 years ago | ★915 - "A dynamically typed programming language for functional programming and actor-style programming." |
| dg (aka dogelang) | 575 | over 5 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 | 12 months ago | ★258 - "A rudimentary Racket implementation using RPython" |
| Tydy | 52 | almost 7 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 7 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 | ||