Как реализовать систему типов с помощью clojure core.logic
В интервью с Ричем Хики я прочитал, что ему будет интересно "использовать логические системы вместо системы типов для Clojure". Я также столкнулся с этим утверждением в SO-ответе: /questions/28689434/tip-bezopasnosti-v-clojure/28689455#28689455 Я не вижу связи между логикой и системой типов.
1 ответ
Clojure на данный момент использует систему типов, предоставленную JVM. Вы можете реализовать новую систему типов поверх старых макросов. Эта новая система типов также может обеспечивать проверки во время выполнения. Что касается средства проверки типов (либо для существующей системы типов на основе JVM, либо для вашей собственной системы типов на основе макросов), то ее можно реализовать с помощью core.logic, а связь между средством проверки типов и core.logic заключается в том, что средство проверки типов Задача состоит в том, чтобы взглянуть на статические аннотации типов в вашем коде и убедиться, что ограничения и отношения выполнены, и core.logic - это система, которая может использоваться для решения проблемы, которая по своей сути связана с ограничением и проверкой отношений.
В общем, проверка типов - это проблема, которая подходит для того, какие проблемы вы можете решить с помощью логического программирования.