This seems like a great resource for beginners.
I’d add one piece of advice: try to rely on context. If there’s a short name that doesn’t follow a super common convention—and the code isn’t intentionally obfuscated!—chances are you can figure out what it means by zooming out to the broader definition, the module or even the project the code is in. (This advice also applies to folks writing code: only use variable names that are as short as makes sense in context!)
You can actually see this in a bunch of the examples in the article. For type variables, it’s often literally in the type context: you can see that m
is a monad or monoid by looking at its constraints. Ditto for most of the other common conventions.
You already demonstrate this principle in a few of the examples that you have, so I figure it’s just worth highlighting this idea in the text too.