Шаблоны проектирования для проверки статического типа

В настоящее время я пытаюсь выяснить, какие аспекты моей программы могут быть статически проверены с помощью компилятора scala. Прочитав этот вопрос, я придумал идею шаблонов проектирования для типов. Мне сложно скомпрометировать то, что возможно с системой типа scala. Поэтому я хотел бы взглянуть на практические занятия (а не на арифметику или на подобные вещи). Простые шаблоны, которые часто появляются в обычном коде.

Кто-нибудь знает какие-либо блоги или даже книги, которые занимаются этим вопросом? Предпочтительно в Scala, но он также может быть полезен для других языков.

Ответ 1

Я думаю, что одна из самых полезных вещей, которые заслуживают названия "шаблон дизайна", - это техника "phantom". Это более или менее систематический способ кодирования статической информации в параметре типа. Примеры:

Вы также можете быть заинтересованы в другом Oleg wondertrick: Легкие статические возможности (с Chung-chieh Shan).

Ответ 2

Вы можете посмотреть совет по дизайну для Haskell и, в частности, некоторые из последних исследований, посвященных внедрению сильных свойств в систему типов:

  • Включение Карри-Говарда в работу Тим Шейр, Материалы семинара 2005 года ACM SIGPLAN по Haskell. Таллинн, Эстония, 74 - 85, 2005
  • Проверка на основе языка через выразительные типы Мартин Сульцманн и Разван Войку. Языки программирования соответствуют программе Verification (PLPV'06)
  • Типизированные контракты для функционального программирования Ральф Хинзе, Йохан Журинг и Андрес Лох.
  • Библиотека для облегченной информационной безопасности в Haskell Руссо, К Классен, Дж. Хьюз.

Пока нет стандартных методологий, хотя есть много хороших примеров индивидуальных проблем.