--- title: It doesn't mean that date: 2024-03-31 extra: kind: note --- A plain circle with a small dot in the center ## 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.