On 03/14/2012 08:00 PM, David Nolen wrote:
Thanks to Edmund Jackson we have a new primer for core.logic:
https://github.com/clojure/core.logic/wiki/A-Core.logic-Primer
Feedback appreciated!
Hi!
Does a run* expression evaluate to only the query-variable, while lvars
introduced with fresh stay internal?
"Finally we unify a and q leaving both with the value of their
intersection: (1, 2, 3) intersection (3, 4, 5), (3)"
I stumbled over this sentence because of the "(1, 2, 3) intersection (3,
4, 5), (3)" part. Sudden use of infix, with the result after a comma?
Just writing (3) would be clearer.
Regarding conde, I had to reread that section carefully. Consider to
first explain conde with single-goal clauses, to then mention that each
clause is actually a list of goals with AND-logic (simple case first,
expand afterwards).
In the "Conso (the Magnificent)" section, use of "return" inside of the
code blocks is inconsistent with the rest of the article.
I do not understand the explanations to the last 2 examples, even though
I think I understand the logic. The use of list [1] and list [2] is not
easy to read, how about writing out first and second list?
I would think that:
(run* [q]
(conso q [2 3] [1 2 3]))
returns (1); q is the element that when added as head to the first list,
results in a list equal to the second list (if such an element exists).
(run* [q]
(conso 1 [2 q] [1 2 3]))
returns (3); q is the element of the first list that when 1 is added as
head to the first list results in a list equal to the second list (if
such an element exists).
So conso constraints whatever lvars are present in an attempt to unify
the cons of its first 2 arguments with its third argument, restricting
the arguments to be atom-or-list, list, list?
Otherwise an enlightening and inspiring read, thank you!
--
Thorsten Wilms
thorwil's design for free software:
http://thorwil.wordpress.com/
--
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