Data update

This commit is contained in:
Ingy döt Net 2023-08-01 14:30:30 -07:00
parent 07c7092a52
commit 61b93a2cd1
313 changed files with 6160 additions and 346 deletions

View file

@ -2,6 +2,8 @@ import system'routines;
import extensions;
import extensions'routines;
// --- Joinable --
joinable(former,later) = (former[former.Length - 1] == later[0]);
dispatcher = new
@ -27,25 +29,27 @@ dispatcher = new
}
};
// --- AmbValueCollection ---
class AmbValueCollection
{
object theCombinator;
object _combinator;
constructor new(params object[] args)
{
theCombinator := SequentialEnumerator.new(params args)
_combinator := SequentialEnumerator.new(params args)
}
seek(cond)
{
theCombinator.reset();
_combinator.reset();
theCombinator.seekEach:(v => dispatcher.eval(v,cond))
_combinator.seekEach:(v => dispatcher.eval(v,cond))
}
do(f)
{
var result := theCombinator.get();
var result := *_combinator;
if (nil != result)
{
dispatcher.eval(result,f)
@ -57,12 +61,16 @@ class AmbValueCollection
}
}
// --- ambOperator ---
singleton ambOperator
{
for(params object[] args)
= AmbValueCollection.new(params args);
}
// --- Program ---
public program()
{
try

View file

@ -0,0 +1,10 @@
(function amb op res
(filter #(= res (.. .. op args))
(.. for vec (skip 2 args))))
(var safe= @(= (0 args)))
(var predicate (comp vec (map (juxt 0 -1)) flatten (skip 1) (partition 2) (map (.. safe=)) (.. and)))
(amb predicate true ["the" "that" "a"] ["frog" "elephant" "thing"] ["walked" "treaded" "grows"] ["slowly" "quickly"])
;returns [["that" "thing" "grows" "slowly"]]