Описание тега reasoned-schemer

The Reasoned Schemer - это книга по логическому программированию, написанная Дэниелом П. Фридманом, Уильямом Э. Бердом и Олегом Киселевым.
1 ответ

Разве "база данных фактов" не является основной особенностью miniKanren?

Я играл с miniKanren, пытаясь понять его, конвертируя в него очень простые учебные пособия по Prolog. Обычно я использую Python, поэтому я начал с библиотеки LogPy, которая с тех пор была разветвлена ​​и усовершенствована, поскольку на самом деле би…
2 ответа

Уточнение алгоритмов поиска в различных реализациях миниканрена

В настоящее время я изучаю miniKanren от The Reasoned Schemer and Racket. У меня есть три варианта реализации миниканрена: Обоснованный интриган, первое издание (MIT Press, 2005). Я назвал это https://github.com/miniKanren/TheReasonedSchemer PS. Он …
1 ответ

В чем разница между первым и вторым изданиями The Reasoned Schemer

У меня есть первое издание - я начал читать первое издание. Но сегодня я обнаружил, что есть второе издание. Насколько я должен быть обеспокоен? Есть ли между ними большая разница, или я упускаю несколько исправленных опечаток и хорошее введение?
1 ответ

Кадр 1:26 — С чем объединяется q?

У нас есть: (run* q (fresh (x) (== `(,x) q))) В этом случае `(,x)это список, в котором ссылка на переменную не заключена в кавычки. Унифицируется ли q со списком из одного элемента? Является результатом(_0)потому чтоqобъединяется со свежей переменно…
08 сен '22 в 16:21
0 ответов

Кадр 6:8 — Почему мы не застреваем в рекурсии?

Мы получаем: (defrel (alwayso) (conde (#s) ((alwayso)))) (run 1 q (alwayso) #u) В книге (2-е изд.) говорится: " alwaysoудается, за которым следует , что вызывает (alwayso)повторить попытку, которая снова увенчается успехом». Я все еще не понимаю пот…
22 сен '22 в 21:51
2 ответа

Кадр 1:85 — Почему накапливается conj2 из disj2?

В 85 есть: (run* (x y) (teacupo x) (teacupo y)) который расширяется в: (run* (x y) (disj 2 (== 'tea x) (== 'cup x)) (disj 2 (== 'tea y) (== 'cup y))) Так как жеconj2накапливать результаты, чтобы((tea tea) (tea cup) (cup tea) (cup cup))? Я не думаю, …
10 сен '22 в 11:26
1 ответ

Кадр 1:33. Как нам объединить два списка?

Я не думаю, что где-то было написано, как это должно работать. Мы получаем: (run* q (== '( ((pea)) pod) `( ((pea)) ,q))) В форме квазикавычек он заключен в кавычки, поэтому остается символом, а не заключен в кавычки, поэтому относится к переменной в…
08 сен '22 в 16:08
0 ответов

Почему `(,x) является сокращением для (cons x '())?

Мне говорят, что: `(,x)является сокращением для(cons x '()). Я немного смущен, потому что это нигде не задокументировано. Кроме того, если это так, что делает `(((pea)) ,q)оценить? И почемуpeaзавернутый в два комплекта скобок?
07 сен '22 в 20:11
0 ответов

Кадр 2:26 - Почему у консо странный куб?

В кадре 26 мы получаем определение для минусов 0: (degree (conso a d p) (== `(,a ■ ,d) p)) В книге еще не упоминается, что должны делать эти черные кубики. Что это значит? Одна подсказка находится в кадре 3-4, где упоминается, что'(d a t e ■ s)не пр…
14 сен '22 в 20:36