kairos-lang 1.0.1 → 1.0.2
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/README.md +1 -1
- package/dist/eval.d.ts +2 -0
- package/dist/eval.js +14 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -188,7 +188,7 @@ baseAlign・再実行の外側フレーム再記録〕)。
|
|
|
188
188
|
|
|
189
189
|
## テスト
|
|
190
190
|
|
|
191
|
-
(
|
|
191
|
+
(29 ファイル・657 本〔doctest 込み〕。下記の個別解説に加え、後発の
|
|
192
192
|
`test/empty-table.test.ts`〔ADR-45〕・`test/external.test.ts`〔ADR-46・35 本〕・
|
|
193
193
|
`test/cycle-labels.test.ts`〔ADR-47〕・`test/split-parent.test.ts`〔ADR-48〕・
|
|
194
194
|
`test/take.test.ts`/`test/takelast.test.ts`〔ADR-49/52〕・`test/hour-window.test.ts`〔ADR-50〕・
|
package/dist/eval.d.ts
CHANGED
|
@@ -410,6 +410,8 @@ export declare class Evaluator {
|
|
|
410
410
|
applyStage(stream: StreamV, stage: Stage, env: Env): StreamV;
|
|
411
411
|
/** 糖衣右辺の変換適用: 基底 B(s => s |> …)とポイントフリー略記 A の両方(§4.8) */
|
|
412
412
|
private applyTransform;
|
|
413
|
+
/** 前文メンバー roll:(spec §3.3=ロール規約の畳み込み・1.0.2 で実装): 規約の位置引数が無いときの既定 */
|
|
414
|
+
private rollMember;
|
|
413
415
|
private axisMember;
|
|
414
416
|
toStream(v: V, name?: string): StreamV;
|
|
415
417
|
/** snapTo/within の対象窓の要素グリッド(ADR-36 判断 2 の「要素グリッド」)。
|
package/dist/eval.js
CHANGED
|
@@ -524,6 +524,12 @@ export class Evaluator {
|
|
|
524
524
|
absorb(st.block);
|
|
525
525
|
if (st.expr) {
|
|
526
526
|
base = this.rt.premises.get(st.expr.base) ?? this.err(`未定義の premise: ${st.expr.base}`);
|
|
527
|
+
// 1.0.2: 前文メンバー(calendar:/tz:/axis:/wkst:/roll:/source:/epoch:)は基底連鎖から継承し、ブロックの宣言が
|
|
528
|
+
// 上書きする(ADR-35 改訂 3=還流 2026-09-23 定期便 §3)。公開語の内側(evalDef の overlayMembers=判断 8)と
|
|
529
|
+
// 同じ集合を入口の本体層にも見せる——source: も同様(判断 5「nonWorking を上書きする派生は source: も上書き」は
|
|
530
|
+
// 宣言必須「寄り」で未執行=従来どおり)。
|
|
531
|
+
for (const [k, v] of this.overlayMembers(new Map(), base))
|
|
532
|
+
members.set(k, v);
|
|
527
533
|
if (st.expr.withBlock)
|
|
528
534
|
absorb(st.expr.withBlock);
|
|
529
535
|
for (const stage of st.expr.stages) {
|
|
@@ -2667,7 +2673,7 @@ export class Evaluator {
|
|
|
2667
2673
|
return this.filterByPredicate(stream, p => this.bool(this.applyValue(pred, [{ k: 'point', ms: p }], env)));
|
|
2668
2674
|
}
|
|
2669
2675
|
case 'roll': {
|
|
2670
|
-
const conv = this.sym(this.evalExpr(positional[0] ?? this.
|
|
2676
|
+
const conv = this.sym(this.evalExpr(positional[0] ?? this.rollMember(env), env));
|
|
2671
2677
|
const axisS = this.toStream(this.evalAxis(named('on') ?? this.axisMember(env, 'roll'), env));
|
|
2672
2678
|
this.checkAlign(stream.align, axisS.align, 'roll(on:)');
|
|
2673
2679
|
const axis = axisS.pts;
|
|
@@ -3067,6 +3073,13 @@ export class Evaluator {
|
|
|
3067
3073
|
}
|
|
3068
3074
|
this.err('糖衣の右辺を変換として適用できない(生成子を含む糖衣は生成子位置で使う)');
|
|
3069
3075
|
}
|
|
3076
|
+
/** 前文メンバー roll:(spec §3.3=ロール規約の畳み込み・1.0.2 で実装): 規約の位置引数が無いときの既定 */
|
|
3077
|
+
rollMember(env) {
|
|
3078
|
+
const m = env.members.get('roll');
|
|
3079
|
+
if (!m)
|
|
3080
|
+
this.err('roll は規約が必要(I3)——位置引数で Following/Preceding を書くか前文で roll: を宣言');
|
|
3081
|
+
return typeof m === 'string' ? { t: 'name', name: m } : m;
|
|
3082
|
+
}
|
|
3070
3083
|
axisMember(env, op) {
|
|
3071
3084
|
const m = env.members.get('axis');
|
|
3072
3085
|
if (!m)
|