<story><title>Counterexamples in Type Systems</title><url>https://counterexamples.org/intro.html</url></story><parent_chain><item><author>duped</author><text>The notation is an insurmountable barrier to many.</text></item><item><author>siraben</author><text>I study type systems and programming language theory at university, and I encourage friends studying CS to at least have some understanding of type theory, such as well-known type systems (simply-typed, System F) and properties like soundness or uniqueness of typing. Why? Because as programmers we argue to death comparing the expressiveness and properties of type systems of our favorite programming languages, or we&amp;#x27;re picking up a language with features like traits or type inference. Type theory really lets you learn the heart of such features in a small, idealistic setting and specifies things rigorously and uniformly, (since languages tend to come up with their own names and examples for things like ad-hoc polymorphism, AKA typeclasses&amp;#x2F;traits&amp;#x2F;protocols&amp;#x2F;concepts), and they appear no matter the paradigm.</text></item></parent_chain><comment><author>siraben</author><text>Many introductory texts, such as Types and Programming Languages explain the notation thoroughly and start &lt;i&gt;really&lt;/i&gt; simple, even starting from the inference rule notation, then talking about reduction of untyped arithmetic expressions, building up to the standard notation type theory.</text></comment>
<story><title>Counterexamples in Type Systems</title><url>https://counterexamples.org/intro.html</url></story><parent_chain><item><author>duped</author><text>The notation is an insurmountable barrier to many.</text></item><item><author>siraben</author><text>I study type systems and programming language theory at university, and I encourage friends studying CS to at least have some understanding of type theory, such as well-known type systems (simply-typed, System F) and properties like soundness or uniqueness of typing. Why? Because as programmers we argue to death comparing the expressiveness and properties of type systems of our favorite programming languages, or we&amp;#x27;re picking up a language with features like traits or type inference. Type theory really lets you learn the heart of such features in a small, idealistic setting and specifies things rigorously and uniformly, (since languages tend to come up with their own names and examples for things like ad-hoc polymorphism, AKA typeclasses&amp;#x2F;traits&amp;#x2F;protocols&amp;#x2F;concepts), and they appear no matter the paradigm.</text></item></parent_chain><comment><author>steego</author><text>It&amp;#x27;s interesting how calling it insurmountable both panders to and insults the people you&amp;#x27;re talking about.&lt;p&gt;Maybe a better way to describe the notation is &amp;quot;off-putting&amp;quot;?</text></comment>