Also, on a side note, what's the deal with this:

(run* [q]
    (is-drink q)
    (not-likes-drink q))

(:dialogic2.bobbysally/Vodka :dialogic2.bobbysally/Daiquiri 
:dialogic2.bobbysally/Beer)


(defn hates-drink
   [d]
   (is-drink d)
   (not-likes-drink d))

(run* [q] (hates-drink q))

(_.0)

Why is it that, what appear to be essentially equivalent expressions don't 
do the same thing?  Does it have something to do with the fact that the 
hates-drink function definition somehow doesn't combine the two goals?

I actually redefined hates-drink to the following, and that worked.  What's 
the deal?

(defn hates-drink
  [d]
  (fresh []
     (is-drink d)
     (not-likes-drink d)))

On Thursday, 28 March 2013 16:53:09 UTC-4, David Nolen wrote:
>
> Excellent! :)
>
>
> On Thu, Mar 28, 2013 at 4:46 PM, JvJ <kfjwh...@gmail.com <javascript:>>wrote:
>
>> HOORAY!  I did it all by myself! (with your help)
>>
>> (defn not-membero
>>   [x l] 
>>   (fresh [head tail]
>>  (conde
>>    ( (== l ()) )
>>    ( (conso head tail l)
>>  (!= x head)
>>  (not-membero x tail) ))))
>>
>> On Thursday, 28 March 2013 16:21:41 UTC-4, David Nolen wrote:
>>
>>> My point here isn't to tickle your brain but point out that there's a 
>>> bit of misunderstanding about how core.logic works and what facilities you 
>>> should use to handle your problem.
>>>
>>> It should be clear soon enough that it will be very difficult to 
>>> formulate your problem in terms of facts or conde.
>>>
>>> You said you wanted q to be a member of a some list A. Then why not use 
>>> membero? But you don't want q to be a member of some list B. Then try to 
>>> write a not-membero in terms of disequality.
>>>
>>> (run* [q]
>>>  (membero q '(1 2 3 4))
>>>  (not-membero q '(3 4 5 6)))
>>>
>>> David
>>>
>>>
>>> On Thu, Mar 28, 2013 at 4:12 PM, JvJ <kfjwh...@gmail.com> wrote:
>>>
>>>> Any other hints?  I'd love to spend time on this brain tickler, but I 
>>>> have other things to do.
>>>>
>>>>
>>>> On Thursday, 28 March 2013 16:05:00 UTC-4, JvJ wrote:
>>>>>
>>>>> Alright, I'm starting to get it.... but not quite there
>>>>>
>>>>> (run* [q]
>>>>>     (fresh [x]
>>>>>   (conde
>>>>>    ( (== q 1) )
>>>>>    ( (== q 2) )
>>>>>    ( (== q 3) )
>>>>>    ( (== q 4) ))
>>>>>   
>>>>>   (conde
>>>>>    ( (== x 3) )
>>>>>    ( (== x 4) )
>>>>>    ( (== x 5) )
>>>>>    ( (== x 6) ))
>>>>>   
>>>>>   (!= q x)))
>>>>> (1 1 1 2 1 2 2 2 3 4 3 3 4 4)
>>>>>
>>>>> On Thursday, 28 March 2013 15:44:01 UTC-4, David Nolen wrote:
>>>>>>
>>>>>> This won't work. Rewrite this example w/o using facts and try to 
>>>>>> understand why it won't work.
>>>>>>
>>>>>> David
>>>>>>
>>>>>> On Thu, Mar 28, 2013 at 3:37 PM, JvJ <kfjwh...@gmail.com> wrote:
>>>>>>
>>>>>>> Here's what I'm trying...
>>>>>>>
>>>>>>> (facts a  [[1]
>>>>>>>      [2]
>>>>>>>      [3]
>>>>>>>      [4]])
>>>>>>> nil
>>>>>>> (facts b  [[3]
>>>>>>>      [4]
>>>>>>>      [5]
>>>>>>>      [6]])
>>>>>>>
>>>>>>> (run* [q]
>>>>>>>     (a q)
>>>>>>>     (fresh [x]
>>>>>>>    (b x)
>>>>>>>    (!= q x)))
>>>>>>> (1 1 2 1 1 2 2 2 3 4 3 3 4 4)
>>>>>>>
>>>>>>> So what the heck is this all about?
>>>>>>>
>>>>>>> On Thursday, 28 March 2013 15:17:24 UTC-4, David Nolen wrote:
>>>>>>>
>>>>>>>> negation is hard. This has come up several times. It may be 
>>>>>>>> possible to a better form of negation as failure via delays, but this 
>>>>>>>> not 
>>>>>>>> high on my current priority list. Patches to make it work are of 
>>>>>>>> course 
>>>>>>>> most welcome.
>>>>>>>>
>>>>>>>>
>>>>>>>> On Thu, Mar 28, 2013 at 2:54 PM, JvJ <kfjwh...@gmail.com> wrote:
>>>>>>>>
>>>>>>>>> Thanks, but there's another aspect to this.
>>>>>>>>>
>>>>>>>>> Let's say I had two relations A and B, and I wanted all q such that
>>>>>>>>> (A q)
>>>>>>>>> (not (B q))
>>>>>>>>>
>>>>>>>>> How would that work?
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Thursday, 28 March 2013 14:50:33 UTC-4, Jim foo.bar wrote:
>>>>>>>>>
>>>>>>>>>> clojure.set/difference 
>>>>>>>>>> 'membero' combined with its negated form? 
>>>>>>>>>>
>>>>>>>>>> Jim 
>>>>>>>>>>
>>>>>>>>>> On 28/03/13 18:47, JvJ wrote: 
>>>>>>>>>> > In core.logic, how do the following: "Give me everything that 
>>>>>>>>>> is a 
>>>>>>>>>> > member of list A and not a member of list B"? 
>>>>>>>>>> > -- 
>>>>>>>>>> > -- 
>>>>>>>>>> > You received this message because you are subscribed to the 
>>>>>>>>>> Google 
>>>>>>>>>> > Groups "Clojure" group. 
>>>>>>>>>> > To post to this group, send email to clo...@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+u...@**googlegroups.com 
>>>>>>>>>> > For more options, visit this group at 
>>>>>>>>>> > http://groups.google.com/**group******/clojure?hl=en<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+u...@**googlegroups.com. 
>>>>>>>>>> > For more options, visit https://groups.google.com/**grou******
>>>>>>>>>> ps/opt_out <https://groups.google.com/groups/opt_out>. 
>>>>>>>>>> > 
>>>>>>>>>> > 
>>>>>>>>>>
>>>>>>>>>>  -- 
>>>>>>>>> -- 
>>>>>>>>> You received this message because you are subscribed to the Google
>>>>>>>>> Groups "Clojure" group.
>>>>>>>>> To post to this group, send email to clo...@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+u...@**googlegroups.com
>>>>>>>>> For more options, visit this group at
>>>>>>>>> http://groups.google.com/**group****/clojure?hl=en<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+u...@**googlegroups.com.
>>>>>>>>> For more options, visit https://groups.google.com/**grou****
>>>>>>>>> ps/opt_out <https://groups.google.com/groups/opt_out>.
>>>>>>>>>  
>>>>>>>>>  
>>>>>>>>>
>>>>>>>>
>>>>>>>>  -- 
>>>>>>> -- 
>>>>>>> You received this message because you are subscribed to the Google
>>>>>>> Groups "Clojure" group.
>>>>>>> To post to this group, send email to clo...@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+u...@googlegroups.com
>>>>>>> For more options, visit this group at
>>>>>>> http://groups.google.com/**group**/clojure?hl=en<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+u...@googlegroups.com.
>>>>>>> For more options, visit 
>>>>>>> https://groups.google.com/**grou**ps/opt_out<https://groups.google.com/groups/opt_out>
>>>>>>> .
>>>>>>>  
>>>>>>>  
>>>>>>>
>>>>>>
>>>>>>  -- 
>>>> -- 
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Clojure" group.
>>>> To post to this group, send email to clo...@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+u...@**googlegroups.com
>>>> For more options, visit this group at
>>>> http://groups.google.com/**group/clojure?hl=en<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+u...@**googlegroups.com.
>>>> For more options, visit 
>>>> https://groups.google.com/**groups/opt_out<https://groups.google.com/groups/opt_out>
>>>> .
>>>>  
>>>>  
>>>>
>>>
>>>  -- 
>> -- 
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to clo...@googlegroups.com<javascript:>
>> Note that posts from new members are moderated - please be patient with 
>> your first post.
>> To unsubscribe from this group, send email to
>> clojure+u...@googlegroups.com <javascript:>
>> 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+u...@googlegroups.com <javascript:>.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>  
>>  
>>
>
>

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