Para quem quiser algo mais completo: https://pt.stackoverflow.com/q/190463/101. Teoria de Tipos é algo extremamente complexo, também fiz uma simplificação.
S2
Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente (não vendo nada, é retribuição na minha aposentadoria) (links aqui).