Реализация логического программирования ( btmc.substack.com )
Я поддерживаю рекомендацию в посте сэра Уайнсалота (который я еще не полностью прочитал) взглянуть на miniKanren и microKanren. Я нашел чрезвычайно познавательным портировать microKanren на OCaml несколько лет назад, и я думаю, что результат несколько более понятен, чем исходная схема, хотя вам все равно, вероятно, придется прочитать статью, чтобы понять ее: http://canonical.org/~kragen/sw/dev3/mukanren.ml
Самым удивительным результатом miniKanren является интерпретатор Scheme, который можно запускать вперед, назад или в обоих направлениях. http://webyrd.net/quines/quines.pdf демонстрирует использование этого инструмента для генерации программы, выводом которой при запуске является она сама («miniKanren, Live and Untagged Quine Generation via Relational Interpreters (Programming Pearl)», Берд, Холк и Фридман).
В отличие от поста, я не думаю, что Datalog — это место, где нужно искать глубокие идеи о логическом программировании. Вместо этого, это место, где нужно искать глубокие идеи о базах данных.
Или, точнее, очень простая реализация Datalog.
Source: news.ycombinator.com