>
> You've made some good observations.  I haven't thought of this in terms of 
> threshold reads before, but what you're describing sounds like the 
> implementation of deferred goals in some MK variants.
>
> Deferred goals are resumed when the variables they depend on become known, 
> which should be able to support dynamic interleaving, as in your 
> interpreter/type-inferencer example.
>

Yep, that sounds like a threshold read. What does "known" mean? Fully 
ground, or just non-fresh?

In the former case, the tripwire set would be {{x} | x is any value}; in 
the latter case, ignoring constraints for the moment, I think it would be 
something like [{x} for all non-compound values x] ++ [{ x | x equals (cons 
<anything> <anything>) }], where 'cons' is the only compound-value 
constructor.

I suspect it's easy to prove that you can also defer until symbolo/numbero 
constraints are applied, if you're happy with a more coarse-grained read; 
then the tripwire is [{x | x is a symbol}, {x | x is a number}, {x | x is a 
cons}] ++ [{x} for all non-number, non-symbol, non-compound values x].

I guess one immediate conclusion is: if "known" means threshold-reading a 
valid tripwire set, Lindsey Kuper has proven that you're free to schedule 
goals in any way you like without changing the results of the user's 
program. [Completeness of the search still requires attention.]

It's not working well enough to be useful yet.
>

Interesting; what are its shortcomings? 

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