Jump to content

миниКанрен

miniKanren — семейство языков программирования для реляционного программирования . [1] Поскольку отношения являются двунаправленными , если miniKanren задано выражение и желаемый результат, miniKanren может запустить выражение «назад», находя все возможные входные данные для выражения, которые производят желаемый результат. Такое двунаправленное поведение позволяет пользователю одновременно ограничивать как ввод в программу, так и результат программы. miniKanren выполняет чередующийся поиск, который в конечном итоге находит любое существующее решение, даже если какая-либо ветвь дерева поиска бесконечно длинна и не содержит решений. Если решения не существует, miniKanren может искать бесконечно, если дерево поиска бесконечно.

Пример кода miniKanren: evalo, реляционная цель, которая связывает выражения со значениями, которые они оценивают. Когда evalo в miniKanren вызывается так: (evalo q q), он будет генерировать куайны , то есть выражения q что при запуске оценят сами. [2]

В книге The Reasoned Schemer miniKanren используется для демонстрации реляционного программирования и представлена ​​полная реализация на Scheme . [3] Ядро языка умещается на двух печатных страницах. Реализация miniKanren в виде схемы разработана таким образом, чтобы ее было легко понять, изменить и расширить.

αleanTAP — это программа, написанная на αKanren, расширении miniKanren для номинальной логики . Учитывая теорему, он может найти доказательство, что делает его доказывающим теорему . Имея доказательство, он может найти теорему, превратив ее в средство проверки теорем. Учитывая часть доказательства и часть теоремы, он заполнит недостающие части доказательства и теоремы, превратив его в исследователя теорем. [1]

Существуют реализации miniKanren в Haskell , Racket , Ruby , Clojure , JavaScript , Scala , Swift , Dart и Python . Каноническая реализация — это встроенный язык в Scheme . Библиотека Clojure core.logic была вдохновлена ​​miniKanren.

Название канрен происходит от японского слова ( 関連 ), означающего «отношения».

См. также

[ редактировать ]
  1. ^ Jump up to: а б Уилл Берд (август 2009 г.). Реляционное программирование в miniKanren: методы, приложения и реализации (PDF) (доктор философии). Университет Индианы .
  2. ^ Уилл Берд, Эрик Холк и Дэн Фридман (2012). «miniKanren, живой и без тегов: генерация Quine с помощью реляционных интерпретаторов (жемчужина программирования)» (PDF) . Материалы ежегодного семинара по схемам и функциональному программированию 2012 г. АКМ : 8–29. {{cite journal}}: CS1 maint: несколько имен: список авторов ( ссылка )
  3. ^ Дэн Фридман; Уилл Берд; Олег Киселёв (2005). Разумный интриган . МТИ Пресс . ISBN  9780262562140 .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 8ff9b3e6d0af4cc78dca26ca3cb75cfe__1682333700
URL1:https://arc.ask3.ru/arc/aa/8f/fe/8ff9b3e6d0af4cc78dca26ca3cb75cfe.html
Заголовок, (Title) документа по адресу, URL1:
miniKanren - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)