21

Chcę użyć Clojure's Core.logic. Jednak chcę również zrozumieć, jak to działa. Czy gdzieś jest to zwięzłe wyjaśnienie? (Podobnie jak implementacja metacircular ewaluatora?)Zwięzłe wyjaśnienie Core.logic

Dzięki!

+0

Dlaczego to zamknięte OT? Do OP, spójrz na https://github.com/clojure/core.logic/wiki/A-Core.logic-Primer. – drewr

+0

brak pomysłu. głosowali na ponowne otwarcie. –

+0

To pytanie dobrze pasuje do tego tagu. –

Odpowiedz

19

core.logic to implementacja miniKanren - pierwotnie napisana i zaprojektowana w Schemacie przez Dana Friedmana, Williama Byrda, Olega Kiselyova i innych. Jest to próba osadzenia programowania relacyjnego w stylu Prologu w Lisp.

Jeśli chcesz zrozumieć, jak to działa, musisz przeczytać pierwsze trzy rozdziały rozprawy Williama Byrda: https://scholarworks.iu.edu/dspace/bitstream/handle/2022/8777/Byrd_indiana_0093A_10344.pdf?sequence=1

uzasadnionej Schemer obejmuje również unifikator w szczegółach. Jednak o wiele bardziej subtelna część bramkowa miniKanren nie jest objęta kompleksowym leczeniem - musisz przyjrzeć się rozprawie Byrda.

Nawet wtedy, tak jak w przypadku tłumaczy meta-kołowych - nie można uzyskać wielu wglądów bez próby samodzielnego wdrożenia systemu w różnych językach programowania.

+3

Dodałbym: https://github.com/clojure/core.logic/wiki/A-Core.logic-Primer oraz porady dotyczące programowania w Prologu (więcej przykładów, podobne pomysły, choć mniej uniwersalne niż miniKanren). – Isaac

+0

Twój link do pracy Byrda jest zepsuty. :-( –

+0

link do pracy wydaje się znów działać. – dnolen