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. -Alan -- .i ma'a lo bradi cu penmi gi'e du _______________________________________________ Chicken-users mailing list Chicken-users@nongnu.org https://lists.nongnu.org/mailman/listinfo/chicken-users