Discussion:
[Newbies] AMB
Sean P. DeNigris
2018-03-31 22:51:22 UTC
Permalink
Is anyone familiar with the AMB project, installable from SqMap catalog?

I got excited by the description's assertion that "it can do incredible
things" (it even provided an example. After reading the description, tests,
code, and references, I have an inkling what it does, but don't quite
understand what is "incredible" about it and don't want to miss the magic!!

The catalog description is:

This is the "ambigous", "nondeterminist", "angelic" operator aka amb

... more seriously described as a declarative control flow statement able to
enumerate over finite domains all values that make a program terminate. It
uses continuations to walk the tree of possible tuples, backtracking when
the program fails.

The amazing thing is the simplicity of the code: four short or very short
methods on the instance side, the class side methods only providing
syntactic sugar.

And it can do incredible things such as:

AMB assert: [:string :n :char | (string occurrencesOf: char) = n]
over: #('maman' 'barbapapa' 'guiliguili' 'arthur' 'chtulu')
and: #(2 4 1)
and: #($m $b $a $i $u)

See AMBTest for more magic.

I would have been unable to implement this by myself ! This is a port of the
code by Dorai Sitaram which is the reference documentation for amb:

http://www.ccs.neu.edu/home/dorai/t-y-scheme/t-y-scheme-Z-H-16.html#node_chap_14



-----
Cheers,
Sean
--
Sent from: http://forum.world.st/Squeak-Beginners-f107673.html
David T. Lewis
2018-03-31 23:46:17 UTC
Permalink
I am CCing squeak-dev because Stéphane Rollandin is active on that list.
Stef did the Squeak implementation and can probably answer your questions.

Dave
Post by Sean P. DeNigris
Is anyone familiar with the AMB project, installable from SqMap catalog?
I got excited by the description's assertion that "it can do incredible
things" (it even provided an example. After reading the description, tests,
code, and references, I have an inkling what it does, but don't quite
understand what is "incredible" about it and don't want to miss the magic!!
This is the "ambigous", "nondeterminist", "angelic" operator aka amb
... more seriously described as a declarative control flow statement able to
enumerate over finite domains all values that make a program terminate. It
uses continuations to walk the tree of possible tuples, backtracking when
the program fails.
The amazing thing is the simplicity of the code: four short or very short
methods on the instance side, the class side methods only providing
syntactic sugar.
AMB assert: [:string :n :char | (string occurrencesOf: char) = n]
over: #('maman' 'barbapapa' 'guiliguili' 'arthur' 'chtulu')
and: #(2 4 1)
and: #($m $b $a $i $u)
See AMBTest for more magic.
I would have been unable to implement this by myself ! This is a port of the
http://www.ccs.neu.edu/home/dorai/t-y-scheme/t-y-scheme-Z-H-16.html#node_chap_14
-----
Cheers,
Sean
--
Sent from: http://forum.world.st/Squeak-Beginners-f107673.html
_______________________________________________
Beginners mailing list
http://lists.squeakfoundation.org/mailman/listinfo/beginners
Loading...