Skip to content

Functional programming course #51

@ghost

Description

Functional Programming in Python

🚧 This collection is a work in progress.

This series of marimo notebooks introduces the powerful paradigm of functional programming through Python. Taking inspiration from Haskell and Category Theory, we'll build a strong foundation in FP concepts that can transform how you approach software development.

What You'll Learn

Using only Python's standard library, we'll construct functional programming concepts from first principles.

Topics include:

  • Recursion and higher-order functions
  • Category theory fundamentals
  • Functors, applicatives, and monads
  • Composable abstractions for robust code

Timeline & Collaboration

I'm currently studying functional programming and Haskell, estimating about 2 months to complete this series. The structure may evolve as the project develops.

If you're interested in collaborating or have questions, please reach out to me on Discord (@eugene.hs). I welcome contributors who share an interest in bringing functional programming concepts to the Python ecosystem.

Current series structure

Notebook Description Status Author
Functional Programming Fundamentals Core FP principles in Python, comparison with imperative programming, and Haskell-inspired thinking patterns 🚧
Python's Functional Toolkit: functools & itertools Leveraging Python's built-in functional programming utilities, advanced iterator operations, and function transformations 🚧
Recursion and Tail Recursion Recursive problem solving, implementing tail-call optimization in Python, and trampoline techniques to avoid stack overflow 🚧
Higher-Order Functions and Currying Functions as first-class values, composition patterns, and implementing Haskell-style currying in Python 🚧
Category Theory and Functors Introduction to categories, morphisms, functor patterns, and implementing the functor interface and practical use cases 🚧
Applicatives and Effectful Programming Combining independent computations with effects, implementing the applicative interface and practical use cases 🚧
Kleisli Category and Monads Understanding monadic computation, composing impure functions, and implementing basic monads 🚧
Monad Fail, Transformers and Fix Error handling with MonadFail, combining monads with transformers, and handling recursive structures 🚧
Monadic Parsing Building a parser combinator library, implementing recursive descent parsers, and practical text processing 🚧
Semigroups and Monoids Composable operations, algebraic structures, laws, and practical applications for data aggregation 🚧
Foldables and Traversables Abstract folding beyond lists, traversing with effects, and implementing these interfaces for custom data types 🚧
Bifunctors Working with two-parameter type constructors, implementing the bifunctor interface, and practical examples 🚧
Arrows Arrow abstractions beyond monads, implementing the Arrow interface, and creating arrow-based computations 🚧
Comonads Understanding dual concepts to monads, implementing Store and Stream comonads, and practical applications 🚧
Design Patterns in Functional Python Applying FP concepts to solve real-world problems, functional architecture, and testing strategies 🚧

Metadata

Metadata

Assignees

No one assigned

    Labels

    help wantedExtra attention is needed

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions