summaryrefslogtreecommitdiffstats
path: root/content/posts/it-doesnt-mean-that/index.md
blob: 0fb29887d91a24a8370bd162442a1406b8eb0857 (plain)
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
---
title: It doesn't mean that
date: 2024-05-16
---

<img src="wikimedia_monad.svg" alt="A plain circle with a small dot in the center" style="max-height: 200px; margin-bottom: 0px" />

## When I learned my first programming language

I learned about functions.

A _function_ is a thing you can call. The function might then _return_ a value.

## Then I learned about functional programming

And learned that those words did not mean that at all. Or at least that was not their full, universal meaning.

Those _functions_ were actually _procedures_. Or _subroutines_. A function should be mathematical and pure. A mapping from a type to another.

_Returning_ was not optional. All functions return, explicitly or implicitly, since function application must be assigned a value.

I learned new words too.

_Functors_ are containers. _Monads_ are powered-up functors with useful computational context.

## Now that I’m learning about category theory…

…I’m learning that those words do not mean what I thought they meant, either.

_Functions_ are apparently morphisms, or arrows, in the category of types. _Functors_ are not containers, they are morphisms between categories. They are also their own category.

_Monads_ are — I haven’t gotten to monads yet.

## I read that they have a Monad in philosophy

And it means _god_. [¹](it-doesnt-mean-that#fn1)

---

1. <a href="https://en.wikipedia.org/wiki/Monad_(philosophy)" id="fn1">More or less.</a>