Parse, Don't Validate

6 years ago (lexi-lambda.github.io)

To me, this is the highlight of this post:

  Consider: what is a parser? Really, a parser is just a 
  function that consumes less-structured input and 
  produces more-structured output. By its very nature, a 
  parser is a partial function—some values in the domain 
  do not correspond to any value in the range—so all 
  parsers must have some notion of failure. Often, the 
  input to a parser is text, but this is by no means a 
  requirement (...)

Then, the title of the post could be: Leverage the type system to represent your data, not validating it post-facto