blob: adf171f7a38dd5f5716af4a63899c328c93b9c64 (
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
41
42
|
---
title: It doesn't mean that
date: 2024-03-31
extra:
kind: note
---
<img src="/files/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>
|