Описание тега minikanren
KANREN - это система декларативного логического программирования с первоклассными отношениями, встроенная в чисто функциональное подмножество Scheme. miniKANREN - это упрощенное подмножество KANREN без множества наворотов и оптимизаций.
2
ответа
Все возможные схемы подсписков
Я хочу найти все возможные последовательные разделы списков: (a b c d) => (((a) (b c d)) ((a b) (c d)) ((a b c) (d)) ((a) (b c) (d)) ((a b c d)) ((a) (b) (c) (d))) Какой самый простой способ это сделать? в идеале без использования счетчиков. Реда…
24 июн '18 в 16:10
3
ответа
Конда, Конди, Конде, Проводник
Я читаю Разумный интриган. У меня есть некоторая интуиция о том, как conde работает. Тем не менее, я не могу найти формальное определение того, что conde/conda/condu/condi делать. Я знаю о https://www.cs.indiana.edu/~webyrd/ но, похоже, есть примеры…
01 июн '12 в 02:08
1
ответ
Что на практике означает нереляционный для core.logic?
Пытаясь понять core.logic через API-документы, я сталкиваюсь с нереляционными целями и реляционными целями. Я понятия не имею, что это означает на практике и почему важно аннотировать цели, если они реляционные или нет. Можете ли вы объяснить на при…
18 ноя '15 в 18:24
1
ответ
Синтезировать наименьшую карту, удовлетворяющую ограничениям Featurec в core.logic?
В core.logicЕсть ли способ перевести результаты программы, как (run 2 [q] (fresh [a] (featurec q {:foo a}) (membero a '(5)) (conde ((featurec q {:bar 2})) ((featurec q {:baz 2}))))) в наименьшие карты, которые удовлетворяют ограничения каждого решен…
25 сен '18 в 07:18
1
ответ
Непонимание Разумного Схемера Глава 5 кадр 62
В настоящее время я изучаю miniKanren, изучая Разумный Схемер. И я застрял в упражнении в главе 5 кадра 62: (run* (x) (flatten_o (a) x))почему в выводе три списка? Заранее большое спасибо.
23 окт '17 в 07:30
1
ответ
Почему "Разумный интриган" добавляет "о" в конец своих функций?
В аргументированном планировщике они называют стандартные функции lisp с 'o' на конце, например conso а также appendo, Мой вопрос: почему "Разумный интриган" добавляет "о" в конец своих функций?
25 июн '15 в 10:16
3
ответа
Частичный словарь / Объединение записей?
Я понимаю, что некоторые прологи поддерживают словарь-ассоциативные структуры данных из коробки. Для реализаций, которые это делают, они поддерживают некоторое понятие частичной унификации с другой структурой, которая фактически не содержит все ключ…
09 окт '12 в 22:02
0
ответов
Какие категории описывают реляционные языки?
Я читал, что лямбда-исчисление является языком декартовых замкнутых категорий. Насколько я понимаю, реляционные языки, такие как minikanren или (частично) пролог, будут тогда работать с этими, но также и с другими категориями (поскольку функции явля…
06 июн '18 в 01:37
2
ответа
Почему имена miniKanren всегда заканчиваются на `o`?
Все отношения miniKanren заканчиваются буквой o, Какова мотивация для этого? Я вижу, что библиотека Clojure core.logic также делает это.
06 фев '12 в 17:05
1
ответ
Правильное использование логических языков в качестве инструмента
Я интересуюсь философией "используй правильный инструмент для работы" в программировании, и у меня есть проблема, которую, я думаю, можно решить с помощью логического программирования. Я имею в виду это наивно, потому что я не занимался логическим п…
24 май '18 в 17:01
2
ответа
Понимание модели исполнения мини-канрена
В главе 5 SICP объясняется схема мета-циклической оценки интернов регистрационной машины. Есть ли что-нибудь, что обеспечивает подобный тип Mini-Kanren с точки зрения примитивов Scheme? Я знаю, что есть тезис, написанный на Mini-Kanren (однако, я за…
12 апр '12 в 06:14
1
ответ
Как выбрать из множества возможных значений в minikanren / clojure-core.logic?
Как я могу выразить ограничение, которое n переменные принимают разные значения из набора n ценности? Например, может быть, я хочу найти выражение формы (op1 a (op2 b c)) с наибольшим значением, когда a, b и c должны 1, 2 и 3 (в некотором порядке), …
03 авг '12 в 18:42
1
ответ
Моделирование рецептов и доступных ингредиентов с логикой ограничений
Представьте, что у меня есть несколько рецептов для разных блюд и кладовая с различными ингредиентами на моей кухне. Я хочу построить модель, используя core.logic что даст мне возможность ответить на следующий вопрос: какие рецепты я могу приготовит…
02 фев '15 в 16:05
2
ответа
Сопоставление пролога с объединением miniKanren
В "Прологе - Программирование для искусственного интеллекта" Братко говорит следующее на странице 58. "Сопоставление в Прологе соответствует тому, что называется объединением в логике. Однако мы избегаем слова" объединение ", потому что сопоставлени…
17 ноя '15 в 07:17
1
ответ
Clojure core.logic CLP(FD) проецирует переменные FD
Я работаю над простым алгоритмом квадратной упаковки, используя библиотеку Clojure core.logic CLP(FD) (core.logic версия 0.8.3). Квадраты представлены так: [[[x11 y11] [x12 y12]] [[x21 y21] [x22 y22] ...]] с каждым квадратом, представленным как коор…
27 апр '13 в 12:27
4
ответа
Поддержка MiniKanren от доктора Ракета
Я начал изучать miniKanren с книги "Разумный интриган - второе издание" и со схемой DrRacket. Я установил пакет "быстрее-миниканрен", но первые примеры книги с командой run* (например, (run* q #f)) создавать сообщения об ошибках, такие как run*: bad…
28 май '18 в 14:51
1
ответ
Почему эта реализация Сорто не заканчивается?
Я новичок в логическом программировании. Я пытаюсь реализовать сортировку отношения как это: (sorto [3 2 1][1 2 3]) -> #s Я использую clojure и core.logic: Я не понимаю, почему это не может прекратить в большинстве случаев. Любая идея будет полез…
08 ноя '17 в 17:02
0
ответов
Как использовать кавычки и кавычки, чтобы более точно перевести Разумного Схемера в Ракетку?
(Подробная информация о моем miniKanren в настройке Racket приведена внизу [1].) То, как работают кавычки и кавычки в The Reasoned Schemer, похоже, не соответствует тому, как они работают в Racket. Например, стих 2 главы 2 предлагает [2] следующее о…
16 ноя '18 в 03:35
0
ответов
Единая структура объединения в миниканрен
Как определить унификацию и включение структуры объектов в minikanren, если мы представляем структуры объектов с помощью списков? Общее поведение будет примерно таким (я думаю): (run* (q) (unifyo '(a b) '(a b) q))) => (a b) (run* (q) (unifyo '(x …
22 ноя '18 в 17:17
2
ответа
Моделирование программ логики ограничений (для анализа)
Объектно-ориентированные программы могут моделироваться различными моделями, такими как Автоматы, Алгебры Процессов, Сети Петри или UML. Некоторые из этих моделей могут использоваться для выполнения различного вида анализа, чтобы выявить проблему в …
27 сен '13 в 04:46