I first started writing Haskell about 15 years ago. My learning
curve for the language was haphazard at best. In many cases, I
learnt concepts by osmosis, and only later learned the proper
terminology and details around them. One of the prime examples of
this is pattern matching. Using a case
expression in Haskell, or a
match
expression in Rust, always felt natural. But it took years
to realize that patterns appeared in other parts of the languages
than just these expressions, and what terms like irrefutable
meant.
It's quite possible most Haskellers and Rustaceans will consider
this content obvious. But maybe there are a few others like me out
there who never had a chance to realize how ubiquitous patterns are
in these languages. This post may also be a fun glimpse into either
Haskell or Rust if you're only familiar with one of the languages.