See those type declarations? Those are comments. Comments that are automatically checked.
This encoding is left as an exercise for the reader.
The most useful kind of comments are "why" comments, about why specific design trade-offs were chosen.
To understand code, you need to figure out "why" and "what". Code gives you one, comments give you the other.
If you want to dismiss me as "one of those" people that is anti-commenting, you're reading too much into what I said. You said, "it doesn't have comments!", I said "actually, it does, and they're even checked." The end.
In a more complex program, I'd add comments. How many, and the nature of the comments, depends on whether I was writing in something relatively low-level (like C) or something high-level (like Haskell, Erlang, or K).