---
title: It doesn't mean that
date: 2024-03-31
extra:
kind: note
---
## 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. More or less.