Які хороші вступні книги з теорії типів?


Відповіді:


28

Основи програмного забезпечення Бенджаміна К. Пірса були б хорошим місцем для початку. Це було б гарним попередником його типів та мов програмування . Існує також Теорія та функціональне програмування Саймона Томпсона та Докази та типи Жирара .


10
Я б запропонував підготувати першокласні мови та мови програмування Перш, ніж основи програмного забезпечення, які є більш досконалими. Для тих, хто хоче почати повільно, щось подібне до лямбда-обчислення та комбінаторів Гіндлі та Селдіна - це легке вступ.
Мартін Бергер

4
Так, TAPL - це книга. Існує також "Розширені теми про типи та мови програмування" Пірса в якості подальшої роботи.
Гек Беннет

@MartinBerger, я подивився на зміст для Lambda-Calculus і Combinators, і це здається трохи неприємним. Ви впевнені, що це вступніше, ніж TAPL або SF?
Стівен Шоу

1
@StevenShaw Hindley / Seldin починається з самих основ і проходить дуже повільно, але всебічно. Теоретична частина типу нічого не фантазує. Можливо, основна теорія простого типу Хіндлі також підходить. Я ніколи його не тримав у руках.
Мартін Бергер



5

Йдеться більше про математичні основи, а менше - про інформатику, але книга Теорія типу гомотопії: Однозначні основи математики доступна безкоштовно у форматі PDF під ліцензією CC.


6
Мені подобаються тема і книга, але очевидно, це не так, як вона не передбачає, що ви вже знайомі з правилами лямбда-абстракцій, скорочень тощо. ОП, що виходить від використання Хаскелла і тепер цікавиться теорією типів, буде здивована інтерпретацією теорії гомотопії через типи ідентичності, 80 сторінок. :)
Nikolaj-K

1
Я погоджуюся з @NikolajK, що книга Готта є занадто передовою для початківця теорії типів. Хороший маршрут для програміста Haskell - це спочатку вивчити Агда . Agda - це (трохи спростивши) Haskell із залежними типами, і він використовувався для формалізації Hott.
Мартін Бергер

1
Не вступний :)
Стівен Шоу

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.