Wondering if anyone can give me some pointers with this, as I dive into 
logic programming. Or point me to a more appropriate forum, if this is the 
wrong one. I know a lot of you have been trying out core.logic.

It was all going well until chapter four. The story so far: introduce some 
simple function, like cdr, then develop a logic programming equivalent, 
repeat. Then in chapter four we get the second commandment, and the 
equivalent functions stop being equivalent. Instead, they generate 
meaningless results, like 4.18, where the value of z is irrelevant to 
whether the equivalent function (mem) would succeed, since the target 
pattern appears earlier in the list, but memo outputs an infinite number of 
the target pattern. Or they generate incorrect results, like 4.31, where 
some of the patterns do not satisfy the equivalent function (rember), like 
(a  b _.0 d e): z can't be removed unless it unifies with y, in which case 
y would have been removed, not z. The chapter concludes by highlighting 
this issue with "surprise", a simple example which generates solutions that 
don't satisfy the constraints.

I was hoping, at that point, for insights into accurately translating 
functions into their logic programming equivalents, however the chapter 
ends with "Please pass the aspirin", and the book continues with more 
"second commandment" examples that also produce unhelpful results.

So, I'm a bit baffled about the point of this exercise. Why is it useful to 
have a second commandment that converts functions into logic programming 
functions that are superficially similar, but fundamentally different, 
producing solutions that are irrelevant or incorrect for the original 
function? Is there some different technique that would allow one to 
generate correct solutions with logic programming?

-- 
-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to