kairos-lang 1.0.0
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/LICENSE +202 -0
- package/NOTICE +2 -0
- package/README.md +260 -0
- package/dist/ast.d.ts +142 -0
- package/dist/ast.js +1 -0
- package/dist/cli.d.ts +55 -0
- package/dist/cli.js +309 -0
- package/dist/eval.d.ts +438 -0
- package/dist/eval.js +3198 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +64 -0
- package/dist/lexer.d.ts +33 -0
- package/dist/lexer.js +171 -0
- package/dist/parser.d.ts +11 -0
- package/dist/parser.js +644 -0
- package/dist/tz.d.ts +57 -0
- package/dist/tz.js +216 -0
- package/package.json +63 -0
- package/stdlib/fiscal.kairos +12 -0
- package/stdlib/gregorian.kairos +36 -0
- package/stdlib/isoweek.kairos +16 -0
package/dist/eval.d.ts
ADDED
|
@@ -0,0 +1,438 @@
|
|
|
1
|
+
import type { Expr, Stage, Statement, Program, Param, ListElem, CoveringRange } from './ast.ts';
|
|
2
|
+
import type { DateVal, WidthVal } from './lexer.ts';
|
|
3
|
+
import { Tz } from './tz.ts';
|
|
4
|
+
export declare class KairosError extends Error {
|
|
5
|
+
}
|
|
6
|
+
/** 供給エラー(ADR-46 判断 7 (a)): 解決失敗の機械可読な部分類。実装系(発報層等)は本分類を
|
|
7
|
+
* boot throw から除外して劣化運転に落としてよい——契約違反(KairosError)とは区別される */
|
|
8
|
+
export declare class SupplyError extends KairosError {
|
|
9
|
+
}
|
|
10
|
+
export interface Iv {
|
|
11
|
+
start: number;
|
|
12
|
+
end: number;
|
|
13
|
+
}
|
|
14
|
+
export interface WinLevel {
|
|
15
|
+
name?: string;
|
|
16
|
+
iv: Iv[];
|
|
17
|
+
labelFn?: LambdaV;
|
|
18
|
+
grain?: GridTag | null;
|
|
19
|
+
ann: Ann[];
|
|
20
|
+
/** 窓列への並行ラベル列(ADR-39): 添字=窓列序数(実効被覆域内の先頭マーカー起点の窓が 0)。
|
|
21
|
+
* 窓はラベルを格納しない——束縛に付く射影の定義データ(ADR-30 の原理の窓版) */
|
|
22
|
+
labels?: (number | string | boolean)[];
|
|
23
|
+
/** 窓列への周期ラベル(ADR-47): ラベル(窓 i) = list[(i − i0) mod N]。i0=anchor の属する窓の
|
|
24
|
+
* 窓列序数(マーカー列基準=実体化・評価範囲に依存しない) */
|
|
25
|
+
labelsCycle?: {
|
|
26
|
+
list: (number | string | boolean)[];
|
|
27
|
+
i0: number;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/** 評価註釈(ADR-37・I6): 「範囲外」(out-of-coverage)の区間の出自。値に随伴し、
|
|
31
|
+
* 演算子の輸送表(§4.10)で伝播する。from/to は ±Infinity 可=内部は非クリップで運び、
|
|
32
|
+
* 評価範囲 [from, to) へのクリップは表面(runProgram の結果組み立て)で一度だけ行う(判断 8)。 */
|
|
33
|
+
export interface Ann {
|
|
34
|
+
from: number;
|
|
35
|
+
to: number;
|
|
36
|
+
source: string;
|
|
37
|
+
covering: string;
|
|
38
|
+
covIv: Iv[];
|
|
39
|
+
asof?: string;
|
|
40
|
+
}
|
|
41
|
+
/** 範囲外分類の失敗(ADR-37 判断 6): 失敗した参照点が依存の実効被覆域の外。
|
|
42
|
+
* ストリーム文脈(filter の述語)は捕まえて「落として註釈」、純値文脈はそのまま
|
|
43
|
+
* 範囲外分類の明示エラーとして表面化する(「値なし」スロットは導入しない) */
|
|
44
|
+
export declare class OutOfCoverageSignal extends KairosError {
|
|
45
|
+
entries: Ann[];
|
|
46
|
+
/** 述語が読んだ窓の区間(窓越し参照=coincides 等)。filter の輸送はこの逆像へ拡幅する(F75・ADR-37 改訂 2) */
|
|
47
|
+
window?: Iv;
|
|
48
|
+
constructor(msg: string, entries: Ann[], window?: Iv);
|
|
49
|
+
}
|
|
50
|
+
/** 整列(ADR-36): 「全点が原子グリッド G=(幅・正規化位相・tz 名)の目盛り点上にある」という
|
|
51
|
+
* 静的主張。null は「なし」。位相は幅を法として正規化(civil=市民日序数 mod 日数幅+日内オフセット・
|
|
52
|
+
* elapsed=anchor/紀元の chronos ms mod 幅)——既定整列と等価な anchor: は同一 G になり、
|
|
53
|
+
* 日内オフセットを持つ anchor(毎日 09:00 級)は既定 day と別 G になる。
|
|
54
|
+
* プロトタイプは評価時にタグとして伝播する(束縛解決後静的検査の近似)。 */
|
|
55
|
+
export interface GridTag {
|
|
56
|
+
kind: 'civil' | 'elapsed' | 'vacuous';
|
|
57
|
+
step: number;
|
|
58
|
+
phase: number;
|
|
59
|
+
off: number;
|
|
60
|
+
tz: string;
|
|
61
|
+
}
|
|
62
|
+
export type V = number | boolean | string | V[] | PointV | TimeV | StreamV | WindowsV | CycleV | TableV | LambdaV | WidthV | ChronosV | InstantV;
|
|
63
|
+
export interface PointV {
|
|
64
|
+
k: 'point';
|
|
65
|
+
ms: number;
|
|
66
|
+
}
|
|
67
|
+
export interface TimeV {
|
|
68
|
+
k: 'time';
|
|
69
|
+
todMs: number;
|
|
70
|
+
}
|
|
71
|
+
export interface StreamV {
|
|
72
|
+
k: 'stream';
|
|
73
|
+
pts: number[];
|
|
74
|
+
wins: WinLevel[];
|
|
75
|
+
align: GridTag | null;
|
|
76
|
+
ann: Ann[];
|
|
77
|
+
/** 導出構造が実体化地平線を越えて続くか(生成子由来=真・テーブル由来=偽。ADR-39 の
|
|
78
|
+
* 「マーカー点列は有限」の静的判定=ADR-36 の整列計算と同型の保守近似) */
|
|
79
|
+
endless: boolean;
|
|
80
|
+
}
|
|
81
|
+
export interface WindowsV {
|
|
82
|
+
k: 'windows';
|
|
83
|
+
name?: string;
|
|
84
|
+
iv: Iv[];
|
|
85
|
+
units: number[];
|
|
86
|
+
labelFn?: LambdaV;
|
|
87
|
+
grain: GridTag | null;
|
|
88
|
+
}
|
|
89
|
+
export interface CycleV {
|
|
90
|
+
k: 'cycle';
|
|
91
|
+
iv: Iv[];
|
|
92
|
+
labels: string[];
|
|
93
|
+
anchor: number;
|
|
94
|
+
grain: GridTag | null;
|
|
95
|
+
}
|
|
96
|
+
export interface TableV {
|
|
97
|
+
k: 'table';
|
|
98
|
+
pts: number[];
|
|
99
|
+
labels?: string[];
|
|
100
|
+
covIv: Iv[];
|
|
101
|
+
covDesc: string;
|
|
102
|
+
concluded: boolean;
|
|
103
|
+
src?: string;
|
|
104
|
+
asof?: string;
|
|
105
|
+
align: GridTag | null;
|
|
106
|
+
}
|
|
107
|
+
export interface LambdaV {
|
|
108
|
+
k: 'lambda';
|
|
109
|
+
params: string[];
|
|
110
|
+
body: Expr;
|
|
111
|
+
env: Env;
|
|
112
|
+
}
|
|
113
|
+
export interface WidthV {
|
|
114
|
+
k: 'width';
|
|
115
|
+
w: WidthVal;
|
|
116
|
+
}
|
|
117
|
+
export interface ChronosV {
|
|
118
|
+
k: 'chronos';
|
|
119
|
+
}
|
|
120
|
+
export interface InstantV {
|
|
121
|
+
k: 'instant';
|
|
122
|
+
}
|
|
123
|
+
interface BindingDecl {
|
|
124
|
+
params: Param[];
|
|
125
|
+
rhs: Expr;
|
|
126
|
+
covering?: CoveringRange[];
|
|
127
|
+
}
|
|
128
|
+
export declare class PremiseInstance {
|
|
129
|
+
name: string;
|
|
130
|
+
members: Map<string, string | Expr>;
|
|
131
|
+
defs: Map<string, BindingDecl>;
|
|
132
|
+
base: PremiseInstance | null;
|
|
133
|
+
constructor(name: string, members: Map<string, string | Expr>, defs: Map<string, BindingDecl>, base: PremiseInstance | null);
|
|
134
|
+
findDef(name: string): BindingDecl | undefined;
|
|
135
|
+
/** 定義側 premise の特定(external のスナップショット単位=ADR-46 判断 5。member 解決規則の
|
|
136
|
+
* 「定義側優先」〈ADR-35 判断 8〉と同じ向きの探索) */
|
|
137
|
+
findDefOwner(name: string): {
|
|
138
|
+
def: BindingDecl;
|
|
139
|
+
owner: PremiseInstance;
|
|
140
|
+
} | undefined;
|
|
141
|
+
}
|
|
142
|
+
export interface Env {
|
|
143
|
+
rt: Runtime;
|
|
144
|
+
premise: PremiseInstance | null;
|
|
145
|
+
members: Map<string, string | Expr>;
|
|
146
|
+
locals: Map<string, V> | null;
|
|
147
|
+
parent: Env | null;
|
|
148
|
+
}
|
|
149
|
+
export interface RunOptions {
|
|
150
|
+
from: string;
|
|
151
|
+
to: string;
|
|
152
|
+
tz?: string;
|
|
153
|
+
resolve?: ExternalResolver;
|
|
154
|
+
}
|
|
155
|
+
/** external 束縛の宣言(解決子に渡す静的知識。ADR-46) */
|
|
156
|
+
export interface ExternalDecl {
|
|
157
|
+
kind: 'dates' | 'instants';
|
|
158
|
+
labels?: string[];
|
|
159
|
+
source: string;
|
|
160
|
+
}
|
|
161
|
+
/** external の解決値(wire)。kind ごとの形——dates は市民日付の字面(言語側で錨打ち=派生 tz
|
|
162
|
+
* 上書きで再錨可能)・instants は epoch ms(壁時計字面は DST 重複で二意になり得るため) */
|
|
163
|
+
export interface ExternalData {
|
|
164
|
+
dates?: string[];
|
|
165
|
+
instants?: number[];
|
|
166
|
+
covering: string;
|
|
167
|
+
asof: string;
|
|
168
|
+
labels?: string[];
|
|
169
|
+
}
|
|
170
|
+
export type ExternalResolver = (premise: string, binding: string, decl: ExternalDecl) => ExternalData;
|
|
171
|
+
/** 区間註釈の表面形(ADR-37 判断 5/7 (a)): 評価範囲 [from, to) にクリップ済み */
|
|
172
|
+
export interface ResultAnnotation {
|
|
173
|
+
kind: 'out-of-coverage';
|
|
174
|
+
from: string;
|
|
175
|
+
to: string;
|
|
176
|
+
fromMs: number;
|
|
177
|
+
toMs: number;
|
|
178
|
+
source: string;
|
|
179
|
+
covering: string;
|
|
180
|
+
asof?: string;
|
|
181
|
+
}
|
|
182
|
+
/** 区間註釈の正準一行表示。CLI と doctest(`#~>` 照合)で共有——書式のズレを封じる */
|
|
183
|
+
export declare function formatAnnotation(a: ResultAnnotation): string;
|
|
184
|
+
/** 被覆サマリの一行(ADR-37 判断 7 (b)): クリップしない静的な監視面 */
|
|
185
|
+
export interface CoverageEntry {
|
|
186
|
+
source: string;
|
|
187
|
+
covering: string;
|
|
188
|
+
asof?: string;
|
|
189
|
+
concluded: boolean;
|
|
190
|
+
runwayDays: number | null;
|
|
191
|
+
}
|
|
192
|
+
export interface RunResult {
|
|
193
|
+
results: {
|
|
194
|
+
source: string;
|
|
195
|
+
points: number[];
|
|
196
|
+
dates: string[];
|
|
197
|
+
annotations: ResultAnnotation[];
|
|
198
|
+
}[];
|
|
199
|
+
coverage: CoverageEntry[];
|
|
200
|
+
warnings: string[];
|
|
201
|
+
format: (ms: number) => string;
|
|
202
|
+
runtime: Runtime;
|
|
203
|
+
}
|
|
204
|
+
export declare class Runtime {
|
|
205
|
+
premises: Map<string, PremiseInstance>;
|
|
206
|
+
topBindings: Map<string, BindingDecl>;
|
|
207
|
+
warnings: string[];
|
|
208
|
+
/** external の解決子(ADR-46。RunOptions.resolve から) */
|
|
209
|
+
resolver?: ExternalResolver;
|
|
210
|
+
/** 被覆サマリの収集(ADR-37 判断 7 (b)): 評価が参照した各データ源・被覆主張 */
|
|
211
|
+
coverage: Map<string, {
|
|
212
|
+
source: string;
|
|
213
|
+
covering: string;
|
|
214
|
+
asof?: string;
|
|
215
|
+
concluded: boolean;
|
|
216
|
+
covEnd: number;
|
|
217
|
+
}>;
|
|
218
|
+
vocab: Set<string>;
|
|
219
|
+
tzName: string;
|
|
220
|
+
tz: Tz;
|
|
221
|
+
epoch: number;
|
|
222
|
+
computeEnd: number;
|
|
223
|
+
fromMs: number;
|
|
224
|
+
toMs: number;
|
|
225
|
+
constructor(fromMs: number, toMs: number, tz: string);
|
|
226
|
+
/** 実行既定 tz での錨打ち(表示・asof 等の寛容な文脈。隙間→最初の瞬間・重複→最初の候補) */
|
|
227
|
+
dateToMs(d: DateVal): number;
|
|
228
|
+
/** 表示形(実行既定 tz の市民ラベル) */
|
|
229
|
+
fmt(ms: number): string;
|
|
230
|
+
}
|
|
231
|
+
export declare class Evaluator {
|
|
232
|
+
/** premise 公開語のメモ(参照しうる文脈メンバー wkst・tz・calendar-system をキーに含める。I6)。
|
|
233
|
+
* tzChecks=右辺評価中に踏んだ predicateAlign 文脈の tz 名検査の記録(ADR-53=還流第 16 便 §2:
|
|
234
|
+
* ヒット時にも現在の predicateAlign で再実行——検査の順序独立性と値の同一性を両立) */
|
|
235
|
+
private defCache;
|
|
236
|
+
/** 評価中の束縛の tz 名検査ログ(ネスト束縛は全層へ記録——外側ヒット時は内側評価が走らないため)。
|
|
237
|
+
* baseAlign=束縛評価開始時の predicateAlign(記録条件②の基準。還流第 17 便 §2) */
|
|
238
|
+
private tzCheckLogs;
|
|
239
|
+
/** 評価中の label: 付与式(再入ガード。自己参照=定義中の束縛名のラベル射影を検出。ADR-34) */
|
|
240
|
+
private labelStack;
|
|
241
|
+
/** 導出中のカレンダー実体(自己・相互循環の検出。ADR-35 判断 8——ADR-41 の導出鎖
|
|
242
|
+
* isOpen → bizOpen → C.nonWorking 越しの自己・相互参照もこの集合で捕まる) */
|
|
243
|
+
private derivingEntities;
|
|
244
|
+
/** 解決中の束縛(引数なし束縛の自己・相互循環の検出=§4.8 の依存解析。F110) */
|
|
245
|
+
private resolvingDefs;
|
|
246
|
+
/** 適用評価中のラムダ本体(糖衣定義の再帰適用の検出=§4.8「展開は有限」。F110。
|
|
247
|
+
* 鍵は本体 Expr の参照同一性——lambda 値は解決ごとに再生成されるが本体 AST は同一。
|
|
248
|
+
* 正当な再適用(f(a) | f(b))は逐次・ネスト f(g(s)) は先に引数を評価するため再入しない) */
|
|
249
|
+
private applyingBodies;
|
|
250
|
+
/** 細粒度導出(ADR-41)のメモ——実体名+文脈キー(defCache と同じ面。ADR-41 帰結) */
|
|
251
|
+
private fineCache;
|
|
252
|
+
/** external のスナップショット(ADR-46 判断 5): 一評価一解決。キー=定義側 premise#束縛#解決後 source
|
|
253
|
+
* ——with 派生・多文脈・修飾参照は同一スナップショットを見る。変換(錨打ち・covering 端)は
|
|
254
|
+
* defCache 側=評価文脈ごと(リテラルの再錨と同型) */
|
|
255
|
+
private socketCache;
|
|
256
|
+
/** 評価中の premise 束縛(external の合法位置の文脈。null=本体層・top-level=external 不可) */
|
|
257
|
+
private externalCtx;
|
|
258
|
+
/** filter 述語に流れている点列の整列(免除系 tz 検査の評価時近似=ADR-36 改訂 2/ADR-40。
|
|
259
|
+
* 点はデータを運ばない(ADR-30/33)ため、静的検査の近似として評価文脈で運ぶ) */
|
|
260
|
+
private predicateAlign;
|
|
261
|
+
/** 束縛右辺の評価中、遮断した呼び出し側 locals 鎖(誘導文言用。ADR-53=還流第 16 便 §1)。
|
|
262
|
+
* 束縛右辺の名前解決は「束縛・premise 語・前文メンバー・列挙」で閉じる——呼び出し側の
|
|
263
|
+
* ラムダ変数には落とさない(定義の意味が使用箇所の変数名に依存する捕獲は静的エラー) */
|
|
264
|
+
private severedLocalsEnv;
|
|
265
|
+
rt: Runtime;
|
|
266
|
+
constructor(rt: Runtime);
|
|
267
|
+
runProgram(program: Program, defaultMembers: Map<string, string | Expr>): RunResult['results'];
|
|
268
|
+
registerPremise(st: Statement & {
|
|
269
|
+
t: 'premiseDef';
|
|
270
|
+
}): void;
|
|
271
|
+
/** rephase(δ, on: W, unit: U) → W = U span (_ => k) phase: φ₀+δ(§3.7) */
|
|
272
|
+
private rephaseArgs;
|
|
273
|
+
private expandShiftBoundary;
|
|
274
|
+
private constNum;
|
|
275
|
+
private constLambdaValue;
|
|
276
|
+
/** rhs が covering: つき、または日付要素を含むテーブルリテラルを含むか(tz: 必須の執行の判定)。
|
|
277
|
+
* external 束縛も対象(解決値 covering の端と kind: dates の錨は定義側 tz で解決——ADR-46 判断 4) */
|
|
278
|
+
private hasDateTable;
|
|
279
|
+
/** cycle のラベル列・labels: 列から列挙ラベル語彙を集める(名前解決のフォールバック用) */
|
|
280
|
+
scanVocab(e: Expr | ListElem): void;
|
|
281
|
+
resolve(name: string, env: Env): V;
|
|
282
|
+
/** 名前が束縛(locals・premise 公開語・メンバー・top-level)として解決可能か(軸位置の曖昧性検出用) */
|
|
283
|
+
private isBoundName;
|
|
284
|
+
private calendarSystemOf;
|
|
285
|
+
/** member 解決規則(ADR-35 判断 8): 定義側(root と base 連鎖)が宣言するメンバーは定義側の値で
|
|
286
|
+
* 固定し、宣言しないメンバーだけ利用側で解決する(tz: の内側固定と wkst: の遅延解決が同居する形) */
|
|
287
|
+
private overlayMembers;
|
|
288
|
+
private memberStr;
|
|
289
|
+
/** premise 公開語の評価。裸名は root(利用側の premise)で再解決される=機構 A。
|
|
290
|
+
* 前文メンバーは定義側優先で上書き重ね(ADR-35 判断 8) */
|
|
291
|
+
private evalDef;
|
|
292
|
+
/** 明示の被覆主張(ADR-37 判断 5): 成分由来の註釈をこの束縛の主張の補集合で置き換える
|
|
293
|
+
* (相殺の唯一の口)。必要条件検査: 主張範囲 ⊆(成分の covering の和 ∪ 註釈区間の補集合)
|
|
294
|
+
* ——規則ベースの成分(註釈なし)は補集合側が全時間を語る */
|
|
295
|
+
private applyClaim;
|
|
296
|
+
/** external の合法位置の静的検査(ADR-46 判断 1): premise 束縛の rhs 自身または pipe の先頭のみ。
|
|
297
|
+
* 引数つき束縛・深い位置(ラムダ内・引数内・結合子の枝)は静的エラー */
|
|
298
|
+
private checkExternalPositions;
|
|
299
|
+
/** 外部供給宣言 external(ADR-46): 実行時に解決されるテーブルリテラル。宣言(kind・labels 値域・
|
|
300
|
+
* source)が字面の代役=静的知識を先取りし、解決値にリテラルと同一の統治検査を課す */
|
|
301
|
+
private evalExternal;
|
|
302
|
+
/** 解決値→テーブル値の変換と契約検査(ADR-46 判断 6。リテラルと同一の統治・文言体系) */
|
|
303
|
+
private externalToTable;
|
|
304
|
+
/** asof: メンバーの表示形(註釈・被覆サマリの属性) */
|
|
305
|
+
private asofOf;
|
|
306
|
+
/** 被覆サマリへの登録(ADR-37 判断 7 (b)): 評価が参照した各データ源・被覆主張 */
|
|
307
|
+
private registerCoverage;
|
|
308
|
+
/** テーブルの範囲外註釈=覆域の補集合(ADR-37 判断 1: 値は列が決め、註釈は covering が決める) */
|
|
309
|
+
private tableAnn;
|
|
310
|
+
/** 窓相当の値の註釈(窓列の実効被覆域の補集合)。生成語の windows(暦法純粋)は無註釈 */
|
|
311
|
+
private winAnnOfV;
|
|
312
|
+
/** 窓リーダーの覆域検査(ADR-37 判断 4/6・F82): 点が窓に解決できても、その窓が窓列自身の
|
|
313
|
+
* 註釈区間(マーカー覆域の補集合)に交差するなら窓境界そのものが未知——証人・序数の判定
|
|
314
|
+
* 以前に範囲外へ分類する(過小近似は不可。合成マーカー(openTick | closeTick 級)の帯が
|
|
315
|
+
* 覆域の尽きた側で黙って 24 時間帯化して読まれる欠陥の封止) */
|
|
316
|
+
private winCovOrOut;
|
|
317
|
+
/** 分類器(ADR-37 判断 6): 失敗点が依存の実効被覆域の外=註釈区間の内なら範囲外シグナル・
|
|
318
|
+
* 内(覆域内の失敗)なら従来どおり硬エラー(取り違え=ADR-16 の統治のまま) */
|
|
319
|
+
private outOrErr;
|
|
320
|
+
private everyDay;
|
|
321
|
+
/** 在圏 tz 名(ADR-36 判断 6: リテラル文字列の等値)。未宣言は実行既定 tz へフォールバック */
|
|
322
|
+
private tzNameOf;
|
|
323
|
+
/** 在圏 tz の幾何(ADR-33 射影パラメータモデル)——タグの tz 名と実グリッドはここで一致する */
|
|
324
|
+
private tzObjOf;
|
|
325
|
+
/** 日付・時刻リテラルの錨打ち(在圏 tz。ADR-33): 日付のみ=市民日の最初の瞬間・
|
|
326
|
+
* 時刻付きで DST の隙間(存在しない時刻)・重複(二意の時刻)は明示エラー */
|
|
327
|
+
private anchorDate;
|
|
328
|
+
/** 単独時刻リテラルの錨打ち(ADR-51): epoch 錨日 1970-01-01(在圏 tz)+日内時刻。
|
|
329
|
+
* 現行 tzdb 全ゾーンで 1969-12-30〜1970-01-04 に DST 遷移は無い(悉皆確認済み)が、
|
|
330
|
+
* 錨打ちは anchorDate と同じ厳格規約を通す(万一の非一意は黙らせない) */
|
|
331
|
+
private anchorTimeOfDay;
|
|
332
|
+
/** 市民日グリッド(1d・既定整列・在圏 tz)——テーブル・day 原子の整列の既定形 */
|
|
333
|
+
private dayGrain;
|
|
334
|
+
/** 整列の検査(ADR-36 判断 3): 等値所属の両辺は同一 G を要求 */
|
|
335
|
+
private checkAlign;
|
|
336
|
+
/** 免除系の tz 名検査(ADR-36 改訂 2・ADR-40 判断 6): 区間所属は幅・位相を問わない(免除は維持)が、
|
|
337
|
+
* tz 名だけは日付座標系そのもの——市民グリッド入力 × 市民の窓要素グリッドの不一致は
|
|
338
|
+
* 「ラベル 1 日ずれの束ね・曜日読み」が黙って通る形なので静的エラー。snapTo は除外(chronos 所属) */
|
|
339
|
+
private checkTzMembership;
|
|
340
|
+
/** 軸位置の名前の評価(ADR-35 判断 4): 束縛は通常解決・premise 名だけならカレンダー実体の
|
|
341
|
+
* 読み替え(標準導出 bizDay)・両方に解決できる名前は曖昧=静的エラー */
|
|
342
|
+
private evalAxis;
|
|
343
|
+
/** 在圏 calendar: の実体の解決(deriveBizDay / deriveBizFine の共通部) */
|
|
344
|
+
private calendarEntity;
|
|
345
|
+
/** bizDay 標準導出(ADR-35 判断 3/4): everyDay \ C.nonWorking——everyDay は在圏解決・
|
|
346
|
+
* C.nonWorking は C にピン(member 解決規則で内側固定)。正体判定込み */
|
|
347
|
+
private deriveBizDay;
|
|
348
|
+
/** 細粒度標準導出(ADR-41): bizOpen・bizClose・isOpen の共通実体化。評価は実体相対
|
|
349
|
+
* (判断 3)——C の env(member 解決=定義側優先・ADR-35 判断 8)で C.sessionOpens・C.sessionCloses・
|
|
350
|
+
* C.nonWorking・C.everyDay を読む。対宣言と整合性の検査は細粒度導出の初回使用時 */
|
|
351
|
+
private deriveBizFine;
|
|
352
|
+
/** 整合性検査(ADR-41 判断 2): マーカー列(sessionOpens/sessionCloses の成分別の素性つきマージ)の局所交互。
|
|
353
|
+
* 定義域=結合実効被覆域(両ストリームの註釈区間の補集合)∩ 実体化範囲——註釈区間は未知で
|
|
354
|
+
* あって違反ではない。定義域の頭の孤立 close・尾の孤立 open は切り欠きとして合法。
|
|
355
|
+
* 同時刻の open/close は両点保持——順序は文脈で一意なので状態を変えない。層はデータ相対 */
|
|
356
|
+
private checkAlternation;
|
|
357
|
+
/** isOpen(t) の判定(ADR-41 判断 3): t が bizOpen セッションの半開区間の和に入るか。
|
|
358
|
+
* 覆域は証人規則の三分岐——真偽が sessionOpens/sessionCloses/nonWorking の註釈区間に依存するなら範囲外
|
|
359
|
+
* (filter 文脈は落として註釈・純値文脈は明示エラー。ADR-37 判断 6 の分類器と同じ層) */
|
|
360
|
+
private isOpenAt;
|
|
361
|
+
/** isOpen の範囲外シグナル(ADR-41 判断 3 の範囲外側・ADR-37 の分類器の流儀) */
|
|
362
|
+
private openOut;
|
|
363
|
+
evalExpr(e: Expr, env: Env): V;
|
|
364
|
+
private evalList;
|
|
365
|
+
/** covering-list の解決(ADR-37 判断 9): 端は premise tz の市民日・年は暦年・
|
|
366
|
+
* 端の省略=開端(完結主張=±∞)・区間リスト=中抜けの申告 */
|
|
367
|
+
private resolveCovering;
|
|
368
|
+
/** covering の端は premise の tz の市民日で解決する(ADR-37 判断 1) */
|
|
369
|
+
private coveringEdge;
|
|
370
|
+
private evalBin;
|
|
371
|
+
private eq;
|
|
372
|
+
private evalCall;
|
|
373
|
+
private lookupLocal;
|
|
374
|
+
private lookupBinding;
|
|
375
|
+
private bindParams;
|
|
376
|
+
/** 値の適用: ラムダ・cycle(点→ラベル)・ラベル付きテーブル(点→ラベル。ADR-30 束縛名射影)・
|
|
377
|
+
* label: 付与式つきの窓(点→ラベル。§4.9・ADR-34 束縛名射影)。
|
|
378
|
+
* 窓束縛は引数の型で dispatch(ADR-42 判断 4: 点→射影・値→窓インスタンス参照=逆像。
|
|
379
|
+
* 判定時点は糖衣展開後・実引数束縛後=実引数の評価値の型) */
|
|
380
|
+
applyValue(callee: V, args: V[], env: Env, calleeName?: string): V;
|
|
381
|
+
/** 窓束縛への引数の型域(ADR-42 判断 7 (e)): 点(射影)か値(インスタンス参照)のみ */
|
|
382
|
+
private checkArgIsPoint;
|
|
383
|
+
/** 窓インスタンス参照(ADR-42 判断 2): W(v) ≡ W の要素点列 |> filter(d => W(d) == v)。
|
|
384
|
+
* 要素点列=W の定義が窓に束ねた入力点列のうち W の窓に属する点(grid/span/split 連鎖では
|
|
385
|
+
* 原子グリッドの目盛りと同値・segmentBy では入力ストリームの点=F93 の修正)。
|
|
386
|
+
* 出力の註釈区間=窓列の実効被覆域の補集合(判断 3 の輸送行=F94・segmentBy 行の継承)。
|
|
387
|
+
* ラベルは窓ごとに一定(付与式は窓先頭点で評価=ADR-34 の構造保証)なので窓単位で評価する
|
|
388
|
+
* (外延等価の最適化——ADR-42 帰結)。ラベル一意でなければ全マッチの和・ゼロマッチは空(ADR-15) */
|
|
389
|
+
private windowInstance;
|
|
390
|
+
/** 述語 filter の共通経路(ADR-37 判断 4/6・F75): 述語が範囲外参照を要求した点は落とし、
|
|
391
|
+
* 依存の註釈区間(窓越し参照は読んだ窓の逆像へ拡幅)を出力へ輸送する。filter 段と
|
|
392
|
+
* 窓インスタンス参照(ADR-42 判断 3)が共有する。
|
|
393
|
+
* predicateAlign=述語に流れる点の整列(免除系 tz 検査の評価時近似の文脈。ADR-40) */
|
|
394
|
+
private filterByPredicate;
|
|
395
|
+
/** label: 射影(§4.9・ADR-34): 名前(d) ≡ 付与式(d の属する窓の先頭点)。評価は射影時・遅延(I7) */
|
|
396
|
+
private projectLabel;
|
|
397
|
+
/** gen 語ごとの既知 named-arg(ADR-39: 未知の名前付き引数を黙って捨てない)。
|
|
398
|
+
* cycle の label: は既知に含め、genLabelFn の専用エラー(ADR-34)に委ねる */
|
|
399
|
+
private static readonly GEN_NAMED;
|
|
400
|
+
private evalGen;
|
|
401
|
+
/** segmentBy の labels: リストの評価(ADR-39): リテラルまたはリスト束縛名。
|
|
402
|
+
* ラベル値の型域は ADR-34 判断 3 と同一(スカラー値・等質・空リスト不可) */
|
|
403
|
+
private windowLabelList;
|
|
404
|
+
/** gen-expr の label: 付与式(§4.9・ADR-34)。ラムダ値を評価時の環境ごと閉包として保持し、
|
|
405
|
+
* 評価は射影時まで遅延する(I7。premise 相対の遅延解決=ADR-17 はラムダの env が担う) */
|
|
406
|
+
private genLabelFn;
|
|
407
|
+
private labelLambda;
|
|
408
|
+
/** core 段ごとの既知 named-arg(ADR-39: 未知の名前付き引数を黙って捨てない——タイポの検査面) */
|
|
409
|
+
private static readonly STAGE_NAMED;
|
|
410
|
+
applyStage(stream: StreamV, stage: Stage, env: Env): StreamV;
|
|
411
|
+
/** 糖衣右辺の変換適用: 基底 B(s => s |> …)とポイントフリー略記 A の両方(§4.8) */
|
|
412
|
+
private applyTransform;
|
|
413
|
+
private axisMember;
|
|
414
|
+
toStream(v: V, name?: string): StreamV;
|
|
415
|
+
/** snapTo/within の対象窓の要素グリッド(ADR-36 判断 2 の「要素グリッド」)。
|
|
416
|
+
* windows=生成連鎖の grain・窓つきストリーム=最内窓の grain(segmentBy はマーカーの整列) */
|
|
417
|
+
private winGrainOf;
|
|
418
|
+
/** 対象窓列の実体化下限=窓 tz の紀元の市民日開始(紀元は tz 相対=ADR-33。F107)。
|
|
419
|
+
* 市民グリッド以外(経過・整列なし)は実行既定 tz の紀元(従来判定)に落とす——
|
|
420
|
+
* anchored grid の位相による頭の切り欠き(紀元以後・窓なし)は従来どおり③硬エラー側 */
|
|
421
|
+
private windowFloorOf;
|
|
422
|
+
toPoints(v: V): number[];
|
|
423
|
+
private windowsOf;
|
|
424
|
+
/** split の親・by: の受理(ADR-48): パーティション窓に加え、規則マーカー由来の実効パーティション
|
|
425
|
+
* (覆域註釈のない segmentBy 製窓列=within が受けるものの部分集合)を受ける。
|
|
426
|
+
* データ由来(covering 付き)マーカーの窓列は受理しない——覆域編集で g(i) の序数が動く
|
|
427
|
+
* (関数 g には labels: の同長性検査に相当する防波堤が無い)。empties: drop の親(非連続)も不可。 */
|
|
428
|
+
private splitWindowsOf;
|
|
429
|
+
/** 窓相当(windows・cycle・窓つきストリーム)から区間列を得る */
|
|
430
|
+
intervalsOf(v: V, env: Env): Iv[];
|
|
431
|
+
private checkPartition;
|
|
432
|
+
private num;
|
|
433
|
+
private bool;
|
|
434
|
+
private sym;
|
|
435
|
+
private point;
|
|
436
|
+
private err;
|
|
437
|
+
}
|
|
438
|
+
export {};
|