×ばつ callback/generator). Useful for pattern matching with extraction, constraint search, type inference, planners, expert systems, and policy checks. ESM, single runtime dependency (deep6). - solvers gen · uhop/yopl Wiki"> ×ばつ callback/generator). Useful for pattern matching with..." /> ×ばつ callback/generator). Useful for pattern matching with..." />×ばつ callback/generator). Useful for pattern matching with..." />
Skip to content

Navigation Menu

Sign in
Sign up

solvers gen

Eugene Lazutkin edited this page Apr 7, 2026 · 3 revisions

solvers-gen

Synchronous generator-based solver. Yields one Env per solution and supports lazy enumeration.

Import

import gen from 'yopl/solvers/gen.js';

Signature

gen(rules, name, args): Generator<Env>

Same rules / name / args semantics as solve, but returns a generator instead of taking a callback.

Example

import {variable} from 'deep6/env.js';
import assemble from 'deep6/traverse/assemble.js';
import gen from 'yopl/solvers/gen.js';
const rules = {
 member: [(V, X) => [{args: [{value: V, next: X}, V]}], (V, X) => [{args: [{next: X}, V]}, {name: 'member', args: [X, V]}]]
};
const list = {value: 1, next: {value: 2, next: {value: 3, next: null}}};
const X = variable('X');
for (const env of gen(rules, 'member', [list, X])) {
 console.log(assemble(X, env)); // 1, 2, 3
}

Lazy enumeration also works — break out of the loop or call it.next() directly to stop after the first solution.

Clone this wiki locally

AltStyle によって変換されたページ (->オリジナル) /