New blog post, "Monads are not like burritos", in which I reflect on the history of a meme and continue the process of turning into a cranky old-timer

https://byorgey.github.io/blog/posts/2025/06/16/monads-are-not-burritos.html

blog :: Brent -> [String] - Monads are not like burritos

@byorgey The meme image isn't loading for me
@byorgey good post! I have enjoyed the burrito explanation for years, but I always have to couch it in extra explanations, due to its inadequacies. I like to say, for example, that the cheese and salsa in the burrito get all over everything and that when you unwrap it, the contents may be unrecognizable.
@byorgey of course, your meme image isn't saying that *monads* are like burritos. It's saying something one layer of abstraction up: (bad) monad *tutorials* are like burritos, because once you've got wrapped up in one you have to unwrap yourself before you can get back to actually trying to understand monads.

@byorgey And here's me, about to give a #haskell tutorial and on the way to work, thinking that I should definitely mention that "IO" is different than "Maybe", "List", ... because in what way would "IO String" be a container"?

Good to have come to the same conclusion.

@pmidden @byorgey To be fair, we often do say "*in* the future" and "what the future *holds*" like it is a container.
@jaror @pmidden Well, as far as we know, the future is an IO action that must be executed exactly once.