Non capisco perché dai seguenti due esempi, il primo restituisce il valore corretto (1)
, mentre il secondo restituisce ()
. Mi sarei aspettato il risultato (:key)
o un'eccezione che non riesce a trovare la soluzione, ma non una lista vuota.unificazione core.logic corrisponde valore nella mappa ma non chiave
(l/run* [q]
(l/== {:key 1} {:key q}))
;; BUT IT DOESNT WORK
(l/run* [q]
(l/== {:key 1} {q 1}))
run * restituisce un elenco di soluzioni così() significa nessuna soluzione –
Accetto, ma a mio avviso c'è una soluzione. Se usi 'q =: key', non soddisfa l'equazione? Penso che dovremmo leggere la risposta come: "Impossibile trovare una soluzione" piuttosto che "Posso garantire che non esiste alcuna soluzione". – shaft