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

Reply via email to