On Mon, Mar 19, 2012 at 5:55 AM, Alan Post
<address@hidden> wrote:
On Thu, Mar 15, 2012 at 01:38:19AM +0100, Thomas Chust wrote:
> On Wed, 2012-03-14 at 18:23 -0600, Alan Post wrote:
> > [...]
> > (pretty-print (let ((s (amb 0 1 2))) (amb-collect s)))
> > [...]
> > produces:
> > [...]
> > (0)
> > [...]
>
> Hello,
>
> to me this behaviour looks correct. amb-collect is supposed to collect
> all the different values its argument can take on, but in your example s
> is not an ambivalent _expression_ -- the fact that s is bound to a value
> produced by amb only makes the let _expression_ ambivalent.
>
> To phrase it more technically: Every amb-collect creates a new dynamic
> scope for backtracking. Any ambivalence introduced in that dynamic scope
> will be resolved and the results will be collected but any outer dynamic
> scope will not be affected.
>
Thomas, John,
Thank you both very much. I did manage to start properly using the
amb egg, and completed a one-off homework assignment:
https://github.com/alanpost/permaculture-design-course/blob/master/guild/README
amb is very neat. I'll likely throw larger datasets and more
interesting constraints at it as I continue to explore this
problem space.
Wow, another permaculturist on the chicken scheme list, what is the probability of that? I got my design certification just over a year ago. Nice work on the guild design! Do you have further plans for the code?
-Alan
--
.i ma'a lo bradi cu penmi gi'e du