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 <[email protected] <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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 [email protected]
>>>>>>>>>> > 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 [email protected]
>>>>>>>>> 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 [email protected]
>>>>>>> Note that posts from new members are moderated - please be patient
>>>>>>> with your first post.
>>>>>>> To unsubscribe from this group, send email to
>>>>>>> [email protected]
>>>>>>> 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 [email protected].
>>>>>>> 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 [email protected]
>>>> 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 [email protected]<javascript:>
>> Note that posts from new members are moderated - please be patient with
>> your first post.
>> To unsubscribe from this group, send email to
>> [email protected] <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 [email protected] <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 [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
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 [email protected].
For more options, visit https://groups.google.com/groups/opt_out.