Описание тега reasoned-schemer
The Reasoned Schemer - это книга по логическому программированию, написанная Дэниелом П. Фридманом, Уильямом Э. Бердом и Олегом Киселевым.
1
ответ
Разве "база данных фактов" не является основной особенностью miniKanren?
Я играл с miniKanren, пытаясь понять его, конвертируя в него очень простые учебные пособия по Prolog. Обычно я использую Python, поэтому я начал с библиотеки LogPy, которая с тех пор была разветвлена и усовершенствована, поскольку на самом деле би…
18 июл '20 в 01:36
2
ответа
Уточнение алгоритмов поиска в различных реализациях миниканрена
В настоящее время я изучаю miniKanren от The Reasoned Schemer and Racket. У меня есть три варианта реализации миниканрена: Обоснованный интриган, первое издание (MIT Press, 2005). Я назвал это https://github.com/miniKanren/TheReasonedSchemer PS. Он …
13 апр '21 в 21:59
1
ответ
В чем разница между первым и вторым изданиями The Reasoned Schemer
У меня есть первое издание - я начал читать первое издание. Но сегодня я обнаружил, что есть второе издание. Насколько я должен быть обеспокоен? Есть ли между ними большая разница, или я упускаю несколько исправленных опечаток и хорошее введение?
28 июн '21 в 18:18
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