21

Desidero utilizzare Core.logic di Clojure. Tuttavia, voglio anche capire come funziona. C'è una spiegazione concisa da qualche parte? (Come implementare un valutatore metacircolare?)Spiegazione concisa di Core.logic

Grazie!

+0

Perché questo chiuso come OT? Per l'OP, dare un'occhiata a https://github.com/clojure/core.logic/wiki/A-Core.logic-Primer. – drewr

+0

nessuna idea. hanno votato per riaprire. –

+0

Questa domanda è adatta per questo tag. –

risposta

19

core.logic è un'implementazione di miniKanren - originariamente scritto e progettato in Scheme da Dan Friedman, William Byrd, Oleg Kiselyov e altri. È un tentativo di incorporare la programmazione relazionale in stile Prolog all'interno di Lisp.

Se volete capire come funziona è necessario leggere i primi tre capitoli della tesi di William Byrd: https://scholarworks.iu.edu/dspace/bitstream/handle/2022/8777/Byrd_indiana_0093A_10344.pdf?sequence=1

Il motivato Schemer copre anche l'unificatore in dettaglio. Tuttavia, la porzione molto più sottile dell'obiettivo di miniKanren non viene fornita un trattamento completo: per questo dovrai consultare la tesi di Byrd.

Anche in questo caso, come per gli interpreti meta-circolari, non è possibile ottenere molti approfondimenti senza tentare di implementare il sistema autonomamente in una varietà di linguaggi di programmazione.

+3

Aggiungo: https://github.com/clojure/core.logic/wiki/A-Core.logic-Primer così come i consigli per esaminare la programmazione in Prolog (più esempi, idee simili, anche se meno versatili di miniKanren). – Isaac

+0

Il tuo link alla tesi di Byrd è rotto. :-( –

+0

il collegamento della tesi sembra funzionare di nuovo. – dnolen