Я хочу использовать Clojure Core.logic. Однако я хочу также понять, как это работает. Есть ли какое-то краткое объяснение? (Как реализация метациркулярного оценщика?)
Спасибо!
Ответ 1
core.logic - это реализация miniKanren - изначально написанная и спроектированная на Схеме Дэн Фридман, Уильям Берд, Олег Киселев и другие. Это попытка встроить реляционное программирование в стиле Prolog в Lisp.
Рассматриваемый Schemer также подробно описывает унификатор. Однако гораздо более тонкая цель miniKanren не получает всестороннего лечения - вам нужно посмотреть на диссертацию Byrd для этого.
Даже тогда, как и в случае с мета-циркулярными переводчиками, многие идеи не могут быть получены без попытки реализовать систему самостоятельно на разных языках программирования.