@mark1russell7/coeval 0.22.0 → 0.24.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/README.md +24 -5
- package/build/index.d.ts +442 -116
- package/build/index.d.ts.map +1 -1
- package/build/index.js +5848 -3680
- package/build/index.js.map +1 -1
- package/package.json +4 -4
- package/src/codec-laws.ts +152 -0
- package/src/codec.ts +2 -2
- package/src/conform.ts +663 -71
- package/src/deref.ts +17 -3
- package/src/durable.ts +21 -9
- package/src/effects.ts +1 -1
- package/src/errors.ts +17 -1
- package/src/evaluate.ts +188 -24
- package/src/formula.ts +60 -17
- package/src/index.ts +15 -0
- package/src/instances.ts +16 -1
- package/src/meaning.ts +43 -10
- package/src/parts.ts +7 -4
- package/src/providers.ts +4 -1
- package/src/reference.ts +122 -2
- package/src/schedule.ts +286 -45
- package/src/static.ts +59 -16
- package/src/stdlib.ts +188 -6
- package/src/syntax.ts +637 -48
- package/src/types.ts +2 -1
- package/src/world.ts +31 -4
package/build/index.d.ts
CHANGED
|
@@ -337,7 +337,8 @@ interface Domain {
|
|
|
337
337
|
/**
|
|
338
338
|
* The codec of a domain: it writes a member of the domain as JSON, and it reads the JSON again (D40). Both functions
|
|
339
339
|
* must be pure. `decode(encode(v))` must equal `v` by `sameValue` (EXT.ROUNDTRIP). The codec must give one JSON
|
|
340
|
-
* value for each member, thus the same value has the same document in each language (D12).
|
|
340
|
+
* value for each member, thus the same value has the same document in each language (D12). `codecLaws` examines
|
|
341
|
+
* these laws for the members of the domain (D130).
|
|
341
342
|
*/
|
|
342
343
|
interface DomainCodec {
|
|
343
344
|
/**
|
|
@@ -537,6 +538,15 @@ interface HostThing {
|
|
|
537
538
|
known?(key: Key): {
|
|
538
539
|
readonly thing: Thing;
|
|
539
540
|
} | undefined;
|
|
541
|
+
/**
|
|
542
|
+
* This optional function holds a kept read (SCHED.OWN-NODE). The evaluation did not ask for that read. Thus a host
|
|
543
|
+
* that follows the reads of an evaluation can tell the two apart. The kernel calls this function of the root `world`
|
|
544
|
+
* around each kept read that resolves its path.
|
|
545
|
+
*
|
|
546
|
+
* @param read - This function does the read.
|
|
547
|
+
* @returns What `read` gives.
|
|
548
|
+
*/
|
|
549
|
+
keeping?<T>(read: () => T): T;
|
|
540
550
|
}
|
|
541
551
|
/** Something that a path can reach: any value of the host, or a host thing. */
|
|
542
552
|
type Thing = unknown;
|
|
@@ -758,6 +768,44 @@ export declare function worldThing(world: World): Json;
|
|
|
758
768
|
* @returns The context.
|
|
759
769
|
*/
|
|
760
770
|
export declare function context(parts?: Partial<Context>): Context;
|
|
771
|
+
/**
|
|
772
|
+
* A compiled path: one static path for one navigator (PLAN.PATH). `compilePath` reads the root, the open roots and
|
|
773
|
+
* the steps one time. It asks the ladder of the verb `step` for each step document one time. Each resolution then
|
|
774
|
+
* examines only the values of the context. Code of a language reads a compiled path with `resolveCompiled`, thus the
|
|
775
|
+
* list of reads gets the read (PLAN.PATH-READS).
|
|
776
|
+
*/
|
|
777
|
+
interface CompiledPath {
|
|
778
|
+
/** The steps of the path, as the document gives them. The list of reads records these steps. */
|
|
779
|
+
readonly path: readonly unknown[];
|
|
780
|
+
/** The navigator of the compilation. A runtime with another navigator resolves the steps again. */
|
|
781
|
+
readonly nav: Navigator;
|
|
782
|
+
/**
|
|
783
|
+
* This function resolves the path from a context, without a record of hops. It records no read and it does not
|
|
784
|
+
* apply the grant of the evaluation, as `resolve` does not. Use it only outside an evaluation.
|
|
785
|
+
*
|
|
786
|
+
* @param ctx - The context.
|
|
787
|
+
* @returns The same resolution as `resolve(nav, ctx, path, { hops: false })`.
|
|
788
|
+
*/
|
|
789
|
+
resolve(ctx: Context): Resolution;
|
|
790
|
+
}
|
|
791
|
+
/**
|
|
792
|
+
* This function compiles one static path for one navigator. The resolver gives the same thing, error and reason as
|
|
793
|
+
* `resolve` without hops (PLAN.PATH-SAME). It keeps no value of a context.
|
|
794
|
+
*
|
|
795
|
+
* - Some paths take the full algorithm at once, because the short path cannot answer them. A path from `caps` or from
|
|
796
|
+
* a closed root is one. A path with a step document and each path of a navigator with `adopt` are others.
|
|
797
|
+
* - Each other path walks the short path from its root, and it takes the full algorithm when the values need it.
|
|
798
|
+
* - The walker of each step document comes from the ladder one time, here. The navigator and the step document do
|
|
799
|
+
* not change, thus the answer does not change either.
|
|
800
|
+
*
|
|
801
|
+
* An evaluator of a language calls this function in its `compile`, with the field `machine` of the input, and reads the
|
|
802
|
+
* result with `resolveCompiled` (PLAN.PATH-EXPORT).
|
|
803
|
+
*
|
|
804
|
+
* @param nav - The navigator. A plan compiles its paths for its machine.
|
|
805
|
+
* @param path - The steps. The first step is a root. The compiled path keeps this list, thus the host must not change it.
|
|
806
|
+
* @returns The compiled path.
|
|
807
|
+
*/
|
|
808
|
+
export declare function compilePath(nav: Navigator, path: readonly unknown[]): CompiledPath;
|
|
761
809
|
/**
|
|
762
810
|
* This function resolves a path from a context, and records each hop.
|
|
763
811
|
*
|
|
@@ -908,6 +956,10 @@ type CapsRule = {
|
|
|
908
956
|
readonly rule: "only";
|
|
909
957
|
readonly caps: readonly Cap[];
|
|
910
958
|
readonly in?: readonly (readonly Key[])[];
|
|
959
|
+
} | {
|
|
960
|
+
readonly rule: "grant";
|
|
961
|
+
readonly from: readonly Key[];
|
|
962
|
+
readonly in?: readonly (readonly Key[])[];
|
|
911
963
|
};
|
|
912
964
|
/**
|
|
913
965
|
* A lazy rule of a kind names the parts that an evaluation can skip and still give a value. An example is the
|
|
@@ -962,6 +1014,8 @@ interface KindFacts {
|
|
|
962
1014
|
* whose attributes each declare `circular` gives a fixed point.
|
|
963
1015
|
* - `collect`: the value of a node without an answer of the first four rungs and without a fold. The node combines
|
|
964
1016
|
* the contributions of each node of its subtree (TREE.COLLECT, D122).
|
|
1017
|
+
* - `higher`: the value of a node without an answer of the rungs before it. The term gives a document as data. The kit
|
|
1018
|
+
* evaluates that document with the node as `self`, thus its root is a new node under the node (TREE.HIGHER, D126).
|
|
965
1019
|
*/
|
|
966
1020
|
interface AttributeDeclaration {
|
|
967
1021
|
readonly copy?: boolean;
|
|
@@ -972,6 +1026,7 @@ interface AttributeDeclaration {
|
|
|
972
1026
|
readonly default?: Json;
|
|
973
1027
|
readonly circular?: CircularDeclaration;
|
|
974
1028
|
readonly collect?: CollectDeclaration;
|
|
1029
|
+
readonly higher?: Json;
|
|
975
1030
|
}
|
|
976
1031
|
/**
|
|
977
1032
|
* The declaration `collect` of an attribute (TREE.COLLECT, D122). The node of the attribute visits each node of its
|
|
@@ -1012,6 +1067,8 @@ interface CircularDeclaration {
|
|
|
1012
1067
|
readonly start: Json;
|
|
1013
1068
|
readonly limit?: number;
|
|
1014
1069
|
}
|
|
1070
|
+
/** The most generated documents on the way from a node to the root of its tree (TREE.HIGHER-DEPTH, D126). */
|
|
1071
|
+
export declare const GENERATION_LIMIT = 64;
|
|
1015
1072
|
/** The most rounds of a circular attribute without its own `limit` (TREE.CIRCULAR-LIMIT, D113). */
|
|
1016
1073
|
export declare const CIRCULAR_LIMIT = 100;
|
|
1017
1074
|
/** A declaration `circular` that the kit can use: its start value and its limit, or the reason of a bad declaration. */
|
|
@@ -1052,6 +1109,8 @@ export declare function collectOf(declared: unknown): CollectRule;
|
|
|
1052
1109
|
* equation sees no names.
|
|
1053
1110
|
* - `at`: the attributes with parameters of the node (TREE.AT, D124). Only the step `tree.at` reads them, and the
|
|
1054
1111
|
* equation sees each parameter as a name.
|
|
1112
|
+
* - `forwards`: the name of an attribute that gives a node. An attribute that no other rung answers comes from that
|
|
1113
|
+
* node (TREE.FORWARD, D126).
|
|
1055
1114
|
*/
|
|
1056
1115
|
interface TreeContract {
|
|
1057
1116
|
readonly equations?: Readonly<Record<string, Json>>;
|
|
@@ -1059,6 +1118,7 @@ interface TreeContract {
|
|
|
1059
1118
|
readonly attributes?: Readonly<Record<string, AttributeDeclaration>>;
|
|
1060
1119
|
readonly contributes?: Readonly<Record<string, Json>>;
|
|
1061
1120
|
readonly at?: Readonly<Record<string, AtEquation>>;
|
|
1121
|
+
readonly forwards?: string;
|
|
1062
1122
|
}
|
|
1063
1123
|
/**
|
|
1064
1124
|
* An attribute with parameters (TREE.AT, D124), as `paramAttr` in Kiama. The step `tree.at` gives the arguments. The
|
|
@@ -1112,6 +1172,15 @@ export declare function atArgsOf(params: readonly string[], args: unknown): AtAr
|
|
|
1112
1172
|
* @returns The JSON text, or `undefined` for a value that is not JSON data: a number that is not finite, a host value or a cycle.
|
|
1113
1173
|
*/
|
|
1114
1174
|
export declare function argsKey(value: unknown): string | undefined;
|
|
1175
|
+
/**
|
|
1176
|
+
* This function gives the structural key of a document (TREE.HIGHER-PLAN, D126). The fields of a record keep their
|
|
1177
|
+
* order, because the order of the parts decides the order of the JSON and the first error. Thus one key means one
|
|
1178
|
+
* document, and the two documents are equal by DOC.EQUALS.
|
|
1179
|
+
*
|
|
1180
|
+
* @param doc - The document.
|
|
1181
|
+
* @returns The JSON text, or `undefined` for a value that is not JSON data.
|
|
1182
|
+
*/
|
|
1183
|
+
export declare function documentKey(doc: unknown): string | undefined;
|
|
1115
1184
|
/**
|
|
1116
1185
|
* This function gives the type of a bare equation of a kind (D42). It is the type `of` of the shape of its parts, or
|
|
1117
1186
|
* else the type `of` of the shape `rest` of a record. The plan, the reference and `check` read it with this one function.
|
|
@@ -1403,6 +1472,8 @@ interface DocVisit {
|
|
|
1403
1472
|
* around it (`Kind.caps`). A walk without capabilities gives none here.
|
|
1404
1473
|
*/
|
|
1405
1474
|
readonly caps?: readonly Cap[] | undefined;
|
|
1475
|
+
/** The kinds of effects that a handler around the document answers (CAP.GRANT, D146). Such an effect does not reach the host. */
|
|
1476
|
+
readonly handled?: readonly Cap[] | undefined;
|
|
1406
1477
|
}
|
|
1407
1478
|
/** A position that a walk cannot read as a document. */
|
|
1408
1479
|
interface WalkProblem {
|
|
@@ -1972,6 +2043,31 @@ export declare function intersectCaps(a: readonly Cap[], b: readonly Cap[]): rea
|
|
|
1972
2043
|
* @returns The capabilities of the part: the same list or a smaller one.
|
|
1973
2044
|
*/
|
|
1974
2045
|
export declare function partCaps(rules: readonly CapsRule[] | undefined, path: readonly Key[], caps: readonly Cap[]): readonly Cap[];
|
|
2046
|
+
/**
|
|
2047
|
+
* This function gives the capabilities that the rules `grant` of a kind give one part (CAP.GRANT). The check and the
|
|
2048
|
+
* walk read them from the document. The kernel gets the same list from the clauses of the runner.
|
|
2049
|
+
*
|
|
2050
|
+
* @param rules - The capability rules of the kind (`Kind.caps`).
|
|
2051
|
+
* @param path - The path of the part in the value of the document.
|
|
2052
|
+
* @param value - The value of the document.
|
|
2053
|
+
* @returns The capabilities that the rules add, or an empty list.
|
|
2054
|
+
*/
|
|
2055
|
+
export declare function partGrants(rules: readonly CapsRule[] | undefined, path: readonly Key[], value: unknown): readonly Cap[];
|
|
2056
|
+
/**
|
|
2057
|
+
* One clause of a handler (D146): the effects under `op` go to `answer` and not to the host. The clause runs in place,
|
|
2058
|
+
* as a part of the effect that it answers. Its result is the result of that effect.
|
|
2059
|
+
*/
|
|
2060
|
+
interface Clause {
|
|
2061
|
+
/** The kind of the effects: the clause answers this kind and each kind under it (CAP.KEYS). */
|
|
2062
|
+
readonly op: Cap;
|
|
2063
|
+
/**
|
|
2064
|
+
* This function answers one effect. It sees only the payload (HANDLE.SEALED).
|
|
2065
|
+
*
|
|
2066
|
+
* @param payload - The data of the effect.
|
|
2067
|
+
* @returns The steps that give the result of the effect.
|
|
2068
|
+
*/
|
|
2069
|
+
answer(payload: unknown): Steps;
|
|
2070
|
+
}
|
|
1975
2071
|
/**
|
|
1976
2072
|
* The steps of an evaluation that can wait. It yields a promise only when the host makes it wait. A runner takes the
|
|
1977
2073
|
* result of a part with `yield*`, thus a run goes on at once until an effect waits. A runner does not yield a
|
|
@@ -2267,6 +2363,14 @@ interface RunPart {
|
|
|
2267
2363
|
* @returns The steps of the evaluation of the part.
|
|
2268
2364
|
*/
|
|
2269
2365
|
evaluate(context?: Context): Steps;
|
|
2366
|
+
/**
|
|
2367
|
+
* This function evaluates the part under clauses that answer its effects (D146). The kernel sets it on each part of
|
|
2368
|
+
* a kind with a rule `grant`. A part that a runner makes itself has none, and a compiled runner gets no such part.
|
|
2369
|
+
*
|
|
2370
|
+
* @param clauses - The clauses, in order. An effect goes to the first clause that names its kind.
|
|
2371
|
+
* @returns The steps of the evaluation of the part.
|
|
2372
|
+
*/
|
|
2373
|
+
handled?(clauses: readonly Clause[]): Steps;
|
|
2270
2374
|
}
|
|
2271
2375
|
/** The input of a runner: the input of an evaluator, with parts and effects that can wait. */
|
|
2272
2376
|
interface RunInput {
|
|
@@ -2481,6 +2585,18 @@ interface EvaluateOptions {
|
|
|
2481
2585
|
/** A list that gets each read, in the order of the resolutions (READS.RECORD). */
|
|
2482
2586
|
readonly reads?: Read[];
|
|
2483
2587
|
}
|
|
2588
|
+
/**
|
|
2589
|
+
* This function resolves a compiled path through a runtime (PLAN.PATH). The runtime of the kernel uses the compiled
|
|
2590
|
+
* path. Each other runtime gets the steps through `resolve`, thus a runtime that wraps another runtime sees each path
|
|
2591
|
+
* (PLAN.PATH-ROUTE). The result and the list of reads are the same as for `rt.resolve(ctx, compiled.path)`
|
|
2592
|
+
* (PLAN.PATH-READS).
|
|
2593
|
+
*
|
|
2594
|
+
* @param rt - The runtime.
|
|
2595
|
+
* @param ctx - The context.
|
|
2596
|
+
* @param compiled - The compiled path, from `compilePath`.
|
|
2597
|
+
* @returns What the path reached, or an error.
|
|
2598
|
+
*/
|
|
2599
|
+
export declare function resolveCompiled(rt: Runtime, ctx: Context, compiled: CompiledPath): Resolution;
|
|
2484
2600
|
/** The options of a compilation. */
|
|
2485
2601
|
interface PrepareOptions {
|
|
2486
2602
|
/** The type of a bare root value. */
|
|
@@ -3091,6 +3207,21 @@ interface SyntaxHeader {
|
|
|
3091
3207
|
*/
|
|
3092
3208
|
readonly bind?: string;
|
|
3093
3209
|
}
|
|
3210
|
+
/**
|
|
3211
|
+
* The text forms of the constructs of the formula kit (K145, D127). Each field is the kind of one form, with dots
|
|
3212
|
+
* between the keys. A construct without a field has no text. Each text of a form was an issue before, and no form
|
|
3213
|
+
* reserves a name.
|
|
3214
|
+
*/
|
|
3215
|
+
interface SyntaxConstructs {
|
|
3216
|
+
/** The kind of the form `{a: 1, b: x}`. Its value is a record of documents. */
|
|
3217
|
+
readonly record?: string;
|
|
3218
|
+
/** The kind of the form `let {a: 1} in a + 1`. Its value has the fields `bind` and `body`. */
|
|
3219
|
+
readonly let?: string;
|
|
3220
|
+
/** The kind of the form `(x, y) => x + y`. Its value has the fields `params` and `body`. */
|
|
3221
|
+
readonly fn?: string;
|
|
3222
|
+
/** The kind of the form `(f)(1, 2)`: a call of a value. Its value has the fields `fn` and `args`. */
|
|
3223
|
+
readonly call?: string;
|
|
3224
|
+
}
|
|
3094
3225
|
/**
|
|
3095
3226
|
* The text syntax of a language (D41): an operator table, literal rules, reference syntax and call syntax. `parse`
|
|
3096
3227
|
* reads a text into a document, and `print` writes a document as text. The profile is data, thus a site, an editor
|
|
@@ -3107,6 +3238,8 @@ interface SyntaxProfile {
|
|
|
3107
3238
|
readonly calls?: SyntaxCalls;
|
|
3108
3239
|
/** The text of the header of a document. */
|
|
3109
3240
|
readonly header?: SyntaxHeader;
|
|
3241
|
+
/** The text forms of the constructs. Without a field, the construct has no text. */
|
|
3242
|
+
readonly constructs?: SyntaxConstructs;
|
|
3110
3243
|
/** The deepest nesting that `parse` accepts. The default is `256`. */
|
|
3111
3244
|
readonly maxDepth?: number;
|
|
3112
3245
|
}
|
|
@@ -3119,7 +3252,12 @@ interface SyntaxIssue {
|
|
|
3119
3252
|
/** The message. */
|
|
3120
3253
|
readonly message: string;
|
|
3121
3254
|
}
|
|
3122
|
-
/**
|
|
3255
|
+
/**
|
|
3256
|
+
* The most issues that `parse` gives for one text (D138). A person reads a list of this size, and a text with more
|
|
3257
|
+
* issues needs another kind of help.
|
|
3258
|
+
*/
|
|
3259
|
+
export declare const MAX_SYNTAX_ISSUES = 20;
|
|
3260
|
+
/** The result of `parse`: a document, or the problems of the text in the order of their offsets (D138). */
|
|
3123
3261
|
type ParseResult = {
|
|
3124
3262
|
readonly ok: true;
|
|
3125
3263
|
readonly doc: Json;
|
|
@@ -3131,12 +3269,14 @@ type ParseResult = {
|
|
|
3131
3269
|
* The standard syntax of the formula kit. It gives the site and the playground a text form. The operators are
|
|
3132
3270
|
* `or`, `and`, `not`, the comparisons, `+ - * / %`, a minus sign and `^`, from the loosest to the tightest. A call
|
|
3133
3271
|
* `name(args)` applies the operation `ops.name`. `if(test, then, else)` and `list(items)` make the constructs. The
|
|
3134
|
-
* text `total = 2 + 3` gives the document the header name `total` (D62).
|
|
3272
|
+
* text `total = 2 + 3` gives the document the header name `total` (D62). The forms `{a: 1}`, `let {a: 1} in a`,
|
|
3273
|
+
* `(x) => x` and `(f)(1)` make `record`, `let`, `fn` and `call` (D127).
|
|
3135
3274
|
*/
|
|
3136
3275
|
export declare const STD_SYNTAX: SyntaxProfile;
|
|
3137
3276
|
/**
|
|
3138
3277
|
* This function reads a text into a document with the rules of a profile (SYNTAX.PARSE). It does not throw for a
|
|
3139
|
-
* bad text.
|
|
3278
|
+
* bad text. Each issue gives the offset, the length and a message (SYNTAX.SPAN). The field `issues` gives at most
|
|
3279
|
+
* `MAX_SYNTAX_ISSUES` issues (SYNTAX.ISSUES-ALL). A host that reads the first issue reads the first fault of the text.
|
|
3140
3280
|
*
|
|
3141
3281
|
* @param profile - The syntax profile.
|
|
3142
3282
|
* @param text - The text.
|
|
@@ -3163,6 +3303,50 @@ export declare function print(profile: SyntaxProfile, doc: unknown): Result<stri
|
|
|
3163
3303
|
* @returns The part for `mergeMachines`.
|
|
3164
3304
|
*/
|
|
3165
3305
|
export declare function syntaxFormat(profile: SyntaxProfile): MachinePart;
|
|
3306
|
+
/**
|
|
3307
|
+
* The name of a finding of `checkSyntax` (D140). Each name holds a rule of the parser or the printer.
|
|
3308
|
+
*
|
|
3309
|
+
* - `invalid`: `parse` throws a `TypeError` for the profile. The reason is its message.
|
|
3310
|
+
* - `operator`: the document of one operator does not come back. A negative precedence stops an infix operator,
|
|
3311
|
+
* because an expression starts at the precedence `0`. The kinds `ref`, `lit` and `ext.number` have their own text.
|
|
3312
|
+
* - `grouping`: an operator with a second operator in a term does not come back. The parser reads a term from the
|
|
3313
|
+
* precedence plus `1`, and the printer compares precedences, thus a gap under `1` loses the tree. A postfix operator
|
|
3314
|
+
* at the precedence of a `right` infix operator loses it too.
|
|
3315
|
+
* - `longest-match`: the printer writes two postfix operators without a space, and a longer symbol reads their text.
|
|
3316
|
+
* - `word`: a word of `literals.words` does not read as its value. A word operator reads first, and a word that is
|
|
3317
|
+
* not a plain name has no token.
|
|
3318
|
+
* - `root`: a root does not come back. A word operator reads first, and a literal word reads a root without steps.
|
|
3319
|
+
* - `pattern`: a pattern of references reads a text that has another meaning, because the parser tries patterns first.
|
|
3320
|
+
* - `form`: the document of a call form does not come back. A word operator reads first, the last form of a name
|
|
3321
|
+
* hides the others, and a `min` above the fields permits no text.
|
|
3322
|
+
* - `call`: a name of `calls.ops` does not come back. A form of the name wins, a word operator reads first, and a name
|
|
3323
|
+
* with dots needs the field steps.
|
|
3324
|
+
* - `separator`: the separator does not end an argument, and a neutral separator keeps the same document. An operator
|
|
3325
|
+
* reads first, the parser skips a space before it, or a name or a bracket at its start changes the term.
|
|
3326
|
+
* - `construct`: the document of a construct form does not come back, for example two forms have one kind.
|
|
3327
|
+
*/
|
|
3328
|
+
type SyntaxFindingCode = "invalid" | "operator" | "grouping" | "longest-match" | "word" | "root" | "pattern" | "form" | "call" | "separator" | "construct";
|
|
3329
|
+
/** One fault of a syntax profile: its name, its place in the profile and the reason (D140). */
|
|
3330
|
+
interface SyntaxFinding {
|
|
3331
|
+
/** The name of the fault. */
|
|
3332
|
+
readonly code: SyntaxFindingCode;
|
|
3333
|
+
/** The keys from the root of the profile to the entry, for example `["operators", 3]`. A default list has keys too. */
|
|
3334
|
+
readonly place: readonly Key[];
|
|
3335
|
+
/** The rule that the entry breaks, and the text that shows it. */
|
|
3336
|
+
readonly reason: string;
|
|
3337
|
+
}
|
|
3338
|
+
/**
|
|
3339
|
+
* This function finds the faults of a syntax profile before a host uses it (SYNTAX.PROFILE-CHECK, D140). A fault is a
|
|
3340
|
+
* document of an entry that breaks `parse(print(doc))`, or a text of an entry that reads another way. The function
|
|
3341
|
+
* writes and reads one small document for each entry, for each pair of operators and for each root. Thus an empty list
|
|
3342
|
+
* tells that these small documents come back. It does not prove the law for each document. `parse` and `print` do not
|
|
3343
|
+
* call this function, thus it adds no cost to them.
|
|
3344
|
+
*
|
|
3345
|
+
* @param profile - The syntax profile.
|
|
3346
|
+
* @returns At most one finding for each code and place, in the order of the operators, the literals, the references, the calls and the constructs.
|
|
3347
|
+
* @throws An error of a `read` or a `write` function of a pattern.
|
|
3348
|
+
*/
|
|
3349
|
+
export declare function checkSyntax(profile: SyntaxProfile): readonly SyntaxFinding[];
|
|
3166
3350
|
/**
|
|
3167
3351
|
* The world of the examples: small kinds for numbers, lists, conditions, names, sequences and effects.
|
|
3168
3352
|
* Each kind names an evaluator for `eval` and a view for `view`. The site draws each document with its view.
|
|
@@ -3185,7 +3369,7 @@ export declare const WORLD_SYNTAX: SyntaxProfile;
|
|
|
3185
3369
|
/** The code of the evaluators of the standard world, by name. */
|
|
3186
3370
|
export declare const STD_EVALUATORS: Readonly<Record<string, Evaluator>>;
|
|
3187
3371
|
/** The rungs of the ladder of an attribute, in their order (TREE.LADDER, D42). */
|
|
3188
|
-
type AttributeRung = "own" | "kind" | "parent" | "copy" | "default";
|
|
3372
|
+
type AttributeRung = "own" | "kind" | "parent" | "copy" | "default" | "forward";
|
|
3189
3373
|
/** The rungs of the ladder of an attribute, in their order (TREE.LADDER, D42). */
|
|
3190
3374
|
export declare const ATTRIBUTE_RUNGS: readonly AttributeRung[];
|
|
3191
3375
|
/** The record of the demand of one attribute of a node (TREE.RUNGS). */
|
|
@@ -3656,6 +3840,65 @@ export declare function encodeValue(machine: Pick<Machine, "domains">, value: un
|
|
|
3656
3840
|
* @returns The value, or the error of the evaluation.
|
|
3657
3841
|
*/
|
|
3658
3842
|
export declare function decodeValue(machine: Machine, doc: unknown): Result;
|
|
3843
|
+
/**
|
|
3844
|
+
* A law of a codec that `codecLaws` checks.
|
|
3845
|
+
*
|
|
3846
|
+
* - `samples`: the check has at least one member of the domain. Without a member, the check proves nothing.
|
|
3847
|
+
* - `encode`: `encode` writes each member, and it does not throw.
|
|
3848
|
+
* - `json`: the data of `encode` is JSON. `JSON.parse(JSON.stringify(data))` gives equal data, thus the data has no
|
|
3849
|
+
* `NaN`, no `-0`, no infinity, no `undefined`, no function, no host object and no cycle.
|
|
3850
|
+
* - `stable`: the same member has one document. A second `encode` of the member gives equal data, and so does an
|
|
3851
|
+
* `encode` of the decoded member. The check compares with `docEquals`.
|
|
3852
|
+
* - `decode`: `decodeDomain` reads the JSON copy of the data, and it gives a member of the domain.
|
|
3853
|
+
* - `roundtrip`: the decoded member equals the member by `sameValue`.
|
|
3854
|
+
*/
|
|
3855
|
+
type CodecLaw = "samples" | "encode" | "json" | "stable" | "decode" | "roundtrip";
|
|
3856
|
+
/** The probe of a finding of `codecLaws`: the domain, the member and the data of the member. */
|
|
3857
|
+
interface CodecProbe {
|
|
3858
|
+
/** The name of the domain. */
|
|
3859
|
+
readonly domain: string;
|
|
3860
|
+
/** The member that shows the finding. The law `samples` has no member, thus the value is `undefined`. */
|
|
3861
|
+
readonly value: unknown;
|
|
3862
|
+
/** The data that `encode` gave for the member. The laws `samples` and `encode` have no data. */
|
|
3863
|
+
readonly data?: unknown;
|
|
3864
|
+
}
|
|
3865
|
+
/** One law that a codec breaks, with the reason and the first probe that shows it. The form is the form of `Finding`. */
|
|
3866
|
+
interface CodecFinding {
|
|
3867
|
+
readonly obligation: CodecLaw;
|
|
3868
|
+
/** One sentence that tells what the codec did. */
|
|
3869
|
+
readonly reason: string;
|
|
3870
|
+
readonly probe: CodecProbe;
|
|
3871
|
+
}
|
|
3872
|
+
/** The options of `codecLaws`. */
|
|
3873
|
+
interface CodecLawsOptions {
|
|
3874
|
+
/** More members of the domain. They come first. A value that is not a member of the domain gets no test. */
|
|
3875
|
+
readonly samples?: readonly unknown[];
|
|
3876
|
+
/**
|
|
3877
|
+
* This function compares two values that the rules of `sameValue` do not know, as in `agree`. A member that is an
|
|
3878
|
+
* object needs this rule, for example a date, because `sameValue` compares an object only with itself.
|
|
3879
|
+
*
|
|
3880
|
+
* @param a - The first value.
|
|
3881
|
+
* @param b - The second value.
|
|
3882
|
+
* @returns `true` or `false`, or `undefined` for the rules of `sameValue`.
|
|
3883
|
+
*/
|
|
3884
|
+
readonly equal?: (a: unknown, b: unknown) => boolean | undefined;
|
|
3885
|
+
}
|
|
3886
|
+
/**
|
|
3887
|
+
* This function examines the laws of the codec of one domain of a machine (K141, D130). A test of a language starts it
|
|
3888
|
+
* for each domain with a codec. The members are the list `values` of the domain, or else the given samples, the edge
|
|
3889
|
+
* values and the lists `samples` of the domains. Each value that is not a member gets no test.
|
|
3890
|
+
*
|
|
3891
|
+
* The law `decode` reads the JSON copy of the data through `decodeDomain`, as an evaluation of `ext.domain` does. Thus
|
|
3892
|
+
* a codec that reads a data object by its identity breaks a law. The finding of a law names the first member that
|
|
3893
|
+
* breaks it. An empty list means that each member keeps each law.
|
|
3894
|
+
*
|
|
3895
|
+
* @param machine - The machine, or only its domains.
|
|
3896
|
+
* @param name - The name of the domain.
|
|
3897
|
+
* @param options - The samples and the rule of equality.
|
|
3898
|
+
* @returns The first finding of each law that the codec breaks, in the order of the laws.
|
|
3899
|
+
* @throws {Error} The machine has no domain with the name, or the domain has no codec.
|
|
3900
|
+
*/
|
|
3901
|
+
export declare function codecLaws(machine: Pick<Machine, "domains">, name: string, options?: CodecLawsOptions): readonly CodecFinding[];
|
|
3659
3902
|
/**
|
|
3660
3903
|
* The definitional code of the reference, by evaluator name. The reference cannot read compiled code, thus each
|
|
3661
3904
|
* compiled evaluator or runner of a machine needs a definition here. A function evaluator needs none.
|
|
@@ -3913,12 +4156,20 @@ export declare function agreeRun(machine: Machine, doc: unknown, context?: Conte
|
|
|
3913
4156
|
* - `C8`: compiled code gives the result of code that compiles again at the time of the evaluation.
|
|
3914
4157
|
* - `local`: the code keeps no state from one call to the next.
|
|
3915
4158
|
* - `agree`: compiled code gives the result of its definition for the reference interpreter.
|
|
4159
|
+
* - `parallel`: the code gives the same result, the same parts and the same effects in each order of the waits of
|
|
4160
|
+
* `all` (D128). Only a runner gets this check.
|
|
3916
4161
|
* - `truth`: the own `truthy` of a formula profile gives `true` or `false` for each member of its `truthType` (D86).
|
|
3917
4162
|
* Only `formula.if`, `formula.and` and `formula.or` of the formula kit get this check.
|
|
3918
4163
|
* - `cover`: each sample of a covered domain of the machine is in one domain of each cover of the domain (D94). Each
|
|
3919
4164
|
* evaluator and each runner gets this check, because `fits` trusts the covers for each program.
|
|
3920
|
-
|
|
3921
|
-
|
|
4165
|
+
* - `result`: a walker, the code of a `deref` or a function of a profile gives the form that its type states. A walker
|
|
4166
|
+
* and the code of a `deref` throw nothing, except a `Failure` (D137).
|
|
4167
|
+
* - `ladder`: a walker steps on a host thing only through `deref` and `has` of its input (D137).
|
|
4168
|
+
* - `hops`: each `visit` of a walker tells a step that the walk followed. Without `visit`, the walk stays the same (D137).
|
|
4169
|
+
* - `has`: the function `has` of the code of a `deref` gives a truth, and `true` for each key that the code answers (D137).
|
|
4170
|
+
* - `typed`: a walker keeps its type rule, an operation its signatures and an extension its entry in `extTypes` (D137).
|
|
4171
|
+
*/
|
|
4172
|
+
type Obligation = "C1" | "C2" | "C3" | "C4" | "C5" | "C6" | "C7" | "C8" | "local" | "agree" | "parallel" | "truth" | "cover" | "result" | "ladder" | "hops" | "has" | "typed";
|
|
3922
4173
|
/** The probe of a finding: the document, the result of each probe part, the capabilities and the handler. */
|
|
3923
4174
|
interface ConformProbe {
|
|
3924
4175
|
/** The text of the type of the document. */
|
|
@@ -3933,6 +4184,10 @@ interface ConformProbe {
|
|
|
3933
4184
|
readonly caps: readonly Cap[];
|
|
3934
4185
|
/** `true` in a run, in which the host does each effect and a part can wait. */
|
|
3935
4186
|
readonly running: boolean;
|
|
4187
|
+
/** The thing before the step, in a finding of a walker. */
|
|
4188
|
+
readonly here?: unknown;
|
|
4189
|
+
/** The key of the step, in a finding of the code of a `deref`. */
|
|
4190
|
+
readonly key?: Key;
|
|
3936
4191
|
}
|
|
3937
4192
|
/** One obligation that the code breaks, with the reason and the first probe that shows it. */
|
|
3938
4193
|
interface Finding {
|
|
@@ -3947,6 +4202,9 @@ interface ConformOptions {
|
|
|
3947
4202
|
* The verb that the evaluator serves. The default is `eval`. The facts `pure` and `lazy` of a contract describe only
|
|
3948
4203
|
* `eval`, thus `conforms` checks C3 and C4 only for `eval` (D23). `conforms` checks C2 for each verb that the
|
|
3949
4204
|
* contract declares effects for: `eval`, and each verb with an entry in `verbEffects` (D49).
|
|
4205
|
+
*
|
|
4206
|
+
* The verb `step` selects the walker of the name, and the verb `deref` selects the code of the `deref` of the name
|
|
4207
|
+
* (D137). Without the option, a name that no evaluator and no runner has selects its walker, and then its `deref`.
|
|
3950
4208
|
*/
|
|
3951
4209
|
readonly verb?: string;
|
|
3952
4210
|
/**
|
|
@@ -3969,11 +4227,16 @@ interface ConformOptions {
|
|
|
3969
4227
|
* definition from `STD_DEFINITIONS`.
|
|
3970
4228
|
*/
|
|
3971
4229
|
readonly definitions?: Definitions;
|
|
4230
|
+
/**
|
|
4231
|
+
* More things before the step of a walker (D137). Use them for the things that a walker needs, for example a host
|
|
4232
|
+
* thing of the language. The default holds three probe nodes, a document, `undefined` and the values of the results.
|
|
4233
|
+
*/
|
|
4234
|
+
readonly things?: readonly unknown[];
|
|
3972
4235
|
/** The capabilities of half of the probes. The other half has none. The default is the declared effects and `probe`. */
|
|
3973
4236
|
readonly caps?: readonly Cap[];
|
|
3974
4237
|
/** The names of the context of each probe. */
|
|
3975
4238
|
readonly names?: Readonly<Record<string, unknown>>;
|
|
3976
|
-
/** The seed of the random results
|
|
4239
|
+
/** The seed of the random results and of the orders of `all`. The same seed gives the same probes. The default is 1. */
|
|
3977
4240
|
readonly seed?: number;
|
|
3978
4241
|
/** The count of probes with random results for each probe document. The default is 12. */
|
|
3979
4242
|
readonly runs?: number;
|
|
@@ -3998,11 +4261,18 @@ interface ConformOptions {
|
|
|
3998
4261
|
* compiled code with its definition. The finding of an obligation names the first probe that breaks it. An empty list
|
|
3999
4262
|
* means that each probe conforms.
|
|
4000
4263
|
*
|
|
4264
|
+
* The check `parallel` starts a runner with a choice of waits under `all` again, in other orders of the waits (D128).
|
|
4001
4265
|
* The check `truth` tests the declared truth of a formula profile (D86). The check `cover` tests the covers of the
|
|
4002
4266
|
* domains of the machine from samples (D94).
|
|
4003
4267
|
*
|
|
4268
|
+
* The name can also select a walker or the code of a `deref` (D137). The checks of a walker are `result`, `local`,
|
|
4269
|
+
* `ladder`, `hops`, `typed` and `C4`. The checks of the code of a `deref` are `result`, `local` and `has`. The evaluators
|
|
4270
|
+
* `formula.op` and `formula.ext` also examine each operation and each extension that the tables of their profile list.
|
|
4271
|
+
* The checks `typed` and `result` test the functions of the profile directly.
|
|
4272
|
+
*
|
|
4004
4273
|
* @param machine - The machine with the code and the world of the kinds.
|
|
4005
|
-
* @param name - The name of the
|
|
4274
|
+
* @param name - The name of the code. A runner wins over an evaluator of the same name, and each of them wins over a
|
|
4275
|
+
* walker or a `deref` without the option `verb`.
|
|
4006
4276
|
* @param options - The verb, the types and the values of the probe documents, and the results of the probe parts. Also
|
|
4007
4277
|
* the definitions, the capabilities, the names, the seed, the mock and the rule of equality.
|
|
4008
4278
|
* @returns The first finding of each obligation that the code breaks, in the order of the obligations.
|
|
@@ -4247,6 +4517,105 @@ interface Durable {
|
|
|
4247
4517
|
* @returns The cache.
|
|
4248
4518
|
*/
|
|
4249
4519
|
export declare function durable(machine: Machine, options?: DurableOptions): Durable;
|
|
4520
|
+
/** One edge of a graph of nodes: a read of a node by another node. `NodeEdge` of a schedule is such an edge. */
|
|
4521
|
+
interface GraphEdge<Id> {
|
|
4522
|
+
/** The node that the read reaches. It is `undefined` when the read can reach each node (GRAPH.UNKNOWN). */
|
|
4523
|
+
readonly to: Id | undefined;
|
|
4524
|
+
/** `true` when only a lazy part reaches the read. An evaluation can then give a value without it (FACTS.LAZY). */
|
|
4525
|
+
readonly lazy: boolean;
|
|
4526
|
+
}
|
|
4527
|
+
/** One node of a graph, with its edges. `NodeInfo` of a schedule is such a node. */
|
|
4528
|
+
interface GraphNode<Id> {
|
|
4529
|
+
/** The edges to the nodes that the node reads. */
|
|
4530
|
+
readonly edges: readonly GraphEdge<Id>[];
|
|
4531
|
+
/** The side of the node. A node on the run side is a sink: no edge reaches it (SCHED.SIDE). The default is `derive`. */
|
|
4532
|
+
readonly side?: Side;
|
|
4533
|
+
}
|
|
4534
|
+
/**
|
|
4535
|
+
* A graph of nodes, by name. The order of the map is the order of the nodes in each answer. The function `graph` of
|
|
4536
|
+
* a schedule gives such a graph. An edge to a name that is not in the map, or to a sink, is not an edge of the
|
|
4537
|
+
* analysis.
|
|
4538
|
+
*/
|
|
4539
|
+
type NodeGraph<Id> = ReadonlyMap<Id, GraphNode<Id>>;
|
|
4540
|
+
/** The options of an analysis. */
|
|
4541
|
+
interface GraphOptions {
|
|
4542
|
+
/**
|
|
4543
|
+
* `true`: the analysis keeps only the eager edges with a target node. Such a read occurs in each evaluation in
|
|
4544
|
+
* which each document around it gives a value (FACTS.LAZY). The default keeps each edge.
|
|
4545
|
+
*/
|
|
4546
|
+
readonly eager?: boolean;
|
|
4547
|
+
}
|
|
4548
|
+
/** One static cycle of a graph (GRAPH.CYCLE). */
|
|
4549
|
+
interface GraphCycle<Id> {
|
|
4550
|
+
/** The nodes of the cycle, in the order of the graph. */
|
|
4551
|
+
readonly nodes: readonly Id[];
|
|
4552
|
+
/**
|
|
4553
|
+
* `true` when the eager edges with a target close the cycle. `false` when the cycle needs a lazy edge or an edge
|
|
4554
|
+
* without a target. The value of each node still comes from the demand (D31).
|
|
4555
|
+
*/
|
|
4556
|
+
readonly certain: boolean;
|
|
4557
|
+
}
|
|
4558
|
+
/**
|
|
4559
|
+
* This function gives the strongly connected components of a graph of nodes (GRAPH.SCC), with the algorithm of
|
|
4560
|
+
* Tarjan. It keeps its own stack, thus a chain of 100000 nodes does not overflow the stack of the host.
|
|
4561
|
+
*
|
|
4562
|
+
* - Each component comes after each component that it reads: the deepest component comes first.
|
|
4563
|
+
* - A node that is on no cycle is a component of one node.
|
|
4564
|
+
* - The nodes of a component are in the order of the graph.
|
|
4565
|
+
*
|
|
4566
|
+
* @param graph - The nodes, each with its edges.
|
|
4567
|
+
* @param options - The option `eager` keeps only the eager edges with a target node.
|
|
4568
|
+
* @returns The components, deepest first.
|
|
4569
|
+
*/
|
|
4570
|
+
export declare function components<Id>(graph: NodeGraph<Id>, options?: GraphOptions): readonly (readonly Id[])[];
|
|
4571
|
+
/**
|
|
4572
|
+
* This function gives the height of each node: the order of a push schedule (GRAPH.ORDER). A schedule that evaluates
|
|
4573
|
+
* the nodes from the lowest height up evaluates each node after each node that it reads, except on a cycle.
|
|
4574
|
+
*
|
|
4575
|
+
* - A node that reads no node outside its component has the height 0.
|
|
4576
|
+
* - Each other node is one higher than the highest node that it reads outside its component.
|
|
4577
|
+
* - The nodes of one component have one height.
|
|
4578
|
+
* - An edge without a target reads each node that is not a sink (GRAPH.UNKNOWN).
|
|
4579
|
+
*
|
|
4580
|
+
* @param graph - The nodes, each with its edges.
|
|
4581
|
+
* @param options - The option `eager` keeps only the eager edges with a target node.
|
|
4582
|
+
* @returns The height of each node, in the order of the graph.
|
|
4583
|
+
*/
|
|
4584
|
+
export declare function heights<Id>(graph: NodeGraph<Id>, options?: GraphOptions): ReadonlyMap<Id, number>;
|
|
4585
|
+
/**
|
|
4586
|
+
* This function puts the nodes in layers by their heights, in linear time (GRAPH.LAYERS). The first layer has the
|
|
4587
|
+
* height 0. Two nodes of one layer read each other only inside one component. Thus a push schedule can evaluate the
|
|
4588
|
+
* components of one layer at the same time.
|
|
4589
|
+
*
|
|
4590
|
+
* @param graph - The nodes, each with its edges.
|
|
4591
|
+
* @param options - The option `eager` keeps only the eager edges with a target node.
|
|
4592
|
+
* @returns The layers, from the height 0 up. Each layer keeps the order of the graph.
|
|
4593
|
+
*/
|
|
4594
|
+
export declare function nodeLayers<Id>(graph: NodeGraph<Id>, options?: GraphOptions): readonly (readonly Id[])[];
|
|
4595
|
+
/**
|
|
4596
|
+
* This function gives the nodes that a set of observed nodes needs (GRAPH.NECESSARY). These are the observed nodes,
|
|
4597
|
+
* and each node with a path of edges from them. A push schedule evaluates only these nodes. An observed name that is
|
|
4598
|
+
* not a node of the graph adds nothing.
|
|
4599
|
+
*
|
|
4600
|
+
* @param graph - The nodes, each with its edges.
|
|
4601
|
+
* @param observed - The nodes that the host shows or reads.
|
|
4602
|
+
* @param options - The option `eager` keeps only the eager edges with a target node.
|
|
4603
|
+
* @returns The necessary nodes, in the order of the graph.
|
|
4604
|
+
*/
|
|
4605
|
+
export declare function necessary<Id>(graph: NodeGraph<Id>, observed: Iterable<Id>, options?: GraphOptions): ReadonlySet<Id>;
|
|
4606
|
+
/**
|
|
4607
|
+
* This function gives the static cycles of a graph (GRAPH.CYCLE): each component with two or more nodes, and each
|
|
4608
|
+
* node with an edge to itself. A cycle of the eager edges with a target is certain, and `check` or a host can report
|
|
4609
|
+
* it before a run. Another cycle is possible: an evaluation can skip a lazy read.
|
|
4610
|
+
*
|
|
4611
|
+
* - A component of all the edges that is also a component of the eager edges is one certain cycle.
|
|
4612
|
+
* - Each other component of all the edges is one possible cycle, and each certain cycle in it comes after it.
|
|
4613
|
+
* - A read can still fail before it occurs. Thus the demand of D31, not a static cycle, gives the value of each node.
|
|
4614
|
+
*
|
|
4615
|
+
* @param graph - The nodes, each with its edges.
|
|
4616
|
+
* @returns The cycles, deepest first.
|
|
4617
|
+
*/
|
|
4618
|
+
export declare function cycles<Id>(graph: NodeGraph<Id>): readonly GraphCycle<Id>[];
|
|
4250
4619
|
/** One edge of a graph of nodes: a static read of a node from the document of another node (SCHED.EDGES). */
|
|
4251
4620
|
interface NodeEdge {
|
|
4252
4621
|
/**
|
|
@@ -4278,6 +4647,17 @@ interface NodeInfo {
|
|
|
4278
4647
|
interface ScheduleOptions extends DurableOptions {
|
|
4279
4648
|
/** The context of the host: the names, `self`, `event` and the capabilities. The schedule sets the root `world` to the nodes. */
|
|
4280
4649
|
readonly context?: Context;
|
|
4650
|
+
/**
|
|
4651
|
+
* This function gives a node its own `self` (SCHED.NODE-CONTEXT, D135). Thus one document at each cell of a grid
|
|
4652
|
+
* shares one plan, and each cell has its own value and its own reads. In one data epoch, the function gives the same
|
|
4653
|
+
* data for a node. New data comes with `changeData`, and each node then verifies its reads with its new `self`.
|
|
4654
|
+
* Without the function, each node gets the context of the host.
|
|
4655
|
+
*
|
|
4656
|
+
* @param id - The name of the node.
|
|
4657
|
+
* @param host - The context of the host, without the nodes at the root `world`.
|
|
4658
|
+
* @returns The `self` of the node, or `undefined` for the `self` of the host.
|
|
4659
|
+
*/
|
|
4660
|
+
readonly selfOf?: (id: string, host: Context) => Thing;
|
|
4281
4661
|
}
|
|
4282
4662
|
/** The work of a schedule since its start: the work of its `durable` cache, and the demands ahead of a node. */
|
|
4283
4663
|
interface ScheduleCounts extends DurableCounts {
|
|
@@ -4305,7 +4685,7 @@ interface Schedule {
|
|
|
4305
4685
|
readonly epochs: Epochs;
|
|
4306
4686
|
/** The work of the schedule since its start: the compilations, the evaluations, the verifications, the reuses and the demands ahead. */
|
|
4307
4687
|
readonly counts: ScheduleCounts;
|
|
4308
|
-
/** The context of
|
|
4688
|
+
/** The context of the current data epoch: the context of the host, with the nodes at the root `world`. The option `selfOf` changes only the `self` of a node. */
|
|
4309
4689
|
readonly context: Context;
|
|
4310
4690
|
/**
|
|
4311
4691
|
* This function gives each node with its facts, its side and its edges (SCHED.GRAPH). The map stays the same object
|
|
@@ -4320,7 +4700,7 @@ interface Schedule {
|
|
|
4320
4700
|
*
|
|
4321
4701
|
* - First, the schedule demands each node that the eager edges reach, deepest first (SCHED.LONG-CHAIN).
|
|
4322
4702
|
* - After a change, a pure node verifies its reads, and it keeps its result when each read is the same (SCHED.STALE).
|
|
4323
|
-
* - Each node of a cycle gives `#CYCLE!`, in each order of demands (SCHED.CYCLE).
|
|
4703
|
+
* - Each node of a cycle gives `#CYCLE!`, in each order of demands (SCHED.CYCLE), at each length (SCHED.DEEP-CYCLE).
|
|
4324
4704
|
* - A node on the run side gives `#REF!`, because the schedule does not evaluate it (SCHED.SIDE).
|
|
4325
4705
|
*
|
|
4326
4706
|
* @param id - The name of the node.
|
|
@@ -4344,7 +4724,8 @@ interface Schedule {
|
|
|
4344
4724
|
remove(id: string): boolean;
|
|
4345
4725
|
/**
|
|
4346
4726
|
* This function tells the schedule that the data of the host changed (DURABLE.EPOCHS). The values of a context do
|
|
4347
|
-
* not change in place, thus new data comes in a new context, or through a host thing.
|
|
4727
|
+
* not change in place, thus new data comes in a new context, or through a host thing. A new `self` of a node is a
|
|
4728
|
+
* change of data too (SCHED.NODE-STALE).
|
|
4348
4729
|
*
|
|
4349
4730
|
* @param context - The new context of the host, or `undefined` to keep the context.
|
|
4350
4731
|
*/
|
|
@@ -4357,7 +4738,8 @@ interface Schedule {
|
|
|
4357
4738
|
changeMachine(machine: Machine): void;
|
|
4358
4739
|
/**
|
|
4359
4740
|
* This function starts a run of the document of a node, and the host does each effect (SCHED.RUN). Only the host
|
|
4360
|
-
* starts a run, for example at an event. A change of data does not start or repeat a run (L3).
|
|
4741
|
+
* starts a run, for example at an event. A change of data does not start or repeat a run (L3). The run gets the
|
|
4742
|
+
* `self` of its node (SCHED.NODE-CONTEXT).
|
|
4361
4743
|
*
|
|
4362
4744
|
* @param id - The name of the node.
|
|
4363
4745
|
* @param options - The event, the host code that does the effects, and a signal to stop the run.
|
|
@@ -4377,6 +4759,32 @@ interface Schedule {
|
|
|
4377
4759
|
* @returns The edges, in the order of the reads.
|
|
4378
4760
|
*/
|
|
4379
4761
|
export declare function edgesOf(facts: DocFacts): readonly NodeEdge[];
|
|
4762
|
+
/**
|
|
4763
|
+
* One certain cycle of a schedule, in the form of an issue of `check` (SCHED.CYCLE-ISSUES). The first node of `nodes`
|
|
4764
|
+
* gives the place and the reason. The place is the key of that node under the root `world`, and the reason has the
|
|
4765
|
+
* text of `#CYCLE!` for that node.
|
|
4766
|
+
*/
|
|
4767
|
+
interface CycleIssue extends Issue {
|
|
4768
|
+
readonly code: "#CYCLE!";
|
|
4769
|
+
/** The nodes of the cycle, sorted by name as the record of the root `world` sorts them. */
|
|
4770
|
+
readonly nodes: readonly string[];
|
|
4771
|
+
}
|
|
4772
|
+
/**
|
|
4773
|
+
* This function gives the certain cycles of a schedule before a run (SCHED.CYCLE-ISSUES, D131). It reads only `graph()`,
|
|
4774
|
+
* thus it evaluates no node. A host calls it when it needs the answer. A run does not call it.
|
|
4775
|
+
*
|
|
4776
|
+
* - Each certain cycle of `cycles` gives one issue. The issue has the place `[id]` of its first node.
|
|
4777
|
+
* - A possible cycle gives no issue, because a run can skip its lazy read (SCHED.CYCLE-CERTAIN).
|
|
4778
|
+
* - The order of the `set` calls does not change the answer (SCHED.CYCLE-ORDER).
|
|
4779
|
+
* - No node of an issue gives a value. A read can fail before it reaches the cycle, and the node then gives that
|
|
4780
|
+
* error (SCHED.CYCLE-AGREES). Thus the demand of D33 still gives the result of each node.
|
|
4781
|
+
*
|
|
4782
|
+
* @param target - The schedule, or another object that gives a graph of nodes.
|
|
4783
|
+
* @returns One issue for each certain cycle, sorted by the first node of each issue.
|
|
4784
|
+
*/
|
|
4785
|
+
export declare function checkCycles(target: {
|
|
4786
|
+
graph(): NodeGraph<string>;
|
|
4787
|
+
}): readonly CycleIssue[];
|
|
4380
4788
|
/**
|
|
4381
4789
|
* This function makes the demand schedule of a graph of named nodes (S1, R4, D31). A host gives each node a name and
|
|
4382
4790
|
* a document. The root `world` of each node reaches the other nodes by name. The context of the host gives the other
|
|
@@ -4392,12 +4800,16 @@ export declare function edgesOf(facts: DocFacts): readonly NodeEdge[];
|
|
|
4392
4800
|
* - A demand of the host, or of a run, first demands each node that the eager edges reach, deepest first. Thus each
|
|
4393
4801
|
* read of such a node finds a value, and a chain of 100000 nodes does not overflow the stack (SCHED.LONG-CHAIN).
|
|
4394
4802
|
* Each such demand starts with no node in evaluation, thus the order of demands keeps the values of D31.
|
|
4803
|
+
* - After an overflow of the stack, a walk with its own stack follows the same reads. It gives each node of a cycle
|
|
4804
|
+
* `#CYCLE!` at each length (SCHED.DEEP-CYCLE, D139). A demand without an overflow does no such work.
|
|
4395
4805
|
* - A node on the run side is a sink. Only `run` evaluates it, and only the host uses `run`.
|
|
4806
|
+
* - The option `selfOf` gives a node its own `self` (D135). The plan, the facts and the edges stay for each document
|
|
4807
|
+
* object, thus nodes with one document share them. The value, the reads and the place on a cycle stay for each node.
|
|
4396
4808
|
*
|
|
4397
4809
|
* The host keeps the promises of `durable`. The documents and the values of a context do not change in place.
|
|
4398
4810
|
*
|
|
4399
4811
|
* @param machine - The machine of the first structure epoch.
|
|
4400
|
-
* @param options - The options of `durable`,
|
|
4812
|
+
* @param options - The options of `durable`, the context of the host and the `self` of each node.
|
|
4401
4813
|
* @returns The schedule.
|
|
4402
4814
|
*/
|
|
4403
4815
|
export declare function schedule(machine: Machine, options?: ScheduleOptions): Schedule;
|
|
@@ -4520,12 +4932,14 @@ interface ScheduleEngine {
|
|
|
4520
4932
|
*/
|
|
4521
4933
|
read(id: string): Result;
|
|
4522
4934
|
}
|
|
4523
|
-
/** What a new engine gets beside its machine
|
|
4935
|
+
/** What a new engine gets beside its machine. These are the context of the host, the type of a bare root value and the `self` of each node. */
|
|
4524
4936
|
interface ScheduleEngineStart {
|
|
4525
4937
|
/** The first context of the host, without the root `world`. */
|
|
4526
4938
|
readonly context: Context;
|
|
4527
4939
|
/** The type of a bare root value, when the options of the harness name one. */
|
|
4528
4940
|
readonly declaredType?: string;
|
|
4941
|
+
/** The `self` of each node, when the options of the harness have `selves`. It has the form of the option of `schedule`. */
|
|
4942
|
+
readonly selfOf?: (id: string, host: Context) => unknown;
|
|
4529
4943
|
}
|
|
4530
4944
|
/**
|
|
4531
4945
|
* This function makes a new engine with no nodes. The harness makes one engine for each run. The function `schedule`
|
|
@@ -4570,6 +4984,12 @@ interface AgreeScheduleOptions {
|
|
|
4570
4984
|
readonly values?: readonly unknown[];
|
|
4571
4985
|
/** The contexts of the host at the start of the runs, one after the other. */
|
|
4572
4986
|
readonly contexts?: readonly Context[];
|
|
4987
|
+
/**
|
|
4988
|
+
* The values of the `self` of a node (SCHED.NODE-AGREES). With them, the option `selfOf` of each engine gives each
|
|
4989
|
+
* node its own `self`. Some nodes then share one document, and a change of data can give a node a new `self`. The
|
|
4990
|
+
* value `undefined` keeps the `self` of the host. The default gives each node the context of the host.
|
|
4991
|
+
*/
|
|
4992
|
+
readonly selves?: readonly unknown[];
|
|
4573
4993
|
/** The number of runs. The default is 100. */
|
|
4574
4994
|
readonly count?: number;
|
|
4575
4995
|
/** The number of commands in one run. The default is 30. */
|
|
@@ -4614,6 +5034,10 @@ interface ScheduleAgreementCounts {
|
|
|
4614
5034
|
readonly same: number;
|
|
4615
5035
|
/** The new machines. */
|
|
4616
5036
|
readonly machines: number;
|
|
5037
|
+
/** The changes of data with a new `self` of a node, only with the option `selves`. */
|
|
5038
|
+
readonly selves: number;
|
|
5039
|
+
/** The documents that a node shares with another node, only with the option `selves`. */
|
|
5040
|
+
readonly shared: number;
|
|
4617
5041
|
}
|
|
4618
5042
|
/** The outcome of `agreeSchedule`: what the harness reached, or the first disagreement. */
|
|
4619
5043
|
type ScheduleAgreement = {
|
|
@@ -4645,7 +5069,8 @@ type ScheduleAgreement = {
|
|
|
4645
5069
|
/**
|
|
4646
5070
|
* This function examines an engine of a host against an evaluation from scratch (SCHED.AGREES, R4 P4, D58). Each run
|
|
4647
5071
|
* makes a new engine and a random graph of named nodes from the document generator. Then it gives random commands:
|
|
4648
|
-
* edits, new nodes, removed nodes, the same document again, new machines and changes of data.
|
|
5072
|
+
* edits, new nodes, removed nodes, the same document again, new machines and changes of data. The option `selves`
|
|
5073
|
+
* adds a `self` for each node and documents that nodes share (SCHED.NODE-AGREES).
|
|
4649
5074
|
*
|
|
4650
5075
|
* - Each read command evaluates the whole graph from scratch two times, with the meaning of D31.
|
|
4651
5076
|
* - It then demands each node in a random order, or one node, and compares each answer with `sameResult`.
|
|
@@ -4660,105 +5085,6 @@ type ScheduleAgreement = {
|
|
|
4660
5085
|
* @returns What the harness reached, or the first read whose answer differs from the answer from scratch.
|
|
4661
5086
|
*/
|
|
4662
5087
|
export declare function agreeSchedule(engine: ScheduleEngineFactory, options?: AgreeScheduleOptions): ScheduleAgreement;
|
|
4663
|
-
/** One edge of a graph of nodes: a read of a node by another node. `NodeEdge` of a schedule is such an edge. */
|
|
4664
|
-
interface GraphEdge<Id> {
|
|
4665
|
-
/** The node that the read reaches. It is `undefined` when the read can reach each node (GRAPH.UNKNOWN). */
|
|
4666
|
-
readonly to: Id | undefined;
|
|
4667
|
-
/** `true` when only a lazy part reaches the read. An evaluation can then give a value without it (FACTS.LAZY). */
|
|
4668
|
-
readonly lazy: boolean;
|
|
4669
|
-
}
|
|
4670
|
-
/** One node of a graph, with its edges. `NodeInfo` of a schedule is such a node. */
|
|
4671
|
-
interface GraphNode<Id> {
|
|
4672
|
-
/** The edges to the nodes that the node reads. */
|
|
4673
|
-
readonly edges: readonly GraphEdge<Id>[];
|
|
4674
|
-
/** The side of the node. A node on the run side is a sink: no edge reaches it (SCHED.SIDE). The default is `derive`. */
|
|
4675
|
-
readonly side?: Side;
|
|
4676
|
-
}
|
|
4677
|
-
/**
|
|
4678
|
-
* A graph of nodes, by name. The order of the map is the order of the nodes in each answer. The function `graph` of
|
|
4679
|
-
* a schedule gives such a graph. An edge to a name that is not in the map, or to a sink, is not an edge of the
|
|
4680
|
-
* analysis.
|
|
4681
|
-
*/
|
|
4682
|
-
type NodeGraph<Id> = ReadonlyMap<Id, GraphNode<Id>>;
|
|
4683
|
-
/** The options of an analysis. */
|
|
4684
|
-
interface GraphOptions {
|
|
4685
|
-
/**
|
|
4686
|
-
* `true`: the analysis keeps only the eager edges with a target node. Such a read occurs in each evaluation in
|
|
4687
|
-
* which each document around it gives a value (FACTS.LAZY). The default keeps each edge.
|
|
4688
|
-
*/
|
|
4689
|
-
readonly eager?: boolean;
|
|
4690
|
-
}
|
|
4691
|
-
/** One static cycle of a graph (GRAPH.CYCLE). */
|
|
4692
|
-
interface GraphCycle<Id> {
|
|
4693
|
-
/** The nodes of the cycle, in the order of the graph. */
|
|
4694
|
-
readonly nodes: readonly Id[];
|
|
4695
|
-
/**
|
|
4696
|
-
* `true` when the eager edges with a target close the cycle. `false` when the cycle needs a lazy edge or an edge
|
|
4697
|
-
* without a target. The value of each node still comes from the demand (D31).
|
|
4698
|
-
*/
|
|
4699
|
-
readonly certain: boolean;
|
|
4700
|
-
}
|
|
4701
|
-
/**
|
|
4702
|
-
* This function gives the strongly connected components of a graph of nodes (GRAPH.SCC), with the algorithm of
|
|
4703
|
-
* Tarjan. It keeps its own stack, thus a chain of 100000 nodes does not overflow the stack of the host.
|
|
4704
|
-
*
|
|
4705
|
-
* - Each component comes after each component that it reads: the deepest component comes first.
|
|
4706
|
-
* - A node that is on no cycle is a component of one node.
|
|
4707
|
-
* - The nodes of a component are in the order of the graph.
|
|
4708
|
-
*
|
|
4709
|
-
* @param graph - The nodes, each with its edges.
|
|
4710
|
-
* @param options - The option `eager` keeps only the eager edges with a target node.
|
|
4711
|
-
* @returns The components, deepest first.
|
|
4712
|
-
*/
|
|
4713
|
-
export declare function components<Id>(graph: NodeGraph<Id>, options?: GraphOptions): readonly (readonly Id[])[];
|
|
4714
|
-
/**
|
|
4715
|
-
* This function gives the height of each node: the order of a push schedule (GRAPH.ORDER). A schedule that evaluates
|
|
4716
|
-
* the nodes from the lowest height up evaluates each node after each node that it reads, except on a cycle.
|
|
4717
|
-
*
|
|
4718
|
-
* - A node that reads no node outside its component has the height 0.
|
|
4719
|
-
* - Each other node is one higher than the highest node that it reads outside its component.
|
|
4720
|
-
* - The nodes of one component have one height.
|
|
4721
|
-
* - An edge without a target reads each node that is not a sink (GRAPH.UNKNOWN).
|
|
4722
|
-
*
|
|
4723
|
-
* @param graph - The nodes, each with its edges.
|
|
4724
|
-
* @param options - The option `eager` keeps only the eager edges with a target node.
|
|
4725
|
-
* @returns The height of each node, in the order of the graph.
|
|
4726
|
-
*/
|
|
4727
|
-
export declare function heights<Id>(graph: NodeGraph<Id>, options?: GraphOptions): ReadonlyMap<Id, number>;
|
|
4728
|
-
/**
|
|
4729
|
-
* This function puts the nodes in layers by their heights, in linear time (GRAPH.LAYERS). The first layer has the
|
|
4730
|
-
* height 0. Two nodes of one layer read each other only inside one component. Thus a push schedule can evaluate the
|
|
4731
|
-
* components of one layer at the same time.
|
|
4732
|
-
*
|
|
4733
|
-
* @param graph - The nodes, each with its edges.
|
|
4734
|
-
* @param options - The option `eager` keeps only the eager edges with a target node.
|
|
4735
|
-
* @returns The layers, from the height 0 up. Each layer keeps the order of the graph.
|
|
4736
|
-
*/
|
|
4737
|
-
export declare function nodeLayers<Id>(graph: NodeGraph<Id>, options?: GraphOptions): readonly (readonly Id[])[];
|
|
4738
|
-
/**
|
|
4739
|
-
* This function gives the nodes that a set of observed nodes needs (GRAPH.NECESSARY). These are the observed nodes,
|
|
4740
|
-
* and each node with a path of edges from them. A push schedule evaluates only these nodes. An observed name that is
|
|
4741
|
-
* not a node of the graph adds nothing.
|
|
4742
|
-
*
|
|
4743
|
-
* @param graph - The nodes, each with its edges.
|
|
4744
|
-
* @param observed - The nodes that the host shows or reads.
|
|
4745
|
-
* @param options - The option `eager` keeps only the eager edges with a target node.
|
|
4746
|
-
* @returns The necessary nodes, in the order of the graph.
|
|
4747
|
-
*/
|
|
4748
|
-
export declare function necessary<Id>(graph: NodeGraph<Id>, observed: Iterable<Id>, options?: GraphOptions): ReadonlySet<Id>;
|
|
4749
|
-
/**
|
|
4750
|
-
* This function gives the static cycles of a graph (GRAPH.CYCLE): each component with two or more nodes, and each
|
|
4751
|
-
* node with an edge to itself. A cycle of the eager edges with a target is certain, and `check` or a host can report
|
|
4752
|
-
* it before a run. Another cycle is possible: an evaluation can skip a lazy read.
|
|
4753
|
-
*
|
|
4754
|
-
* - A component of all the edges that is also a component of the eager edges is one certain cycle.
|
|
4755
|
-
* - Each other component of all the edges is one possible cycle, and each certain cycle in it comes after it.
|
|
4756
|
-
* - A read can still fail before it occurs. Thus the demand of D31, not a static cycle, gives the value of each node.
|
|
4757
|
-
*
|
|
4758
|
-
* @param graph - The nodes, each with its edges.
|
|
4759
|
-
* @returns The cycles, deepest first.
|
|
4760
|
-
*/
|
|
4761
|
-
export declare function cycles<Id>(graph: NodeGraph<Id>): readonly GraphCycle<Id>[];
|
|
4762
5088
|
/** One vertex of the graph of attribute instances: one attribute of one node of the decorated tree (D107). */
|
|
4763
5089
|
interface AttributeVertex {
|
|
4764
5090
|
/** The name of the vertex: the JSON text of the place of the node with the name of the attribute after it. */
|
|
@@ -5133,5 +5459,5 @@ interface SampleOptions {
|
|
|
5133
5459
|
* @returns The type.
|
|
5134
5460
|
*/
|
|
5135
5461
|
export declare function typeFromSamples(values: readonly unknown[], options?: SampleOptions): ValueType;
|
|
5136
|
-
export type { AgreeOptions, AgreeRunOptions, AgreeScheduleOptions, Agreement, Alias, AllOptions, Answer, AskOptions, AtArgs, AtEquation, AtRule, AttributeAnswer, AttributeCell, AttributeCycle, AttributeDeclaration, AttributeEdge, AttributeGraph, AttributeGraphOptions, AttributeRung, AttributeTrace, AttributeVertex, Cap, CapsRule, CheckOptions, CircularDeclaration, CircularRule, Classification, Closure, Code, CollectDeclaration, CollectRule, CompileInput, CompiledEvaluator, CompiledPart, CompiledRunner, ConformOptions, ConformProbe, Construct, Context, Part as ContextPart, Declared, Definitions, DerefCode, DocFacts, DocParts, DocVisit, Domain, DomainCodec, DomainExtension, Durable, DurableCounts, DurableOptions, Edge, Effect, EffectsOptions, Envelope, Epochs, ErrorCode, EvalError, EvalFn, EvalInput, EvalOptions, EvaluateOptions, Evaluator, ExtFn, FactsOptions, Failed, Finding, FormulaProfile, GenerateOptions, Give, GraphCycle, GraphEdge, GraphNode, GraphOptions, Header, Hop, HopBy, HostThing, Issue, Journal, Json, JsonRecord, KernelCode, Key, Kind, KindFacts, KindSource, LazyOp, LazyRule, Lookup, Machine, MachinePart, MergeConflict, MergePath, NamesSource, Namespace, Navigator, NearestOptions, NodeEdge, NodeGraph, NodeInfo, NodeRunOptions, Obligation, OpFn, OrderProblem, Outcome, ParseResult, Part$1 as Part, PartInfo, Shape as PartShape, PartSlot, PartType, PartsSpec, Perform, Plan, PlanRunOptions, PrepareOptions, PrintOptions, Random, Read, ReadPrints, ReadsCheck, Recorder, RefUse, ReferenceOptions, ReferenceRunOptions, ReplayCausePartsJson, ReplayEntry, ReplayEntryJson, ReplayErrorJson, ReplayExceptionJson, ReplayLog, ReplayLogJson, ReplayOptions, ReplayPartJson, ReplayPartsJson, ReplayResultJson, ReplaySettle, Resolution, ResolveCode, ResolveOptions, Result, Root, RootTypes, Run, RunCode, RunFn, RunInput, RunOptions, RunPart, Rung, Runner, Runtime, SampleOptions, Schedule, ScheduleAgreement, ScheduleAgreementCounts, ScheduleCounts, ScheduleEngine, ScheduleEngineFactory, ScheduleEngineStart, ScheduleOptions, ScopeRule, Shape$1 as Shape, Side, Signature, Split, StaticRead, Step, StepKey, StepLadder, StepNeed, StepReason, StepRefusal, StepSpec, StepWalk, Steps, StopSignal, Stored, SyntaxAssoc, SyntaxCalls, SyntaxEnvelopes, SyntaxFixity, SyntaxForm, SyntaxFormArgs, SyntaxHeader, SyntaxIssue, SyntaxLiterals, SyntaxOperator, SyntaxProfile, SyntaxRefPattern, SyntaxRefs, Thing, Tier, TierInput, TierResult, TraceNode, TreeContract, TreeOptions, TypeInput, TypeIssue, TypeProblem, TypeReading, TypeRef, TypeRule, Typed, Typing, Use, ValueType, VerbEffects, VerifyOptions, WalkInput, WalkOptions, WalkProblem, WalkResult, WalkTypeInput, Walker, World, WorldEntry, WorldIssue, WorldOptions, WorldPart };
|
|
5462
|
+
export type { AgreeOptions, AgreeRunOptions, AgreeScheduleOptions, Agreement, Alias, AllOptions, Answer, AskOptions, AtArgs, AtEquation, AtRule, AttributeAnswer, AttributeCell, AttributeCycle, AttributeDeclaration, AttributeEdge, AttributeGraph, AttributeGraphOptions, AttributeRung, AttributeTrace, AttributeVertex, Cap, CapsRule, CheckOptions, CircularDeclaration, CircularRule, Classification, Clause, Closure, Code, CodecFinding, CodecLaw, CodecLawsOptions, CodecProbe, CollectDeclaration, CollectRule, CompileInput, CompiledEvaluator, CompiledPart, CompiledPath, CompiledRunner, ConformOptions, ConformProbe, Construct, Context, Part as ContextPart, CycleIssue, Declared, Definitions, DerefCode, DocFacts, DocParts, DocVisit, Domain, DomainCodec, DomainExtension, Durable, DurableCounts, DurableOptions, Edge, Effect, EffectsOptions, Envelope, Epochs, ErrorCode, EvalError, EvalFn, EvalInput, EvalOptions, EvaluateOptions, Evaluator, ExtFn, FactsOptions, Failed, Finding, FormulaProfile, GenerateOptions, Give, GraphCycle, GraphEdge, GraphNode, GraphOptions, Header, Hop, HopBy, HostThing, Issue, Journal, Json, JsonRecord, KernelCode, Key, Kind, KindFacts, KindSource, LazyOp, LazyRule, Lookup, Machine, MachinePart, MergeConflict, MergePath, NamesSource, Namespace, Navigator, NearestOptions, NodeEdge, NodeGraph, NodeInfo, NodeRunOptions, Obligation, OpFn, OrderProblem, Outcome, ParseResult, Part$1 as Part, PartInfo, Shape as PartShape, PartSlot, PartType, PartsSpec, Perform, Plan, PlanRunOptions, PrepareOptions, PrintOptions, Random, Read, ReadPrints, ReadsCheck, Recorder, RefUse, ReferenceOptions, ReferenceRunOptions, ReplayCausePartsJson, ReplayEntry, ReplayEntryJson, ReplayErrorJson, ReplayExceptionJson, ReplayLog, ReplayLogJson, ReplayOptions, ReplayPartJson, ReplayPartsJson, ReplayResultJson, ReplaySettle, Resolution, ResolveCode, ResolveOptions, Result, Root, RootTypes, Run, RunCode, RunFn, RunInput, RunOptions, RunPart, Rung, Runner, Runtime, SampleOptions, Schedule, ScheduleAgreement, ScheduleAgreementCounts, ScheduleCounts, ScheduleEngine, ScheduleEngineFactory, ScheduleEngineStart, ScheduleOptions, ScopeRule, Shape$1 as Shape, Side, Signature, Split, StaticRead, Step, StepKey, StepLadder, StepNeed, StepReason, StepRefusal, StepSpec, StepWalk, Steps, StopSignal, Stored, SyntaxAssoc, SyntaxCalls, SyntaxConstructs, SyntaxEnvelopes, SyntaxFinding, SyntaxFindingCode, SyntaxFixity, SyntaxForm, SyntaxFormArgs, SyntaxHeader, SyntaxIssue, SyntaxLiterals, SyntaxOperator, SyntaxProfile, SyntaxRefPattern, SyntaxRefs, Thing, Tier, TierInput, TierResult, TraceNode, TreeContract, TreeOptions, TypeInput, TypeIssue, TypeProblem, TypeReading, TypeRef, TypeRule, Typed, Typing, Use, ValueType, VerbEffects, VerifyOptions, WalkInput, WalkOptions, WalkProblem, WalkResult, WalkTypeInput, Walker, World, WorldEntry, WorldIssue, WorldOptions, WorldPart };
|
|
5137
5463
|
//# sourceMappingURL=index.d.ts.map
|