Awesome Lists

awesome-functional-python

by sfermigier

awesome listpushed almost 2 years ago

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
View on GitHub

Embed the badge

Show how many awesome lists link to your project. The count updates automatically.

Awesome Lists badge
Markdown
[![Awesome Lists Badge](https://awesome.facts.dev/shield/sfermigier/awesome-functional-python/links.svg)](https://awesome.facts.dev/awesome/sfermigier/awesome-functional-python)
HTML
<a href="https://awesome.facts.dev/awesome/sfermigier/awesome-functional-python"><img src="https://awesome.facts.dev/shield/sfermigier/awesome-functional-python/links.svg" alt="Awesome Lists Badge" /></a>
Image URL
https://awesome.facts.dev/shield/sfermigier/awesome-functional-python/links.svg

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

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

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

Add a GitHub project

Missing a project or an awesome list? Paste its GitHub URL and we fetch it right away.