Re: Best way to do this query?

From: Neo <neo55592_at_hotmail.com>
Date: 17 Jan 2007 13:45:40 -0800
Message-ID: <1169070340.627742.115280_at_a75g2000cwd.googlegroups.com>


I wonder if "set every farmer who owns a donkey beats it" in the following example from comp.lang.functional exemplifies the root problem. The query is complicated because something transient from a lower level needs to be known at higher level. In dbd's solution, variable donkeyX is used to transfer required state to higher level of expression.

(new 'farmer1 'farmer)
(new 'farmer2 'farmer)

(new 'donkey1 'donkey)
(new 'donkey2 'donkey)

(new 'own 'verb)

(set farmer1 own donkey1)
(set farmer2 own donkey2)

(; Set every farmer, who owns a donkey, smokes)
(new 'smoke 'verb)
(set (& (get farmer instance *)

           (get * own (get donkey instance *))) smoke)

(; Set every farmer who owns a donkey beats it)
(new 'beat 'verb)
(newVar 'donkeyX)
(set (& (get farmer instance *)

           (get * own (setVarVal 'donkeyX (get donkey instance *))))
       beat
       (getVarVal 'donkeyX))
Received on Wed Jan 17 2007 - 22:45:40 CET

Original text of this message