These are good questions, I've been going through a similar experience 
again recently.  Initially confusing tabling with core.logic's pldb 
implementation, and the ^:index metadata flags.

I've been really enjoying using core.logic, but the lack of documentation 
and doc strings leaves you constantly guessing.  In particular it makes it 
hard to know what functions are part of the logic programming API and what 
are part of the implementation.  I suspect some are both, for interrop 
scenarios etc.

The approach I and I think others have taken is to leverage the minikanren 
literature & papers, along with the excellent Reasoned Schemer.  As far as 
I've seen core.logic implements most of this stuff, so you can find the 
equivalent and use it.  This said, it would clearly help to have better 
documentation in core.logic.  I'd offer to help in this regard, but I'm a 
beginer here myself.  

Regarding tabling have you looked at W. Byrds thesis, it covers it: 

https://github.com/webyrd/dissertation-single-spaced/raw/master/thesis.pdf

R.

On Saturday, 8 September 2018 21:11:16 UTC+1, Gordon Gustafson wrote:
>
> I've found these, but I'm still a little confused:
> https://github.com/clojure/core.logic/wiki/Tabling
> https://github.com/clojure/core.logic/wiki/Features#user-content-tabling
> https://clojuredocs.org/clojure.core.logic/tabled
>
> 1. What exactly is tabling for? Is it for helping programs terminate, or 
> is it a performance optimization?
> 2. Can it be used to 'cache' the results of a goal that's expensive to 
> compute?
> 3. Are there any more examples of how to use tabling, particularly 
> ^:tabled with the defne/defna/defnu forms?
>

-- 
You received this message because you are subscribed to the Google Groups 
"minikanren" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/minikanren.
For more options, visit https://groups.google.com/d/optout.

Reply via email to