<div dir="ltr"><div>That would be a welcome change for me as well. It would be nice to be able to interact with the theory more readily from an embedding, interactive application.<br><br></div><div>Thanks,<br></div>Evan<br>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Aug 16, 2013 at 11:29 AM, Jay McCarthy <span dir="ltr"><<a href="mailto:jay.mccarthy@gmail.com" target="_blank">jay.mccarthy@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">You could eval the datalog macro to do it at runtime.<br>
<br>
I could also expose the underlying protocol that ! and ? use, which IS<br>
based on runtime symbols. That would be more like exposing a database<br>
engine API than a Datalog API though.<br>
<br>
Jay<br>
<br>
On Fri, Aug 16, 2013 at 11:04 AM, Mikko Tiihonen<br>
<div class="HOEnZb"><div class="h5"><<a href="mailto:mikko.tiihonen@tmtiihonen.fi">mikko.tiihonen@tmtiihonen.fi</a>> wrote:<br>
> Thank you for the clarification!<br>
><br>
> Do I understand right that since the tables do not have any binding, there is no way to parameterize them in runtime? The macro approach works if the table is known in compile-time, but I am at loss to think of a way of providing the table to the query in a variable that gets its value during runtime.<br>

><br>
> Actually, since I'm doing just some preliminary exploration, this was a valuable and timely piece of advice and I will return to the drawing board and take this into consideration.<br>
><br>
> Have a nice weekend!<br>
><br>
> Best,<br>
><br>
> Mikko T.<br>
><br>
> Jay McCarthy kirjoitti 16.8.2013 kello 19:36:<br>
><br>
>> The table position is not an expression position because tables are<br>
>> not values and do not have any binding. In particular, they are not<br>
>> symbols as you assume in your example.<br>
>><br>
>> I could imagine trying to supporting something like your example, but<br>
>> it would be backwards incompatible and unlike any other Datalog system<br>
>> as far as I can tell. Do you have any opinions about this?<br>
>><br>
>> You can do something similar with a simple macro:<br>
>><br>
>> (define-syntax-rule (param-query table)<br>
>>  (datalog family<br>
>>           (? (table 'joseph2 X))))<br>
>><br>
>> (param-query parent)<br>
>><br>
>> On Fri, Aug 16, 2013 at 5:08 AM, Mikko Tiihonen<br>
>> <<a href="mailto:mikko.tiihonen@tmtiihonen.fi">mikko.tiihonen@tmtiihonen.fi</a>> wrote:<br>
>>> Hi!<br>
>>><br>
>>> I've been trying to parameterize Datalog queries and have stumbled into a problem with the tables in queries. As an example (from Datalog documentation):<br>
>>><br>
>>> #lang racket<br>
>>> (require datalog)<br>
>>> (define family (make-theory))<br>
>>> (datalog family<br>
>>>         (! (parent joseph2 joseph1))<br>
>>>         (! (parent joseph2 lucy))<br>
>>>         (! (parent joseph3 joseph2)))<br>
>>><br>
>>> -now if I run the query as shown in the documentation<br>
>>><br>
>>>        (let ([x 'joseph2])<br>
>>>          (datalog family<br>
>>>              (? (parent x X))))<br>
>>><br>
>>> the answer is as expected:<br>
>>><br>
>>>        '(#hasheq((X . joseph1)) #hasheq((X . lucy)))<br>
>>><br>
>>> However, if I parameterize the table:<br>
>>><br>
>>>        (let ([x 'parent])<br>
>>>          (datalog family<br>
>>>              (? (x 'joseph2 X))))<br>
>>><br>
>>> the query fails:<br>
>>><br>
>>>        '()<br>
>>><br>
>>> Are there any workarounds for this? I am grateful for any suggestions...<br>
>>><br>
>>> Best regards,<br>
>>><br>
>>> Mikko Tiihonen<br>
>>><br>
>>><br>
>>><br>
>>><br>
>>> ____________________<br>
>>>  Racket Users list:<br>
>>>  <a href="http://lists.racket-lang.org/users" target="_blank">http://lists.racket-lang.org/users</a><br>
>><br>
>><br>
>><br>
>> --<br>
>> Jay McCarthy <<a href="mailto:jay@cs.byu.edu">jay@cs.byu.edu</a>><br>
>> Assistant Professor / Brigham Young University<br>
>> <a href="http://faculty.cs.byu.edu/~jay" target="_blank">http://faculty.cs.byu.edu/~jay</a><br>
>><br>
>> "The glory of God is Intelligence" - D&C 93<br>
><br>
<br>
<br>
<br>
--<br>
Jay McCarthy <<a href="mailto:jay@cs.byu.edu">jay@cs.byu.edu</a>><br>
Assistant Professor / Brigham Young University<br>
<a href="http://faculty.cs.byu.edu/~jay" target="_blank">http://faculty.cs.byu.edu/~jay</a><br>
<br>
"The glory of God is Intelligence" - D&C 93<br>
<br>
____________________<br>
  Racket Users list:<br>
  <a href="http://lists.racket-lang.org/users" target="_blank">http://lists.racket-lang.org/users</a><br>
</div></div></blockquote></div><br></div>