Есть несколько способов узнать о теории типов. Для работающего программиста «
Типы и языки программирования » Б. Пирса - хорошее начало.
Практические основы языков программирования Р. Харпера также могут быть хорошими. Если вы хотите немного легкого для понимания фона по операционной семантике, я рекомендую книгу Г. Винскеля « Формальная семантика языков программирования: введение» . С Т. Нипковым, Г. Кляйном, Конкретная семантикавариант книги Винскеля был оформлен для интерактивного помощника Изабель / HOL. Я подозреваю, что действительно трудно справиться с прувером только из этой (или любой) книги, вы бы хотели, чтобы эксперт поблизости задавал вопросы. Если вам нужен более математический подход к теории типов, вы можете взглянуть на JR Hindley, JP Seldin, Lambda-Calculus and Combinators: Введение , или H. Barendregt, Lambda Calculi with Types . Хотя я бы не рекомендовал начинать с Барендрегта.
Если вам нужна единственная рекомендация, я бы сказал, что прочитал все Пирса, кроме Части VI (Системы высшего порядка), и реализовал игрушечные языки, обсуждаемые в книге. Вы получите хорошее знание теории типов и, вероятно, лучший программист.