Hi,

Am Donnerstag, 21. Juli 2011 16:06:23 UTC+2 schrieb Ambrose 
Bonnaire-Sergeant:

>> You do not need to look at the surrounding code to know what (geto x y z) 
does.
>> It establishes the geto relation between x y z. x must be some key in, y 
must be a
>> vector of key-value pairs and z must be a value in y. The relation 
guarantees this.
>
> I think I understand where Meikel is coming from.
>
> The function can be used in radically different ways, depending on the 
values of the arguments,
> which is somewhat unnerving. (I sympathize)

Thanks for explaining my point than I did. Here some examples:

logic-introduction.core=> (run* [q] (geto 'f [['f :- Integer] ['g :- 
Integer]] Integer) (== q true))
(true)
logic-introduction.core=> (run* [q] (exist [a] (geto 'f [['f :- Integer] ['g 
:- Integer]] a) (== q a)))
(java.lang.Integer)
logic-introduction.core=> (run* [q] (exist [a] (geto a [['f :- Integer] ['g 
:- Integer]] Integer) (== q a)))
(f g)

Basically the purpose *why* I call geto are always different (Maybe "call" 
is already wrong?). With (get x y z) in pure Clojure that's not the case. 
Free (fresh?) variables kind of feel like side-effects for my eyes. But 
again: I have no clue whatsoever about logic programming. Maybe I just have 
to train to look with the right glasses at the code.

Meikel

-- 
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