Rosette – A solver-aided programming language
homes.cs.washington.edu
homes.cs.washington.edu
My plan is this: http://perl11.org/cperl/perlcperl.html#clp
use clp;
sub fact(int $i=0) :int {
assert $i>=0; return $i ? fact($i-1) : 1 }
say fact(7); # => 5040
fact($_) = 5040; # solve it!
say $_; # => 7
Rosetta for example uses the typical simple LISP approach, by having to manually declare the symbols, which are being backtracked on. amb() is similar, expressing ambiguity. This goes back to 1963. http://community.schemewiki.org/?amb