but `parseNonEmpty` gives the caller access to the information it learned, while `validateNonEmpty` just throws it away. Consider: what is a parser? Really, a parser is just a function that consumes less-structured input and produces more-structured output.
In some sense, that’s all programming really is, modeling a domain in a way that can be leveraged by a digital computer. and without being willing to invest the time and money into education, smart, diligent people will still fail to grasp the concepts, and they will likely be wholly uninterested in them. programming, like any other field, is not always about what comes easiest: sometimes it’s important to sit down and study for a while to grok a particularly complicated concept, and other times, it’s simply important to learn by trying, failing, and asking questions.