This commit is contained in:
Alexander 2025-06-12 13:23:02 -04:00
parent 3a1da22c36
commit fa2e6c4e08
5 changed files with 22 additions and 4 deletions

View file

@ -41,4 +41,8 @@ end
It turns out that there are multiple ways to implement the derivation functors--- also multiple ways to implement a particular monad ---and they don't all behave the same, which means it's hard to predict whether the more-general, derived implementations are the "natural" ones that you expected to get without _ad hoc_ testing, which obviously rather defeats the point of "free".
[^falsehood]: Unsurprisingly, I lied. You have to buy a `Monad` first.
On the other hand, the derivations here can be performed pretty mechanically, with little insight, by following the types in much the same way one might mechanically prove a simple proposition. So it _is_ a relatively low-effort and low-investment activity.
TODO: explain functors and `with type`.
[^falsehood]: Unsurprisingly, that's a lie. You have to buy a `Monad` first.

View file

@ -42,7 +42,7 @@ Let us finally now consider `bind`. `bind` is the driving force behind monads, p
[^physical]: Of course, we say that `list` _simulates_ nondeterminism for the same reason that we say physical computers simulate turning machines: both are constrained by the resource limitations of physical reality and thus strictly weaker than the theoretical devices they seem to emulate.
[^choice]: A "choice" is between two or more options; if there's just one option, you don't have a choice.
[^choice]: A choice is between two or more options; if there's just one option, `x`, there's no choice.
[^alpha]: Pronounced "alpha tee".