Hello HN,<p>Recently, I've been massively enjoying diving into type checkers and how to effectively use them (mostly in Python).<p>I lack foundational knowledge about the topic (I never studied CS), however, so I am looking for introductory textbooks/blogs/resources on the topic.<p>More specifically: I see terms being thrown around like "Algebraic sum type", "covariant", "contravariant", and I would like to understand more about what they mean and imply in a practical sense.<p>Thanks!
This blog is chock full of these ideas, start here:<p><a href="https://jrsinclair.com/articles/2019/algebraic-data-types-what-i-wish-someone-had-explained-about-functional-programming/" rel="nofollow">https://jrsinclair.com/articles/2019/algebraic-data-types-wh...</a>
> introductory textbooks/blogs/resources on the topic<p>Books on TypeScript, OCaml, Rust or Haskell are usually great resources for that.<p>There's also "Thinking with Types" which addresses this topic in a lot of depth:<p><a href="https://thinkingwithtypes.com/" rel="nofollow">https://thinkingwithtypes.com/</a>
I enjoyed some papers of Luca cardelli (when I remember the name correctly). There is also one overview/introduction about dependent type systems he wrote.<p>This is all very theoretically heavy though.