Spaces:
Running
Running
File size: 2,759 Bytes
463e388 8b10f04 463e388 8b10f04 463e388 8b10f04 463e388 8b10f04 463e388 8b10f04 463e388 8b10f04 463e388 8b10f04 463e388 8b10f04 463e388 8b10f04 e3bcacf 8b10f04 463e388 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# Learn Functional Programming
_🚧 This collection is a
[work in progress](https://github.com/marimo-team/learn/issues/51)._
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 or even longer 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).
**Running notebooks.** To run a notebook locally, use
```bash
uvx marimo edit <URL>
```
For example, run the `Functor` tutorial with
```bash
uvx marimo edit https://github.com/marimo-team/learn/blob/main/Functional_programming/05_functors.py
```
You can also open notebooks in our online playground by appending `marimo.app/`
to a notebook's URL:
[marimo.app/github.com/marimo-team/learn/blob/main/functional_programming/05_functors.py](https://marimo.app/https://github.com/marimo-team/learn/blob/main/functional_programming/05_functors.py).
# Description of notebooks
Check [here](https://github.com/marimo-team/learn/issues/51) for current series
structure.
| Notebook | Title | Description | Key Concepts | Prerequisites |
|----------|-------|-------------|--------------|---------------|
| [05. Functors](https://github.com/marimo-team/learn/blob/main/Functional_programming/05_functors.py) | Category and Functors | Learn why `len` is a _Functor_ from `list concatenation` to `integer addition`, how to _lift_ an ordinary function into a _computation context_, and how to write an _adapter_ between two categories. | Categories, Functors, Function lifting, Context mapping | Basic Python, Functions |
| [06. Applicatives](https://github.com/marimo-team/learn/blob/main/Functional_programming/06_applicatives.py) | Applicative programming with effects | Learn how to apply functions within a context, combining multiple effects in a pure way. Learn about the `pure` and `apply` operations that make applicatives powerful for handling multiple computations. | Applicative Functors, Pure, Apply, Effectful programming | Functors |
**Authors.**
Thanks to all our notebook authors!
- [métaboulie](https://github.com/metaboulie)
|