@metta-ts/core 1.0.2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +18 -6
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -5403,26 +5403,37 @@ var conjCountEnabled = () => process.env.METTA_CONJ_COUNT !== "0";
|
|
|
5403
5403
|
function splitVoidBuild(buildExpr, env) {
|
|
5404
5404
|
if (buildExpr.kind !== "expr") return void 0;
|
|
5405
5405
|
const voidable = (rhs) => {
|
|
5406
|
-
if (rhs.kind !== "expr" || rhs.items.length === 0 || rhs.items[0].kind !== "sym")
|
|
5406
|
+
if (rhs.kind !== "expr" || rhs.items.length === 0 || rhs.items[0].kind !== "sym")
|
|
5407
|
+
return void 0;
|
|
5407
5408
|
const op = rhs.items[0].name;
|
|
5408
5409
|
const args = rhs.items.slice(1);
|
|
5409
|
-
if (env.compiled?.get(op)?.kind !== "imperative" || args.some((a) => !a.ground))
|
|
5410
|
+
if (env.compiled?.get(op)?.kind !== "imperative" || args.some((a) => !a.ground))
|
|
5411
|
+
return void 0;
|
|
5410
5412
|
return { op, args };
|
|
5411
5413
|
};
|
|
5412
5414
|
const head = opOf(buildExpr);
|
|
5413
5415
|
if (head === "let" && buildExpr.items.length === 4 && atomEq(buildExpr.items[3], DONE_UNIT)) {
|
|
5414
5416
|
const v = voidable(buildExpr.items[2]);
|
|
5415
5417
|
if (v === void 0) return void 0;
|
|
5416
|
-
return {
|
|
5418
|
+
return {
|
|
5419
|
+
prefix: expr([buildExpr.items[0], buildExpr.items[1], DONE_UNIT, DONE_UNIT]),
|
|
5420
|
+
op: v.op,
|
|
5421
|
+
args: v.args
|
|
5422
|
+
};
|
|
5417
5423
|
}
|
|
5418
5424
|
if (head === "let*" && buildExpr.items.length === 3 && buildExpr.items[1].kind === "expr" && atomEq(buildExpr.items[2], DONE_UNIT)) {
|
|
5419
5425
|
const pairs = buildExpr.items[1].items;
|
|
5420
5426
|
const lastPair = pairs[pairs.length - 1];
|
|
5421
|
-
if (lastPair === void 0 || lastPair.kind !== "expr" || lastPair.items.length !== 2)
|
|
5427
|
+
if (lastPair === void 0 || lastPair.kind !== "expr" || lastPair.items.length !== 2)
|
|
5428
|
+
return void 0;
|
|
5422
5429
|
const v = voidable(lastPair.items[1]);
|
|
5423
5430
|
if (v === void 0) return void 0;
|
|
5424
5431
|
const newPairs = [...pairs.slice(0, -1), expr([lastPair.items[0], DONE_UNIT])];
|
|
5425
|
-
return {
|
|
5432
|
+
return {
|
|
5433
|
+
prefix: expr([buildExpr.items[0], expr(newPairs), DONE_UNIT]),
|
|
5434
|
+
op: v.op,
|
|
5435
|
+
args: v.args
|
|
5436
|
+
};
|
|
5426
5437
|
}
|
|
5427
5438
|
return void 0;
|
|
5428
5439
|
}
|
|
@@ -5510,7 +5521,8 @@ function tryCountAggregate(env, st, bnd, match) {
|
|
|
5510
5521
|
const { getCandidates, patterns } = matchSetup(env, st, match.items[1], match.items[2], bnd);
|
|
5511
5522
|
if (patterns.length !== 1) return void 0;
|
|
5512
5523
|
const pat = inst(env, bnd, patterns[0]);
|
|
5513
|
-
if (pat.kind !== "expr" || pat.items.length === 0 || pat.items[0].kind !== "sym")
|
|
5524
|
+
if (pat.kind !== "expr" || pat.items.length === 0 || pat.items[0].kind !== "sym")
|
|
5525
|
+
return void 0;
|
|
5514
5526
|
const seen = /* @__PURE__ */ new Set();
|
|
5515
5527
|
for (let i = 1; i < pat.items.length; i++) {
|
|
5516
5528
|
const a = pat.items[i];
|