on master help sign in
Infer recursive prelude list helpers
1470d18iko
docs/compiler.md+2−2
@@ -68,7 +68,7 @@ A known union of `~` and a null-headed cell can be matched by `~` and `[~ value]
68
68
69A known closed union can also provide context to each arm of a complete loobean or unit-shaped branch in a cast or a call with a known union sample. Nested branches and transparent groups work; a mismatch reports the expected union and the offending arm. General patterns and context through bodies with local definitions remain unsupported, and unrelated unresolved tags stay pending.
69A known closed union can also provide context to each arm of a complete loobean or unit-shaped branch in a cast or a call with a known union sample. Nested branches and transparent groups work; a mismatch reports the expected union and the offending arm. General patterns and context through bodies with local definitions remain unsupported, and unrelated unresolved tags stay pending.
70
70
71−The separate `jibb-dev/lib/jibb-import.hoon` is an unfinished reader for selected Hoon type graphs. It handles named recursion, nested map, set, queue, list, unit, jar and jug arguments, direct ordered maps, and direct `$^` unions whose source branches can be proved disjoint. It also reads ordered map fields in records when the map arguments are syntactically fixed atom molds and other fields are fixed atom molds or standard collections of static atom molds. Collection names must not be shadowed. The reader can also import a mark door sample, removing its outer sample face and validating its build subject. The reader checks explicit Hoon `$%`, `$?` and `$^` unions against the Grammar’s disjointness rule, as @iko confirmed on 2026-10-30. It re-evaluates statically recognizable source branches before Hoon can collapse them, checks materialized fork cases, and rejects shapes it cannot prove disjoint. Static records may also have verified standard-collection and `path` siblings. One direct explicit union argument in a standard list, set, map or unit is accepted when its call wrapper and collection provenance are verified and its static cases are pairwise disjoint. A synthetic regression checks that forged wrapper subjects, samples and tails are rejected. Other collection-union forms, nested ordered maps, general source-level disjointness and complete integration with the checker remain unfinished. `+golden-types-imports` can consume fixed-aura atoms, valid term singletons, nested faced or unfaced cells, unions of supported, pairwise-disjoint cases, and opaque standard collections with supported arguments from caller-supplied reader results for declared `/-` imports; `+golden-types-with-marks` accepts the same shapes for declared marks. The caller must pass unchanged results from the source-aware reader: the bridge validates the supplied graph but cannot detect source cases Hoon collapsed before that graph was built. The opaque collection types retain their names and arguments for identity, unification and printing. The validated standard prelude `list` mold shares the imported list representation; other Jibb-written collection molds and prelude collection operations are not yet connected. Other forms remain unsupported. Its disjointness proof is conservative and can reject a valid union it cannot prove disjoint. Collection recognition requires the originating `/sur` core. The reader validates direct zuse subjects and Ford subjects consisting of faced imported cores and a validated tail, checking imported cores transitively; it rejects shadowed names, inconsistent core subjects and other subject shapes. For a recursive reference, the reader matches the exact Hoon hold against named arms in validated cores, including transitive Ford imports; it rejects missing, unlabelled or ambiguous origins. Its fixtures include three real Tlon files; `tools/importer-test` compares the internal projection under eval, and the ship test compares the same golden output. `tools/type-import-test` and `tools/type-mark-test` compare bridge reports under eval and on the ship. `tools/clay-fixtures` also passes Clay-built `/sur` molds and mark samples through the Clay-built importer and partial checker.
71+The separate `jibb-dev/lib/jibb-import.hoon` is an unfinished reader for selected Hoon type graphs. It handles named recursion, nested map, set, queue, list, unit, jar and jug arguments, direct ordered maps, and direct `$^` unions whose source branches can be proved disjoint. It also reads ordered map fields in records when the map arguments are syntactically fixed atom molds and other fields are fixed atom molds or standard collections of static atom molds. Collection names must not be shadowed. The reader can also import a mark door sample, removing its outer sample face and validating its build subject. The reader checks explicit Hoon `$%`, `$?` and `$^` unions against the Grammar’s disjointness rule, as @iko confirmed on 2026-10-30. It re-evaluates statically recognizable source branches before Hoon can collapse them, checks materialized fork cases, and rejects shapes it cannot prove disjoint. Static records may also have verified standard-collection and `path` siblings. One direct explicit union argument in a standard list, set, map or unit is accepted when its call wrapper and collection provenance are verified and its static cases are pairwise disjoint. A synthetic regression checks that forged wrapper subjects, samples and tails are rejected. Other collection-union forms, nested ordered maps, general source-level disjointness and complete integration with the checker remain unfinished. `+golden-types-imports` can consume fixed-aura atoms, valid term singletons, nested faced or unfaced cells, unions of supported, pairwise-disjoint cases, and opaque standard collections with supported arguments from caller-supplied reader results for declared `/-` imports; `+golden-types-with-marks` accepts the same shapes for declared marks. The caller must pass unchanged results from the source-aware reader: the bridge validates the supplied graph but cannot detect source cases Hoon collapsed before that graph was built. The opaque collection types retain their names and arguments for identity, unification and printing. The validated standard prelude `list` mold shares the imported list representation; other Jibb-written collection molds and most prelude collection operations remain unsupported. Other forms remain unsupported. Its disjointness proof is conservative and can reject a valid union it cannot prove disjoint. Collection recognition requires the originating `/sur` core. The reader validates direct zuse subjects and Ford subjects consisting of faced imported cores and a validated tail, checking imported cores transitively; it rejects shadowed names, inconsistent core subjects and other subject shapes. For a recursive reference, the reader matches the exact Hoon hold against named arms in validated cores, including transitive Ford imports; it rejects missing, unlabelled or ambiguous origins. Its fixtures include three real Tlon files; `tools/importer-test` compares the internal projection under eval, and the ship test compares the same golden output. `tools/type-import-test` and `tools/type-mark-test` compare bridge reports under eval and on the ship. `tools/clay-fixtures` also passes Clay-built `/sur` molds and mark samples through the Clay-built importer and partial checker.
72
72
73Self-recursive `/sur` molds can cross the bridge as opaque module-and-name identities when their supported source-aware graph passes validation. Aliases, foreign references, recursive marks, unfolding, construction and field access remain unsupported; the partial printer declines recursive names that are not in scope.
73Self-recursive `/sur` molds can cross the bridge as opaque module-and-name identities when their supported source-aware graph passes validation. Aliases, foreign references, recursive marks, unfolding, construction and field access remain unsupported; the partial printer declines recursive names that are not in scope.
74
74
@@ -76,7 +76,7 @@ Callers that have a `/sur` core and a name can use `+read-named`: it checks for
76
76
77`+golden-types-with-prelude` accepts case-local Jibb module sources alongside `/sur` and mark results and the vendored prelude source. It resolves reachable ordinary library modules in dependency order, caching completed interfaces per invocation and exporting supported closed value schemes, direct generic unions, and simple or nonrecursive generic mold aliases whose bodies the fragment supports. It detects missing sources and cycles and rejects a dependency if its interface cannot be inferred by the fragment.
77`+golden-types-with-prelude` accepts case-local Jibb module sources alongside `/sur` and mark results and the vendored prelude source. It resolves reachable ordinary library modules in dependency order, caching completed interfaces per invocation and exporting supported closed value schemes, direct generic unions, and simple or nonrecursive generic mold aliases whose bodies the fragment supports. It detects missing sources and cycles and rejects a dependency if its interface cannot be inferred by the fragment.
78
78
79−The supplied prelude is parsed into a **partial interface**: all names actually declared in the source are reserved, while only the molds and values this fragment can infer are available. These include the validated standard `list` mold, `unit`, `same`, `fall` and `need`; unsupported entries, such as most list helpers, remain unavailable. A named prelude union keeps the fixed `/lib/jibb/prelude/jibb` origin in every module, and its name remains unqualified when a library exports a type containing it. The prelude inventory is incomplete, so reserving the names in this source does not establish complete shadowing coverage. Prelude imports, including the planned private internal module, are not supported by preparation. The shared module-scope fixture compares the prepared and source-taking paths against the real prelude and a two-module golden under eval and on the ship.
79+The supplied prelude is parsed into a **partial interface**: all names actually declared in the source are reserved, while only the molds and values this fragment can infer are available. These include the validated standard `list` mold, `unit`, `same`, `fall`, `need`, `lure`, `weld` and `snoc`; unsupported entries, such as most list helpers, remain unavailable. The validated `list` is injected while the prelude’s gates are inferred; `weld` uses an ordinary explicit result cast. An absent or altered `list` is not injected, and an altered declaration cannot leak through a direct or transitive mold alias. List-dependent prelude mold aliases remain unsupported because their templates are prepared before this injection. A named prelude union keeps the fixed `/lib/jibb/prelude/jibb` origin in every module, and its name remains unqualified when a library exports a type containing it. The prelude inventory is incomplete, so reserving the names in this source does not establish complete shadowing coverage. Prelude imports, including the planned private internal module, are not supported by preparation. The shared module-scope fixture compares the prepared and source-taking paths against the real prelude and a two-module golden under eval and on the ship.
80
80
81`+prepare-prelude` derives the interface and declared-name inventory from the trusted vendored source. Hosts can reuse its result with `+golden-types-with-prepared-prelude`; they must pass the unchanged result of preparation, not an independently constructed value. Empty, malformed, duplicate-name or import-bearing prelude sources fail closed. `+golden-types-with-prelude` remains the source-taking wrapper. API files, modules with `main`, unsupported definitions and many other features remain outside this subset. The older `+golden-types-with-modules` entry point fails closed for imports because it has no prelude scope. None of these partial reports claims the module has been checked.
81`+prepare-prelude` derives the interface and declared-name inventory from the trusted vendored source. Hosts can reuse its result with `+golden-types-with-prepared-prelude`; they must pass the unchanged result of preparation, not an independently constructed value. Empty, malformed, duplicate-name or import-bearing prelude sources fail closed. `+golden-types-with-prelude` remains the source-taking wrapper. API files, modules with `main`, unsupported definitions and many other features remain outside this subset. The older `+golden-types-with-modules` entry point fails closed for imports because it has no prelude scope. None of these partial reports claims the module has been checked.
82
82
docs/status.md+8−7
@@ -19,9 +19,9 @@ On 2026-10-30, @iko decided that Jibb drops `$?`, so a `+$` takes a union's case
19
19
20## Milestone 2: in progress
20## Milestone 2: in progress
21
21
22−The repository spec records the subsequent type-system and prelude decisions; those changes also need synchronization to the Claude document. An initial inference fragment and a standalone Hoon type reader are being tested. The fragment explicitly reports that it does not check a module; partial bridges pass selected Hoon atoms, term singletons, nested faced or unfaced cells, supported disjoint unions and opaque standard collections from `/sur` molds and marks into inference. Collections retain their names and supported arguments for printing and unification; nested supported union arguments are retained too. The bridge trusts unchanged results from the source-aware reader; a materialized type graph alone cannot reveal cases Hoon already collapsed. The source-validated standard prelude `list` mold shares this representation with imported lists; other Jibb-written collection molds and prelude collection operations are not yet connected; malformed names and arities fail closed. Selected self-recursive `/sur` molds cross as opaque module-and-name identities; aliases, foreign references, recursive marks, unfolding and construction remain unsupported. The reader handles mark samples, recursive molds whose origins can be verified through Ford imports, nested collections, direct ordered maps, certain ordered-map fields, direct `$^` unions whose cases can be proved disjoint, and one verified explicit union argument in a list, set, map or unit. Ambiguous recursive origins fail closed; recognizable explicit unions are checked from source before Hoon can collapse their cases, as @iko confirmed for imported `$%`, `$?` and `$^`, while other nested unions, nested ordered maps, general union disjointness and complete import integration remain unfinished. The partial checker resolves a subset of ordinary library imports in dependency order using supplied Jibb sources and a source-derived partial prelude interface, caches completed interfaces per run, and detects missing sources and cycles. It does not yet check API or kind semantics, and the prelude inventory is incomplete. The inference fragment supports unrestricted `@`, selected one-way widenings including aura-family ancestors, generalized atom constraints arising from explicit capitals or bare sample binders, acyclic local value definitions with captures, selected single self-recursive top-level gates, simple and nonrecursive generic mold aliases, selected faced record casts and field reads, and contextual tags, `~` and constructors for closed disjoint unions, including direct nonrecursive generic unions and propagation through complete loobean and unit-shaped branches in casts and known union-sample calls, including nested branches. Multi-argument calls form a right-nested sample, retain known faces and shared type variables, and can use known sample positions to contextualize list and union arguments. A definite mismatch points to the failing argument when the fragment can establish it, otherwise to the combined sample; unsupported contextual forms still fail closed. For a supported recursive gate, the checker infers the sample first and uses its exact type, including field faces, for one monomorphic self reference. It generalizes after the body is checked; subsequent uses instantiate it independently. Incompatible recursive arguments can report the gate and argument sites. For a complete loobean branch with one direct self-call arm, a separately inferred closed base type can seed the recursive result before the whole body is checked. Open or pending base types do not seed it; other branch shapes remain subject to the fragment’s existing limits. Mutual groups, local recursive gates, polymorphic recursion and value cycles remain unsupported. Reporting repeats inference for a recursive gate, so its performance cost remains unmeasured. Contextual null-headed cells fit their cases, but do not supply a `|=%$` constructor; unresolved nulls remain pending and are reported separately from tags. A known union of `~` and a null-headed cell supports a complete `~` / `[~ value]` branch in either order, including shadow checks; unknown subjects, missing or duplicate arms, and unresolved branch results remain unsupported. This fragment infers the prelude’s `fall` and `need` signatures. With the validated prelude list and a known cast or gate sample, empty, nonempty and nested list literals infer their element types, including contextual union tags; a mismatched element names both sites. In that context `~` and zero-valued terms fit an empty list, and two-item unfaced cells form cons lists, including nested cons and imported-list contexts; invalid heads or tails name both sites. Faced or longer cells and a missing or altered prelude list fail closed. A known list result also supplies context through complete loobean, unit-shaped and list-shaped branches, including recursive and nested branches. For a known standard list with a supported element type, a complete `~` / `[item rest]` branch infers the element and tail types in either arm order and checks binders for shadowing. Uncontextualized list construction, unknown subjects, unsupported element types and other or incomplete list patterns remain unsupported. A value with type variable `A` can fit a field whose type is that same `A`, including in generic union payloads and nested or repeated record fields. Other variable-dependent face merges remain unsupported. Forced equality of distinct written capitals now reports both source sites, following @iko’s decision; forcing one to a concrete type remains unsupported. Imported record spines with repeated faces fail closed where used, but only with a generic unsupported diagnostic. Hoon may erase unfaced nested-cell boundaries, so the check can conservatively reject valid names in distinct erased scopes. Supported closed unions print using an in-scope name or imported alias; an unnamed nongeneric union prints its cases, parenthesized when nested. The latter is print-only. Generic union types retain all arguments in their printed name; if that name is unavailable, the partial printer reports the limitation. Different import faces for the same origin remain compatible; compatibility across distinct union origins and some generic-argument comparisons remain unsupported. Nonrecursive generic aliases can reorder, repeat or omit parameters while retaining a union’s origin, including through local scopes and library interfaces. A generic union declared directly inside a body remains unsupported, as do differing-variable face constraints in a union payload. A transitive generic union whose name is unavailable is reported as unsupported instead of hiding its arguments. Unfixed decimal literals default to `@ud` in gate-free inferred types; recursive local groups and molds, general branch tag context, other constraint cases and defaulting inside gate types still need work. Collection recognition checks the originating core and fails closed on shadows or unsupported Ford subject shapes; a wrapper regression also rejects forged subjects, samples and tails. Its golden fixtures include three real Tlon files. A Clay test passes a Ford-built nested union through the reader into partial inference. The partial prelude includes `murn`, `join`, `snip`, `rear` and the newly agreed shared-type `clap`, parsed but still awaiting checker and backend validation, and [prelude-inventory.md](prelude-inventory.md) is a source audit, not the complete inventory or signatures. The milestone remains unfinished.
22+The repository spec records the subsequent type-system and prelude decisions; those changes also need synchronization to the Claude document. An initial inference fragment and a standalone Hoon type reader are being tested. The fragment explicitly reports that it does not check a module; partial bridges pass selected Hoon atoms, term singletons, nested faced or unfaced cells, supported disjoint unions and opaque standard collections from `/sur` molds and marks into inference. Collections retain their names and supported arguments for printing and unification; nested supported union arguments are retained too. The bridge trusts unchanged results from the source-aware reader; a materialized type graph alone cannot reveal cases Hoon already collapsed. The source-validated standard prelude `list` mold shares this representation with imported lists; other Jibb-written collection molds and most prelude collection operations remain unsupported; malformed names and arities fail closed. Selected self-recursive `/sur` molds cross as opaque module-and-name identities; aliases, foreign references, recursive marks, unfolding and construction remain unsupported. The reader handles mark samples, recursive molds whose origins can be verified through Ford imports, nested collections, direct ordered maps, certain ordered-map fields, direct `$^` unions whose cases can be proved disjoint, and one verified explicit union argument in a list, set, map or unit. Ambiguous recursive origins fail closed; recognizable explicit unions are checked from source before Hoon can collapse their cases, as @iko confirmed for imported `$%`, `$?` and `$^`, while other nested unions, nested ordered maps, general union disjointness and complete import integration remain unfinished. The partial checker resolves a subset of ordinary library imports in dependency order using supplied Jibb sources and a source-derived partial prelude interface, caches completed interfaces per run, and detects missing sources and cycles. It does not yet check API or kind semantics, and the prelude inventory is incomplete. The inference fragment supports unrestricted `@`, selected one-way widenings including aura-family ancestors, generalized atom constraints arising from explicit capitals or bare sample binders, acyclic local value definitions with captures, selected single self-recursive top-level gates, simple and nonrecursive generic mold aliases, selected faced record casts and field reads, and contextual tags, `~` and constructors for closed disjoint unions, including direct nonrecursive generic unions and propagation through complete loobean and unit-shaped branches in casts and known union-sample calls, including nested branches. Multi-argument calls form a right-nested sample, retain known faces and shared type variables, and can use known sample positions to contextualize list and union arguments. A definite mismatch points to the failing argument when the fragment can establish it, otherwise to the combined sample; unsupported contextual forms still fail closed. For a supported recursive gate, the checker infers the sample first and uses its exact type, including field faces, for one monomorphic self reference. It generalizes after the body is checked; subsequent uses instantiate it independently. Incompatible recursive arguments can report the gate and argument sites. For a complete loobean branch with one direct self-call arm, a separately inferred closed base type can seed the recursive result before the whole body is checked. Open or pending base types do not seed it; other branch shapes remain subject to the fragment’s existing limits. Mutual groups, local recursive gates, polymorphic recursion and value cycles remain unsupported. Reporting repeats inference for a recursive gate, so its performance cost remains unmeasured. Contextual null-headed cells fit their cases, but do not supply a `|=%$` constructor; unresolved nulls remain pending and are reported separately from tags. A known union of `~` and a null-headed cell supports a complete `~` / `[~ value]` branch in either order, including shadow checks; unknown subjects, missing or duplicate arms, and unresolved branch results remain unsupported. This fragment infers the prelude’s `fall` and `need` signatures. With the validated prelude list and a known cast or gate sample, empty, nonempty and nested list literals infer their element types, including contextual union tags; a mismatched element names both sites. In that context `~` and zero-valued terms fit an empty list, and two-item unfaced cells form cons lists, including nested cons and imported-list contexts; invalid heads or tails name both sites. Faced or longer cells and a missing or altered prelude list fail closed. A known list result also supplies context through complete loobean, unit-shaped and list-shaped branches, including recursive and nested branches. For a known standard list with a supported element type, a complete `~` / `[item rest]` branch infers the element and tail types in either arm order and checks binders for shadowing. Uncontextualized list construction, unknown subjects, unsupported element types and other or incomplete list patterns remain unsupported. A value with type variable `A` can fit a field whose type is that same `A`, including in generic union payloads and nested or repeated record fields. Other variable-dependent face merges remain unsupported. Forced equality of distinct written capitals now reports both source sites, following @iko’s decision; forcing one to a concrete type remains unsupported. Imported record spines with repeated faces fail closed where used, but only with a generic unsupported diagnostic. Hoon may erase unfaced nested-cell boundaries, so the check can conservatively reject valid names in distinct erased scopes. Supported closed unions print using an in-scope name or imported alias; an unnamed nongeneric union prints its cases, parenthesized when nested. The latter is print-only. Generic union types retain all arguments in their printed name; if that name is unavailable, the partial printer reports the limitation. Different import faces for the same origin remain compatible; compatibility across distinct union origins and some generic-argument comparisons remain unsupported. Nonrecursive generic aliases can reorder, repeat or omit parameters while retaining a union’s origin, including through local scopes and library interfaces. A generic union declared directly inside a body remains unsupported, as do differing-variable face constraints in a union payload. A transitive generic union whose name is unavailable is reported as unsupported instead of hiding its arguments. Unfixed decimal literals default to `@ud` in gate-free inferred types; recursive local groups and molds, general branch tag context, other constraint cases and defaulting inside gate types still need work. Collection recognition checks the originating core and fails closed on shadows or unsupported Ford subject shapes; a wrapper regression also rejects forged subjects, samples and tails. Its golden fixtures include three real Tlon files. A Clay test passes a Ford-built nested union through the reader into partial inference. The partial prelude includes `murn`, `join`, `snip`, `rear` and the newly agreed shared-type `clap`, parsed but still awaiting checker and backend validation, and [prelude-inventory.md](prelude-inventory.md) is a source audit, not the complete inventory or signatures. The milestone remains unfinished.
23
23
24−The shared prelude interface reserves every name present in the supplied vendored source and makes only supported inferred entries available, including `list`, `unit`, `same`, `fall` and `need`. Unsupported entries such as most list helpers remain reserved but unavailable. All callers use the same prelude origin, so a library can export a type containing unqualified `(unit A)` to another module. Preparation rejects empty, malformed, conflicting or import-bearing source; the prepared value is trusted and must come unchanged from `+prepare-prelude`. The module-scope fixture compares the prepared and source-taking paths against the real prelude and a two-module golden under eval and on the ship. The source and checker remain incomplete, so this does not establish complete shadowing coverage or a checked module.
24+The shared prelude interface reserves every name present in the supplied vendored source and makes only supported inferred entries available, including `list`, `unit`, `same`, `fall`, `need`, `lure`, `weld` and `snoc`. The validated standard `list` mold is injected when the prelude’s own gates are inferred; `weld` has an ordinary explicit result cast. An absent or altered `list` is not injected, and an altered declaration cannot leak through direct or transitive mold aliases. List-dependent prelude mold aliases remain unsupported because their templates are prepared before injection. Unsupported entries such as most list helpers remain reserved but unavailable; backend validation of the helpers remains outstanding. All callers use the same prelude origin, so a library can export a type containing unqualified `(unit A)` to another module. Preparation rejects empty, malformed, conflicting or import-bearing source; the prepared value is trusted and must come unchanged from `+prepare-prelude`. The module-scope fixture compares the prepared and source-taking paths against the real prelude and a two-module golden under eval and on the ship. The source and checker remain incomplete, so this does not establish complete shadowing coverage or a checked module.
25
25
26## Milestone 1: parser and mark
26## Milestone 1: parser and mark
27
27
@@ -39,8 +39,8 @@ What the plan asks for, and where it is:
39
39
40Besides the plan's list:
40Besides the plan's list:
41
41
42−- 511 golden cases: 295 that parse and 216 that fail, each failure at a stated line and column. One failing case has an unclear expectation (corpus question 3). The newer type-output cases exercise only the partial inference fragment. Each case's `about.txt` quotes the doc's words it tests.
42+- 512 golden cases: 296 that parse and 216 that fail, each failure at a stated line and column. One failing case has an unclear expectation (corpus question 3). The newer type-output cases exercise only the partial inference fragment. Each case's `about.txt` quotes the doc's words it tests.
43−- The 511-case corpus passed under `urbit eval` in 57.7 s. The fake ship passed all 516 tests, including the importer, importer/checker and mark/checker bridges, module scope and unification checks, with 28.8 s for sync and 33.7 s for tests. The importer golden compares 141 projections; `tools/clay-fixtures` builds the example Hoon fixtures through Clay, checks a recursive Ford import's origin, and passes Clay-built types through the Clay-built importer and partial checker.
43+- The 512-case corpus passed under `urbit eval` in 58.7 s. The fake ship passed all 517 tests, including the importer, importer/checker and mark/checker bridges, module scope and unification checks, with 29.3 s for sync and 33.5 s for tests. The importer golden compares 141 projections; `tools/clay-fixtures` builds the example Hoon fixtures through Clay, checks a recursive Ford import's origin, and passes Clay-built types through the Clay-built importer and partial checker.
44- `tools/testdata/selftest` (22 checks) and `tools/testdata/ship-selftest` test the tools themselves.
44- `tools/testdata/selftest` (22 checks) and `tools/testdata/ship-selftest` test the tools themselves.
45- Two independent audits before 7c739b7, one of which compared the library with a reference parser written in Python from the doc over about 19,000 generated programs. Before ab797a9, a second Python parser, written from the decisions, agreed with the library on 8,000 generated programs and 900 hand-written probes.
45- Two independent audits before 7c739b7, one of which compared the library with a reference parser written in Python from the doc over about 19,000 generated programs. Before ab797a9, a second Python parser, written from the decisions, agreed with the library on 8,000 generated programs and 900 hand-written probes.
46- Speed: starting `urbit eval` and building the library takes about 8 s. After that, a 2,000-line module of 400 definitions parses in about a second. Loops over definitions, arms, lines and items grow no stack; nesting costs a few stack frames a level, and 100,000 nested brackets still parse (library section 3).
46- Speed: starting `urbit eval` and building the library takes about 8 s. After that, a 2,000-line module of 400 definitions parses in about a second. Loops over definitions, arms, lines and items grow no stack; nesting costs a few stack frames a level, and 100,000 nested brackets still parse (library section 3).
@@ -87,14 +87,15 @@ Besides the plan's list:
87| 9ab52e8 | 2026-10-30 | Infer recursive branches with closed base types |
87| 9ab52e8 | 2026-10-30 | Infer recursive branches with closed base types |
88| d782b45 | 2026-10-30 | Propagate list context and apply settled type decisions |
88| d782b45 | 2026-10-30 | Propagate list context and apply settled type decisions |
89| c7082e0 | 2026-10-30 | Infer multi-argument calls |
89| c7082e0 | 2026-10-30 | Infer multi-argument calls |
90−| This change | 2026-10-30 | Infer recursive gates from their samples first |
90+| 918acbd | 2026-10-30 | Infer recursive gates from their samples first |
91+| This change | 2026-10-30 | Infer selected prelude list helpers |
91
92
92## Checking it
93## Checking it
93
94
94On a machine set up as [development.md](development.md) says:
95On a machine set up as [development.md](development.md) says:
95
96
96```
97```
97−tools/golden # 511 cases under urbit eval
98+tools/golden # 512 cases under urbit eval
98tools/importer-test # the Hoon importer fixture projection
99tools/importer-test # the Hoon importer fixture projection
99tools/type-import-test # the importer/checker bridge fixture
100tools/type-import-test # the importer/checker bridge fixture
100tools/type-mark-test # the mark/checker bridge fixture
101tools/type-mark-test # the mark/checker bridge fixture
@@ -104,7 +105,7 @@ tools/testdata/selftest # the tools themselves
104tools/doc-blocks docs/spec # the doc's examples are golden cases
105tools/doc-blocks docs/spec # the doc's examples are golden cases
105tools/ship start
106tools/ship start
106tools/ship gen-tests --check # tests/lib/jibb.hoon is up to date
107tools/ship gen-tests --check # tests/lib/jibb.hoon is up to date
107−tools/ship test # the same 511 cases as -test arms on the ship
108+tools/ship test # the same 512 cases as -test arms on the ship
108tools/testdata/ship-selftest
109tools/testdata/ship-selftest
109tools/ship check-commit # |commit stores .jibb files
110tools/ship check-commit # |commit stores .jibb files
110tools/clay-fixtures # example /sur files and marks build through Clay
111tools/clay-fixtures # example /sur files and marks build through Clay
jibb-dev/lib/jibb.hoon+10−2
@@ -7390,9 +7390,17 @@
7390 =/ molds=imolds (collect-simple-molds ds)
7390 =/ molds=imolds (collect-simple-molds ds)
7391 =/ names=(list term) (turn molds |=(m=[name=term body=shape] name.m))
7391 =/ names=(list term) (turn molds |=(m=[name=term body=shape] name.m))
7392 =/ globals=(list term) (global-value-names ds)
7392 =/ globals=(list term) (global-value-names ds)
7393+ :: Remove raw list before inferring any template, so an altered list
7394+ :: cannot leak through an alias. Its name remains reserved either way.
7395+ =/ declared=? (lien names |=(name=term =(%list name)))
7396+ =/ env-molds=imolds molds
7397+ =? env-molds declared
7398+ (skim molds |=(m=[name=term body=shape] !=(%list name.m)))
7399+ =/ reserved=(list term) ?:(declared ~[%list] ~)
7393− =/ state=istate [0 ~ ~ ~ molds globals ~ ~ ~ ~ ~ ~ ~ ~ ~ | at names ~]
7400+ =/ state=istate [0 ~ ~ ~ env-molds globals ~ ~ ~ ~ ~ reserved ~ ~ ~ | at names ~]
7394 =/ mt=imold-types (partial-prelude-molds molds state)
7401 =/ mt=imold-types (partial-prelude-molds molds state)
7402+ =/ partial=ifile [~ mt at]
7395− =/ env=ienv (resolve-supported-defs ds molds globals ~ ~ ~ ~ ~ ~ at ~)
7403+ =/ env=ienv (resolve-supported-defs ds env-molds globals ~ ~ ~ ~ ~ reserved at `partial)
7396 `[env mt at]
7404 `[env mt at]
7397::
7405::
7398+$ iprelude [iface=ifile values=(list term) molds=(list term)]
7406+$ iprelude [iface=ifile values=(list term) molds=(list term)]
jibb-dev/lib/jibb/prelude.jibb+4−3
@@ -37,9 +37,10 @@
37++ weld |= args=[(list A) (list A)]
37++ weld |= args=[(list A) (list A)]
38 ?- args
38 ?- args
39 [xs ys]
39 [xs ys]
40+ ^- (list A)
40− ?- xs
41+ ?- xs
41− ~ ys
42+ ~ ys
42− [item rest] [item (weld rest ys)]
43+ [item rest] [item (weld rest ys)]
43
44
44++ turn |= args=[(list A) $-(A B)]
45++ turn |= args=[(list A) $-(A B)]
45 ?- args
46 ?- args
tests/golden/prelude-1c-structural/source.jibb+4−3
@@ -37,9 +37,10 @@
37++ weld |= args=[(list A) (list A)]
37++ weld |= args=[(list A) (list A)]
38 ?- args
38 ?- args
39 [xs ys]
39 [xs ys]
40+ ^- (list A)
40− ?- xs
41+ ?- xs
41− ~ ys
42+ ~ ys
42− [item rest] [item (weld rest ys)]
43+ [item rest] [item (weld rest ys)]
43
44
44++ turn |= args=[(list A) $-(A B)]
45++ turn |= args=[(list A) $-(A B)]
45 ?- args
46 ?- args
tests/golden/prelude-1c-structural/tokens.txt+500−493
@@ -190,528 +190,535 @@
19039:9 name ys
19039:9 name ys
19139:11 tight glyph ]
19139:11 tight glyph ]
19240:7 INDENT
19240:7 INDENT
193−40:7 glyph ?-
193+40:7 glyph ^-
194−40:10 name xs
194+40:10 glyph (
195+40:11 tight name list
196+40:16 tvar A
197+40:17 tight glyph )
19541:9 INDENT
19841:9 INDENT
196−41:9 lit ~
199+41:9 glyph ?-
200+41:12 name xs
201+42:11 INDENT
202+42:11 lit ~
197−41:11 name ys
203+42:13 name ys
198−42:9 NEWLINE
204+43:11 NEWLINE
199−42:9 glyph [
205+43:11 glyph [
200−42:10 tight name item
206+43:12 tight name item
201−42:15 name rest
207+43:17 name rest
202−42:19 tight glyph ]
208+43:21 tight glyph ]
203−42:21 glyph [
209+43:23 glyph [
204−42:22 tight name item
210+43:24 tight name item
205−42:27 glyph (
211+43:29 glyph (
206−42:28 tight name weld
212+43:30 tight name weld
207−42:33 name rest
213+43:35 name rest
208−42:38 name ys
214+43:40 name ys
209−42:40 tight glyph )
215+43:42 tight glyph )
210−42:41 tight glyph ]
216+43:43 tight glyph ]
217+45:1 DEDENT
211−44:1 DEDENT
218+45:1 DEDENT
212−44:1 DEDENT
219+45:1 DEDENT
213−44:1 DEDENT
220+45:1 DEDENT
214−44:1 DEDENT
221+45:1 DEDENT
215−44:1 NEWLINE
222+45:1 NEWLINE
216−44:1 glyph ++
223+45:1 glyph ++
217−44:4 name turn
224+45:4 name turn
218−44:9 glyph |=
225+45:9 glyph |=
219−44:12 name args
226+45:12 name args
220−44:16 tight glyph =
227+45:16 tight glyph =
221−44:17 tight glyph [
228+45:17 tight glyph [
222−44:18 tight glyph (
229+45:18 tight glyph (
223−44:19 tight name list
230+45:19 tight name list
224−44:24 tvar A
231+45:24 tvar A
225−44:25 tight glyph )
232+45:25 tight glyph )
226−44:27 glyph $-(
233+45:27 glyph $-(
227−44:30 tight tvar A
234+45:30 tight tvar A
228−44:32 tvar B
235+45:32 tvar B
229−44:33 tight glyph )
236+45:33 tight glyph )
230−44:34 tight glyph ]
237+45:34 tight glyph ]
231−45:3 INDENT
238+46:3 INDENT
232−45:3 glyph ?-
239+46:3 glyph ?-
233−45:6 name args
240+46:6 name args
234−46:5 INDENT
241+47:5 INDENT
235−46:5 glyph [
242+47:5 glyph [
236−46:6 tight name xs
243+47:6 tight name xs
237−46:9 name f
244+47:9 name f
238−46:10 tight glyph ]
245+47:10 tight glyph ]
239−47:7 INDENT
246+48:7 INDENT
240−47:7 glyph ?-
247+48:7 glyph ?-
241−47:10 name xs
248+48:10 name xs
242−48:9 INDENT
249+49:9 INDENT
243−48:9 lit ~
250+49:9 lit ~
244−48:11 lit ~
251+49:11 lit ~
245−49:9 NEWLINE
252+50:9 NEWLINE
246−49:9 glyph [
253+50:9 glyph [
247−49:10 tight name item
254+50:10 tight name item
248−49:15 name rest
255+50:15 name rest
249−49:19 tight glyph ]
256+50:19 tight glyph ]
250−49:21 glyph [
257+50:21 glyph [
251−49:22 tight glyph (
258+50:22 tight glyph (
252−49:23 tight name f
259+50:23 tight name f
253−49:25 name item
260+50:25 name item
254−49:29 tight glyph )
261+50:29 tight glyph )
255−49:31 glyph (
262+50:31 glyph (
256−49:32 tight name turn
263+50:32 tight name turn
257−49:37 name rest
264+50:37 name rest
258−49:42 name f
265+50:42 name f
259−49:43 tight glyph )
266+50:43 tight glyph )
260−49:44 tight glyph ]
267+50:44 tight glyph ]
261−51:1 DEDENT
268+52:1 DEDENT
262−51:1 DEDENT
269+52:1 DEDENT
263−51:1 DEDENT
270+52:1 DEDENT
264−51:1 DEDENT
271+52:1 DEDENT
265−51:1 NEWLINE
272+52:1 NEWLINE
266−51:1 glyph +$
273+52:1 glyph +$
267−51:4 name dime
274+52:4 name dime
268−51:9 glyph [
275+52:9 glyph [
269−51:10 tight name p
276+52:10 tight name p
270−51:11 tight glyph =
277+52:11 tight glyph =
271−51:12 tight aura @ta
278+52:12 tight aura @ta
272−51:16 name q
279+52:16 name q
273−51:17 tight glyph =
280+52:17 tight glyph =
274−51:18 tight aura @
281+52:18 tight aura @
275−51:19 tight glyph ]
282+52:19 tight glyph ]
276−53:1 NEWLINE
283+54:1 NEWLINE
277−53:1 glyph +$
284+54:1 glyph +$
278−53:4 name hair
285+54:4 name hair
279−53:9 glyph [
286+54:9 glyph [
280−53:10 tight name p
287+54:10 tight name p
281−53:11 tight glyph =
288+54:11 tight glyph =
282−53:12 tight aura @ud
289+54:12 tight aura @ud
283−53:16 name q
290+54:16 name q
284−53:17 tight glyph =
291+54:17 tight glyph =
285−53:18 tight aura @ud
292+54:18 tight aura @ud
286−53:21 tight glyph ]
293+54:21 tight glyph ]
287−55:1 NEWLINE
294+56:1 NEWLINE
288−55:1 glyph +$
295+56:1 glyph +$
289−55:4 name pint
296+56:4 name pint
290−55:9 glyph [
297+56:9 glyph [
291−55:10 tight name p
298+56:10 tight name p
292−55:11 tight glyph =
299+56:11 tight glyph =
293−55:12 tight glyph [
300+56:12 tight glyph [
294−55:13 tight name p
301+56:13 tight name p
295−55:14 tight glyph =
302+56:14 tight glyph =
296−55:15 tight aura @
303+56:15 tight aura @
297−55:17 name q
304+56:17 name q
298−55:18 tight glyph =
305+56:18 tight glyph =
299−55:19 tight aura @
306+56:19 tight aura @
300−55:20 tight glyph ]
307+56:20 tight glyph ]
301−55:22 name q
308+56:22 name q
302−55:23 tight glyph =
309+56:23 tight glyph =
303−55:24 tight glyph [
310+56:24 tight glyph [
304−55:25 tight name p
311+56:25 tight name p
305−55:26 tight glyph =
312+56:26 tight glyph =
306−55:27 tight aura @
313+56:27 tight aura @
307−55:29 name q
314+56:29 name q
308−55:30 tight glyph =
315+56:30 tight glyph =
309−55:31 tight aura @
316+56:31 tight aura @
310−55:32 tight glyph ]
317+56:32 tight glyph ]
311−55:33 tight glyph ]
318+56:33 tight glyph ]
312−57:1 NEWLINE
319+58:1 NEWLINE
313−57:1 glyph +$
320+58:1 glyph +$
314−57:4 name coin
321+58:4 name coin
315−58:3 INDENT
322+59:3 INDENT
316−58:3 glyph [
317−58:4 tight lit %$
318−58:7 name p
319−58:8 tight glyph =
320−58:9 tight name dime
321−58:13 tight glyph ]
322−59:3 NEWLINE
32359:3 glyph [
32359:3 glyph [
324−59:4 tight lit %blob
324+59:4 tight lit %$
325−59:10 name p
325+59:7 name p
326−59:11 tight glyph =
326+59:8 tight glyph =
327−59:12 tight glyph *
327+59:9 tight name dime
32859:13 tight glyph ]
32859:13 tight glyph ]
32960:3 NEWLINE
32960:3 NEWLINE
33060:3 glyph [
33060:3 glyph [
331−60:4 tight lit %many
331+60:4 tight lit %blob
33260:10 name p
33260:10 name p
33360:11 tight glyph =
33360:11 tight glyph =
334−60:12 tight glyph (
334+60:12 tight glyph *
335−60:13 tight name list
335+60:13 tight glyph ]
336+61:3 NEWLINE
337+61:3 glyph [
338+61:4 tight lit %many
339+61:10 name p
340+61:11 tight glyph =
341+61:12 tight glyph (
342+61:13 tight name list
336−60:18 name coin
343+61:18 name coin
337−60:22 tight glyph )
344+61:22 tight glyph )
338−60:23 tight glyph ]
345+61:23 tight glyph ]
339−62:1 DEDENT
346+63:1 DEDENT
340−62:1 NEWLINE
347+63:1 NEWLINE
341−62:1 glyph +$
348+63:1 glyph +$
342−62:4 name pair
349+63:4 name pair
343−62:9 glyph |$
350+63:9 glyph |$
344−62:12 glyph [
351+63:12 glyph [
345−62:13 tight tvar A
352+63:13 tight tvar A
346−62:15 tvar B
353+63:15 tvar B
347−62:16 tight glyph ]
354+63:16 tight glyph ]
348−62:18 glyph [
355+63:18 glyph [
349−62:19 tight name p
356+63:19 tight name p
350−62:20 tight glyph =
357+63:20 tight glyph =
351−62:21 tight tvar A
358+63:21 tight tvar A
352−62:23 name q
359+63:23 name q
353−62:24 tight glyph =
360+63:24 tight glyph =
354−62:25 tight tvar B
361+63:25 tight tvar B
355−62:26 tight glyph ]
362+63:26 tight glyph ]
356−64:1 NEWLINE
363+65:1 NEWLINE
357−64:1 glyph +$
364+65:1 glyph +$
358−64:4 name trel
365+65:4 name trel
359−64:9 glyph |$
366+65:9 glyph |$
360−64:12 glyph [
367+65:12 glyph [
361−64:13 tight tvar A
368+65:13 tight tvar A
362−64:15 tvar B
369+65:15 tvar B
363−64:17 tvar C
370+65:17 tvar C
364−64:18 tight glyph ]
371+65:18 tight glyph ]
365−64:20 glyph [
372+65:20 glyph [
366−64:21 tight name p
373+65:21 tight name p
367−64:22 tight glyph =
374+65:22 tight glyph =
368−64:23 tight tvar A
375+65:23 tight tvar A
369−64:25 name q
376+65:25 name q
370−64:26 tight glyph =
377+65:26 tight glyph =
371−64:27 tight tvar B
378+65:27 tight tvar B
372−64:29 name r
379+65:29 name r
373−64:30 tight glyph =
380+65:30 tight glyph =
374−64:31 tight tvar C
381+65:31 tight tvar C
375−64:32 tight glyph ]
382+65:32 tight glyph ]
376−66:1 NEWLINE
383+67:1 NEWLINE
377−66:1 glyph +$
384+67:1 glyph +$
378−66:4 name qual
385+67:4 name qual
379−66:9 glyph |$
386+67:9 glyph |$
380−66:12 glyph [
387+67:12 glyph [
381−66:13 tight tvar A
388+67:13 tight tvar A
382−66:15 tvar B
389+67:15 tvar B
383−66:17 tvar C
390+67:17 tvar C
384−66:19 tvar D
391+67:19 tvar D
385−66:20 tight glyph ]
392+67:20 tight glyph ]
386−66:22 glyph [
393+67:22 glyph [
387−66:23 tight name p
394+67:23 tight name p
388−66:24 tight glyph =
395+67:24 tight glyph =
389−66:25 tight tvar A
396+67:25 tight tvar A
390−66:27 name q
397+67:27 name q
391−66:28 tight glyph =
398+67:28 tight glyph =
392−66:29 tight tvar B
399+67:29 tight tvar B
393−66:31 name r
400+67:31 name r
394−66:32 tight glyph =
401+67:32 tight glyph =
395−66:33 tight tvar C
402+67:33 tight tvar C
396−66:35 name s
403+67:35 name s
397−66:36 tight glyph =
404+67:36 tight glyph =
398−66:37 tight tvar D
405+67:37 tight tvar D
399−66:38 tight glyph ]
406+67:38 tight glyph ]
400−68:1 NEWLINE
407+69:1 NEWLINE
401−68:1 glyph +$
408+69:1 glyph +$
402−68:4 name cord
409+69:4 name cord
403−68:9 aura @t
410+69:9 aura @t
404−70:1 NEWLINE
411+71:1 NEWLINE
405−70:1 glyph +$
412+71:1 glyph +$
406−70:4 name knot
413+71:4 name knot
407−70:9 aura @ta
414+71:9 aura @ta
408−72:1 NEWLINE
415+73:1 NEWLINE
409−72:1 glyph +$
416+73:1 glyph +$
410−72:4 name tape
417+73:4 name tape
411−72:9 glyph (
418+73:9 glyph (
412−72:10 tight name list
419+73:10 tight name list
413−72:15 aura @tD
420+73:15 aura @tD
414−72:18 tight glyph )
421+73:18 tight glyph )
415−74:1 NEWLINE
422+75:1 NEWLINE
416−74:1 glyph +$
423+75:1 glyph +$
417−74:4 name path
424+75:4 name path
418−74:9 glyph (
425+75:9 glyph (
419−74:10 tight name list
426+75:10 tight name list
420−74:15 name knot
427+75:15 name knot
421−74:19 tight glyph )
428+75:19 tight glyph )
422−76:1 NEWLINE
429+77:1 NEWLINE
423−76:1 glyph +$
430+77:1 glyph +$
424−76:4 name tank
431+77:4 name tank
425−77:3 INDENT
432+78:3 INDENT
426−77:3 name cord
427−78:3 NEWLINE
428−78:3 glyph [
429−78:4 tight lit %leaf
430−78:10 name p
433+78:3 name cord
431−78:11 tight glyph =
432−78:12 tight name tape
433−78:16 tight glyph ]
43479:3 NEWLINE
43479:3 NEWLINE
43579:3 glyph [
43579:3 glyph [
436−79:4 tight lit %palm
436+79:4 tight lit %leaf
43779:10 name p
43779:10 name p
43879:11 tight glyph =
43879:11 tight glyph =
439−79:12 tight glyph (
439+79:12 tight name tape
440−79:13 tight name qual
441−79:18 name tape
442−79:23 name tape
443−79:28 name tape
444−79:33 name tape
445−79:37 tight glyph )
446−79:39 name q
447−79:40 tight glyph =
448−79:41 tight glyph (
449−79:42 tight name list
450−79:47 name tank
451−79:51 tight glyph )
452−79:52 tight glyph ]
440+79:16 tight glyph ]
45380:3 NEWLINE
44180:3 NEWLINE
45480:3 glyph [
44280:3 glyph [
455−80:4 tight lit %rose
443+80:4 tight lit %palm
45680:10 name p
44480:10 name p
45780:11 tight glyph =
44580:11 tight glyph =
45880:12 tight glyph (
44680:12 tight glyph (
459−80:13 tight name trel
447+80:13 tight name qual
46080:18 name tape
44880:18 name tape
46180:23 name tape
44980:23 name tape
46280:28 name tape
45080:28 name tape
451+80:33 name tape
463−80:32 tight glyph )
452+80:37 tight glyph )
453+80:39 name q
454+80:40 tight glyph =
455+80:41 tight glyph (
456+80:42 tight name list
457+80:47 name tank
458+80:51 tight glyph )
459+80:52 tight glyph ]
460+81:3 NEWLINE
461+81:3 glyph [
462+81:4 tight lit %rose
463+81:10 name p
464+81:11 tight glyph =
465+81:12 tight glyph (
466+81:13 tight name trel
467+81:18 name tape
468+81:23 name tape
469+81:28 name tape
470+81:32 tight glyph )
464−80:34 name q
471+81:34 name q
465−80:35 tight glyph =
472+81:35 tight glyph =
466−80:36 tight glyph (
473+81:36 tight glyph (
467−80:37 tight name list
474+81:37 tight name list
468−80:42 name tank
475+81:42 name tank
469−80:46 tight glyph )
476+81:46 tight glyph )
470−80:47 tight glyph ]
477+81:47 tight glyph ]
471−82:1 DEDENT
478+83:1 DEDENT
472−82:1 NEWLINE
479+83:1 NEWLINE
473−82:1 glyph +$
480+83:1 glyph +$
474−82:4 name nail
481+83:4 name nail
475−82:9 glyph [
482+83:9 glyph [
476−82:10 tight name p
483+83:10 tight name p
477−82:11 tight glyph =
484+83:11 tight glyph =
478−82:12 tight name hair
485+83:12 tight name hair
479−82:17 name q
486+83:17 name q
480−82:18 tight glyph =
487+83:18 tight glyph =
481−82:19 tight name tape
488+83:19 tight name tape
482−82:23 tight glyph ]
489+83:23 tight glyph ]
483−84:1 NEWLINE
490+85:1 NEWLINE
484−84:1 glyph +$
491+85:1 glyph +$
485−84:4 name edge
492+85:4 name edge
486−84:9 glyph [
493+85:9 glyph [
487−84:10 tight name p
494+85:10 tight name p
488−84:11 tight glyph =
495+85:11 tight glyph =
489−84:12 tight name hair
496+85:12 tight name hair
490−84:17 name q
497+85:17 name q
491−84:18 tight glyph =
498+85:18 tight glyph =
492−84:19 tight glyph (
499+85:19 tight glyph (
493−84:20 tight name unit
500+85:20 tight name unit
494−84:25 glyph [
501+85:25 glyph [
495−84:26 tight name p
502+85:26 tight name p
496−84:27 tight glyph =
503+85:27 tight glyph =
497−84:28 tight glyph *
504+85:28 tight glyph *
498−84:30 name q
505+85:30 name q
499−84:31 tight glyph =
506+85:31 tight glyph =
500−84:32 tight name nail
507+85:32 tight name nail
501−84:36 tight glyph ]
508+85:36 tight glyph ]
502−84:37 tight glyph )
509+85:37 tight glyph )
503−84:38 tight glyph ]
510+85:38 tight glyph ]
504−86:1 NEWLINE
511+87:1 NEWLINE
505−86:1 glyph +$
512+87:1 glyph +$
506−86:4 name rule
513+87:4 name rule
507−86:9 glyph $-(
514+87:9 glyph $-(
508−86:12 tight name nail
515+87:12 tight name nail
509−86:17 name edge
516+87:17 name edge
510−86:21 tight glyph )
517+87:21 tight glyph )
511−88:1 NEWLINE
518+89:1 NEWLINE
512−88:1 glyph +$
519+89:1 glyph +$
513−88:4 name spot
520+89:4 name spot
514−88:9 glyph [
521+89:9 glyph [
515−88:10 tight name p
522+89:10 tight name p
516−88:11 tight glyph =
523+89:11 tight glyph =
517−88:12 tight name path
524+89:12 tight name path
518−88:17 name q
525+89:17 name q
519−88:18 tight glyph =
526+89:18 tight glyph =
520−88:19 tight name pint
527+89:19 tight name pint
521−88:23 tight glyph ]
528+89:23 tight glyph ]
522−90:1 NEWLINE
529+91:1 NEWLINE
523−90:1 glyph +$
530+91:1 glyph +$
524−90:4 name toon
531+91:4 name toon
525−91:3 INDENT
532+92:3 INDENT
526−91:3 glyph [
527−91:4 tight lit %0
528−91:7 name p
529−91:8 tight glyph =
530−91:9 tight glyph *
531−91:10 tight glyph ]
532−92:3 NEWLINE
53392:3 glyph [
53392:3 glyph [
534−92:4 tight lit %1
534+92:4 tight lit %0
53592:7 name p
53592:7 name p
53692:8 tight glyph =
53692:8 tight glyph =
53792:9 tight glyph *
53792:9 tight glyph *
53892:10 tight glyph ]
53892:10 tight glyph ]
53993:3 NEWLINE
53993:3 NEWLINE
54093:3 glyph [
54093:3 glyph [
541−93:4 tight lit %2
541+93:4 tight lit %1
54293:7 name p
54293:7 name p
54393:8 tight glyph =
54393:8 tight glyph =
544−93:9 tight glyph (
544+93:9 tight glyph *
545−93:10 tight name list
545+93:10 tight glyph ]
546+94:3 NEWLINE
547+94:3 glyph [
548+94:4 tight lit %2
549+94:7 name p
550+94:8 tight glyph =
551+94:9 tight glyph (
552+94:10 tight name list
546−93:15 name tank
553+94:15 name tank
547−93:19 tight glyph )
554+94:19 tight glyph )
548−93:20 tight glyph ]
555+94:20 tight glyph ]
549−95:1 DEDENT
556+96:1 DEDENT
550−95:1 NEWLINE
557+96:1 NEWLINE
551−95:1 glyph +$
558+96:1 glyph +$
552−95:4 name like
559+96:4 name like
553−95:9 glyph |$
560+96:9 glyph |$
554−95:12 glyph [
561+96:12 glyph [
555−95:13 tight tvar A
562+96:13 tight tvar A
556−95:14 tight glyph ]
563+96:14 tight glyph ]
557−95:16 glyph [
564+96:16 glyph [
558−95:17 tight name p
565+96:17 tight name p
559−95:18 tight glyph =
566+96:18 tight glyph =
560−95:19 tight name hair
567+96:19 tight name hair
561−95:24 name q
568+96:24 name q
562−95:25 tight glyph =
569+96:25 tight glyph =
563−95:26 tight glyph (
570+96:26 tight glyph (
564−95:27 tight name unit
571+96:27 tight name unit
565−95:32 glyph [
572+96:32 glyph [
566−95:33 tight name p
573+96:33 tight name p
567−95:34 tight glyph =
574+96:34 tight glyph =
568−95:35 tight tvar A
575+96:35 tight tvar A
569−95:37 name q
576+96:37 name q
570−95:38 tight glyph =
577+96:38 tight glyph =
571−95:39 tight name nail
578+96:39 tight name nail
572−95:43 tight glyph ]
579+96:43 tight glyph ]
573−95:44 tight glyph )
580+96:44 tight glyph )
574−95:45 tight glyph ]
581+96:45 tight glyph ]
575−97:1 NEWLINE
582+98:1 NEWLINE
576−97:1 glyph ++
583+98:1 glyph ++
577−97:4 name wonk
584+98:4 name wonk
578−97:9 glyph |=
585+98:9 glyph |=
579−97:12 name veq
586+98:12 name veq
580−97:15 tight glyph =
587+98:15 tight glyph =
581−97:16 tight glyph (
588+98:16 tight glyph (
582−97:17 tight name like
589+98:17 tight name like
583−97:22 tvar A
590+98:22 tvar A
584−97:23 tight glyph )
591+98:23 tight glyph )
585−98:3 INDENT
592+99:3 INDENT
586−98:3 glyph ?-
593+99:3 glyph ?-
587−98:6 wing q.veq
594+99:6 wing q.veq
588−99:5 INDENT
595+100:5 INDENT
589−99:5 lit ~
596+100:5 lit ~
590−99:7 glyph !!
597+100:7 glyph !!
591−100:5 NEWLINE
598+101:5 NEWLINE
592−100:5 glyph [
599+101:5 glyph [
593−100:6 tight lit ~
600+101:6 tight lit ~
594−100:8 name product
601+101:8 name product
595−100:15 tight glyph ]
602+101:15 tight glyph ]
596−100:17 wing p.product
603+101:17 wing p.product
597−102:1 DEDENT
604+103:1 DEDENT
598−102:1 DEDENT
605+103:1 DEDENT
599−102:1 NEWLINE
606+103:1 NEWLINE
600−102:1 glyph +$
607+103:1 glyph +$
601−102:4 name lone
608+103:4 name lone
602−102:9 glyph |$
609+103:9 glyph |$
603−102:12 glyph [
610+103:12 glyph [
604−102:13 tight tvar A
611+103:13 tight tvar A
605−102:14 tight glyph ]
612+103:14 tight glyph ]
606−102:16 glyph [
613+103:16 glyph [
607−102:17 tight name p
614+103:17 tight name p
608−102:18 tight glyph =
615+103:18 tight glyph =
609−102:19 tight tvar A
616+103:19 tight tvar A
610−102:20 tight glyph ]
617+103:20 tight glyph ]
611−104:1 NEWLINE
618+105:1 NEWLINE
612−104:1 glyph +$
619+105:1 glyph +$
613−104:4 name lest
620+105:4 name lest
614−104:9 glyph |$
621+105:9 glyph |$
615−104:12 glyph [
622+105:12 glyph [
616−104:13 tight tvar A
623+105:13 tight tvar A
617−104:14 tight glyph ]
624+105:14 tight glyph ]
618−104:16 glyph [
625+105:16 glyph [
619−104:17 tight name i
626+105:17 tight name i
620−104:18 tight glyph =
627+105:18 tight glyph =
621−104:19 tight tvar A
628+105:19 tight tvar A
622−104:21 name t
629+105:21 name t
623−104:22 tight glyph =
630+105:22 tight glyph =
624−104:23 tight glyph (
631+105:23 tight glyph (
625−104:24 tight name list
632+105:24 tight name list
626−104:29 tvar A
633+105:29 tvar A
627−104:30 tight glyph )
634+105:30 tight glyph )
628−104:31 tight glyph ]
635+105:31 tight glyph ]
629−106:1 NEWLINE
636+107:1 NEWLINE
630−106:1 glyph +$
637+107:1 glyph +$
631−106:4 name pole
638+107:4 name pole
632−106:9 glyph |$
639+107:9 glyph |$
633−106:12 glyph [
640+107:12 glyph [
634−106:13 tight tvar A
641+107:13 tight tvar A
635−106:14 tight glyph ]
642+107:14 tight glyph ]
636−107:3 INDENT
643+108:3 INDENT
637−107:3 lit ~
644+108:3 lit ~
638−108:3 NEWLINE
645+109:3 NEWLINE
639−108:3 glyph [
646+109:3 glyph [
640−108:4 tight tvar A
647+109:4 tight tvar A
641−108:6 glyph (
648+109:6 glyph (
642−108:7 tight name pole
649+109:7 tight name pole
643−108:12 tvar A
650+109:12 tvar A
644−108:13 tight glyph )
651+109:13 tight glyph )
645−108:14 tight glyph ]
652+109:14 tight glyph ]
646−110:1 DEDENT
653+111:1 DEDENT
647−110:1 NEWLINE
654+111:1 NEWLINE
648−110:1 glyph +$
655+111:1 glyph +$
649−110:4 name quip
656+111:4 name quip
650−110:9 glyph |$
657+111:9 glyph |$
651−110:12 glyph [
658+111:12 glyph [
652−110:13 tight tvar A
659+111:13 tight tvar A
653−110:15 tvar B
660+111:15 tvar B
654−110:16 tight glyph ]
661+111:16 tight glyph ]
655−110:18 glyph [
662+111:18 glyph [
656−110:19 tight glyph (
663+111:19 tight glyph (
657−110:20 tight name list
664+111:20 tight name list
658−110:25 tvar A
665+111:25 tvar A
659−110:26 tight glyph )
666+111:26 tight glyph )
660−110:28 tvar B
667+111:28 tvar B
661−110:29 tight glyph ]
668+111:29 tight glyph ]
662−112:1 NEWLINE
669+113:1 NEWLINE
663−112:1 glyph +$
670+113:1 glyph +$
664−112:4 name tree
671+113:4 name tree
665−112:9 glyph |$
672+113:9 glyph |$
666−112:12 glyph [
673+113:12 glyph [
667−112:13 tight tvar A
674+113:13 tight tvar A
668−112:14 tight glyph ]
675+113:14 tight glyph ]
669−113:3 INDENT
676+114:3 INDENT
670−113:3 lit ~
677+114:3 lit ~
671−114:3 NEWLINE
678+115:3 NEWLINE
672−114:3 glyph [
679+115:3 glyph [
673−114:4 tight name n
680+115:4 tight name n
674−114:5 tight glyph =
681+115:5 tight glyph =
675−114:6 tight tvar A
682+115:6 tight tvar A
676−114:8 name l
683+115:8 name l
677−114:9 tight glyph =
684+115:9 tight glyph =
678−114:10 tight glyph (
685+115:10 tight glyph (
679−114:11 tight name tree
686+115:11 tight name tree
680−114:16 tvar A
687+115:16 tvar A
681−114:17 tight glyph )
688+115:17 tight glyph )
682−114:19 name r
689+115:19 name r
683−114:20 tight glyph =
690+115:20 tight glyph =
684−114:21 tight glyph (
691+115:21 tight glyph (
685−114:22 tight name tree
692+115:22 tight name tree
686−114:27 tvar A
693+115:27 tvar A
687−114:28 tight glyph )
694+115:28 tight glyph )
688−114:29 tight glyph ]
695+115:29 tight glyph ]
689−116:1 DEDENT
696+117:1 DEDENT
690−116:1 NEWLINE
697+117:1 NEWLINE
691−116:1 glyph +$
698+117:1 glyph +$
692−116:4 name each
699+117:4 name each
693−116:9 glyph |$
700+117:9 glyph |$
694−116:12 glyph [
701+117:12 glyph [
695−116:13 tight tvar A
702+117:13 tight tvar A
696−116:15 tvar B
703+117:15 tvar B
697−116:16 tight glyph ]
698−117:3 INDENT
699−117:3 glyph [
700−117:4 tight lit %|
701−117:7 name p
702−117:8 tight glyph =
703−117:9 tight tvar B
704−117:10 tight glyph ]
704+117:16 tight glyph ]
705−118:3 NEWLINE
705+118:3 INDENT
706118:3 glyph [
706118:3 glyph [
707−118:4 tight lit %&
707+118:4 tight lit %|
708118:7 name p
708118:7 name p
709118:8 tight glyph =
709118:8 tight glyph =
710−118:9 tight tvar A
710+118:9 tight tvar B
711118:10 tight glyph ]
711118:10 tight glyph ]
712+119:3 NEWLINE
713+119:3 glyph [
714+119:4 tight lit %&
715+119:7 name p
716+119:8 tight glyph =
717+119:9 tight tvar A
718+119:10 tight glyph ]
712−120:1 DEDENT
719+121:1 DEDENT
713−120:1 NEWLINE
720+121:1 NEWLINE
714−120:1 glyph +$
721+121:1 glyph +$
715−120:4 name bloq
722+121:4 name bloq
716−120:9 aura @
723+121:9 aura @
717−120:10 NEWLINE
724+121:10 NEWLINE
tests/golden/prelude-1c-structural/tree.txt+189−186
@@ -87,198 +87,201 @@
87 (arm 39:5
87 (arm 39:5
88 (cell 39:5 (bind 39:6 xs) (bind 39:9 ys))
88 (cell 39:5 (bind 39:6 xs) (bind 39:9 ys))
89 (body 40:7
89 (body 40:7
90− (branch 40:7
90+ (cast 40:7
91− (wing 40:10 xs)
91+ (apply 40:10 list (tvar 40:16 A))
92− (arm 41:9 (lit 41:9 ~) (wing 41:11 ys))
92+ (body 41:9
93+ (branch 41:9
94+ (wing 41:12 xs)
95+ (arm 42:11 (lit 42:11 ~) (wing 42:13 ys))
93− (arm 42:9
96+ (arm 43:11
94− (cell 42:9 (bind 42:10 item) (bind 42:15 rest))
97+ (cell 43:11 (bind 43:12 item) (bind 43:17 rest))
95− (tuple 42:21
98+ (tuple 43:23
96− (wing 42:22 item)
99+ (wing 43:24 item)
97− (group 42:27
100+ (group 43:29
98− (call 42:28 (wing 42:28 weld) (wing 42:33 rest) (wing 42:38 ys))))))))))))
101+ (call 43:30 (wing 43:30 weld) (wing 43:35 rest) (wing 43:40 ys))))))))))))))
99− (value 44:1 turn
102+ (value 45:1 turn
100− (gate 44:9
103+ (gate 45:9
101− (face 44:12 args
104+ (face 45:12 args
102− (cell 44:17
105+ (cell 45:17
103− (apply 44:18 list (tvar 44:24 A))
106+ (apply 45:18 list (tvar 45:24 A))
104− (fn 44:27 (tvar 44:30 A) (tvar 44:32 B))))
107+ (fn 45:27 (tvar 45:30 A) (tvar 45:32 B))))
105− (body 45:3
108+ (body 46:3
106− (branch 45:3
109+ (branch 46:3
107− (wing 45:6 args)
110+ (wing 46:6 args)
108− (arm 46:5
111+ (arm 47:5
109− (cell 46:5 (bind 46:6 xs) (bind 46:9 f))
112+ (cell 47:5 (bind 47:6 xs) (bind 47:9 f))
110− (body 47:7
113+ (body 48:7
111− (branch 47:7
114+ (branch 48:7
112− (wing 47:10 xs)
115+ (wing 48:10 xs)
113− (arm 48:9 (lit 48:9 ~) (lit 48:11 ~))
116+ (arm 49:9 (lit 49:9 ~) (lit 49:11 ~))
114− (arm 49:9
117+ (arm 50:9
115− (cell 49:9 (bind 49:10 item) (bind 49:15 rest))
118+ (cell 50:9 (bind 50:10 item) (bind 50:15 rest))
116− (tuple 49:21
119+ (tuple 50:21
117− (group 49:22
120+ (group 50:22
118− (call 49:23 (wing 49:23 f) (wing 49:25 item)))
121+ (call 50:23 (wing 50:23 f) (wing 50:25 item)))
119− (group 49:31
122+ (group 50:31
120− (call 49:32 (wing 49:32 turn) (wing 49:37 rest) (wing 49:42 f))))))))))))
123+ (call 50:32 (wing 50:32 turn) (wing 50:37 rest) (wing 50:42 f))))))))))))
121− (mold 51:1 dime
124+ (mold 52:1 dime
122− (cell 51:9
125+ (cell 52:9
123− (face 51:10 p (aura 51:12 @ta))
126+ (face 52:10 p (aura 52:12 @ta))
124− (face 51:16 q (aura 51:18 @))))
127+ (face 52:16 q (aura 52:18 @))))
125− (mold 53:1 hair
128+ (mold 54:1 hair
126− (cell 53:9
129+ (cell 54:9
127− (face 53:10 p (aura 53:12 @ud))
130+ (face 54:10 p (aura 54:12 @ud))
128− (face 53:16 q (aura 53:18 @ud))))
131+ (face 54:16 q (aura 54:18 @ud))))
129− (mold 55:1 pint
132+ (mold 56:1 pint
130− (cell 55:9
133+ (cell 56:9
131− (face 55:10 p
134+ (face 56:10 p
132− (cell 55:12
135+ (cell 56:12
133− (face 55:13 p (aura 55:15 @))
136+ (face 56:13 p (aura 56:15 @))
134− (face 55:17 q (aura 55:19 @))))
137+ (face 56:17 q (aura 56:19 @))))
135− (face 55:22 q
138+ (face 56:22 q
136− (cell 55:24
139+ (cell 56:24
137− (face 55:25 p (aura 55:27 @))
140+ (face 56:25 p (aura 56:27 @))
138− (face 55:29 q (aura 55:31 @))))))
141+ (face 56:29 q (aura 56:31 @))))))
139− (mold 57:1 coin
142+ (mold 58:1 coin
140− (union 58:3
143+ (union 59:3
141− (cell 58:3
142− (const 58:4 %$)
143− (face 58:7 p (ref 58:9 dime)))
144 (cell 59:3
144 (cell 59:3
145− (const 59:4 %blob)
145+ (const 59:4 %$)
146− (face 59:10 p (noun 59:12)))
146+ (face 59:7 p (ref 59:9 dime)))
147 (cell 60:3
147 (cell 60:3
148− (const 60:4 %many)
148+ (const 60:4 %blob)
149+ (face 60:10 p (noun 60:12)))
150+ (cell 61:3
151+ (const 61:4 %many)
149− (face 60:10 p
152+ (face 61:10 p
150− (apply 60:12 list (ref 60:18 coin))))))
153+ (apply 61:12 list (ref 61:18 coin))))))
151− (mold 62:1 pair
154+ (mold 63:1 pair
152− (generic 62:9 A B
155+ (generic 63:9 A B
153− (cell 62:18
156+ (cell 63:18
154− (face 62:19 p (tvar 62:21 A))
157+ (face 63:19 p (tvar 63:21 A))
155− (face 62:23 q (tvar 62:25 B)))))
158+ (face 63:23 q (tvar 63:25 B)))))
156− (mold 64:1 trel
159+ (mold 65:1 trel
157− (generic 64:9 A B C
160+ (generic 65:9 A B C
158− (cell 64:20
161+ (cell 65:20
159− (face 64:21 p (tvar 64:23 A))
162+ (face 65:21 p (tvar 65:23 A))
160− (face 64:25 q (tvar 64:27 B))
163+ (face 65:25 q (tvar 65:27 B))
161− (face 64:29 r (tvar 64:31 C)))))
164+ (face 65:29 r (tvar 65:31 C)))))
162− (mold 66:1 qual
165+ (mold 67:1 qual
163− (generic 66:9 A B C D
166+ (generic 67:9 A B C D
164− (cell 66:22
167+ (cell 67:22
165− (face 66:23 p (tvar 66:25 A))
168+ (face 67:23 p (tvar 67:25 A))
166− (face 66:27 q (tvar 66:29 B))
169+ (face 67:27 q (tvar 67:29 B))
167− (face 66:31 r (tvar 66:33 C))
170+ (face 67:31 r (tvar 67:33 C))
168− (face 66:35 s (tvar 66:37 D)))))
171+ (face 67:35 s (tvar 67:37 D)))))
169− (mold 68:1 cord (aura 68:9 @t))
172+ (mold 69:1 cord (aura 69:9 @t))
170− (mold 70:1 knot (aura 70:9 @ta))
173+ (mold 71:1 knot (aura 71:9 @ta))
171− (mold 72:1 tape
174+ (mold 73:1 tape
172− (apply 72:9 list (aura 72:15 @tD)))
175+ (apply 73:9 list (aura 73:15 @tD)))
173− (mold 74:1 path
176+ (mold 75:1 path
174− (apply 74:9 list (ref 74:15 knot)))
177+ (apply 75:9 list (ref 75:15 knot)))
175− (mold 76:1 tank
178+ (mold 77:1 tank
176− (union 77:3
179+ (union 78:3
177− (ref 77:3 cord)
180+ (ref 78:3 cord)
178− (cell 78:3
179− (const 78:4 %leaf)
180− (face 78:10 p (ref 78:12 tape)))
181 (cell 79:3
181 (cell 79:3
182− (const 79:4 %palm)
182+ (const 79:4 %leaf)
183− (face 79:10 p
183+ (face 79:10 p (ref 79:12 tape)))
184− (apply 79:12 qual (ref 79:18 tape) (ref 79:23 tape) (ref 79:28 tape) (ref 79:33 tape)))
185− (face 79:39 q
186− (apply 79:41 list (ref 79:47 tank))))
187 (cell 80:3
184 (cell 80:3
188− (const 80:4 %rose)
185+ (const 80:4 %palm)
189 (face 80:10 p
186 (face 80:10 p
187+ (apply 80:12 qual (ref 80:18 tape) (ref 80:23 tape) (ref 80:28 tape) (ref 80:33 tape)))
188+ (face 80:39 q
189+ (apply 80:41 list (ref 80:47 tank))))
190+ (cell 81:3
191+ (const 81:4 %rose)
192+ (face 81:10 p
190− (apply 80:12 trel (ref 80:18 tape) (ref 80:23 tape) (ref 80:28 tape)))
193+ (apply 81:12 trel (ref 81:18 tape) (ref 81:23 tape) (ref 81:28 tape)))
191− (face 80:34 q
194+ (face 81:34 q
192− (apply 80:36 list (ref 80:42 tank))))))
195+ (apply 81:36 list (ref 81:42 tank))))))
193− (mold 82:1 nail
196+ (mold 83:1 nail
194− (cell 82:9
197+ (cell 83:9
195− (face 82:10 p (ref 82:12 hair))
198+ (face 83:10 p (ref 83:12 hair))
196− (face 82:17 q (ref 82:19 tape))))
199+ (face 83:17 q (ref 83:19 tape))))
197− (mold 84:1 edge
200+ (mold 85:1 edge
198− (cell 84:9
201+ (cell 85:9
199− (face 84:10 p (ref 84:12 hair))
202+ (face 85:10 p (ref 85:12 hair))
200− (face 84:17 q
203+ (face 85:17 q
201− (apply 84:19 unit
204+ (apply 85:19 unit
202− (cell 84:25
205+ (cell 85:25
203− (face 84:26 p (noun 84:28))
206+ (face 85:26 p (noun 85:28))
204− (face 84:30 q (ref 84:32 nail)))))))
207+ (face 85:30 q (ref 85:32 nail)))))))
205− (mold 86:1 rule
208+ (mold 87:1 rule
206− (fn 86:9 (ref 86:12 nail) (ref 86:17 edge)))
209+ (fn 87:9 (ref 87:12 nail) (ref 87:17 edge)))
207− (mold 88:1 spot
210+ (mold 89:1 spot
208− (cell 88:9
211+ (cell 89:9
209− (face 88:10 p (ref 88:12 path))
212+ (face 89:10 p (ref 89:12 path))
210− (face 88:17 q (ref 88:19 pint))))
213+ (face 89:17 q (ref 89:19 pint))))
211− (mold 90:1 toon
214+ (mold 91:1 toon
212− (union 91:3
215+ (union 92:3
213− (cell 91:3
214− (const 91:4 %0)
215− (face 91:7 p (noun 91:9)))
216 (cell 92:3
216 (cell 92:3
217− (const 92:4 %1)
217+ (const 92:4 %0)
218 (face 92:7 p (noun 92:9)))
218 (face 92:7 p (noun 92:9)))
219 (cell 93:3
219 (cell 93:3
220− (const 93:4 %2)
220+ (const 93:4 %1)
221+ (face 93:7 p (noun 93:9)))
222+ (cell 94:3
223+ (const 94:4 %2)
221− (face 93:7 p
224+ (face 94:7 p
222− (apply 93:9 list (ref 93:15 tank))))))
225+ (apply 94:9 list (ref 94:15 tank))))))
223− (mold 95:1 like
226+ (mold 96:1 like
224− (generic 95:9 A
227+ (generic 96:9 A
225− (cell 95:16
228+ (cell 96:16
226− (face 95:17 p (ref 95:19 hair))
229+ (face 96:17 p (ref 96:19 hair))
227− (face 95:24 q
230+ (face 96:24 q
228− (apply 95:26 unit
231+ (apply 96:26 unit
229− (cell 95:32
232+ (cell 96:32
230− (face 95:33 p (tvar 95:35 A))
233+ (face 96:33 p (tvar 96:35 A))
231− (face 95:37 q (ref 95:39 nail))))))))
234+ (face 96:37 q (ref 96:39 nail))))))))
232− (value 97:1 wonk
235+ (value 98:1 wonk
233− (gate 97:9
236+ (gate 98:9
234− (face 97:12 veq
237+ (face 98:12 veq
235− (apply 97:16 like (tvar 97:22 A)))
238+ (apply 98:16 like (tvar 98:22 A)))
236− (body 98:3
239+ (body 99:3
237− (branch 98:3
240+ (branch 99:3
238− (wing 98:6 q.veq)
241+ (wing 99:6 q.veq)
239− (arm 99:5 (lit 99:5 ~) (crash 99:7))
242+ (arm 100:5 (lit 100:5 ~) (crash 100:7))
240− (arm 100:5
243+ (arm 101:5
241− (cell 100:5 (lit 100:6 ~) (bind 100:8 product))
244+ (cell 101:5 (lit 101:6 ~) (bind 101:8 product))
242− (wing 100:17 p.product))))))
245+ (wing 101:17 p.product))))))
243− (mold 102:1 lone
246+ (mold 103:1 lone
244− (generic 102:9 A
247+ (generic 103:9 A
245− (cell 102:16
248+ (cell 103:16
246− (face 102:17 p (tvar 102:19 A)))))
249+ (face 103:17 p (tvar 103:19 A)))))
247− (mold 104:1 lest
250+ (mold 105:1 lest
248− (generic 104:9 A
251+ (generic 105:9 A
249− (cell 104:16
252+ (cell 105:16
250− (face 104:17 i (tvar 104:19 A))
253+ (face 105:17 i (tvar 105:19 A))
251− (face 104:21 t
254+ (face 105:21 t
252− (apply 104:23 list (tvar 104:29 A))))))
255+ (apply 105:23 list (tvar 105:29 A))))))
253− (mold 106:1 pole
256+ (mold 107:1 pole
254− (generic 106:9 A
257+ (generic 107:9 A
255− (union 107:3
258+ (union 108:3
256− (const 107:3 ~)
259+ (const 108:3 ~)
257− (cell 108:3
260+ (cell 109:3
258− (tvar 108:4 A)
261+ (tvar 109:4 A)
259− (apply 108:6 pole (tvar 108:12 A))))))
262+ (apply 109:6 pole (tvar 109:12 A))))))
260− (mold 110:1 quip
263+ (mold 111:1 quip
261− (generic 110:9 A B
264+ (generic 111:9 A B
262− (cell 110:18
265+ (cell 111:18
263− (apply 110:19 list (tvar 110:25 A))
266+ (apply 111:19 list (tvar 111:25 A))
264− (tvar 110:28 B))))
267+ (tvar 111:28 B))))
265− (mold 112:1 tree
268+ (mold 113:1 tree
266− (generic 112:9 A
269+ (generic 113:9 A
267− (union 113:3
270+ (union 114:3
268− (const 113:3 ~)
271+ (const 114:3 ~)
269− (cell 114:3
272+ (cell 115:3
270− (face 114:4 n (tvar 114:6 A))
273+ (face 115:4 n (tvar 115:6 A))
271− (face 114:8 l
274+ (face 115:8 l
272− (apply 114:10 tree (tvar 114:16 A)))
275+ (apply 115:10 tree (tvar 115:16 A)))
273− (face 114:19 r
276+ (face 115:19 r
274− (apply 114:21 tree (tvar 114:27 A)))))))
277+ (apply 115:21 tree (tvar 115:27 A)))))))
275− (mold 116:1 each
278+ (mold 117:1 each
276− (generic 116:9 A B
279+ (generic 117:9 A B
277− (union 117:3
280+ (union 118:3
278− (cell 117:3
279− (const 117:4 %|)
280− (face 117:7 p (tvar 117:9 B)))
281 (cell 118:3
281 (cell 118:3
282− (const 118:4 %&)
282+ (const 118:4 %|)
283+ (face 118:7 p (tvar 118:9 B)))
284+ (cell 119:3
285+ (const 119:4 %&)
283− (face 118:7 p (tvar 118:9 A))))))
286+ (face 119:7 p (tvar 119:9 A))))))
284− (mold 120:1 bloq (aura 120:9 @)))
287+ (mold 121:1 bloq (aura 121:9 @)))
tests/golden/prelude-3g-basic/source.jibb+4−3
@@ -37,9 +37,10 @@
37++ weld |= args=[(list A) (list A)]
37++ weld |= args=[(list A) (list A)]
38 ?- args
38 ?- args
39 [xs ys]
39 [xs ys]
40+ ^- (list A)
40− ?- xs
41+ ?- xs
41− ~ ys
42+ ~ ys
42− [item rest] [item (weld rest ys)]
43+ [item rest] [item (weld rest ys)]
43
44
44++ turn |= args=[(list A) $-(A B)]
45++ turn |= args=[(list A) $-(A B)]
45 ?- args
46 ?- args
tests/golden/prelude-3g-basic/tokens.txt+148−141
@@ -190,151 +190,158 @@
19039:9 name ys
19039:9 name ys
19139:11 tight glyph ]
19139:11 tight glyph ]
19240:7 INDENT
19240:7 INDENT
193−40:7 glyph ?-
193+40:7 glyph ^-
194−40:10 name xs
194+40:10 glyph (
195+40:11 tight name list
196+40:16 tvar A
197+40:17 tight glyph )
19541:9 INDENT
19841:9 INDENT
196−41:9 lit ~
199+41:9 glyph ?-
200+41:12 name xs
201+42:11 INDENT
202+42:11 lit ~
197−41:11 name ys
203+42:13 name ys
198−42:9 NEWLINE
204+43:11 NEWLINE
199−42:9 glyph [
205+43:11 glyph [
200−42:10 tight name item
206+43:12 tight name item
201−42:15 name rest
207+43:17 name rest
202−42:19 tight glyph ]
208+43:21 tight glyph ]
203−42:21 glyph [
209+43:23 glyph [
204−42:22 tight name item
210+43:24 tight name item
205−42:27 glyph (
211+43:29 glyph (
206−42:28 tight name weld
212+43:30 tight name weld
207−42:33 name rest
213+43:35 name rest
208−42:38 name ys
214+43:40 name ys
209−42:40 tight glyph )
215+43:42 tight glyph )
210−42:41 tight glyph ]
216+43:43 tight glyph ]
217+45:1 DEDENT
211−44:1 DEDENT
218+45:1 DEDENT
212−44:1 DEDENT
219+45:1 DEDENT
213−44:1 DEDENT
220+45:1 DEDENT
214−44:1 DEDENT
221+45:1 DEDENT
215−44:1 NEWLINE
222+45:1 NEWLINE
216−44:1 glyph ++
223+45:1 glyph ++
217−44:4 name turn
224+45:4 name turn
218−44:9 glyph |=
225+45:9 glyph |=
219−44:12 name args
226+45:12 name args
220−44:16 tight glyph =
227+45:16 tight glyph =
221−44:17 tight glyph [
228+45:17 tight glyph [
222−44:18 tight glyph (
229+45:18 tight glyph (
223−44:19 tight name list
230+45:19 tight name list
224−44:24 tvar A
231+45:24 tvar A
225−44:25 tight glyph )
232+45:25 tight glyph )
226−44:27 glyph $-(
233+45:27 glyph $-(
227−44:30 tight tvar A
234+45:30 tight tvar A
228−44:32 tvar B
235+45:32 tvar B
229−44:33 tight glyph )
236+45:33 tight glyph )
230−44:34 tight glyph ]
237+45:34 tight glyph ]
231−45:3 INDENT
238+46:3 INDENT
232−45:3 glyph ?-
239+46:3 glyph ?-
233−45:6 name args
240+46:6 name args
234−46:5 INDENT
241+47:5 INDENT
235−46:5 glyph [
242+47:5 glyph [
236−46:6 tight name xs
243+47:6 tight name xs
237−46:9 name f
244+47:9 name f
238−46:10 tight glyph ]
245+47:10 tight glyph ]
239−47:7 INDENT
246+48:7 INDENT
240−47:7 glyph ?-
247+48:7 glyph ?-
241−47:10 name xs
248+48:10 name xs
242−48:9 INDENT
249+49:9 INDENT
243−48:9 lit ~
250+49:9 lit ~
244−48:11 lit ~
251+49:11 lit ~
245−49:9 NEWLINE
252+50:9 NEWLINE
246−49:9 glyph [
253+50:9 glyph [
247−49:10 tight name item
254+50:10 tight name item
248−49:15 name rest
255+50:15 name rest
249−49:19 tight glyph ]
256+50:19 tight glyph ]
250−49:21 glyph [
257+50:21 glyph [
251−49:22 tight glyph (
258+50:22 tight glyph (
252−49:23 tight name f
259+50:23 tight name f
253−49:25 name item
260+50:25 name item
254−49:29 tight glyph )
261+50:29 tight glyph )
255−49:31 glyph (
262+50:31 glyph (
256−49:32 tight name turn
263+50:32 tight name turn
257−49:37 name rest
264+50:37 name rest
258−49:42 name f
265+50:42 name f
259−49:43 tight glyph )
266+50:43 tight glyph )
260−49:44 tight glyph ]
267+50:44 tight glyph ]
261−51:1 DEDENT
268+52:1 DEDENT
262−51:1 DEDENT
269+52:1 DEDENT
263−51:1 DEDENT
270+52:1 DEDENT
264−51:1 DEDENT
271+52:1 DEDENT
265−51:1 NEWLINE
272+52:1 NEWLINE
266−51:1 glyph +$
273+52:1 glyph +$
267−51:4 name dime
274+52:4 name dime
268−51:9 glyph [
275+52:9 glyph [
269−51:10 tight name p
276+52:10 tight name p
270−51:11 tight glyph =
277+52:11 tight glyph =
271−51:12 tight aura @ta
278+52:12 tight aura @ta
272−51:16 name q
279+52:16 name q
273−51:17 tight glyph =
280+52:17 tight glyph =
274−51:18 tight aura @
281+52:18 tight aura @
275−51:19 tight glyph ]
282+52:19 tight glyph ]
276−53:1 NEWLINE
283+54:1 NEWLINE
277−53:1 glyph +$
284+54:1 glyph +$
278−53:4 name hair
285+54:4 name hair
279−53:9 glyph [
286+54:9 glyph [
280−53:10 tight name p
287+54:10 tight name p
281−53:11 tight glyph =
288+54:11 tight glyph =
282−53:12 tight aura @ud
289+54:12 tight aura @ud
283−53:16 name q
290+54:16 name q
284−53:17 tight glyph =
291+54:17 tight glyph =
285−53:18 tight aura @ud
292+54:18 tight aura @ud
286−53:21 tight glyph ]
293+54:21 tight glyph ]
287−55:1 NEWLINE
294+56:1 NEWLINE
288−55:1 glyph +$
295+56:1 glyph +$
289−55:4 name pint
296+56:4 name pint
290−55:9 glyph [
297+56:9 glyph [
291−55:10 tight name p
298+56:10 tight name p
292−55:11 tight glyph =
299+56:11 tight glyph =
293−55:12 tight glyph [
300+56:12 tight glyph [
294−55:13 tight name p
301+56:13 tight name p
295−55:14 tight glyph =
302+56:14 tight glyph =
296−55:15 tight aura @
303+56:15 tight aura @
297−55:17 name q
304+56:17 name q
298−55:18 tight glyph =
305+56:18 tight glyph =
299−55:19 tight aura @
306+56:19 tight aura @
300−55:20 tight glyph ]
307+56:20 tight glyph ]
301−55:22 name q
308+56:22 name q
302−55:23 tight glyph =
309+56:23 tight glyph =
303−55:24 tight glyph [
310+56:24 tight glyph [
304−55:25 tight name p
311+56:25 tight name p
305−55:26 tight glyph =
312+56:26 tight glyph =
306−55:27 tight aura @
313+56:27 tight aura @
307−55:29 name q
314+56:29 name q
308−55:30 tight glyph =
315+56:30 tight glyph =
309−55:31 tight aura @
316+56:31 tight aura @
310−55:32 tight glyph ]
317+56:32 tight glyph ]
311−55:33 tight glyph ]
318+56:33 tight glyph ]
312−57:1 NEWLINE
319+58:1 NEWLINE
313−57:1 glyph +$
320+58:1 glyph +$
314−57:4 name coin
321+58:4 name coin
315−58:3 INDENT
322+59:3 INDENT
316−58:3 glyph [
317−58:4 tight lit %$
318−58:7 name p
319−58:8 tight glyph =
320−58:9 tight name dime
321−58:13 tight glyph ]
322−59:3 NEWLINE
32359:3 glyph [
32359:3 glyph [
324−59:4 tight lit %blob
324+59:4 tight lit %$
325−59:10 name p
325+59:7 name p
326−59:11 tight glyph =
326+59:8 tight glyph =
327−59:12 tight glyph *
327+59:9 tight name dime
32859:13 tight glyph ]
32859:13 tight glyph ]
32960:3 NEWLINE
32960:3 NEWLINE
33060:3 glyph [
33060:3 glyph [
331−60:4 tight lit %many
331+60:4 tight lit %blob
33260:10 name p
33260:10 name p
33360:11 tight glyph =
33360:11 tight glyph =
334−60:12 tight glyph (
334+60:12 tight glyph *
335+60:13 tight glyph ]
336+61:3 NEWLINE
337+61:3 glyph [
338+61:4 tight lit %many
339+61:10 name p
340+61:11 tight glyph =
341+61:12 tight glyph (
335−60:13 tight name list
342+61:13 tight name list
336−60:18 name coin
343+61:18 name coin
337−60:22 tight glyph )
344+61:22 tight glyph )
338−60:23 tight glyph ]
345+61:23 tight glyph ]
339−60:24 DEDENT
346+61:24 DEDENT
340−60:24 NEWLINE
347+61:24 NEWLINE
tests/golden/prelude-3g-basic/tree.txt+62−59
@@ -87,64 +87,67 @@
87 (arm 39:5
87 (arm 39:5
88 (cell 39:5 (bind 39:6 xs) (bind 39:9 ys))
88 (cell 39:5 (bind 39:6 xs) (bind 39:9 ys))
89 (body 40:7
89 (body 40:7
90− (branch 40:7
90+ (cast 40:7
91− (wing 40:10 xs)
91+ (apply 40:10 list (tvar 40:16 A))
92− (arm 41:9 (lit 41:9 ~) (wing 41:11 ys))
92+ (body 41:9
93+ (branch 41:9
94+ (wing 41:12 xs)
95+ (arm 42:11 (lit 42:11 ~) (wing 42:13 ys))
93− (arm 42:9
96+ (arm 43:11
94− (cell 42:9 (bind 42:10 item) (bind 42:15 rest))
97+ (cell 43:11 (bind 43:12 item) (bind 43:17 rest))
95− (tuple 42:21
98+ (tuple 43:23
96− (wing 42:22 item)
99+ (wing 43:24 item)
97− (group 42:27
100+ (group 43:29
98− (call 42:28 (wing 42:28 weld) (wing 42:33 rest) (wing 42:38 ys))))))))))))
101+ (call 43:30 (wing 43:30 weld) (wing 43:35 rest) (wing 43:40 ys))))))))))))))
99− (value 44:1 turn
102+ (value 45:1 turn
100− (gate 44:9
103+ (gate 45:9
101− (face 44:12 args
104+ (face 45:12 args
102− (cell 44:17
105+ (cell 45:17
103− (apply 44:18 list (tvar 44:24 A))
106+ (apply 45:18 list (tvar 45:24 A))
104− (fn 44:27 (tvar 44:30 A) (tvar 44:32 B))))
107+ (fn 45:27 (tvar 45:30 A) (tvar 45:32 B))))
105− (body 45:3
108+ (body 46:3
106− (branch 45:3
109+ (branch 46:3
107− (wing 45:6 args)
110+ (wing 46:6 args)
108− (arm 46:5
111+ (arm 47:5
109− (cell 46:5 (bind 46:6 xs) (bind 46:9 f))
112+ (cell 47:5 (bind 47:6 xs) (bind 47:9 f))
110− (body 47:7
113+ (body 48:7
111− (branch 47:7
114+ (branch 48:7
112− (wing 47:10 xs)
115+ (wing 48:10 xs)
113− (arm 48:9 (lit 48:9 ~) (lit 48:11 ~))
116+ (arm 49:9 (lit 49:9 ~) (lit 49:11 ~))
114− (arm 49:9
117+ (arm 50:9
115− (cell 49:9 (bind 49:10 item) (bind 49:15 rest))
118+ (cell 50:9 (bind 50:10 item) (bind 50:15 rest))
116− (tuple 49:21
119+ (tuple 50:21
117− (group 49:22
120+ (group 50:22
118− (call 49:23 (wing 49:23 f) (wing 49:25 item)))
121+ (call 50:23 (wing 50:23 f) (wing 50:25 item)))
119− (group 49:31
122+ (group 50:31
120− (call 49:32 (wing 49:32 turn) (wing 49:37 rest) (wing 49:42 f))))))))))))
123+ (call 50:32 (wing 50:32 turn) (wing 50:37 rest) (wing 50:42 f))))))))))))
121− (mold 51:1 dime
124+ (mold 52:1 dime
122− (cell 51:9
125+ (cell 52:9
123− (face 51:10 p (aura 51:12 @ta))
126+ (face 52:10 p (aura 52:12 @ta))
124− (face 51:16 q (aura 51:18 @))))
127+ (face 52:16 q (aura 52:18 @))))
125− (mold 53:1 hair
128+ (mold 54:1 hair
126− (cell 53:9
129+ (cell 54:9
127− (face 53:10 p (aura 53:12 @ud))
130+ (face 54:10 p (aura 54:12 @ud))
128− (face 53:16 q (aura 53:18 @ud))))
131+ (face 54:16 q (aura 54:18 @ud))))
129− (mold 55:1 pint
132+ (mold 56:1 pint
130− (cell 55:9
133+ (cell 56:9
131− (face 55:10 p
134+ (face 56:10 p
132− (cell 55:12
135+ (cell 56:12
133− (face 55:13 p (aura 55:15 @))
136+ (face 56:13 p (aura 56:15 @))
134− (face 55:17 q (aura 55:19 @))))
137+ (face 56:17 q (aura 56:19 @))))
135− (face 55:22 q
138+ (face 56:22 q
136− (cell 55:24
139+ (cell 56:24
137− (face 55:25 p (aura 55:27 @))
140+ (face 56:25 p (aura 56:27 @))
138− (face 55:29 q (aura 55:31 @))))))
141+ (face 56:29 q (aura 56:31 @))))))
139− (mold 57:1 coin
142+ (mold 58:1 coin
140− (union 58:3
143+ (union 59:3
141− (cell 58:3
142− (const 58:4 %$)
143− (face 58:7 p (ref 58:9 dime)))
144 (cell 59:3
144 (cell 59:3
145− (const 59:4 %blob)
145+ (const 59:4 %$)
146− (face 59:10 p (noun 59:12)))
146+ (face 59:7 p (ref 59:9 dime)))
147 (cell 60:3
147 (cell 60:3
148− (const 60:4 %many)
148+ (const 60:4 %blob)
149+ (face 60:10 p (noun 60:12)))
150+ (cell 61:3
151+ (const 61:4 %many)
149− (face 60:10 p
152+ (face 61:10 p
150− (apply 60:12 list (ref 60:18 coin)))))))
153+ (apply 61:12 list (ref 61:18 coin)))))))
tests/golden/prelude-3g-like/source.jibb+4−3
@@ -37,9 +37,10 @@
37++ weld |= args=[(list A) (list A)]
37++ weld |= args=[(list A) (list A)]
38 ?- args
38 ?- args
39 [xs ys]
39 [xs ys]
40+ ^- (list A)
40− ?- xs
41+ ?- xs
41− ~ ys
42+ ~ ys
42− [item rest] [item (weld rest ys)]
43+ [item rest] [item (weld rest ys)]
43
44
44++ turn |= args=[(list A) $-(A B)]
45++ turn |= args=[(list A) $-(A B)]
45 ?- args
46 ?- args
tests/golden/prelude-3g-like/tokens.txt+386−379
@@ -190,410 +190,417 @@
19039:9 name ys
19039:9 name ys
19139:11 tight glyph ]
19139:11 tight glyph ]
19240:7 INDENT
19240:7 INDENT
193−40:7 glyph ?-
193+40:7 glyph ^-
194−40:10 name xs
194+40:10 glyph (
195+40:11 tight name list
196+40:16 tvar A
197+40:17 tight glyph )
19541:9 INDENT
19841:9 INDENT
196−41:9 lit ~
199+41:9 glyph ?-
200+41:12 name xs
201+42:11 INDENT
202+42:11 lit ~
197−41:11 name ys
203+42:13 name ys
198−42:9 NEWLINE
204+43:11 NEWLINE
199−42:9 glyph [
205+43:11 glyph [
200−42:10 tight name item
206+43:12 tight name item
201−42:15 name rest
207+43:17 name rest
202−42:19 tight glyph ]
208+43:21 tight glyph ]
203−42:21 glyph [
209+43:23 glyph [
204−42:22 tight name item
210+43:24 tight name item
205−42:27 glyph (
211+43:29 glyph (
206−42:28 tight name weld
212+43:30 tight name weld
207−42:33 name rest
213+43:35 name rest
208−42:38 name ys
214+43:40 name ys
209−42:40 tight glyph )
215+43:42 tight glyph )
210−42:41 tight glyph ]
216+43:43 tight glyph ]
217+45:1 DEDENT
211−44:1 DEDENT
218+45:1 DEDENT
212−44:1 DEDENT
219+45:1 DEDENT
213−44:1 DEDENT
220+45:1 DEDENT
214−44:1 DEDENT
221+45:1 DEDENT
215−44:1 NEWLINE
222+45:1 NEWLINE
216−44:1 glyph ++
223+45:1 glyph ++
217−44:4 name turn
224+45:4 name turn
218−44:9 glyph |=
225+45:9 glyph |=
219−44:12 name args
226+45:12 name args
220−44:16 tight glyph =
227+45:16 tight glyph =
221−44:17 tight glyph [
228+45:17 tight glyph [
222−44:18 tight glyph (
229+45:18 tight glyph (
223−44:19 tight name list
230+45:19 tight name list
224−44:24 tvar A
231+45:24 tvar A
225−44:25 tight glyph )
232+45:25 tight glyph )
226−44:27 glyph $-(
233+45:27 glyph $-(
227−44:30 tight tvar A
234+45:30 tight tvar A
228−44:32 tvar B
235+45:32 tvar B
229−44:33 tight glyph )
236+45:33 tight glyph )
230−44:34 tight glyph ]
237+45:34 tight glyph ]
231−45:3 INDENT
238+46:3 INDENT
232−45:3 glyph ?-
239+46:3 glyph ?-
233−45:6 name args
240+46:6 name args
234−46:5 INDENT
241+47:5 INDENT
235−46:5 glyph [
242+47:5 glyph [
236−46:6 tight name xs
243+47:6 tight name xs
237−46:9 name f
244+47:9 name f
238−46:10 tight glyph ]
245+47:10 tight glyph ]
239−47:7 INDENT
246+48:7 INDENT
240−47:7 glyph ?-
247+48:7 glyph ?-
241−47:10 name xs
248+48:10 name xs
242−48:9 INDENT
249+49:9 INDENT
243−48:9 lit ~
250+49:9 lit ~
244−48:11 lit ~
251+49:11 lit ~
245−49:9 NEWLINE
252+50:9 NEWLINE
246−49:9 glyph [
253+50:9 glyph [
247−49:10 tight name item
254+50:10 tight name item
248−49:15 name rest
255+50:15 name rest
249−49:19 tight glyph ]
256+50:19 tight glyph ]
250−49:21 glyph [
257+50:21 glyph [
251−49:22 tight glyph (
258+50:22 tight glyph (
252−49:23 tight name f
259+50:23 tight name f
253−49:25 name item
260+50:25 name item
254−49:29 tight glyph )
261+50:29 tight glyph )
255−49:31 glyph (
262+50:31 glyph (
256−49:32 tight name turn
263+50:32 tight name turn
257−49:37 name rest
264+50:37 name rest
258−49:42 name f
265+50:42 name f
259−49:43 tight glyph )
266+50:43 tight glyph )
260−49:44 tight glyph ]
267+50:44 tight glyph ]
261−51:1 DEDENT
268+52:1 DEDENT
262−51:1 DEDENT
269+52:1 DEDENT
263−51:1 DEDENT
270+52:1 DEDENT
264−51:1 DEDENT
271+52:1 DEDENT
265−51:1 NEWLINE
272+52:1 NEWLINE
266−51:1 glyph +$
273+52:1 glyph +$
267−51:4 name dime
274+52:4 name dime
268−51:9 glyph [
275+52:9 glyph [
269−51:10 tight name p
276+52:10 tight name p
270−51:11 tight glyph =
277+52:11 tight glyph =
271−51:12 tight aura @ta
278+52:12 tight aura @ta
272−51:16 name q
279+52:16 name q
273−51:17 tight glyph =
280+52:17 tight glyph =
274−51:18 tight aura @
281+52:18 tight aura @
275−51:19 tight glyph ]
282+52:19 tight glyph ]
276−53:1 NEWLINE
283+54:1 NEWLINE
277−53:1 glyph +$
284+54:1 glyph +$
278−53:4 name hair
285+54:4 name hair
279−53:9 glyph [
286+54:9 glyph [
280−53:10 tight name p
287+54:10 tight name p
281−53:11 tight glyph =
288+54:11 tight glyph =
282−53:12 tight aura @ud
289+54:12 tight aura @ud
283−53:16 name q
290+54:16 name q
284−53:17 tight glyph =
291+54:17 tight glyph =
285−53:18 tight aura @ud
292+54:18 tight aura @ud
286−53:21 tight glyph ]
293+54:21 tight glyph ]
287−55:1 NEWLINE
294+56:1 NEWLINE
288−55:1 glyph +$
295+56:1 glyph +$
289−55:4 name pint
296+56:4 name pint
290−55:9 glyph [
297+56:9 glyph [
291−55:10 tight name p
298+56:10 tight name p
292−55:11 tight glyph =
299+56:11 tight glyph =
293−55:12 tight glyph [
300+56:12 tight glyph [
294−55:13 tight name p
301+56:13 tight name p
295−55:14 tight glyph =
302+56:14 tight glyph =
296−55:15 tight aura @
303+56:15 tight aura @
297−55:17 name q
304+56:17 name q
298−55:18 tight glyph =
305+56:18 tight glyph =
299−55:19 tight aura @
306+56:19 tight aura @
300−55:20 tight glyph ]
307+56:20 tight glyph ]
301−55:22 name q
308+56:22 name q
302−55:23 tight glyph =
309+56:23 tight glyph =
303−55:24 tight glyph [
310+56:24 tight glyph [
304−55:25 tight name p
311+56:25 tight name p
305−55:26 tight glyph =
312+56:26 tight glyph =
306−55:27 tight aura @
313+56:27 tight aura @
307−55:29 name q
314+56:29 name q
308−55:30 tight glyph =
315+56:30 tight glyph =
309−55:31 tight aura @
316+56:31 tight aura @
310−55:32 tight glyph ]
317+56:32 tight glyph ]
311−55:33 tight glyph ]
318+56:33 tight glyph ]
312−57:1 NEWLINE
319+58:1 NEWLINE
313−57:1 glyph +$
320+58:1 glyph +$
314−57:4 name coin
321+58:4 name coin
315−58:3 INDENT
322+59:3 INDENT
316−58:3 glyph [
317−58:4 tight lit %$
318−58:7 name p
319−58:8 tight glyph =
320−58:9 tight name dime
321−58:13 tight glyph ]
322−59:3 NEWLINE
32359:3 glyph [
32359:3 glyph [
324−59:4 tight lit %blob
324+59:4 tight lit %$
325−59:10 name p
325+59:7 name p
326−59:11 tight glyph =
326+59:8 tight glyph =
327−59:12 tight glyph *
327+59:9 tight name dime
32859:13 tight glyph ]
32859:13 tight glyph ]
32960:3 NEWLINE
32960:3 NEWLINE
33060:3 glyph [
33060:3 glyph [
331−60:4 tight lit %many
331+60:4 tight lit %blob
33260:10 name p
33260:10 name p
33360:11 tight glyph =
33360:11 tight glyph =
334−60:12 tight glyph (
334+60:12 tight glyph *
335−60:13 tight name list
335+60:13 tight glyph ]
336+61:3 NEWLINE
337+61:3 glyph [
338+61:4 tight lit %many
339+61:10 name p
340+61:11 tight glyph =
341+61:12 tight glyph (
342+61:13 tight name list
336−60:18 name coin
343+61:18 name coin
337−60:22 tight glyph )
344+61:22 tight glyph )
338−60:23 tight glyph ]
345+61:23 tight glyph ]
339−62:1 DEDENT
346+63:1 DEDENT
340−62:1 NEWLINE
347+63:1 NEWLINE
341−62:1 glyph +$
348+63:1 glyph +$
342−62:4 name pair
349+63:4 name pair
343−62:9 glyph |$
350+63:9 glyph |$
344−62:12 glyph [
351+63:12 glyph [
345−62:13 tight tvar A
352+63:13 tight tvar A
346−62:15 tvar B
353+63:15 tvar B
347−62:16 tight glyph ]
354+63:16 tight glyph ]
348−62:18 glyph [
355+63:18 glyph [
349−62:19 tight name p
356+63:19 tight name p
350−62:20 tight glyph =
357+63:20 tight glyph =
351−62:21 tight tvar A
358+63:21 tight tvar A
352−62:23 name q
359+63:23 name q
353−62:24 tight glyph =
360+63:24 tight glyph =
354−62:25 tight tvar B
361+63:25 tight tvar B
355−62:26 tight glyph ]
362+63:26 tight glyph ]
356−64:1 NEWLINE
363+65:1 NEWLINE
357−64:1 glyph +$
364+65:1 glyph +$
358−64:4 name trel
365+65:4 name trel
359−64:9 glyph |$
366+65:9 glyph |$
360−64:12 glyph [
367+65:12 glyph [
361−64:13 tight tvar A
368+65:13 tight tvar A
362−64:15 tvar B
369+65:15 tvar B
363−64:17 tvar C
370+65:17 tvar C
364−64:18 tight glyph ]
371+65:18 tight glyph ]
365−64:20 glyph [
372+65:20 glyph [
366−64:21 tight name p
373+65:21 tight name p
367−64:22 tight glyph =
374+65:22 tight glyph =
368−64:23 tight tvar A
375+65:23 tight tvar A
369−64:25 name q
376+65:25 name q
370−64:26 tight glyph =
377+65:26 tight glyph =
371−64:27 tight tvar B
378+65:27 tight tvar B
372−64:29 name r
379+65:29 name r
373−64:30 tight glyph =
380+65:30 tight glyph =
374−64:31 tight tvar C
381+65:31 tight tvar C
375−64:32 tight glyph ]
382+65:32 tight glyph ]
376−66:1 NEWLINE
383+67:1 NEWLINE
377−66:1 glyph +$
384+67:1 glyph +$
378−66:4 name qual
385+67:4 name qual
379−66:9 glyph |$
386+67:9 glyph |$
380−66:12 glyph [
387+67:12 glyph [
381−66:13 tight tvar A
388+67:13 tight tvar A
382−66:15 tvar B
389+67:15 tvar B
383−66:17 tvar C
390+67:17 tvar C
384−66:19 tvar D
391+67:19 tvar D
385−66:20 tight glyph ]
392+67:20 tight glyph ]
386−66:22 glyph [
393+67:22 glyph [
387−66:23 tight name p
394+67:23 tight name p
388−66:24 tight glyph =
395+67:24 tight glyph =
389−66:25 tight tvar A
396+67:25 tight tvar A
390−66:27 name q
397+67:27 name q
391−66:28 tight glyph =
398+67:28 tight glyph =
392−66:29 tight tvar B
399+67:29 tight tvar B
393−66:31 name r
400+67:31 name r
394−66:32 tight glyph =
401+67:32 tight glyph =
395−66:33 tight tvar C
402+67:33 tight tvar C
396−66:35 name s
403+67:35 name s
397−66:36 tight glyph =
404+67:36 tight glyph =
398−66:37 tight tvar D
405+67:37 tight tvar D
399−66:38 tight glyph ]
406+67:38 tight glyph ]
400−68:1 NEWLINE
407+69:1 NEWLINE
401−68:1 glyph +$
408+69:1 glyph +$
402−68:4 name cord
409+69:4 name cord
403−68:9 aura @t
410+69:9 aura @t
404−70:1 NEWLINE
411+71:1 NEWLINE
405−70:1 glyph +$
412+71:1 glyph +$
406−70:4 name knot
413+71:4 name knot
407−70:9 aura @ta
414+71:9 aura @ta
408−72:1 NEWLINE
415+73:1 NEWLINE
409−72:1 glyph +$
416+73:1 glyph +$
410−72:4 name tape
417+73:4 name tape
411−72:9 glyph (
418+73:9 glyph (
412−72:10 tight name list
419+73:10 tight name list
413−72:15 aura @tD
420+73:15 aura @tD
414−72:18 tight glyph )
421+73:18 tight glyph )
415−74:1 NEWLINE
422+75:1 NEWLINE
416−74:1 glyph +$
423+75:1 glyph +$
417−74:4 name path
424+75:4 name path
418−74:9 glyph (
425+75:9 glyph (
419−74:10 tight name list
426+75:10 tight name list
420−74:15 name knot
427+75:15 name knot
421−74:19 tight glyph )
428+75:19 tight glyph )
422−76:1 NEWLINE
429+77:1 NEWLINE
423−76:1 glyph +$
430+77:1 glyph +$
424−76:4 name tank
431+77:4 name tank
425−77:3 INDENT
432+78:3 INDENT
426−77:3 name cord
427−78:3 NEWLINE
428−78:3 glyph [
429−78:4 tight lit %leaf
430−78:10 name p
433+78:3 name cord
431−78:11 tight glyph =
432−78:12 tight name tape
433−78:16 tight glyph ]
43479:3 NEWLINE
43479:3 NEWLINE
43579:3 glyph [
43579:3 glyph [
436−79:4 tight lit %palm
436+79:4 tight lit %leaf
43779:10 name p
43779:10 name p
43879:11 tight glyph =
43879:11 tight glyph =
439−79:12 tight glyph (
439+79:12 tight name tape
440−79:13 tight name qual
441−79:18 name tape
442−79:23 name tape
443−79:28 name tape
444−79:33 name tape
445−79:37 tight glyph )
446−79:39 name q
447−79:40 tight glyph =
448−79:41 tight glyph (
449−79:42 tight name list
450−79:47 name tank
451−79:51 tight glyph )
452−79:52 tight glyph ]
440+79:16 tight glyph ]
45380:3 NEWLINE
44180:3 NEWLINE
45480:3 glyph [
44280:3 glyph [
455−80:4 tight lit %rose
443+80:4 tight lit %palm
45680:10 name p
44480:10 name p
45780:11 tight glyph =
44580:11 tight glyph =
45880:12 tight glyph (
44680:12 tight glyph (
459−80:13 tight name trel
447+80:13 tight name qual
46080:18 name tape
44880:18 name tape
46180:23 name tape
44980:23 name tape
46280:28 name tape
45080:28 name tape
451+80:33 name tape
463−80:32 tight glyph )
452+80:37 tight glyph )
453+80:39 name q
454+80:40 tight glyph =
455+80:41 tight glyph (
456+80:42 tight name list
457+80:47 name tank
458+80:51 tight glyph )
459+80:52 tight glyph ]
460+81:3 NEWLINE
461+81:3 glyph [
462+81:4 tight lit %rose
463+81:10 name p
464+81:11 tight glyph =
465+81:12 tight glyph (
466+81:13 tight name trel
467+81:18 name tape
468+81:23 name tape
469+81:28 name tape
470+81:32 tight glyph )
464−80:34 name q
471+81:34 name q
465−80:35 tight glyph =
472+81:35 tight glyph =
466−80:36 tight glyph (
473+81:36 tight glyph (
467−80:37 tight name list
474+81:37 tight name list
468−80:42 name tank
475+81:42 name tank
469−80:46 tight glyph )
476+81:46 tight glyph )
470−80:47 tight glyph ]
477+81:47 tight glyph ]
471−82:1 DEDENT
478+83:1 DEDENT
472−82:1 NEWLINE
479+83:1 NEWLINE
473−82:1 glyph +$
480+83:1 glyph +$
474−82:4 name nail
481+83:4 name nail
475−82:9 glyph [
482+83:9 glyph [
476−82:10 tight name p
483+83:10 tight name p
477−82:11 tight glyph =
484+83:11 tight glyph =
478−82:12 tight name hair
485+83:12 tight name hair
479−82:17 name q
486+83:17 name q
480−82:18 tight glyph =
487+83:18 tight glyph =
481−82:19 tight name tape
488+83:19 tight name tape
482−82:23 tight glyph ]
489+83:23 tight glyph ]
483−84:1 NEWLINE
490+85:1 NEWLINE
484−84:1 glyph +$
491+85:1 glyph +$
485−84:4 name edge
492+85:4 name edge
486−84:9 glyph [
493+85:9 glyph [
487−84:10 tight name p
494+85:10 tight name p
488−84:11 tight glyph =
495+85:11 tight glyph =
489−84:12 tight name hair
496+85:12 tight name hair
490−84:17 name q
497+85:17 name q
491−84:18 tight glyph =
498+85:18 tight glyph =
492−84:19 tight glyph (
499+85:19 tight glyph (
493−84:20 tight name unit
500+85:20 tight name unit
494−84:25 glyph [
501+85:25 glyph [
495−84:26 tight name p
502+85:26 tight name p
496−84:27 tight glyph =
503+85:27 tight glyph =
497−84:28 tight glyph *
504+85:28 tight glyph *
498−84:30 name q
505+85:30 name q
499−84:31 tight glyph =
506+85:31 tight glyph =
500−84:32 tight name nail
507+85:32 tight name nail
501−84:36 tight glyph ]
508+85:36 tight glyph ]
502−84:37 tight glyph )
509+85:37 tight glyph )
503−84:38 tight glyph ]
510+85:38 tight glyph ]
504−86:1 NEWLINE
511+87:1 NEWLINE
505−86:1 glyph +$
512+87:1 glyph +$
506−86:4 name rule
513+87:4 name rule
507−86:9 glyph $-(
514+87:9 glyph $-(
508−86:12 tight name nail
515+87:12 tight name nail
509−86:17 name edge
516+87:17 name edge
510−86:21 tight glyph )
517+87:21 tight glyph )
511−88:1 NEWLINE
518+89:1 NEWLINE
512−88:1 glyph +$
519+89:1 glyph +$
513−88:4 name spot
520+89:4 name spot
514−88:9 glyph [
521+89:9 glyph [
515−88:10 tight name p
522+89:10 tight name p
516−88:11 tight glyph =
523+89:11 tight glyph =
517−88:12 tight name path
524+89:12 tight name path
518−88:17 name q
525+89:17 name q
519−88:18 tight glyph =
526+89:18 tight glyph =
520−88:19 tight name pint
527+89:19 tight name pint
521−88:23 tight glyph ]
528+89:23 tight glyph ]
522−90:1 NEWLINE
529+91:1 NEWLINE
523−90:1 glyph +$
530+91:1 glyph +$
524−90:4 name toon
531+91:4 name toon
525−91:3 INDENT
532+92:3 INDENT
526−91:3 glyph [
527−91:4 tight lit %0
528−91:7 name p
529−91:8 tight glyph =
530−91:9 tight glyph *
531−91:10 tight glyph ]
532−92:3 NEWLINE
53392:3 glyph [
53392:3 glyph [
534−92:4 tight lit %1
534+92:4 tight lit %0
53592:7 name p
53592:7 name p
53692:8 tight glyph =
53692:8 tight glyph =
53792:9 tight glyph *
53792:9 tight glyph *
53892:10 tight glyph ]
53892:10 tight glyph ]
53993:3 NEWLINE
53993:3 NEWLINE
54093:3 glyph [
54093:3 glyph [
541−93:4 tight lit %2
541+93:4 tight lit %1
54293:7 name p
54293:7 name p
54393:8 tight glyph =
54393:8 tight glyph =
544−93:9 tight glyph (
544+93:9 tight glyph *
545−93:10 tight name list
545+93:10 tight glyph ]
546+94:3 NEWLINE
547+94:3 glyph [
548+94:4 tight lit %2
549+94:7 name p
550+94:8 tight glyph =
551+94:9 tight glyph (
552+94:10 tight name list
546−93:15 name tank
553+94:15 name tank
547−93:19 tight glyph )
554+94:19 tight glyph )
548−93:20 tight glyph ]
555+94:20 tight glyph ]
549−95:1 DEDENT
556+96:1 DEDENT
550−95:1 NEWLINE
557+96:1 NEWLINE
551−95:1 glyph +$
558+96:1 glyph +$
552−95:4 name like
559+96:4 name like
553−95:9 glyph |$
560+96:9 glyph |$
554−95:12 glyph [
561+96:12 glyph [
555−95:13 tight tvar A
562+96:13 tight tvar A
556−95:14 tight glyph ]
563+96:14 tight glyph ]
557−95:16 glyph [
564+96:16 glyph [
558−95:17 tight name p
565+96:17 tight name p
559−95:18 tight glyph =
566+96:18 tight glyph =
560−95:19 tight name hair
567+96:19 tight name hair
561−95:24 name q
568+96:24 name q
562−95:25 tight glyph =
569+96:25 tight glyph =
563−95:26 tight glyph (
570+96:26 tight glyph (
564−95:27 tight name unit
571+96:27 tight name unit
565−95:32 glyph [
572+96:32 glyph [
566−95:33 tight name p
573+96:33 tight name p
567−95:34 tight glyph =
574+96:34 tight glyph =
568−95:35 tight tvar A
575+96:35 tight tvar A
569−95:37 name q
576+96:37 name q
570−95:38 tight glyph =
577+96:38 tight glyph =
571−95:39 tight name nail
578+96:39 tight name nail
572−95:43 tight glyph ]
579+96:43 tight glyph ]
573−95:44 tight glyph )
580+96:44 tight glyph )
574−95:45 tight glyph ]
581+96:45 tight glyph ]
575−97:1 NEWLINE
582+98:1 NEWLINE
576−97:1 glyph ++
583+98:1 glyph ++
577−97:4 name wonk
584+98:4 name wonk
578−97:9 glyph |=
585+98:9 glyph |=
579−97:12 name veq
586+98:12 name veq
580−97:15 tight glyph =
587+98:15 tight glyph =
581−97:16 tight glyph (
588+98:16 tight glyph (
582−97:17 tight name like
589+98:17 tight name like
583−97:22 tvar A
590+98:22 tvar A
584−97:23 tight glyph )
591+98:23 tight glyph )
585−98:3 INDENT
592+99:3 INDENT
586−98:3 glyph ?-
593+99:3 glyph ?-
587−98:6 wing q.veq
594+99:6 wing q.veq
588−99:5 INDENT
595+100:5 INDENT
589−99:5 lit ~
596+100:5 lit ~
590−99:7 glyph !!
597+100:7 glyph !!
591−100:5 NEWLINE
598+101:5 NEWLINE
592−100:5 glyph [
599+101:5 glyph [
593−100:6 tight lit ~
600+101:6 tight lit ~
594−100:8 name product
601+101:8 name product
595−100:15 tight glyph ]
602+101:15 tight glyph ]
596−100:17 wing p.product
603+101:17 wing p.product
597−100:26 DEDENT
604+101:26 DEDENT
598−100:26 DEDENT
605+101:26 DEDENT
599−100:26 NEWLINE
606+101:26 NEWLINE
tests/golden/prelude-3g-like/tree.txt+148−145
@@ -87,156 +87,159 @@
87 (arm 39:5
87 (arm 39:5
88 (cell 39:5 (bind 39:6 xs) (bind 39:9 ys))
88 (cell 39:5 (bind 39:6 xs) (bind 39:9 ys))
89 (body 40:7
89 (body 40:7
90− (branch 40:7
90+ (cast 40:7
91− (wing 40:10 xs)
91+ (apply 40:10 list (tvar 40:16 A))
92− (arm 41:9 (lit 41:9 ~) (wing 41:11 ys))
92+ (body 41:9
93+ (branch 41:9
94+ (wing 41:12 xs)
95+ (arm 42:11 (lit 42:11 ~) (wing 42:13 ys))
93− (arm 42:9
96+ (arm 43:11
94− (cell 42:9 (bind 42:10 item) (bind 42:15 rest))
97+ (cell 43:11 (bind 43:12 item) (bind 43:17 rest))
95− (tuple 42:21
98+ (tuple 43:23
96− (wing 42:22 item)
99+ (wing 43:24 item)
97− (group 42:27
100+ (group 43:29
98− (call 42:28 (wing 42:28 weld) (wing 42:33 rest) (wing 42:38 ys))))))))))))
101+ (call 43:30 (wing 43:30 weld) (wing 43:35 rest) (wing 43:40 ys))))))))))))))
99− (value 44:1 turn
102+ (value 45:1 turn
100− (gate 44:9
103+ (gate 45:9
101− (face 44:12 args
104+ (face 45:12 args
102− (cell 44:17
105+ (cell 45:17
103− (apply 44:18 list (tvar 44:24 A))
106+ (apply 45:18 list (tvar 45:24 A))
104− (fn 44:27 (tvar 44:30 A) (tvar 44:32 B))))
107+ (fn 45:27 (tvar 45:30 A) (tvar 45:32 B))))
105− (body 45:3
108+ (body 46:3
106− (branch 45:3
109+ (branch 46:3
107− (wing 45:6 args)
110+ (wing 46:6 args)
108− (arm 46:5
111+ (arm 47:5
109− (cell 46:5 (bind 46:6 xs) (bind 46:9 f))
112+ (cell 47:5 (bind 47:6 xs) (bind 47:9 f))
110− (body 47:7
113+ (body 48:7
111− (branch 47:7
114+ (branch 48:7
112− (wing 47:10 xs)
115+ (wing 48:10 xs)
113− (arm 48:9 (lit 48:9 ~) (lit 48:11 ~))
116+ (arm 49:9 (lit 49:9 ~) (lit 49:11 ~))
114− (arm 49:9
117+ (arm 50:9
115− (cell 49:9 (bind 49:10 item) (bind 49:15 rest))
118+ (cell 50:9 (bind 50:10 item) (bind 50:15 rest))
116− (tuple 49:21
119+ (tuple 50:21
117− (group 49:22
120+ (group 50:22
118− (call 49:23 (wing 49:23 f) (wing 49:25 item)))
121+ (call 50:23 (wing 50:23 f) (wing 50:25 item)))
119− (group 49:31
122+ (group 50:31
120− (call 49:32 (wing 49:32 turn) (wing 49:37 rest) (wing 49:42 f))))))))))))
123+ (call 50:32 (wing 50:32 turn) (wing 50:37 rest) (wing 50:42 f))))))))))))
121− (mold 51:1 dime
124+ (mold 52:1 dime
122− (cell 51:9
125+ (cell 52:9
123− (face 51:10 p (aura 51:12 @ta))
126+ (face 52:10 p (aura 52:12 @ta))
124− (face 51:16 q (aura 51:18 @))))
127+ (face 52:16 q (aura 52:18 @))))
125− (mold 53:1 hair
128+ (mold 54:1 hair
126− (cell 53:9
129+ (cell 54:9
127− (face 53:10 p (aura 53:12 @ud))
130+ (face 54:10 p (aura 54:12 @ud))
128− (face 53:16 q (aura 53:18 @ud))))
131+ (face 54:16 q (aura 54:18 @ud))))
129− (mold 55:1 pint
132+ (mold 56:1 pint
130− (cell 55:9
133+ (cell 56:9
131− (face 55:10 p
134+ (face 56:10 p
132− (cell 55:12
135+ (cell 56:12
133− (face 55:13 p (aura 55:15 @))
136+ (face 56:13 p (aura 56:15 @))
134− (face 55:17 q (aura 55:19 @))))
137+ (face 56:17 q (aura 56:19 @))))
135− (face 55:22 q
138+ (face 56:22 q
136− (cell 55:24
139+ (cell 56:24
137− (face 55:25 p (aura 55:27 @))
140+ (face 56:25 p (aura 56:27 @))
138− (face 55:29 q (aura 55:31 @))))))
141+ (face 56:29 q (aura 56:31 @))))))
139− (mold 57:1 coin
142+ (mold 58:1 coin
140− (union 58:3
143+ (union 59:3
141− (cell 58:3
142− (const 58:4 %$)
143− (face 58:7 p (ref 58:9 dime)))
144 (cell 59:3
144 (cell 59:3
145− (const 59:4 %blob)
145+ (const 59:4 %$)
146− (face 59:10 p (noun 59:12)))
146+ (face 59:7 p (ref 59:9 dime)))
147 (cell 60:3
147 (cell 60:3
148− (const 60:4 %many)
148+ (const 60:4 %blob)
149+ (face 60:10 p (noun 60:12)))
150+ (cell 61:3
151+ (const 61:4 %many)
149− (face 60:10 p
152+ (face 61:10 p
150− (apply 60:12 list (ref 60:18 coin))))))
153+ (apply 61:12 list (ref 61:18 coin))))))
151− (mold 62:1 pair
154+ (mold 63:1 pair
152− (generic 62:9 A B
155+ (generic 63:9 A B
153− (cell 62:18
156+ (cell 63:18
154− (face 62:19 p (tvar 62:21 A))
157+ (face 63:19 p (tvar 63:21 A))
155− (face 62:23 q (tvar 62:25 B)))))
158+ (face 63:23 q (tvar 63:25 B)))))
156− (mold 64:1 trel
159+ (mold 65:1 trel
157− (generic 64:9 A B C
160+ (generic 65:9 A B C
158− (cell 64:20
161+ (cell 65:20
159− (face 64:21 p (tvar 64:23 A))
162+ (face 65:21 p (tvar 65:23 A))
160− (face 64:25 q (tvar 64:27 B))
163+ (face 65:25 q (tvar 65:27 B))
161− (face 64:29 r (tvar 64:31 C)))))
164+ (face 65:29 r (tvar 65:31 C)))))
162− (mold 66:1 qual
165+ (mold 67:1 qual
163− (generic 66:9 A B C D
166+ (generic 67:9 A B C D
164− (cell 66:22
167+ (cell 67:22
165− (face 66:23 p (tvar 66:25 A))
168+ (face 67:23 p (tvar 67:25 A))
166− (face 66:27 q (tvar 66:29 B))
169+ (face 67:27 q (tvar 67:29 B))
167− (face 66:31 r (tvar 66:33 C))
170+ (face 67:31 r (tvar 67:33 C))
168− (face 66:35 s (tvar 66:37 D)))))
171+ (face 67:35 s (tvar 67:37 D)))))
169− (mold 68:1 cord (aura 68:9 @t))
172+ (mold 69:1 cord (aura 69:9 @t))
170− (mold 70:1 knot (aura 70:9 @ta))
173+ (mold 71:1 knot (aura 71:9 @ta))
171− (mold 72:1 tape
174+ (mold 73:1 tape
172− (apply 72:9 list (aura 72:15 @tD)))
175+ (apply 73:9 list (aura 73:15 @tD)))
173− (mold 74:1 path
176+ (mold 75:1 path
174− (apply 74:9 list (ref 74:15 knot)))
177+ (apply 75:9 list (ref 75:15 knot)))
175− (mold 76:1 tank
178+ (mold 77:1 tank
176− (union 77:3
179+ (union 78:3
177− (ref 77:3 cord)
180+ (ref 78:3 cord)
178− (cell 78:3
179− (const 78:4 %leaf)
180− (face 78:10 p (ref 78:12 tape)))
181 (cell 79:3
181 (cell 79:3
182− (const 79:4 %palm)
182+ (const 79:4 %leaf)
183− (face 79:10 p
183+ (face 79:10 p (ref 79:12 tape)))
184− (apply 79:12 qual (ref 79:18 tape) (ref 79:23 tape) (ref 79:28 tape) (ref 79:33 tape)))
185− (face 79:39 q
186− (apply 79:41 list (ref 79:47 tank))))
187 (cell 80:3
184 (cell 80:3
188− (const 80:4 %rose)
185+ (const 80:4 %palm)
189 (face 80:10 p
186 (face 80:10 p
187+ (apply 80:12 qual (ref 80:18 tape) (ref 80:23 tape) (ref 80:28 tape) (ref 80:33 tape)))
188+ (face 80:39 q
189+ (apply 80:41 list (ref 80:47 tank))))
190+ (cell 81:3
191+ (const 81:4 %rose)
192+ (face 81:10 p
190− (apply 80:12 trel (ref 80:18 tape) (ref 80:23 tape) (ref 80:28 tape)))
193+ (apply 81:12 trel (ref 81:18 tape) (ref 81:23 tape) (ref 81:28 tape)))
191− (face 80:34 q
194+ (face 81:34 q
192− (apply 80:36 list (ref 80:42 tank))))))
195+ (apply 81:36 list (ref 81:42 tank))))))
193− (mold 82:1 nail
196+ (mold 83:1 nail
194− (cell 82:9
197+ (cell 83:9
195− (face 82:10 p (ref 82:12 hair))
198+ (face 83:10 p (ref 83:12 hair))
196− (face 82:17 q (ref 82:19 tape))))
199+ (face 83:17 q (ref 83:19 tape))))
197− (mold 84:1 edge
200+ (mold 85:1 edge
198− (cell 84:9
201+ (cell 85:9
199− (face 84:10 p (ref 84:12 hair))
202+ (face 85:10 p (ref 85:12 hair))
200− (face 84:17 q
203+ (face 85:17 q
201− (apply 84:19 unit
204+ (apply 85:19 unit
202− (cell 84:25
205+ (cell 85:25
203− (face 84:26 p (noun 84:28))
206+ (face 85:26 p (noun 85:28))
204− (face 84:30 q (ref 84:32 nail)))))))
207+ (face 85:30 q (ref 85:32 nail)))))))
205− (mold 86:1 rule
208+ (mold 87:1 rule
206− (fn 86:9 (ref 86:12 nail) (ref 86:17 edge)))
209+ (fn 87:9 (ref 87:12 nail) (ref 87:17 edge)))
207− (mold 88:1 spot
210+ (mold 89:1 spot
208− (cell 88:9
211+ (cell 89:9
209− (face 88:10 p (ref 88:12 path))
212+ (face 89:10 p (ref 89:12 path))
210− (face 88:17 q (ref 88:19 pint))))
213+ (face 89:17 q (ref 89:19 pint))))
211− (mold 90:1 toon
214+ (mold 91:1 toon
212− (union 91:3
215+ (union 92:3
213− (cell 91:3
214− (const 91:4 %0)
215− (face 91:7 p (noun 91:9)))
216 (cell 92:3
216 (cell 92:3
217− (const 92:4 %1)
217+ (const 92:4 %0)
218 (face 92:7 p (noun 92:9)))
218 (face 92:7 p (noun 92:9)))
219 (cell 93:3
219 (cell 93:3
220− (const 93:4 %2)
220+ (const 93:4 %1)
221− (face 93:7 p
221+ (face 93:7 p (noun 93:9)))
222− (apply 93:9 list (ref 93:15 tank))))))
222+ (cell 94:3
223− (mold 95:1 like
223+ (const 94:4 %2)
224− (generic 95:9 A
224+ (face 94:7 p
225− (cell 95:16
225+ (apply 94:9 list (ref 94:15 tank))))))
226− (face 95:17 p (ref 95:19 hair))
226+ (mold 96:1 like
227− (face 95:24 q
227+ (generic 96:9 A
228− (apply 95:26 unit
228+ (cell 96:16
229− (cell 95:32
229+ (face 96:17 p (ref 96:19 hair))
230− (face 95:33 p (tvar 95:35 A))
230+ (face 96:24 q
231− (face 95:37 q (ref 95:39 nail))))))))
231+ (apply 96:26 unit
232− (value 97:1 wonk
232+ (cell 96:32
233− (gate 97:9
233+ (face 96:33 p (tvar 96:35 A))
234− (face 97:12 veq
234+ (face 96:37 q (ref 96:39 nail))))))))
235− (apply 97:16 like (tvar 97:22 A)))
235+ (value 98:1 wonk
236− (body 98:3
236+ (gate 98:9
237− (branch 98:3
237+ (face 98:12 veq
238− (wing 98:6 q.veq)
238+ (apply 98:16 like (tvar 98:22 A)))
239− (arm 99:5 (lit 99:5 ~) (crash 99:7))
239+ (body 99:3
240− (arm 100:5
240+ (branch 99:3
241− (cell 100:5 (lit 100:6 ~) (bind 100:8 product))
241+ (wing 99:6 q.veq)
242− (wing 100:17 p.product)))))))
242+ (arm 100:5 (lit 100:5 ~) (crash 100:7))
243+ (arm 101:5
244+ (cell 101:5 (lit 101:6 ~) (bind 101:8 product))
245+ (wing 101:17 p.product)))))))
tests/golden/prelude-3g-structural/source.jibb+4−3
@@ -37,9 +37,10 @@
37++ weld |= args=[(list A) (list A)]
37++ weld |= args=[(list A) (list A)]
38 ?- args
38 ?- args
39 [xs ys]
39 [xs ys]
40− ?- xs
40+ ^- (list A)
41− ~ ys
41+ ?- xs
42− [item rest] [item (weld rest ys)]
42+ ~ ys
43+ [item rest] [item (weld rest ys)]
43
44
44++ turn |= args=[(list A) $-(A B)]
45++ turn |= args=[(list A) $-(A B)]
45 ?- args
46 ?- args
tests/golden/prelude-3g-structural/tokens.txt+337−330
@@ -190,361 +190,368 @@
19039:9 name ys
19039:9 name ys
19139:11 tight glyph ]
19139:11 tight glyph ]
19240:7 INDENT
19240:7 INDENT
193−40:7 glyph ?-
193+40:7 glyph ^-
194−40:10 name xs
194+40:10 glyph (
195+40:11 tight name list
196+40:16 tvar A
197+40:17 tight glyph )
19541:9 INDENT
19841:9 INDENT
196−41:9 lit ~
199+41:9 glyph ?-
197−41:11 name ys
200+41:12 name xs
198−42:9 NEWLINE
201+42:11 INDENT
199−42:9 glyph [
202+42:11 lit ~
200−42:10 tight name item
203+42:13 name ys
201−42:15 name rest
204+43:11 NEWLINE
202−42:19 tight glyph ]
205+43:11 glyph [
203−42:21 glyph [
206+43:12 tight name item
204−42:22 tight name item
207+43:17 name rest
205−42:27 glyph (
208+43:21 tight glyph ]
206−42:28 tight name weld
209+43:23 glyph [
207−42:33 name rest
210+43:24 tight name item
208−42:38 name ys
211+43:29 glyph (
209−42:40 tight glyph )
212+43:30 tight name weld
210−42:41 tight glyph ]
213+43:35 name rest
211−44:1 DEDENT
214+43:40 name ys
212−44:1 DEDENT
215+43:42 tight glyph )
213−44:1 DEDENT
216+43:43 tight glyph ]
214−44:1 DEDENT
217+45:1 DEDENT
215−44:1 NEWLINE
218+45:1 DEDENT
216−44:1 glyph ++
219+45:1 DEDENT
217−44:4 name turn
220+45:1 DEDENT
218−44:9 glyph |=
221+45:1 DEDENT
219−44:12 name args
222+45:1 NEWLINE
220−44:16 tight glyph =
223+45:1 glyph ++
221−44:17 tight glyph [
224+45:4 name turn
222−44:18 tight glyph (
225+45:9 glyph |=
223−44:19 tight name list
226+45:12 name args
224−44:24 tvar A
227+45:16 tight glyph =
225−44:25 tight glyph )
228+45:17 tight glyph [
226−44:27 glyph $-(
229+45:18 tight glyph (
227−44:30 tight tvar A
230+45:19 tight name list
228−44:32 tvar B
231+45:24 tvar A
229−44:33 tight glyph )
232+45:25 tight glyph )
230−44:34 tight glyph ]
233+45:27 glyph $-(
231−45:3 INDENT
234+45:30 tight tvar A
232−45:3 glyph ?-
235+45:32 tvar B
233−45:6 name args
236+45:33 tight glyph )
234−46:5 INDENT
237+45:34 tight glyph ]
235−46:5 glyph [
238+46:3 INDENT
236−46:6 tight name xs
239+46:3 glyph ?-
237−46:9 name f
240+46:6 name args
238−46:10 tight glyph ]
241+47:5 INDENT
239−47:7 INDENT
242+47:5 glyph [
240−47:7 glyph ?-
243+47:6 tight name xs
241−47:10 name xs
244+47:9 name f
242−48:9 INDENT
245+47:10 tight glyph ]
243−48:9 lit ~
246+48:7 INDENT
244−48:11 lit ~
247+48:7 glyph ?-
245−49:9 NEWLINE
248+48:10 name xs
246−49:9 glyph [
249+49:9 INDENT
247−49:10 tight name item
250+49:9 lit ~
248−49:15 name rest
251+49:11 lit ~
249−49:19 tight glyph ]
252+50:9 NEWLINE
250−49:21 glyph [
253+50:9 glyph [
251−49:22 tight glyph (
254+50:10 tight name item
252−49:23 tight name f
255+50:15 name rest
253−49:25 name item
256+50:19 tight glyph ]
254−49:29 tight glyph )
257+50:21 glyph [
255−49:31 glyph (
258+50:22 tight glyph (
256−49:32 tight name turn
259+50:23 tight name f
257−49:37 name rest
260+50:25 name item
258−49:42 name f
261+50:29 tight glyph )
259−49:43 tight glyph )
262+50:31 glyph (
260−49:44 tight glyph ]
263+50:32 tight name turn
261−51:1 DEDENT
264+50:37 name rest
262−51:1 DEDENT
265+50:42 name f
263−51:1 DEDENT
266+50:43 tight glyph )
264−51:1 DEDENT
267+50:44 tight glyph ]
265−51:1 NEWLINE
268+52:1 DEDENT
266−51:1 glyph +$
269+52:1 DEDENT
267−51:4 name dime
270+52:1 DEDENT
268−51:9 glyph [
271+52:1 DEDENT
269−51:10 tight name p
272+52:1 NEWLINE
270−51:11 tight glyph =
273+52:1 glyph +$
271−51:12 tight aura @ta
274+52:4 name dime
272−51:16 name q
275+52:9 glyph [
273−51:17 tight glyph =
276+52:10 tight name p
274−51:18 tight aura @
277+52:11 tight glyph =
275−51:19 tight glyph ]
278+52:12 tight aura @ta
276−53:1 NEWLINE
279+52:16 name q
277−53:1 glyph +$
280+52:17 tight glyph =
278−53:4 name hair
281+52:18 tight aura @
279−53:9 glyph [
282+52:19 tight glyph ]
280−53:10 tight name p
283+54:1 NEWLINE
281−53:11 tight glyph =
284+54:1 glyph +$
282−53:12 tight aura @ud
285+54:4 name hair
283−53:16 name q
286+54:9 glyph [
284−53:17 tight glyph =
287+54:10 tight name p
285−53:18 tight aura @ud
288+54:11 tight glyph =
286−53:21 tight glyph ]
289+54:12 tight aura @ud
287−55:1 NEWLINE
290+54:16 name q
288−55:1 glyph +$
291+54:17 tight glyph =
289−55:4 name pint
292+54:18 tight aura @ud
290−55:9 glyph [
293+54:21 tight glyph ]
291−55:10 tight name p
294+56:1 NEWLINE
292−55:11 tight glyph =
295+56:1 glyph +$
293−55:12 tight glyph [
296+56:4 name pint
294−55:13 tight name p
297+56:9 glyph [
295−55:14 tight glyph =
298+56:10 tight name p
296−55:15 tight aura @
299+56:11 tight glyph =
297−55:17 name q
300+56:12 tight glyph [
298−55:18 tight glyph =
301+56:13 tight name p
299−55:19 tight aura @
302+56:14 tight glyph =
300−55:20 tight glyph ]
303+56:15 tight aura @
301−55:22 name q
304+56:17 name q
302−55:23 tight glyph =
305+56:18 tight glyph =
303−55:24 tight glyph [
306+56:19 tight aura @
304−55:25 tight name p
307+56:20 tight glyph ]
305−55:26 tight glyph =
308+56:22 name q
306−55:27 tight aura @
309+56:23 tight glyph =
307−55:29 name q
310+56:24 tight glyph [
308−55:30 tight glyph =
311+56:25 tight name p
309−55:31 tight aura @
312+56:26 tight glyph =
310−55:32 tight glyph ]
313+56:27 tight aura @
311−55:33 tight glyph ]
314+56:29 name q
312−57:1 NEWLINE
315+56:30 tight glyph =
313−57:1 glyph +$
316+56:31 tight aura @
314−57:4 name coin
317+56:32 tight glyph ]
315−58:3 INDENT
318+56:33 tight glyph ]
316−58:3 glyph [
319+58:1 NEWLINE
317−58:4 tight lit %$
320+58:1 glyph +$
318−58:7 name p
321+58:4 name coin
319−58:8 tight glyph =
322+59:3 INDENT
320−58:9 tight name dime
321−58:13 tight glyph ]
322−59:3 NEWLINE
32359:3 glyph [
32359:3 glyph [
324−59:4 tight lit %blob
324+59:4 tight lit %$
325−59:10 name p
325+59:7 name p
326−59:11 tight glyph =
326+59:8 tight glyph =
327−59:12 tight glyph *
327+59:9 tight name dime
32859:13 tight glyph ]
32859:13 tight glyph ]
32960:3 NEWLINE
32960:3 NEWLINE
33060:3 glyph [
33060:3 glyph [
331−60:4 tight lit %many
331+60:4 tight lit %blob
33260:10 name p
33260:10 name p
33360:11 tight glyph =
33360:11 tight glyph =
334−60:12 tight glyph (
334+60:12 tight glyph *
335−60:13 tight name list
335+60:13 tight glyph ]
336−60:18 name coin
336+61:3 NEWLINE
337−60:22 tight glyph )
337+61:3 glyph [
338−60:23 tight glyph ]
338+61:4 tight lit %many
339−62:1 DEDENT
339+61:10 name p
340−62:1 NEWLINE
340+61:11 tight glyph =
341−62:1 glyph +$
341+61:12 tight glyph (
342−62:4 name pair
342+61:13 tight name list
343−62:9 glyph |$
343+61:18 name coin
344−62:12 glyph [
344+61:22 tight glyph )
345−62:13 tight tvar A
345+61:23 tight glyph ]
346−62:15 tvar B
346+63:1 DEDENT
347−62:16 tight glyph ]
347+63:1 NEWLINE
348−62:18 glyph [
348+63:1 glyph +$
349−62:19 tight name p
349+63:4 name pair
350−62:20 tight glyph =
350+63:9 glyph |$
351−62:21 tight tvar A
351+63:12 glyph [
352−62:23 name q
352+63:13 tight tvar A
353−62:24 tight glyph =
353+63:15 tvar B
354−62:25 tight tvar B
354+63:16 tight glyph ]
355−62:26 tight glyph ]
355+63:18 glyph [
356−64:1 NEWLINE
356+63:19 tight name p
357−64:1 glyph +$
357+63:20 tight glyph =
358−64:4 name trel
358+63:21 tight tvar A
359−64:9 glyph |$
359+63:23 name q
360−64:12 glyph [
360+63:24 tight glyph =
361−64:13 tight tvar A
361+63:25 tight tvar B
362−64:15 tvar B
362+63:26 tight glyph ]
363−64:17 tvar C
363+65:1 NEWLINE
364−64:18 tight glyph ]
364+65:1 glyph +$
365−64:20 glyph [
365+65:4 name trel
366−64:21 tight name p
366+65:9 glyph |$
367−64:22 tight glyph =
367+65:12 glyph [
368−64:23 tight tvar A
368+65:13 tight tvar A
369−64:25 name q
369+65:15 tvar B
370−64:26 tight glyph =
370+65:17 tvar C
371−64:27 tight tvar B
371+65:18 tight glyph ]
372−64:29 name r
372+65:20 glyph [
373−64:30 tight glyph =
373+65:21 tight name p
374−64:31 tight tvar C
374+65:22 tight glyph =
375−64:32 tight glyph ]
375+65:23 tight tvar A
376−66:1 NEWLINE
376+65:25 name q
377−66:1 glyph +$
377+65:26 tight glyph =
378−66:4 name qual
378+65:27 tight tvar B
379−66:9 glyph |$
379+65:29 name r
380−66:12 glyph [
380+65:30 tight glyph =
381−66:13 tight tvar A
381+65:31 tight tvar C
382−66:15 tvar B
382+65:32 tight glyph ]
383−66:17 tvar C
383+67:1 NEWLINE
384−66:19 tvar D
384+67:1 glyph +$
385−66:20 tight glyph ]
385+67:4 name qual
386−66:22 glyph [
386+67:9 glyph |$
387−66:23 tight name p
387+67:12 glyph [
388−66:24 tight glyph =
388+67:13 tight tvar A
389−66:25 tight tvar A
389+67:15 tvar B
390−66:27 name q
390+67:17 tvar C
391−66:28 tight glyph =
391+67:19 tvar D
392−66:29 tight tvar B
392+67:20 tight glyph ]
393−66:31 name r
393+67:22 glyph [
394−66:32 tight glyph =
394+67:23 tight name p
395−66:33 tight tvar C
395+67:24 tight glyph =
396−66:35 name s
396+67:25 tight tvar A
397−66:36 tight glyph =
397+67:27 name q
398−66:37 tight tvar D
398+67:28 tight glyph =
399−66:38 tight glyph ]
399+67:29 tight tvar B
400−68:1 NEWLINE
400+67:31 name r
401−68:1 glyph +$
401+67:32 tight glyph =
402−68:4 name cord
402+67:33 tight tvar C
403−68:9 aura @t
403+67:35 name s
404−70:1 NEWLINE
404+67:36 tight glyph =
405−70:1 glyph +$
405+67:37 tight tvar D
406−70:4 name knot
406+67:38 tight glyph ]
407−70:9 aura @ta
407+69:1 NEWLINE
408−72:1 NEWLINE
408+69:1 glyph +$
409−72:1 glyph +$
409+69:4 name cord
410−72:4 name tape
410+69:9 aura @t
411−72:9 glyph (
411+71:1 NEWLINE
412−72:10 tight name list
412+71:1 glyph +$
413−72:15 aura @tD
413+71:4 name knot
414−72:18 tight glyph )
414+71:9 aura @ta
415−74:1 NEWLINE
415+73:1 NEWLINE
416−74:1 glyph +$
416+73:1 glyph +$
417−74:4 name path
417+73:4 name tape
418−74:9 glyph (
418+73:9 glyph (
419−74:10 tight name list
419+73:10 tight name list
420−74:15 name knot
420+73:15 aura @tD
421−74:19 tight glyph )
421+73:18 tight glyph )
422−76:1 NEWLINE
422+75:1 NEWLINE
423−76:1 glyph +$
423+75:1 glyph +$
424−76:4 name tank
424+75:4 name path
425−77:3 INDENT
425+75:9 glyph (
426−77:3 name cord
426+75:10 tight name list
427−78:3 NEWLINE
427+75:15 name knot
428−78:3 glyph [
428+75:19 tight glyph )
429−78:4 tight lit %leaf
429+77:1 NEWLINE
430−78:10 name p
430+77:1 glyph +$
431−78:11 tight glyph =
431+77:4 name tank
432−78:12 tight name tape
432+78:3 INDENT
433−78:16 tight glyph ]
433+78:3 name cord
43479:3 NEWLINE
43479:3 NEWLINE
43579:3 glyph [
43579:3 glyph [
436−79:4 tight lit %palm
436+79:4 tight lit %leaf
43779:10 name p
43779:10 name p
43879:11 tight glyph =
43879:11 tight glyph =
439−79:12 tight glyph (
439+79:12 tight name tape
440−79:13 tight name qual
440+79:16 tight glyph ]
441−79:18 name tape
442−79:23 name tape
443−79:28 name tape
444−79:33 name tape
445−79:37 tight glyph )
446−79:39 name q
447−79:40 tight glyph =
448−79:41 tight glyph (
449−79:42 tight name list
450−79:47 name tank
451−79:51 tight glyph )
452−79:52 tight glyph ]
45380:3 NEWLINE
44180:3 NEWLINE
45480:3 glyph [
44280:3 glyph [
455−80:4 tight lit %rose
443+80:4 tight lit %palm
45680:10 name p
44480:10 name p
45780:11 tight glyph =
44580:11 tight glyph =
45880:12 tight glyph (
44680:12 tight glyph (
459−80:13 tight name trel
447+80:13 tight name qual
46080:18 name tape
44880:18 name tape
46180:23 name tape
44980:23 name tape
46280:28 name tape
45080:28 name tape
463−80:32 tight glyph )
451+80:33 name tape
464−80:34 name q
452+80:37 tight glyph )
465−80:35 tight glyph =
453+80:39 name q
466−80:36 tight glyph (
454+80:40 tight glyph =
467−80:37 tight name list
455+80:41 tight glyph (
468−80:42 name tank
456+80:42 tight name list
469−80:46 tight glyph )
457+80:47 name tank
470−80:47 tight glyph ]
458+80:51 tight glyph )
471−82:1 DEDENT
459+80:52 tight glyph ]
472−82:1 NEWLINE
460+81:3 NEWLINE
473−82:1 glyph +$
461+81:3 glyph [
474−82:4 name nail
462+81:4 tight lit %rose
475−82:9 glyph [
463+81:10 name p
476−82:10 tight name p
464+81:11 tight glyph =
477−82:11 tight glyph =
465+81:12 tight glyph (
478−82:12 tight name hair
466+81:13 tight name trel
479−82:17 name q
467+81:18 name tape
480−82:18 tight glyph =
468+81:23 name tape
481−82:19 tight name tape
469+81:28 name tape
482−82:23 tight glyph ]
470+81:32 tight glyph )
483−84:1 NEWLINE
471+81:34 name q
484−84:1 glyph +$
472+81:35 tight glyph =
485−84:4 name edge
473+81:36 tight glyph (
486−84:9 glyph [
474+81:37 tight name list
487−84:10 tight name p
475+81:42 name tank
488−84:11 tight glyph =
476+81:46 tight glyph )
489−84:12 tight name hair
477+81:47 tight glyph ]
490−84:17 name q
478+83:1 DEDENT
491−84:18 tight glyph =
479+83:1 NEWLINE
492−84:19 tight glyph (
480+83:1 glyph +$
493−84:20 tight name unit
481+83:4 name nail
494−84:25 glyph [
482+83:9 glyph [
495−84:26 tight name p
483+83:10 tight name p
496−84:27 tight glyph =
484+83:11 tight glyph =
497−84:28 tight glyph *
485+83:12 tight name hair
498−84:30 name q
486+83:17 name q
499−84:31 tight glyph =
487+83:18 tight glyph =
500−84:32 tight name nail
488+83:19 tight name tape
501−84:36 tight glyph ]
489+83:23 tight glyph ]
502−84:37 tight glyph )
490+85:1 NEWLINE
503−84:38 tight glyph ]
491+85:1 glyph +$
504−86:1 NEWLINE
492+85:4 name edge
505−86:1 glyph +$
493+85:9 glyph [
506−86:4 name rule
494+85:10 tight name p
507−86:9 glyph $-(
495+85:11 tight glyph =
508−86:12 tight name nail
496+85:12 tight name hair
509−86:17 name edge
497+85:17 name q
510−86:21 tight glyph )
498+85:18 tight glyph =
511−88:1 NEWLINE
499+85:19 tight glyph (
512−88:1 glyph +$
500+85:20 tight name unit
513−88:4 name spot
501+85:25 glyph [
514−88:9 glyph [
502+85:26 tight name p
515−88:10 tight name p
503+85:27 tight glyph =
516−88:11 tight glyph =
504+85:28 tight glyph *
517−88:12 tight name path
505+85:30 name q
518−88:17 name q
506+85:31 tight glyph =
519−88:18 tight glyph =
507+85:32 tight name nail
520−88:19 tight name pint
508+85:36 tight glyph ]
521−88:23 tight glyph ]
509+85:37 tight glyph )
522−90:1 NEWLINE
510+85:38 tight glyph ]
523−90:1 glyph +$
511+87:1 NEWLINE
524−90:4 name toon
512+87:1 glyph +$
525−91:3 INDENT
513+87:4 name rule
526−91:3 glyph [
514+87:9 glyph $-(
527−91:4 tight lit %0
515+87:12 tight name nail
528−91:7 name p
516+87:17 name edge
529−91:8 tight glyph =
517+87:21 tight glyph )
530−91:9 tight glyph *
518+89:1 NEWLINE
531−91:10 tight glyph ]
519+89:1 glyph +$
532−92:3 NEWLINE
520+89:4 name spot
521+89:9 glyph [
522+89:10 tight name p
523+89:11 tight glyph =
524+89:12 tight name path
525+89:17 name q
526+89:18 tight glyph =
527+89:19 tight name pint
528+89:23 tight glyph ]
529+91:1 NEWLINE
530+91:1 glyph +$
531+91:4 name toon
532+92:3 INDENT
53392:3 glyph [
53392:3 glyph [
534−92:4 tight lit %1
534+92:4 tight lit %0
53592:7 name p
53592:7 name p
53692:8 tight glyph =
53692:8 tight glyph =
53792:9 tight glyph *
53792:9 tight glyph *
53892:10 tight glyph ]
53892:10 tight glyph ]
53993:3 NEWLINE
53993:3 NEWLINE
54093:3 glyph [
54093:3 glyph [
541−93:4 tight lit %2
541+93:4 tight lit %1
54293:7 name p
54293:7 name p
54393:8 tight glyph =
54393:8 tight glyph =
544−93:9 tight glyph (
544+93:9 tight glyph *
545−93:10 tight name list
545+93:10 tight glyph ]
546−93:15 name tank
546+94:3 NEWLINE
547−93:19 tight glyph )
547+94:3 glyph [
548−93:20 tight glyph ]
548+94:4 tight lit %2
549−93:21 DEDENT
549+94:7 name p
550−93:21 NEWLINE
550+94:8 tight glyph =
551+94:9 tight glyph (
552+94:10 tight name list
553+94:15 name tank
554+94:19 tight glyph )
555+94:20 tight glyph ]
556+94:21 DEDENT
557+94:21 NEWLINE
tests/golden/prelude-3g-structural/tree.txt+128−125
@@ -87,136 +87,139 @@
87 (arm 39:5
87 (arm 39:5
88 (cell 39:5 (bind 39:6 xs) (bind 39:9 ys))
88 (cell 39:5 (bind 39:6 xs) (bind 39:9 ys))
89 (body 40:7
89 (body 40:7
90− (branch 40:7
90+ (cast 40:7
91− (wing 40:10 xs)
91+ (apply 40:10 list (tvar 40:16 A))
92− (arm 41:9 (lit 41:9 ~) (wing 41:11 ys))
92+ (body 41:9
93− (arm 42:9
93+ (branch 41:9
94− (cell 42:9 (bind 42:10 item) (bind 42:15 rest))
94+ (wing 41:12 xs)
95− (tuple 42:21
95+ (arm 42:11 (lit 42:11 ~) (wing 42:13 ys))
96− (wing 42:22 item)
96+ (arm 43:11
97− (group 42:27
97+ (cell 43:11 (bind 43:12 item) (bind 43:17 rest))
98− (call 42:28 (wing 42:28 weld) (wing 42:33 rest) (wing 42:38 ys))))))))))))
98+ (tuple 43:23
99− (value 44:1 turn
99+ (wing 43:24 item)
100− (gate 44:9
100+ (group 43:29
101− (face 44:12 args
101+ (call 43:30 (wing 43:30 weld) (wing 43:35 rest) (wing 43:40 ys))))))))))))))
102− (cell 44:17
102+ (value 45:1 turn
103− (apply 44:18 list (tvar 44:24 A))
103+ (gate 45:9
104− (fn 44:27 (tvar 44:30 A) (tvar 44:32 B))))
104+ (face 45:12 args
105− (body 45:3
105+ (cell 45:17
106− (branch 45:3
106+ (apply 45:18 list (tvar 45:24 A))
107− (wing 45:6 args)
107+ (fn 45:27 (tvar 45:30 A) (tvar 45:32 B))))
108− (arm 46:5
108+ (body 46:3
109− (cell 46:5 (bind 46:6 xs) (bind 46:9 f))
109+ (branch 46:3
110− (body 47:7
110+ (wing 46:6 args)
111− (branch 47:7
111+ (arm 47:5
112− (wing 47:10 xs)
112+ (cell 47:5 (bind 47:6 xs) (bind 47:9 f))
113− (arm 48:9 (lit 48:9 ~) (lit 48:11 ~))
113+ (body 48:7
114− (arm 49:9
114+ (branch 48:7
115− (cell 49:9 (bind 49:10 item) (bind 49:15 rest))
115+ (wing 48:10 xs)
116− (tuple 49:21
116+ (arm 49:9 (lit 49:9 ~) (lit 49:11 ~))
117− (group 49:22
117+ (arm 50:9
118− (call 49:23 (wing 49:23 f) (wing 49:25 item)))
118+ (cell 50:9 (bind 50:10 item) (bind 50:15 rest))
119− (group 49:31
119+ (tuple 50:21
120− (call 49:32 (wing 49:32 turn) (wing 49:37 rest) (wing 49:42 f))))))))))))
120+ (group 50:22
121− (mold 51:1 dime
121+ (call 50:23 (wing 50:23 f) (wing 50:25 item)))
122− (cell 51:9
122+ (group 50:31
123− (face 51:10 p (aura 51:12 @ta))
123+ (call 50:32 (wing 50:32 turn) (wing 50:37 rest) (wing 50:42 f))))))))))))
124− (face 51:16 q (aura 51:18 @))))
124+ (mold 52:1 dime
125− (mold 53:1 hair
125+ (cell 52:9
126− (cell 53:9
126+ (face 52:10 p (aura 52:12 @ta))
127− (face 53:10 p (aura 53:12 @ud))
127+ (face 52:16 q (aura 52:18 @))))
128− (face 53:16 q (aura 53:18 @ud))))
128+ (mold 54:1 hair
129− (mold 55:1 pint
129+ (cell 54:9
130− (cell 55:9
130+ (face 54:10 p (aura 54:12 @ud))
131− (face 55:10 p
131+ (face 54:16 q (aura 54:18 @ud))))
132− (cell 55:12
132+ (mold 56:1 pint
133− (face 55:13 p (aura 55:15 @))
133+ (cell 56:9
134− (face 55:17 q (aura 55:19 @))))
134+ (face 56:10 p
135− (face 55:22 q
135+ (cell 56:12
136− (cell 55:24
136+ (face 56:13 p (aura 56:15 @))
137− (face 55:25 p (aura 55:27 @))
137+ (face 56:17 q (aura 56:19 @))))
138− (face 55:29 q (aura 55:31 @))))))
138+ (face 56:22 q
139− (mold 57:1 coin
139+ (cell 56:24
140− (union 58:3
140+ (face 56:25 p (aura 56:27 @))
141− (cell 58:3
141+ (face 56:29 q (aura 56:31 @))))))
142− (const 58:4 %$)
142+ (mold 58:1 coin
143− (face 58:7 p (ref 58:9 dime)))
143+ (union 59:3
144 (cell 59:3
144 (cell 59:3
145− (const 59:4 %blob)
145+ (const 59:4 %$)
146− (face 59:10 p (noun 59:12)))
146+ (face 59:7 p (ref 59:9 dime)))
147 (cell 60:3
147 (cell 60:3
148− (const 60:4 %many)
148+ (const 60:4 %blob)
149− (face 60:10 p
149+ (face 60:10 p (noun 60:12)))
150− (apply 60:12 list (ref 60:18 coin))))))
150+ (cell 61:3
151− (mold 62:1 pair
151+ (const 61:4 %many)
152− (generic 62:9 A B
152+ (face 61:10 p
153− (cell 62:18
153+ (apply 61:12 list (ref 61:18 coin))))))
154− (face 62:19 p (tvar 62:21 A))
154+ (mold 63:1 pair
155− (face 62:23 q (tvar 62:25 B)))))
155+ (generic 63:9 A B
156− (mold 64:1 trel
156+ (cell 63:18
157− (generic 64:9 A B C
157+ (face 63:19 p (tvar 63:21 A))
158− (cell 64:20
158+ (face 63:23 q (tvar 63:25 B)))))
159− (face 64:21 p (tvar 64:23 A))
159+ (mold 65:1 trel
160− (face 64:25 q (tvar 64:27 B))
160+ (generic 65:9 A B C
161− (face 64:29 r (tvar 64:31 C)))))
161+ (cell 65:20
162− (mold 66:1 qual
162+ (face 65:21 p (tvar 65:23 A))
163− (generic 66:9 A B C D
163+ (face 65:25 q (tvar 65:27 B))
164− (cell 66:22
164+ (face 65:29 r (tvar 65:31 C)))))
165− (face 66:23 p (tvar 66:25 A))
165+ (mold 67:1 qual
166− (face 66:27 q (tvar 66:29 B))
166+ (generic 67:9 A B C D
167− (face 66:31 r (tvar 66:33 C))
167+ (cell 67:22
168− (face 66:35 s (tvar 66:37 D)))))
168+ (face 67:23 p (tvar 67:25 A))
169− (mold 68:1 cord (aura 68:9 @t))
169+ (face 67:27 q (tvar 67:29 B))
170− (mold 70:1 knot (aura 70:9 @ta))
170+ (face 67:31 r (tvar 67:33 C))
171− (mold 72:1 tape
171+ (face 67:35 s (tvar 67:37 D)))))
172− (apply 72:9 list (aura 72:15 @tD)))
172+ (mold 69:1 cord (aura 69:9 @t))
173− (mold 74:1 path
173+ (mold 71:1 knot (aura 71:9 @ta))
174− (apply 74:9 list (ref 74:15 knot)))
174+ (mold 73:1 tape
175− (mold 76:1 tank
175+ (apply 73:9 list (aura 73:15 @tD)))
176− (union 77:3
176+ (mold 75:1 path
177− (ref 77:3 cord)
177+ (apply 75:9 list (ref 75:15 knot)))
178− (cell 78:3
178+ (mold 77:1 tank
179− (const 78:4 %leaf)
179+ (union 78:3
180− (face 78:10 p (ref 78:12 tape)))
180+ (ref 78:3 cord)
181 (cell 79:3
181 (cell 79:3
182− (const 79:4 %palm)
182+ (const 79:4 %leaf)
183− (face 79:10 p
183+ (face 79:10 p (ref 79:12 tape)))
184− (apply 79:12 qual (ref 79:18 tape) (ref 79:23 tape) (ref 79:28 tape) (ref 79:33 tape)))
185− (face 79:39 q
186− (apply 79:41 list (ref 79:47 tank))))
187 (cell 80:3
184 (cell 80:3
188− (const 80:4 %rose)
185+ (const 80:4 %palm)
189 (face 80:10 p
186 (face 80:10 p
190− (apply 80:12 trel (ref 80:18 tape) (ref 80:23 tape) (ref 80:28 tape)))
187+ (apply 80:12 qual (ref 80:18 tape) (ref 80:23 tape) (ref 80:28 tape) (ref 80:33 tape)))
191− (face 80:34 q
188+ (face 80:39 q
192− (apply 80:36 list (ref 80:42 tank))))))
189+ (apply 80:41 list (ref 80:47 tank))))
193− (mold 82:1 nail
190+ (cell 81:3
194− (cell 82:9
191+ (const 81:4 %rose)
195− (face 82:10 p (ref 82:12 hair))
192+ (face 81:10 p
196− (face 82:17 q (ref 82:19 tape))))
193+ (apply 81:12 trel (ref 81:18 tape) (ref 81:23 tape) (ref 81:28 tape)))
197− (mold 84:1 edge
194+ (face 81:34 q
198− (cell 84:9
195+ (apply 81:36 list (ref 81:42 tank))))))
199− (face 84:10 p (ref 84:12 hair))
196+ (mold 83:1 nail
200− (face 84:17 q
197+ (cell 83:9
201− (apply 84:19 unit
198+ (face 83:10 p (ref 83:12 hair))
202− (cell 84:25
199+ (face 83:17 q (ref 83:19 tape))))
203− (face 84:26 p (noun 84:28))
200+ (mold 85:1 edge
204− (face 84:30 q (ref 84:32 nail)))))))
201+ (cell 85:9
205− (mold 86:1 rule
202+ (face 85:10 p (ref 85:12 hair))
206− (fn 86:9 (ref 86:12 nail) (ref 86:17 edge)))
203+ (face 85:17 q
207− (mold 88:1 spot
204+ (apply 85:19 unit
208− (cell 88:9
205+ (cell 85:25
209− (face 88:10 p (ref 88:12 path))
206+ (face 85:26 p (noun 85:28))
210− (face 88:17 q (ref 88:19 pint))))
207+ (face 85:30 q (ref 85:32 nail)))))))
211− (mold 90:1 toon
208+ (mold 87:1 rule
212− (union 91:3
209+ (fn 87:9 (ref 87:12 nail) (ref 87:17 edge)))
213− (cell 91:3
210+ (mold 89:1 spot
214− (const 91:4 %0)
211+ (cell 89:9
215− (face 91:7 p (noun 91:9)))
212+ (face 89:10 p (ref 89:12 path))
213+ (face 89:17 q (ref 89:19 pint))))
214+ (mold 91:1 toon
215+ (union 92:3
216 (cell 92:3
216 (cell 92:3
217− (const 92:4 %1)
217+ (const 92:4 %0)
218 (face 92:7 p (noun 92:9)))
218 (face 92:7 p (noun 92:9)))
219 (cell 93:3
219 (cell 93:3
220− (const 93:4 %2)
220+ (const 93:4 %1)
221− (face 93:7 p
221+ (face 93:7 p (noun 93:9)))
222− (apply 93:9 list (ref 93:15 tank)))))))
222+ (cell 94:3
223+ (const 94:4 %2)
224+ (face 94:7 p
225+ (apply 94:9 list (ref 94:15 tank)))))))
tests/golden/prelude-list-helpers/source.jibb+4−3
@@ -37,9 +37,10 @@
37++ weld |= args=[(list A) (list A)]
37++ weld |= args=[(list A) (list A)]
38 ?- args
38 ?- args
39 [xs ys]
39 [xs ys]
40− ?- xs
40+ ^- (list A)
41− ~ ys
41+ ?- xs
42− [item rest] [item (weld rest ys)]
42+ ~ ys
43+ [item rest] [item (weld rest ys)]
43
44
44++ turn |= args=[(list A) $-(A B)]
45++ turn |= args=[(list A) $-(A B)]
45 ?- args
46 ?- args
tests/golden/prelude-list-helpers/tokens.txt+622−615
@@ -190,650 +190,657 @@
19039:9 name ys
19039:9 name ys
19139:11 tight glyph ]
19139:11 tight glyph ]
19240:7 INDENT
19240:7 INDENT
193−40:7 glyph ?-
193+40:7 glyph ^-
194−40:10 name xs
194+40:10 glyph (
195+40:11 tight name list
196+40:16 tvar A
197+40:17 tight glyph )
19541:9 INDENT
19841:9 INDENT
196−41:9 lit ~
199+41:9 glyph ?-
197−41:11 name ys
200+41:12 name xs
198−42:9 NEWLINE
201+42:11 INDENT
199−42:9 glyph [
202+42:11 lit ~
200−42:10 tight name item
203+42:13 name ys
201−42:15 name rest
204+43:11 NEWLINE
202−42:19 tight glyph ]
205+43:11 glyph [
203−42:21 glyph [
206+43:12 tight name item
204−42:22 tight name item
207+43:17 name rest
205−42:27 glyph (
208+43:21 tight glyph ]
206−42:28 tight name weld
209+43:23 glyph [
207−42:33 name rest
210+43:24 tight name item
208−42:38 name ys
211+43:29 glyph (
209−42:40 tight glyph )
212+43:30 tight name weld
210−42:41 tight glyph ]
213+43:35 name rest
211−44:1 DEDENT
214+43:40 name ys
212−44:1 DEDENT
215+43:42 tight glyph )
213−44:1 DEDENT
216+43:43 tight glyph ]
214−44:1 DEDENT
217+45:1 DEDENT
215−44:1 NEWLINE
218+45:1 DEDENT
216−44:1 glyph ++
219+45:1 DEDENT
217−44:4 name turn
220+45:1 DEDENT
218−44:9 glyph |=
221+45:1 DEDENT
219−44:12 name args
222+45:1 NEWLINE
220−44:16 tight glyph =
223+45:1 glyph ++
221−44:17 tight glyph [
224+45:4 name turn
222−44:18 tight glyph (
225+45:9 glyph |=
223−44:19 tight name list
226+45:12 name args
224−44:24 tvar A
227+45:16 tight glyph =
225−44:25 tight glyph )
228+45:17 tight glyph [
226−44:27 glyph $-(
229+45:18 tight glyph (
227−44:30 tight tvar A
230+45:19 tight name list
228−44:32 tvar B
231+45:24 tvar A
229−44:33 tight glyph )
232+45:25 tight glyph )
230−44:34 tight glyph ]
233+45:27 glyph $-(
231−45:3 INDENT
234+45:30 tight tvar A
232−45:3 glyph ?-
235+45:32 tvar B
233−45:6 name args
236+45:33 tight glyph )
234−46:5 INDENT
237+45:34 tight glyph ]
235−46:5 glyph [
238+46:3 INDENT
236−46:6 tight name xs
239+46:3 glyph ?-
237−46:9 name f
240+46:6 name args
238−46:10 tight glyph ]
241+47:5 INDENT
239−47:7 INDENT
242+47:5 glyph [
240−47:7 glyph ?-
243+47:6 tight name xs
241−47:10 name xs
244+47:9 name f
242−48:9 INDENT
245+47:10 tight glyph ]
243−48:9 lit ~
246+48:7 INDENT
244−48:11 lit ~
247+48:7 glyph ?-
245−49:9 NEWLINE
248+48:10 name xs
246−49:9 glyph [
249+49:9 INDENT
247−49:10 tight name item
250+49:9 lit ~
248−49:15 name rest
251+49:11 lit ~
249−49:19 tight glyph ]
252+50:9 NEWLINE
250−49:21 glyph [
253+50:9 glyph [
251−49:22 tight glyph (
254+50:10 tight name item
252−49:23 tight name f
255+50:15 name rest
253−49:25 name item
256+50:19 tight glyph ]
254−49:29 tight glyph )
257+50:21 glyph [
255−49:31 glyph (
258+50:22 tight glyph (
256−49:32 tight name turn
259+50:23 tight name f
257−49:37 name rest
260+50:25 name item
258−49:42 name f
261+50:29 tight glyph )
259−49:43 tight glyph )
262+50:31 glyph (
260−49:44 tight glyph ]
263+50:32 tight name turn
261−51:1 DEDENT
264+50:37 name rest
262−51:1 DEDENT
265+50:42 name f
263−51:1 DEDENT
266+50:43 tight glyph )
264−51:1 DEDENT
267+50:44 tight glyph ]
265−51:1 NEWLINE
268+52:1 DEDENT
266−51:1 glyph +$
269+52:1 DEDENT
267−51:4 name dime
270+52:1 DEDENT
268−51:9 glyph [
271+52:1 DEDENT
269−51:10 tight name p
272+52:1 NEWLINE
270−51:11 tight glyph =
273+52:1 glyph +$
271−51:12 tight aura @ta
274+52:4 name dime
272−51:16 name q
275+52:9 glyph [
273−51:17 tight glyph =
276+52:10 tight name p
274−51:18 tight aura @
277+52:11 tight glyph =
275−51:19 tight glyph ]
278+52:12 tight aura @ta
276−53:1 NEWLINE
279+52:16 name q
277−53:1 glyph +$
280+52:17 tight glyph =
278−53:4 name hair
281+52:18 tight aura @
279−53:9 glyph [
282+52:19 tight glyph ]
280−53:10 tight name p
283+54:1 NEWLINE
281−53:11 tight glyph =
284+54:1 glyph +$
282−53:12 tight aura @ud
285+54:4 name hair
283−53:16 name q
286+54:9 glyph [
284−53:17 tight glyph =
287+54:10 tight name p
285−53:18 tight aura @ud
288+54:11 tight glyph =
286−53:21 tight glyph ]
289+54:12 tight aura @ud
287−55:1 NEWLINE
290+54:16 name q
288−55:1 glyph +$
291+54:17 tight glyph =
289−55:4 name pint
292+54:18 tight aura @ud
290−55:9 glyph [
293+54:21 tight glyph ]
291−55:10 tight name p
294+56:1 NEWLINE
292−55:11 tight glyph =
295+56:1 glyph +$
293−55:12 tight glyph [
296+56:4 name pint
294−55:13 tight name p
297+56:9 glyph [
295−55:14 tight glyph =
298+56:10 tight name p
296−55:15 tight aura @
299+56:11 tight glyph =
297−55:17 name q
300+56:12 tight glyph [
298−55:18 tight glyph =
301+56:13 tight name p
299−55:19 tight aura @
302+56:14 tight glyph =
300−55:20 tight glyph ]
303+56:15 tight aura @
301−55:22 name q
304+56:17 name q
302−55:23 tight glyph =
305+56:18 tight glyph =
303−55:24 tight glyph [
306+56:19 tight aura @
304−55:25 tight name p
307+56:20 tight glyph ]
305−55:26 tight glyph =
308+56:22 name q
306−55:27 tight aura @
309+56:23 tight glyph =
307−55:29 name q
310+56:24 tight glyph [
308−55:30 tight glyph =
311+56:25 tight name p
309−55:31 tight aura @
312+56:26 tight glyph =
310−55:32 tight glyph ]
313+56:27 tight aura @
311−55:33 tight glyph ]
314+56:29 name q
312−57:1 NEWLINE
315+56:30 tight glyph =
313−57:1 glyph +$
316+56:31 tight aura @
314−57:4 name coin
317+56:32 tight glyph ]
315−58:3 INDENT
318+56:33 tight glyph ]
316−58:3 glyph [
319+58:1 NEWLINE
317−58:4 tight lit %$
320+58:1 glyph +$
318−58:7 name p
321+58:4 name coin
319−58:8 tight glyph =
322+59:3 INDENT
320−58:9 tight name dime
321−58:13 tight glyph ]
322−59:3 NEWLINE
32359:3 glyph [
32359:3 glyph [
324−59:4 tight lit %blob
324+59:4 tight lit %$
325−59:10 name p
325+59:7 name p
326−59:11 tight glyph =
326+59:8 tight glyph =
327−59:12 tight glyph *
327+59:9 tight name dime
32859:13 tight glyph ]
32859:13 tight glyph ]
32960:3 NEWLINE
32960:3 NEWLINE
33060:3 glyph [
33060:3 glyph [
331−60:4 tight lit %many
331+60:4 tight lit %blob
33260:10 name p
33260:10 name p
33360:11 tight glyph =
33360:11 tight glyph =
334−60:12 tight glyph (
334+60:12 tight glyph *
335−60:13 tight name list
335+60:13 tight glyph ]
336−60:18 name coin
336+61:3 NEWLINE
337−60:22 tight glyph )
337+61:3 glyph [
338−60:23 tight glyph ]
338+61:4 tight lit %many
339−62:1 DEDENT
339+61:10 name p
340−62:1 NEWLINE
340+61:11 tight glyph =
341−62:1 glyph +$
341+61:12 tight glyph (
342−62:4 name pair
342+61:13 tight name list
343−62:9 glyph |$
343+61:18 name coin
344−62:12 glyph [
344+61:22 tight glyph )
345−62:13 tight tvar A
345+61:23 tight glyph ]
346−62:15 tvar B
346+63:1 DEDENT
347−62:16 tight glyph ]
347+63:1 NEWLINE
348−62:18 glyph [
348+63:1 glyph +$
349−62:19 tight name p
349+63:4 name pair
350−62:20 tight glyph =
350+63:9 glyph |$
351−62:21 tight tvar A
351+63:12 glyph [
352−62:23 name q
352+63:13 tight tvar A
353−62:24 tight glyph =
353+63:15 tvar B
354−62:25 tight tvar B
354+63:16 tight glyph ]
355−62:26 tight glyph ]
355+63:18 glyph [
356−64:1 NEWLINE
356+63:19 tight name p
357−64:1 glyph +$
357+63:20 tight glyph =
358−64:4 name trel
358+63:21 tight tvar A
359−64:9 glyph |$
359+63:23 name q
360−64:12 glyph [
360+63:24 tight glyph =
361−64:13 tight tvar A
361+63:25 tight tvar B
362−64:15 tvar B
362+63:26 tight glyph ]
363−64:17 tvar C
363+65:1 NEWLINE
364−64:18 tight glyph ]
364+65:1 glyph +$
365−64:20 glyph [
365+65:4 name trel
366−64:21 tight name p
366+65:9 glyph |$
367−64:22 tight glyph =
367+65:12 glyph [
368−64:23 tight tvar A
368+65:13 tight tvar A
369−64:25 name q
369+65:15 tvar B
370−64:26 tight glyph =
370+65:17 tvar C
371−64:27 tight tvar B
371+65:18 tight glyph ]
372−64:29 name r
372+65:20 glyph [
373−64:30 tight glyph =
373+65:21 tight name p
374−64:31 tight tvar C
374+65:22 tight glyph =
375−64:32 tight glyph ]
375+65:23 tight tvar A
376−66:1 NEWLINE
376+65:25 name q
377−66:1 glyph +$
377+65:26 tight glyph =
378−66:4 name qual
378+65:27 tight tvar B
379−66:9 glyph |$
379+65:29 name r
380−66:12 glyph [
380+65:30 tight glyph =
381−66:13 tight tvar A
381+65:31 tight tvar C
382−66:15 tvar B
382+65:32 tight glyph ]
383−66:17 tvar C
383+67:1 NEWLINE
384−66:19 tvar D
384+67:1 glyph +$
385−66:20 tight glyph ]
385+67:4 name qual
386−66:22 glyph [
386+67:9 glyph |$
387−66:23 tight name p
387+67:12 glyph [
388−66:24 tight glyph =
388+67:13 tight tvar A
389−66:25 tight tvar A
389+67:15 tvar B
390−66:27 name q
390+67:17 tvar C
391−66:28 tight glyph =
391+67:19 tvar D
392−66:29 tight tvar B
392+67:20 tight glyph ]
393−66:31 name r
393+67:22 glyph [
394−66:32 tight glyph =
394+67:23 tight name p
395−66:33 tight tvar C
395+67:24 tight glyph =
396−66:35 name s
396+67:25 tight tvar A
397−66:36 tight glyph =
397+67:27 name q
398−66:37 tight tvar D
398+67:28 tight glyph =
399−66:38 tight glyph ]
399+67:29 tight tvar B
400−68:1 NEWLINE
400+67:31 name r
401−68:1 glyph +$
401+67:32 tight glyph =
402−68:4 name cord
402+67:33 tight tvar C
403−68:9 aura @t
403+67:35 name s
404−70:1 NEWLINE
404+67:36 tight glyph =
405−70:1 glyph +$
405+67:37 tight tvar D
406−70:4 name knot
406+67:38 tight glyph ]
407−70:9 aura @ta
407+69:1 NEWLINE
408−72:1 NEWLINE
408+69:1 glyph +$
409−72:1 glyph +$
409+69:4 name cord
410−72:4 name tape
410+69:9 aura @t
411−72:9 glyph (
411+71:1 NEWLINE
412−72:10 tight name list
412+71:1 glyph +$
413−72:15 aura @tD
413+71:4 name knot
414−72:18 tight glyph )
414+71:9 aura @ta
415−74:1 NEWLINE
415+73:1 NEWLINE
416−74:1 glyph +$
416+73:1 glyph +$
417−74:4 name path
417+73:4 name tape
418−74:9 glyph (
418+73:9 glyph (
419−74:10 tight name list
419+73:10 tight name list
420−74:15 name knot
420+73:15 aura @tD
421−74:19 tight glyph )
421+73:18 tight glyph )
422−76:1 NEWLINE
422+75:1 NEWLINE
423−76:1 glyph +$
423+75:1 glyph +$
424−76:4 name tank
424+75:4 name path
425−77:3 INDENT
425+75:9 glyph (
426−77:3 name cord
426+75:10 tight name list
427−78:3 NEWLINE
427+75:15 name knot
428−78:3 glyph [
428+75:19 tight glyph )
429−78:4 tight lit %leaf
429+77:1 NEWLINE
430−78:10 name p
430+77:1 glyph +$
431−78:11 tight glyph =
431+77:4 name tank
432−78:12 tight name tape
432+78:3 INDENT
433−78:16 tight glyph ]
433+78:3 name cord
43479:3 NEWLINE
43479:3 NEWLINE
43579:3 glyph [
43579:3 glyph [
436−79:4 tight lit %palm
436+79:4 tight lit %leaf
43779:10 name p
43779:10 name p
43879:11 tight glyph =
43879:11 tight glyph =
439−79:12 tight glyph (
439+79:12 tight name tape
440−79:13 tight name qual
440+79:16 tight glyph ]
441−79:18 name tape
442−79:23 name tape
443−79:28 name tape
444−79:33 name tape
445−79:37 tight glyph )
446−79:39 name q
447−79:40 tight glyph =
448−79:41 tight glyph (
449−79:42 tight name list
450−79:47 name tank
451−79:51 tight glyph )
452−79:52 tight glyph ]
45380:3 NEWLINE
44180:3 NEWLINE
45480:3 glyph [
44280:3 glyph [
455−80:4 tight lit %rose
443+80:4 tight lit %palm
45680:10 name p
44480:10 name p
45780:11 tight glyph =
44580:11 tight glyph =
45880:12 tight glyph (
44680:12 tight glyph (
459−80:13 tight name trel
447+80:13 tight name qual
46080:18 name tape
44880:18 name tape
46180:23 name tape
44980:23 name tape
46280:28 name tape
45080:28 name tape
463−80:32 tight glyph )
451+80:33 name tape
464−80:34 name q
452+80:37 tight glyph )
465−80:35 tight glyph =
453+80:39 name q
466−80:36 tight glyph (
454+80:40 tight glyph =
467−80:37 tight name list
455+80:41 tight glyph (
468−80:42 name tank
456+80:42 tight name list
469−80:46 tight glyph )
457+80:47 name tank
470−80:47 tight glyph ]
458+80:51 tight glyph )
471−82:1 DEDENT
459+80:52 tight glyph ]
472−82:1 NEWLINE
460+81:3 NEWLINE
473−82:1 glyph +$
461+81:3 glyph [
474−82:4 name nail
462+81:4 tight lit %rose
475−82:9 glyph [
463+81:10 name p
476−82:10 tight name p
464+81:11 tight glyph =
477−82:11 tight glyph =
465+81:12 tight glyph (
478−82:12 tight name hair
466+81:13 tight name trel
479−82:17 name q
467+81:18 name tape
480−82:18 tight glyph =
468+81:23 name tape
481−82:19 tight name tape
469+81:28 name tape
482−82:23 tight glyph ]
470+81:32 tight glyph )
483−84:1 NEWLINE
471+81:34 name q
484−84:1 glyph +$
472+81:35 tight glyph =
485−84:4 name edge
473+81:36 tight glyph (
486−84:9 glyph [
474+81:37 tight name list
487−84:10 tight name p
475+81:42 name tank
488−84:11 tight glyph =
476+81:46 tight glyph )
489−84:12 tight name hair
477+81:47 tight glyph ]
490−84:17 name q
478+83:1 DEDENT
491−84:18 tight glyph =
479+83:1 NEWLINE
492−84:19 tight glyph (
480+83:1 glyph +$
493−84:20 tight name unit
481+83:4 name nail
494−84:25 glyph [
482+83:9 glyph [
495−84:26 tight name p
483+83:10 tight name p
496−84:27 tight glyph =
484+83:11 tight glyph =
497−84:28 tight glyph *
485+83:12 tight name hair
498−84:30 name q
486+83:17 name q
499−84:31 tight glyph =
487+83:18 tight glyph =
500−84:32 tight name nail
488+83:19 tight name tape
501−84:36 tight glyph ]
489+83:23 tight glyph ]
502−84:37 tight glyph )
490+85:1 NEWLINE
503−84:38 tight glyph ]
491+85:1 glyph +$
504−86:1 NEWLINE
492+85:4 name edge
505−86:1 glyph +$
493+85:9 glyph [
506−86:4 name rule
494+85:10 tight name p
507−86:9 glyph $-(
495+85:11 tight glyph =
508−86:12 tight name nail
496+85:12 tight name hair
509−86:17 name edge
497+85:17 name q
510−86:21 tight glyph )
498+85:18 tight glyph =
511−88:1 NEWLINE
499+85:19 tight glyph (
512−88:1 glyph +$
500+85:20 tight name unit
513−88:4 name spot
501+85:25 glyph [
514−88:9 glyph [
502+85:26 tight name p
515−88:10 tight name p
503+85:27 tight glyph =
516−88:11 tight glyph =
504+85:28 tight glyph *
517−88:12 tight name path
505+85:30 name q
518−88:17 name q
506+85:31 tight glyph =
519−88:18 tight glyph =
507+85:32 tight name nail
520−88:19 tight name pint
508+85:36 tight glyph ]
521−88:23 tight glyph ]
509+85:37 tight glyph )
522−90:1 NEWLINE
510+85:38 tight glyph ]
523−90:1 glyph +$
511+87:1 NEWLINE
524−90:4 name toon
512+87:1 glyph +$
525−91:3 INDENT
513+87:4 name rule
526−91:3 glyph [
514+87:9 glyph $-(
527−91:4 tight lit %0
515+87:12 tight name nail
528−91:7 name p
516+87:17 name edge
529−91:8 tight glyph =
517+87:21 tight glyph )
530−91:9 tight glyph *
518+89:1 NEWLINE
531−91:10 tight glyph ]
519+89:1 glyph +$
532−92:3 NEWLINE
520+89:4 name spot
521+89:9 glyph [
522+89:10 tight name p
523+89:11 tight glyph =
524+89:12 tight name path
525+89:17 name q
526+89:18 tight glyph =
527+89:19 tight name pint
528+89:23 tight glyph ]
529+91:1 NEWLINE
530+91:1 glyph +$
531+91:4 name toon
532+92:3 INDENT
53392:3 glyph [
53392:3 glyph [
534−92:4 tight lit %1
534+92:4 tight lit %0
53592:7 name p
53592:7 name p
53692:8 tight glyph =
53692:8 tight glyph =
53792:9 tight glyph *
53792:9 tight glyph *
53892:10 tight glyph ]
53892:10 tight glyph ]
53993:3 NEWLINE
53993:3 NEWLINE
54093:3 glyph [
54093:3 glyph [
541−93:4 tight lit %2
541+93:4 tight lit %1
54293:7 name p
54293:7 name p
54393:8 tight glyph =
54393:8 tight glyph =
544−93:9 tight glyph (
544+93:9 tight glyph *
545−93:10 tight name list
545+93:10 tight glyph ]
546−93:15 name tank
546+94:3 NEWLINE
547−93:19 tight glyph )
547+94:3 glyph [
548−93:20 tight glyph ]
548+94:4 tight lit %2
549−95:1 DEDENT
549+94:7 name p
550−95:1 NEWLINE
550+94:8 tight glyph =
551−95:1 glyph +$
551+94:9 tight glyph (
552−95:4 name like
552+94:10 tight name list
553−95:9 glyph |$
553+94:15 name tank
554−95:12 glyph [
554+94:19 tight glyph )
555−95:13 tight tvar A
555+94:20 tight glyph ]
556−95:14 tight glyph ]
556+96:1 DEDENT
557−95:16 glyph [
557+96:1 NEWLINE
558−95:17 tight name p
558+96:1 glyph +$
559−95:18 tight glyph =
559+96:4 name like
560−95:19 tight name hair
560+96:9 glyph |$
561−95:24 name q
561+96:12 glyph [
562−95:25 tight glyph =
562+96:13 tight tvar A
563−95:26 tight glyph (
563+96:14 tight glyph ]
564−95:27 tight name unit
564+96:16 glyph [
565−95:32 glyph [
565+96:17 tight name p
566−95:33 tight name p
566+96:18 tight glyph =
567−95:34 tight glyph =
567+96:19 tight name hair
568−95:35 tight tvar A
568+96:24 name q
569−95:37 name q
569+96:25 tight glyph =
570−95:38 tight glyph =
570+96:26 tight glyph (
571−95:39 tight name nail
571+96:27 tight name unit
572−95:43 tight glyph ]
572+96:32 glyph [
573−95:44 tight glyph )
573+96:33 tight name p
574−95:45 tight glyph ]
574+96:34 tight glyph =
575−97:1 NEWLINE
575+96:35 tight tvar A
576−97:1 glyph ++
576+96:37 name q
577−97:4 name wonk
577+96:38 tight glyph =
578−97:9 glyph |=
578+96:39 tight name nail
579−97:12 name veq
579+96:43 tight glyph ]
580−97:15 tight glyph =
580+96:44 tight glyph )
581−97:16 tight glyph (
581+96:45 tight glyph ]
582−97:17 tight name like
582+98:1 NEWLINE
583−97:22 tvar A
583+98:1 glyph ++
584−97:23 tight glyph )
584+98:4 name wonk
585−98:3 INDENT
585+98:9 glyph |=
586−98:3 glyph ?-
586+98:12 name veq
587−98:6 wing q.veq
587+98:15 tight glyph =
588−99:5 INDENT
588+98:16 tight glyph (
589−99:5 lit ~
589+98:17 tight name like
590−99:7 glyph !!
590+98:22 tvar A
591−100:5 NEWLINE
591+98:23 tight glyph )
592−100:5 glyph [
592+99:3 INDENT
593−100:6 tight lit ~
593+99:3 glyph ?-
594−100:8 name product
594+99:6 wing q.veq
595−100:15 tight glyph ]
595+100:5 INDENT
596−100:17 wing p.product
596+100:5 lit ~
597−102:1 DEDENT
597+100:7 glyph !!
598−102:1 DEDENT
598+101:5 NEWLINE
599−102:1 NEWLINE
599+101:5 glyph [
600−102:1 glyph +$
600+101:6 tight lit ~
601−102:4 name lone
601+101:8 name product
602−102:9 glyph |$
602+101:15 tight glyph ]
603−102:12 glyph [
603+101:17 wing p.product
604−102:13 tight tvar A
604+103:1 DEDENT
605−102:14 tight glyph ]
605+103:1 DEDENT
606−102:16 glyph [
606+103:1 NEWLINE
607−102:17 tight name p
607+103:1 glyph +$
608−102:18 tight glyph =
608+103:4 name lone
609−102:19 tight tvar A
609+103:9 glyph |$
610−102:20 tight glyph ]
610+103:12 glyph [
611−104:1 NEWLINE
611+103:13 tight tvar A
612−104:1 glyph +$
612+103:14 tight glyph ]
613−104:4 name lest
613+103:16 glyph [
614−104:9 glyph |$
614+103:17 tight name p
615−104:12 glyph [
615+103:18 tight glyph =
616−104:13 tight tvar A
616+103:19 tight tvar A
617−104:14 tight glyph ]
617+103:20 tight glyph ]
618−104:16 glyph [
618+105:1 NEWLINE
619−104:17 tight name i
619+105:1 glyph +$
620−104:18 tight glyph =
620+105:4 name lest
621−104:19 tight tvar A
621+105:9 glyph |$
622−104:21 name t
622+105:12 glyph [
623−104:22 tight glyph =
623+105:13 tight tvar A
624−104:23 tight glyph (
624+105:14 tight glyph ]
625−104:24 tight name list
625+105:16 glyph [
626−104:29 tvar A
626+105:17 tight name i
627−104:30 tight glyph )
627+105:18 tight glyph =
628−104:31 tight glyph ]
628+105:19 tight tvar A
629−106:1 NEWLINE
629+105:21 name t
630−106:1 glyph +$
630+105:22 tight glyph =
631−106:4 name pole
631+105:23 tight glyph (
632−106:9 glyph |$
632+105:24 tight name list
633−106:12 glyph [
633+105:29 tvar A
634−106:13 tight tvar A
634+105:30 tight glyph )
635−106:14 tight glyph ]
635+105:31 tight glyph ]
636−107:3 INDENT
636+107:1 NEWLINE
637−107:3 lit ~
637+107:1 glyph +$
638−108:3 NEWLINE
638+107:4 name pole
639−108:3 glyph [
639+107:9 glyph |$
640−108:4 tight tvar A
640+107:12 glyph [
641−108:6 glyph (
641+107:13 tight tvar A
642−108:7 tight name pole
642+107:14 tight glyph ]
643−108:12 tvar A
643+108:3 INDENT
644−108:13 tight glyph )
644+108:3 lit ~
645−108:14 tight glyph ]
645+109:3 NEWLINE
646−110:1 DEDENT
646+109:3 glyph [
647−110:1 NEWLINE
647+109:4 tight tvar A
648−110:1 glyph +$
648+109:6 glyph (
649−110:4 name quip
649+109:7 tight name pole
650−110:9 glyph |$
650+109:12 tvar A
651−110:12 glyph [
651+109:13 tight glyph )
652−110:13 tight tvar A
652+109:14 tight glyph ]
653−110:15 tvar B
653+111:1 DEDENT
654−110:16 tight glyph ]
654+111:1 NEWLINE
655−110:18 glyph [
655+111:1 glyph +$
656−110:19 tight glyph (
656+111:4 name quip
657−110:20 tight name list
657+111:9 glyph |$
658−110:25 tvar A
658+111:12 glyph [
659−110:26 tight glyph )
659+111:13 tight tvar A
660−110:28 tvar B
660+111:15 tvar B
661−110:29 tight glyph ]
661+111:16 tight glyph ]
662−112:1 NEWLINE
662+111:18 glyph [
663−112:1 glyph +$
663+111:19 tight glyph (
664−112:4 name tree
664+111:20 tight name list
665−112:9 glyph |$
665+111:25 tvar A
666−112:12 glyph [
666+111:26 tight glyph )
667−112:13 tight tvar A
667+111:28 tvar B
668−112:14 tight glyph ]
668+111:29 tight glyph ]
669−113:3 INDENT
669+113:1 NEWLINE
670−113:3 lit ~
670+113:1 glyph +$
671−114:3 NEWLINE
671+113:4 name tree
672−114:3 glyph [
672+113:9 glyph |$
673−114:4 tight name n
673+113:12 glyph [
674−114:5 tight glyph =
674+113:13 tight tvar A
675−114:6 tight tvar A
675+113:14 tight glyph ]
676−114:8 name l
676+114:3 INDENT
677−114:9 tight glyph =
677+114:3 lit ~
678−114:10 tight glyph (
678+115:3 NEWLINE
679−114:11 tight name tree
679+115:3 glyph [
680−114:16 tvar A
680+115:4 tight name n
681−114:17 tight glyph )
681+115:5 tight glyph =
682−114:19 name r
682+115:6 tight tvar A
683−114:20 tight glyph =
683+115:8 name l
684−114:21 tight glyph (
684+115:9 tight glyph =
685−114:22 tight name tree
685+115:10 tight glyph (
686−114:27 tvar A
686+115:11 tight name tree
687−114:28 tight glyph )
687+115:16 tvar A
688−114:29 tight glyph ]
688+115:17 tight glyph )
689−116:1 DEDENT
689+115:19 name r
690−116:1 NEWLINE
690+115:20 tight glyph =
691−116:1 glyph +$
691+115:21 tight glyph (
692−116:4 name each
692+115:22 tight name tree
693−116:9 glyph |$
693+115:27 tvar A
694−116:12 glyph [
694+115:28 tight glyph )
695−116:13 tight tvar A
695+115:29 tight glyph ]
696−116:15 tvar B
696+117:1 DEDENT
697−116:16 tight glyph ]
697+117:1 NEWLINE
698−117:3 INDENT
698+117:1 glyph +$
699−117:3 glyph [
699+117:4 name each
700−117:4 tight lit %|
700+117:9 glyph |$
701−117:7 name p
701+117:12 glyph [
702−117:8 tight glyph =
702+117:13 tight tvar A
703−117:9 tight tvar B
703+117:15 tvar B
704−117:10 tight glyph ]
704+117:16 tight glyph ]
705−118:3 NEWLINE
705+118:3 INDENT
706118:3 glyph [
706118:3 glyph [
707−118:4 tight lit %&
707+118:4 tight lit %|
708118:7 name p
708118:7 name p
709118:8 tight glyph =
709118:8 tight glyph =
710−118:9 tight tvar A
710+118:9 tight tvar B
711118:10 tight glyph ]
711118:10 tight glyph ]
712−120:1 DEDENT
712+119:3 NEWLINE
713−120:1 NEWLINE
713+119:3 glyph [
714−120:1 glyph +$
714+119:4 tight lit %&
715−120:4 name bloq
715+119:7 name p
716−120:9 aura @
716+119:8 tight glyph =
717−122:1 NEWLINE
717+119:9 tight tvar A
718−122:1 glyph ++
718+119:10 tight glyph ]
719−122:4 name some
719+121:1 DEDENT
720−122:9 glyph |=
720+121:1 NEWLINE
721−122:12 name item
721+121:1 glyph +$
722−122:16 tight glyph =
722+121:4 name bloq
723−122:17 tight tvar A
723+121:9 aura @
724−122:19 glyph `
724+123:1 NEWLINE
725−122:20 tight name item
725+123:1 glyph ++
726−124:1 NEWLINE
726+123:4 name some
727−124:1 glyph ++
727+123:9 glyph |=
728−124:4 name lure
728+123:12 name item
729−124:9 glyph |=
729+123:16 tight glyph =
730−124:12 name item
730+123:17 tight tvar A
731−124:16 tight glyph =
731+123:19 glyph `
732−124:17 tight tvar A
732+123:20 tight name item
733−125:3 INDENT
733+125:1 NEWLINE
734−125:3 glyph ^-
734+125:1 glyph ++
735−125:6 glyph (
735+125:4 name lure
736−125:7 tight name list
736+125:9 glyph |=
737−125:12 tvar A
737+125:12 name item
738−125:13 tight glyph )
738+125:16 tight glyph =
739−125:15 glyph [
739+125:17 tight tvar A
740−125:16 tight name item
740+126:3 INDENT
741−125:21 lit ~
741+126:3 glyph ^-
742−125:22 tight glyph ]
742+126:6 glyph (
743−127:1 DEDENT
743+126:7 tight name list
744−127:1 NEWLINE
744+126:12 tvar A
745−127:1 glyph ++
745+126:13 tight glyph )
746−127:4 name snoc
746+126:15 glyph [
747−127:9 glyph |=
747+126:16 tight name item
748−127:12 name args
748+126:21 lit ~
749−127:16 tight glyph =
749+126:22 tight glyph ]
750−127:17 tight glyph [
750+128:1 DEDENT
751−127:18 tight glyph (
751+128:1 NEWLINE
752−127:19 tight name list
752+128:1 glyph ++
753−127:24 tvar A
753+128:4 name snoc
754−127:25 tight glyph )
754+128:9 glyph |=
755−127:27 tvar A
755+128:12 name args
756−127:28 tight glyph ]
756+128:16 tight glyph =
757−128:3 INDENT
757+128:17 tight glyph [
758−128:3 glyph ?-
758+128:18 tight glyph (
759−128:6 name args
759+128:19 tight name list
760−129:5 INDENT
760+128:24 tvar A
761−129:5 glyph [
761+128:25 tight glyph )
762−129:6 tight name xs
762+128:27 tvar A
763−129:9 name item
763+128:28 tight glyph ]
764−129:13 tight glyph ]
764+129:3 INDENT
765−129:15 glyph (
765+129:3 glyph ?-
766−129:16 tight name weld
766+129:6 name args
767−129:21 name xs
767+130:5 INDENT
768−129:24 glyph [
768+130:5 glyph [
769−129:25 tight name item
769+130:6 tight name xs
770−129:30 lit ~
770+130:9 name item
771−129:31 tight glyph ]
771+130:13 tight glyph ]
772−129:32 tight glyph )
772+130:15 glyph (
773−131:1 DEDENT
773+130:16 tight name weld
774−131:1 DEDENT
774+130:21 name xs
775−131:1 NEWLINE
775+130:24 glyph [
776−131:1 glyph ++
776+130:25 tight name item
777−131:4 name flop
777+130:30 lit ~
778−131:9 glyph |=
778+130:31 tight glyph ]
779−131:12 name xs
779+130:32 tight glyph )
780−131:14 tight glyph =
780+132:1 DEDENT
781−131:15 tight glyph (
781+132:1 DEDENT
782−131:16 tight name list
782+132:1 NEWLINE
783−131:21 tvar A
783+132:1 glyph ++
784−131:22 tight glyph )
784+132:4 name flop
785−132:3 INDENT
785+132:9 glyph |=
786−132:3 glyph ++
786+132:12 name xs
787−132:6 name reverse-into
787+132:14 tight glyph =
788−132:19 glyph |=
788+132:15 tight glyph (
789−132:22 name args
789+132:16 tight name list
790−132:26 tight glyph =
790+132:21 tvar A
791−132:27 tight glyph [
791+132:22 tight glyph )
792−132:28 tight glyph (
792+133:3 INDENT
793−132:29 tight name list
793+133:3 glyph ++
794−132:34 tvar A
794+133:6 name reverse-into
795−132:35 tight glyph )
795+133:19 glyph |=
796−132:37 glyph (
796+133:22 name args
797−132:38 tight name list
797+133:26 tight glyph =
798−132:43 tvar A
798+133:27 tight glyph [
799−132:44 tight glyph )
799+133:28 tight glyph (
800−132:45 tight glyph ]
800+133:29 tight name list
801−133:5 INDENT
801+133:34 tvar A
802−133:5 glyph ?-
802+133:35 tight glyph )
803−133:8 name args
803+133:37 glyph (
804−134:7 INDENT
804+133:38 tight name list
805−134:7 glyph [
805+133:43 tvar A
806−134:8 tight name rest
806+133:44 tight glyph )
807−134:13 name acc
807+133:45 tight glyph ]
808−134:16 tight glyph ]
808+134:5 INDENT
809−135:9 INDENT
809+134:5 glyph ?-
810−135:9 glyph ?-
810+134:8 name args
811−135:12 name rest
811+135:7 INDENT
812−136:11 INDENT
812+135:7 glyph [
813−136:11 lit ~
813+135:8 tight name rest
814−136:13 name acc
814+135:13 name acc
815−137:11 NEWLINE
815+135:16 tight glyph ]
816−137:11 glyph [
816+136:9 INDENT
817−137:12 tight name item
817+136:9 glyph ?-
818−137:17 name more
818+136:12 name rest
819−137:21 tight glyph ]
819+137:11 INDENT
820−137:23 glyph (
820+137:11 lit ~
821−137:24 tight name reverse-into
821+137:13 name acc
822−137:37 name more
822+138:11 NEWLINE
823−137:42 glyph [
823+138:11 glyph [
824−137:43 tight name item
824+138:12 tight name item
825−137:48 name acc
825+138:17 name more
826−137:51 tight glyph ]
826+138:21 tight glyph ]
827−137:52 tight glyph )
827+138:23 glyph (
828−138:3 DEDENT
828+138:24 tight name reverse-into
829−138:3 DEDENT
829+138:37 name more
830−138:3 DEDENT
830+138:42 glyph [
831−138:3 DEDENT
831+138:43 tight name item
832−138:3 NEWLINE
832+138:48 name acc
833−138:3 glyph (
833+138:51 tight glyph ]
834−138:4 tight name reverse-into
834+138:52 tight glyph )
835−138:17 name xs
835+139:3 DEDENT
836−138:20 lit ~
836+139:3 DEDENT
837−138:21 tight glyph )
837+139:3 DEDENT
838−138:22 DEDENT
838+139:3 DEDENT
839−138:22 NEWLINE
839+139:3 NEWLINE
840+139:3 glyph (
841+139:4 tight name reverse-into
842+139:17 name xs
843+139:20 lit ~
844+139:21 tight glyph )
845+139:22 DEDENT
846+139:22 NEWLINE
tests/golden/prelude-list-helpers/tree.txt+245−242
@@ -87,254 +87,257 @@
87 (arm 39:5
87 (arm 39:5
88 (cell 39:5 (bind 39:6 xs) (bind 39:9 ys))
88 (cell 39:5 (bind 39:6 xs) (bind 39:9 ys))
89 (body 40:7
89 (body 40:7
90− (branch 40:7
90+ (cast 40:7
91− (wing 40:10 xs)
91+ (apply 40:10 list (tvar 40:16 A))
92− (arm 41:9 (lit 41:9 ~) (wing 41:11 ys))
92+ (body 41:9
93− (arm 42:9
93+ (branch 41:9
94− (cell 42:9 (bind 42:10 item) (bind 42:15 rest))
94+ (wing 41:12 xs)
95− (tuple 42:21
95+ (arm 42:11 (lit 42:11 ~) (wing 42:13 ys))
96− (wing 42:22 item)
96+ (arm 43:11
97− (group 42:27
97+ (cell 43:11 (bind 43:12 item) (bind 43:17 rest))
98− (call 42:28 (wing 42:28 weld) (wing 42:33 rest) (wing 42:38 ys))))))))))))
98+ (tuple 43:23
99− (value 44:1 turn
99+ (wing 43:24 item)
100− (gate 44:9
100+ (group 43:29
101− (face 44:12 args
101+ (call 43:30 (wing 43:30 weld) (wing 43:35 rest) (wing 43:40 ys))))))))))))))
102− (cell 44:17
102+ (value 45:1 turn
103− (apply 44:18 list (tvar 44:24 A))
103+ (gate 45:9
104− (fn 44:27 (tvar 44:30 A) (tvar 44:32 B))))
104+ (face 45:12 args
105− (body 45:3
105+ (cell 45:17
106− (branch 45:3
106+ (apply 45:18 list (tvar 45:24 A))
107− (wing 45:6 args)
107+ (fn 45:27 (tvar 45:30 A) (tvar 45:32 B))))
108− (arm 46:5
108+ (body 46:3
109− (cell 46:5 (bind 46:6 xs) (bind 46:9 f))
109+ (branch 46:3
110− (body 47:7
110+ (wing 46:6 args)
111− (branch 47:7
111+ (arm 47:5
112− (wing 47:10 xs)
112+ (cell 47:5 (bind 47:6 xs) (bind 47:9 f))
113− (arm 48:9 (lit 48:9 ~) (lit 48:11 ~))
113+ (body 48:7
114− (arm 49:9
114+ (branch 48:7
115− (cell 49:9 (bind 49:10 item) (bind 49:15 rest))
115+ (wing 48:10 xs)
116− (tuple 49:21
116+ (arm 49:9 (lit 49:9 ~) (lit 49:11 ~))
117− (group 49:22
117+ (arm 50:9
118− (call 49:23 (wing 49:23 f) (wing 49:25 item)))
118+ (cell 50:9 (bind 50:10 item) (bind 50:15 rest))
119− (group 49:31
119+ (tuple 50:21
120− (call 49:32 (wing 49:32 turn) (wing 49:37 rest) (wing 49:42 f))))))))))))
120+ (group 50:22
121− (mold 51:1 dime
121+ (call 50:23 (wing 50:23 f) (wing 50:25 item)))
122− (cell 51:9
122+ (group 50:31
123− (face 51:10 p (aura 51:12 @ta))
123+ (call 50:32 (wing 50:32 turn) (wing 50:37 rest) (wing 50:42 f))))))))))))
124− (face 51:16 q (aura 51:18 @))))
124+ (mold 52:1 dime
125− (mold 53:1 hair
125+ (cell 52:9
126− (cell 53:9
126+ (face 52:10 p (aura 52:12 @ta))
127− (face 53:10 p (aura 53:12 @ud))
127+ (face 52:16 q (aura 52:18 @))))
128− (face 53:16 q (aura 53:18 @ud))))
128+ (mold 54:1 hair
129− (mold 55:1 pint
129+ (cell 54:9
130− (cell 55:9
130+ (face 54:10 p (aura 54:12 @ud))
131− (face 55:10 p
131+ (face 54:16 q (aura 54:18 @ud))))
132− (cell 55:12
132+ (mold 56:1 pint
133− (face 55:13 p (aura 55:15 @))
133+ (cell 56:9
134− (face 55:17 q (aura 55:19 @))))
134+ (face 56:10 p
135− (face 55:22 q
135+ (cell 56:12
136− (cell 55:24
136+ (face 56:13 p (aura 56:15 @))
137− (face 55:25 p (aura 55:27 @))
137+ (face 56:17 q (aura 56:19 @))))
138− (face 55:29 q (aura 55:31 @))))))
138+ (face 56:22 q
139− (mold 57:1 coin
139+ (cell 56:24
140− (union 58:3
140+ (face 56:25 p (aura 56:27 @))
141− (cell 58:3
141+ (face 56:29 q (aura 56:31 @))))))
142− (const 58:4 %$)
142+ (mold 58:1 coin
143− (face 58:7 p (ref 58:9 dime)))
143+ (union 59:3
144 (cell 59:3
144 (cell 59:3
145− (const 59:4 %blob)
145+ (const 59:4 %$)
146− (face 59:10 p (noun 59:12)))
146+ (face 59:7 p (ref 59:9 dime)))
147 (cell 60:3
147 (cell 60:3
148− (const 60:4 %many)
148+ (const 60:4 %blob)
149− (face 60:10 p
149+ (face 60:10 p (noun 60:12)))
150− (apply 60:12 list (ref 60:18 coin))))))
150+ (cell 61:3
151− (mold 62:1 pair
151+ (const 61:4 %many)
152− (generic 62:9 A B
152+ (face 61:10 p
153− (cell 62:18
153+ (apply 61:12 list (ref 61:18 coin))))))
154− (face 62:19 p (tvar 62:21 A))
154+ (mold 63:1 pair
155− (face 62:23 q (tvar 62:25 B)))))
155+ (generic 63:9 A B
156− (mold 64:1 trel
156+ (cell 63:18
157− (generic 64:9 A B C
157+ (face 63:19 p (tvar 63:21 A))
158− (cell 64:20
158+ (face 63:23 q (tvar 63:25 B)))))
159− (face 64:21 p (tvar 64:23 A))
159+ (mold 65:1 trel
160− (face 64:25 q (tvar 64:27 B))
160+ (generic 65:9 A B C
161− (face 64:29 r (tvar 64:31 C)))))
161+ (cell 65:20
162− (mold 66:1 qual
162+ (face 65:21 p (tvar 65:23 A))
163− (generic 66:9 A B C D
163+ (face 65:25 q (tvar 65:27 B))
164− (cell 66:22
164+ (face 65:29 r (tvar 65:31 C)))))
165− (face 66:23 p (tvar 66:25 A))
165+ (mold 67:1 qual
166− (face 66:27 q (tvar 66:29 B))
166+ (generic 67:9 A B C D
167− (face 66:31 r (tvar 66:33 C))
167+ (cell 67:22
168− (face 66:35 s (tvar 66:37 D)))))
168+ (face 67:23 p (tvar 67:25 A))
169− (mold 68:1 cord (aura 68:9 @t))
169+ (face 67:27 q (tvar 67:29 B))
170− (mold 70:1 knot (aura 70:9 @ta))
170+ (face 67:31 r (tvar 67:33 C))
171− (mold 72:1 tape
171+ (face 67:35 s (tvar 67:37 D)))))
172− (apply 72:9 list (aura 72:15 @tD)))
172+ (mold 69:1 cord (aura 69:9 @t))
173− (mold 74:1 path
173+ (mold 71:1 knot (aura 71:9 @ta))
174− (apply 74:9 list (ref 74:15 knot)))
174+ (mold 73:1 tape
175− (mold 76:1 tank
175+ (apply 73:9 list (aura 73:15 @tD)))
176− (union 77:3
176+ (mold 75:1 path
177− (ref 77:3 cord)
177+ (apply 75:9 list (ref 75:15 knot)))
178− (cell 78:3
178+ (mold 77:1 tank
179− (const 78:4 %leaf)
179+ (union 78:3
180− (face 78:10 p (ref 78:12 tape)))
180+ (ref 78:3 cord)
181 (cell 79:3
181 (cell 79:3
182− (const 79:4 %palm)
182+ (const 79:4 %leaf)
183− (face 79:10 p
183+ (face 79:10 p (ref 79:12 tape)))
184− (apply 79:12 qual (ref 79:18 tape) (ref 79:23 tape) (ref 79:28 tape) (ref 79:33 tape)))
185− (face 79:39 q
186− (apply 79:41 list (ref 79:47 tank))))
187 (cell 80:3
184 (cell 80:3
188− (const 80:4 %rose)
185+ (const 80:4 %palm)
189 (face 80:10 p
186 (face 80:10 p
190− (apply 80:12 trel (ref 80:18 tape) (ref 80:23 tape) (ref 80:28 tape)))
187+ (apply 80:12 qual (ref 80:18 tape) (ref 80:23 tape) (ref 80:28 tape) (ref 80:33 tape)))
191− (face 80:34 q
188+ (face 80:39 q
192− (apply 80:36 list (ref 80:42 tank))))))
189+ (apply 80:41 list (ref 80:47 tank))))
193− (mold 82:1 nail
190+ (cell 81:3
194− (cell 82:9
191+ (const 81:4 %rose)
195− (face 82:10 p (ref 82:12 hair))
192+ (face 81:10 p
196− (face 82:17 q (ref 82:19 tape))))
193+ (apply 81:12 trel (ref 81:18 tape) (ref 81:23 tape) (ref 81:28 tape)))
197− (mold 84:1 edge
194+ (face 81:34 q
198− (cell 84:9
195+ (apply 81:36 list (ref 81:42 tank))))))
199− (face 84:10 p (ref 84:12 hair))
196+ (mold 83:1 nail
200− (face 84:17 q
197+ (cell 83:9
201− (apply 84:19 unit
198+ (face 83:10 p (ref 83:12 hair))
202− (cell 84:25
199+ (face 83:17 q (ref 83:19 tape))))
203− (face 84:26 p (noun 84:28))
200+ (mold 85:1 edge
204− (face 84:30 q (ref 84:32 nail)))))))
201+ (cell 85:9
205− (mold 86:1 rule
202+ (face 85:10 p (ref 85:12 hair))
206− (fn 86:9 (ref 86:12 nail) (ref 86:17 edge)))
203+ (face 85:17 q
207− (mold 88:1 spot
204+ (apply 85:19 unit
208− (cell 88:9
205+ (cell 85:25
209− (face 88:10 p (ref 88:12 path))
206+ (face 85:26 p (noun 85:28))
210− (face 88:17 q (ref 88:19 pint))))
207+ (face 85:30 q (ref 85:32 nail)))))))
211− (mold 90:1 toon
208+ (mold 87:1 rule
212− (union 91:3
209+ (fn 87:9 (ref 87:12 nail) (ref 87:17 edge)))
213− (cell 91:3
210+ (mold 89:1 spot
214− (const 91:4 %0)
211+ (cell 89:9
215− (face 91:7 p (noun 91:9)))
212+ (face 89:10 p (ref 89:12 path))
213+ (face 89:17 q (ref 89:19 pint))))
214+ (mold 91:1 toon
215+ (union 92:3
216 (cell 92:3
216 (cell 92:3
217− (const 92:4 %1)
217+ (const 92:4 %0)
218 (face 92:7 p (noun 92:9)))
218 (face 92:7 p (noun 92:9)))
219 (cell 93:3
219 (cell 93:3
220− (const 93:4 %2)
220+ (const 93:4 %1)
221− (face 93:7 p
221+ (face 93:7 p (noun 93:9)))
222− (apply 93:9 list (ref 93:15 tank))))))
222+ (cell 94:3
223− (mold 95:1 like
223+ (const 94:4 %2)
224− (generic 95:9 A
224+ (face 94:7 p
225− (cell 95:16
225+ (apply 94:9 list (ref 94:15 tank))))))
226− (face 95:17 p (ref 95:19 hair))
226+ (mold 96:1 like
227− (face 95:24 q
227+ (generic 96:9 A
228− (apply 95:26 unit
228+ (cell 96:16
229− (cell 95:32
229+ (face 96:17 p (ref 96:19 hair))
230− (face 95:33 p (tvar 95:35 A))
230+ (face 96:24 q
231− (face 95:37 q (ref 95:39 nail))))))))
231+ (apply 96:26 unit
232− (value 97:1 wonk
232+ (cell 96:32
233− (gate 97:9
233+ (face 96:33 p (tvar 96:35 A))
234− (face 97:12 veq
234+ (face 96:37 q (ref 96:39 nail))))))))
235− (apply 97:16 like (tvar 97:22 A)))
235+ (value 98:1 wonk
236− (body 98:3
236+ (gate 98:9
237− (branch 98:3
237+ (face 98:12 veq
238− (wing 98:6 q.veq)
238+ (apply 98:16 like (tvar 98:22 A)))
239− (arm 99:5 (lit 99:5 ~) (crash 99:7))
239+ (body 99:3
240− (arm 100:5
240+ (branch 99:3
241− (cell 100:5 (lit 100:6 ~) (bind 100:8 product))
241+ (wing 99:6 q.veq)
242− (wing 100:17 p.product))))))
242+ (arm 100:5 (lit 100:5 ~) (crash 100:7))
243− (mold 102:1 lone
243+ (arm 101:5
244− (generic 102:9 A
244+ (cell 101:5 (lit 101:6 ~) (bind 101:8 product))
245− (cell 102:16
245+ (wing 101:17 p.product))))))
246− (face 102:17 p (tvar 102:19 A)))))
246+ (mold 103:1 lone
247− (mold 104:1 lest
247+ (generic 103:9 A
248− (generic 104:9 A
248+ (cell 103:16
249− (cell 104:16
249+ (face 103:17 p (tvar 103:19 A)))))
250− (face 104:17 i (tvar 104:19 A))
250+ (mold 105:1 lest
251− (face 104:21 t
251+ (generic 105:9 A
252− (apply 104:23 list (tvar 104:29 A))))))
252+ (cell 105:16
253− (mold 106:1 pole
253+ (face 105:17 i (tvar 105:19 A))
254− (generic 106:9 A
254+ (face 105:21 t
255− (union 107:3
255+ (apply 105:23 list (tvar 105:29 A))))))
256− (const 107:3 ~)
256+ (mold 107:1 pole
257− (cell 108:3
257+ (generic 107:9 A
258− (tvar 108:4 A)
258+ (union 108:3
259− (apply 108:6 pole (tvar 108:12 A))))))
259+ (const 108:3 ~)
260− (mold 110:1 quip
260+ (cell 109:3
261− (generic 110:9 A B
261+ (tvar 109:4 A)
262− (cell 110:18
262+ (apply 109:6 pole (tvar 109:12 A))))))
263− (apply 110:19 list (tvar 110:25 A))
263+ (mold 111:1 quip
264− (tvar 110:28 B))))
264+ (generic 111:9 A B
265− (mold 112:1 tree
265+ (cell 111:18
266− (generic 112:9 A
266+ (apply 111:19 list (tvar 111:25 A))
267− (union 113:3
267+ (tvar 111:28 B))))
268− (const 113:3 ~)
268+ (mold 113:1 tree
269− (cell 114:3
269+ (generic 113:9 A
270− (face 114:4 n (tvar 114:6 A))
270+ (union 114:3
271− (face 114:8 l
271+ (const 114:3 ~)
272− (apply 114:10 tree (tvar 114:16 A)))
272+ (cell 115:3
273− (face 114:19 r
273+ (face 115:4 n (tvar 115:6 A))
274− (apply 114:21 tree (tvar 114:27 A)))))))
274+ (face 115:8 l
275− (mold 116:1 each
275+ (apply 115:10 tree (tvar 115:16 A)))
276− (generic 116:9 A B
276+ (face 115:19 r
277− (union 117:3
277+ (apply 115:21 tree (tvar 115:27 A)))))))
278− (cell 117:3
278+ (mold 117:1 each
279− (const 117:4 %|)
279+ (generic 117:9 A B
280− (face 117:7 p (tvar 117:9 B)))
280+ (union 118:3
281 (cell 118:3
281 (cell 118:3
282− (const 118:4 %&)
282+ (const 118:4 %|)
283− (face 118:7 p (tvar 118:9 A))))))
283+ (face 118:7 p (tvar 118:9 B)))
284− (mold 120:1 bloq (aura 120:9 @))
284+ (cell 119:3
285− (value 122:1 some
285+ (const 119:4 %&)
286− (gate 122:9
286+ (face 119:7 p (tvar 119:9 A))))))
287− (face 122:12 item (tvar 122:17 A))
287+ (mold 121:1 bloq (aura 121:9 @))
288− (unit 122:19 (wing 122:20 item))))
288+ (value 123:1 some
289− (value 124:1 lure
289+ (gate 123:9
290− (gate 124:9
290+ (face 123:12 item (tvar 123:17 A))
291− (face 124:12 item (tvar 124:17 A))
291+ (unit 123:19 (wing 123:20 item))))
292− (body 125:3
292+ (value 125:1 lure
293− (cast 125:3
293+ (gate 125:9
294− (apply 125:6 list (tvar 125:12 A))
294+ (face 125:12 item (tvar 125:17 A))
295− (tuple 125:15 (wing 125:16 item) (lit 125:21 ~))))))
295+ (body 126:3
296− (value 127:1 snoc
296+ (cast 126:3
297− (gate 127:9
297+ (apply 126:6 list (tvar 126:12 A))
298− (face 127:12 args
298+ (tuple 126:15 (wing 126:16 item) (lit 126:21 ~))))))
299− (cell 127:17
299+ (value 128:1 snoc
300− (apply 127:18 list (tvar 127:24 A))
300+ (gate 128:9
301− (tvar 127:27 A)))
301+ (face 128:12 args
302− (body 128:3
302+ (cell 128:17
303− (branch 128:3
303+ (apply 128:18 list (tvar 128:24 A))
304− (wing 128:6 args)
304+ (tvar 128:27 A)))
305− (arm 129:5
305+ (body 129:3
306− (cell 129:5 (bind 129:6 xs) (bind 129:9 item))
306+ (branch 129:3
307− (group 129:15
307+ (wing 129:6 args)
308− (call 129:16
308+ (arm 130:5
309− (wing 129:16 weld)
309+ (cell 130:5 (bind 130:6 xs) (bind 130:9 item))
310− (wing 129:21 xs)
310+ (group 130:15
311− (tuple 129:24 (wing 129:25 item) (lit 129:30 ~)))))))))
311+ (call 130:16
312− (value 131:1 flop
312+ (wing 130:16 weld)
313− (gate 131:9
313+ (wing 130:21 xs)
314− (face 131:12 xs
314+ (tuple 130:24 (wing 130:25 item) (lit 130:30 ~)))))))))
315− (apply 131:15 list (tvar 131:21 A)))
315+ (value 132:1 flop
316− (body 132:3
316+ (gate 132:9
317− (value 132:3 reverse-into
317+ (face 132:12 xs
318− (gate 132:19
318+ (apply 132:15 list (tvar 132:21 A)))
319− (face 132:22 args
319+ (body 133:3
320− (cell 132:27
320+ (value 133:3 reverse-into
321− (apply 132:28 list (tvar 132:34 A))
321+ (gate 133:19
322− (apply 132:37 list (tvar 132:43 A))))
322+ (face 133:22 args
323− (body 133:5
323+ (cell 133:27
324− (branch 133:5
324+ (apply 133:28 list (tvar 133:34 A))
325− (wing 133:8 args)
325+ (apply 133:37 list (tvar 133:43 A))))
326− (arm 134:7
326+ (body 134:5
327− (cell 134:7 (bind 134:8 rest) (bind 134:13 acc))
327+ (branch 134:5
328− (body 135:9
328+ (wing 134:8 args)
329− (branch 135:9
329+ (arm 135:7
330− (wing 135:12 rest)
330+ (cell 135:7 (bind 135:8 rest) (bind 135:13 acc))
331− (arm 136:11 (lit 136:11 ~) (wing 136:13 acc))
331+ (body 136:9
332− (arm 137:11
332+ (branch 136:9
333− (cell 137:11 (bind 137:12 item) (bind 137:17 more))
333+ (wing 136:12 rest)
334− (group 137:23
334+ (arm 137:11 (lit 137:11 ~) (wing 137:13 acc))
335− (call 137:24
335+ (arm 138:11
336− (wing 137:24 reverse-into)
336+ (cell 138:11 (bind 138:12 item) (bind 138:17 more))
337− (wing 137:37 more)
337+ (group 138:23
338− (tuple 137:42 (wing 137:43 item) (wing 137:48 acc))))))))))))
338+ (call 138:24
339− (group 138:3
339+ (wing 138:24 reverse-into)
340− (call 138:4 (wing 138:4 reverse-into) (wing 138:17 xs) (lit 138:20 ~)))))))
340+ (wing 138:37 more)
341+ (tuple 138:42 (wing 138:43 item) (wing 138:48 acc))))))))))))
342+ (group 139:3
343+ (call 139:4 (wing 139:4 reverse-into) (wing 139:17 xs) (lit 139:20 ~)))))))
tests/golden/prelude-list-unit/source.jibb+4−3
@@ -37,9 +37,10 @@
37++ weld |= args=[(list A) (list A)]
37++ weld |= args=[(list A) (list A)]
38 ?- args
38 ?- args
39 [xs ys]
39 [xs ys]
40− ?- xs
40+ ^- (list A)
41− ~ ys
41+ ?- xs
42− [item rest] [item (weld rest ys)]
42+ ~ ys
43+ [item rest] [item (weld rest ys)]
43
44
44++ turn |= args=[(list A) $-(A B)]
45++ turn |= args=[(list A) $-(A B)]
45 ?- args
46 ?- args
tests/golden/prelude-list-unit/tokens.txt+79−72
@@ -190,76 +190,83 @@
19039:9 name ys
19039:9 name ys
19139:11 tight glyph ]
19139:11 tight glyph ]
19240:7 INDENT
19240:7 INDENT
193−40:7 glyph ?-
193+40:7 glyph ^-
194−40:10 name xs
194+40:10 glyph (
195+40:11 tight name list
196+40:16 tvar A
197+40:17 tight glyph )
19541:9 INDENT
19841:9 INDENT
196−41:9 lit ~
199+41:9 glyph ?-
197−41:11 name ys
200+41:12 name xs
198−42:9 NEWLINE
201+42:11 INDENT
199−42:9 glyph [
202+42:11 lit ~
200−42:10 tight name item
203+42:13 name ys
201−42:15 name rest
204+43:11 NEWLINE
202−42:19 tight glyph ]
205+43:11 glyph [
203−42:21 glyph [
206+43:12 tight name item
204−42:22 tight name item
207+43:17 name rest
205−42:27 glyph (
208+43:21 tight glyph ]
206−42:28 tight name weld
209+43:23 glyph [
207−42:33 name rest
210+43:24 tight name item
208−42:38 name ys
211+43:29 glyph (
209−42:40 tight glyph )
212+43:30 tight name weld
210−42:41 tight glyph ]
213+43:35 name rest
211−44:1 DEDENT
214+43:40 name ys
212−44:1 DEDENT
215+43:42 tight glyph )
213−44:1 DEDENT
216+43:43 tight glyph ]
214−44:1 DEDENT
217+45:1 DEDENT
215−44:1 NEWLINE
218+45:1 DEDENT
216−44:1 glyph ++
219+45:1 DEDENT
217−44:4 name turn
220+45:1 DEDENT
218−44:9 glyph |=
221+45:1 DEDENT
219−44:12 name args
222+45:1 NEWLINE
220−44:16 tight glyph =
223+45:1 glyph ++
221−44:17 tight glyph [
224+45:4 name turn
222−44:18 tight glyph (
225+45:9 glyph |=
223−44:19 tight name list
226+45:12 name args
224−44:24 tvar A
227+45:16 tight glyph =
225−44:25 tight glyph )
228+45:17 tight glyph [
226−44:27 glyph $-(
229+45:18 tight glyph (
227−44:30 tight tvar A
230+45:19 tight name list
228−44:32 tvar B
231+45:24 tvar A
229−44:33 tight glyph )
232+45:25 tight glyph )
230−44:34 tight glyph ]
233+45:27 glyph $-(
231−45:3 INDENT
234+45:30 tight tvar A
232−45:3 glyph ?-
235+45:32 tvar B
233−45:6 name args
236+45:33 tight glyph )
234−46:5 INDENT
237+45:34 tight glyph ]
235−46:5 glyph [
238+46:3 INDENT
236−46:6 tight name xs
239+46:3 glyph ?-
237−46:9 name f
240+46:6 name args
238−46:10 tight glyph ]
241+47:5 INDENT
239−47:7 INDENT
242+47:5 glyph [
240−47:7 glyph ?-
243+47:6 tight name xs
241−47:10 name xs
244+47:9 name f
242−48:9 INDENT
245+47:10 tight glyph ]
243−48:9 lit ~
246+48:7 INDENT
244−48:11 lit ~
247+48:7 glyph ?-
245−49:9 NEWLINE
248+48:10 name xs
246−49:9 glyph [
249+49:9 INDENT
247−49:10 tight name item
250+49:9 lit ~
248−49:15 name rest
251+49:11 lit ~
249−49:19 tight glyph ]
252+50:9 NEWLINE
250−49:21 glyph [
253+50:9 glyph [
251−49:22 tight glyph (
254+50:10 tight name item
252−49:23 tight name f
255+50:15 name rest
253−49:25 name item
256+50:19 tight glyph ]
254−49:29 tight glyph )
257+50:21 glyph [
255−49:31 glyph (
258+50:22 tight glyph (
256−49:32 tight name turn
259+50:23 tight name f
257−49:37 name rest
260+50:25 name item
258−49:42 name f
261+50:29 tight glyph )
259−49:43 tight glyph )
262+50:31 glyph (
260−49:44 tight glyph ]
263+50:32 tight name turn
261−49:45 DEDENT
264+50:37 name rest
262−49:45 DEDENT
265+50:42 name f
263−49:45 DEDENT
266+50:43 tight glyph )
264−49:45 DEDENT
267+50:44 tight glyph ]
265−49:45 NEWLINE
268+50:45 DEDENT
269+50:45 DEDENT
270+50:45 DEDENT
271+50:45 DEDENT
272+50:45 NEWLINE
tests/golden/prelude-list-unit/tree.txt+34−31
@@ -87,34 +87,37 @@
87 (arm 39:5
87 (arm 39:5
88 (cell 39:5 (bind 39:6 xs) (bind 39:9 ys))
88 (cell 39:5 (bind 39:6 xs) (bind 39:9 ys))
89 (body 40:7
89 (body 40:7
90− (branch 40:7
90+ (cast 40:7
91− (wing 40:10 xs)
91+ (apply 40:10 list (tvar 40:16 A))
92− (arm 41:9 (lit 41:9 ~) (wing 41:11 ys))
92+ (body 41:9
93− (arm 42:9
93+ (branch 41:9
94− (cell 42:9 (bind 42:10 item) (bind 42:15 rest))
94+ (wing 41:12 xs)
95− (tuple 42:21
95+ (arm 42:11 (lit 42:11 ~) (wing 42:13 ys))
96− (wing 42:22 item)
96+ (arm 43:11
97− (group 42:27
97+ (cell 43:11 (bind 43:12 item) (bind 43:17 rest))
98− (call 42:28 (wing 42:28 weld) (wing 42:33 rest) (wing 42:38 ys))))))))))))
98+ (tuple 43:23
99− (value 44:1 turn
99+ (wing 43:24 item)
100− (gate 44:9
100+ (group 43:29
101− (face 44:12 args
101+ (call 43:30 (wing 43:30 weld) (wing 43:35 rest) (wing 43:40 ys))))))))))))))
102− (cell 44:17
102+ (value 45:1 turn
103− (apply 44:18 list (tvar 44:24 A))
103+ (gate 45:9
104− (fn 44:27 (tvar 44:30 A) (tvar 44:32 B))))
104+ (face 45:12 args
105− (body 45:3
105+ (cell 45:17
106− (branch 45:3
106+ (apply 45:18 list (tvar 45:24 A))
107− (wing 45:6 args)
107+ (fn 45:27 (tvar 45:30 A) (tvar 45:32 B))))
108− (arm 46:5
108+ (body 46:3
109− (cell 46:5 (bind 46:6 xs) (bind 46:9 f))
109+ (branch 46:3
110− (body 47:7
110+ (wing 46:6 args)
111− (branch 47:7
111+ (arm 47:5
112− (wing 47:10 xs)
112+ (cell 47:5 (bind 47:6 xs) (bind 47:9 f))
113− (arm 48:9 (lit 48:9 ~) (lit 48:11 ~))
113+ (body 48:7
114− (arm 49:9
114+ (branch 48:7
115− (cell 49:9 (bind 49:10 item) (bind 49:15 rest))
115+ (wing 48:10 xs)
116− (tuple 49:21
116+ (arm 49:9 (lit 49:9 ~) (lit 49:11 ~))
117− (group 49:22
117+ (arm 50:9
118− (call 49:23 (wing 49:23 f) (wing 49:25 item)))
118+ (cell 50:9 (bind 50:10 item) (bind 50:15 rest))
119− (group 49:31
119+ (tuple 50:21
120− (call 49:32 (wing 49:32 turn) (wing 49:37 rest) (wing 49:42 f)))))))))))))
120+ (group 50:22
121+ (call 50:23 (wing 50:23 f) (wing 50:25 item)))
122+ (group 50:31
123+ (call 50:32 (wing 50:32 turn) (wing 50:37 rest) (wing 50:42 f)))))))))))))
tests/golden/prelude-unit-list-transforms/source.jibb+4−3
@@ -37,9 +37,10 @@
37++ weld |= args=[(list A) (list A)]
37++ weld |= args=[(list A) (list A)]
38 ?- args
38 ?- args
39 [xs ys]
39 [xs ys]
40− ?- xs
40+ ^- (list A)
41− ~ ys
41+ ?- xs
42− [item rest] [item (weld rest ys)]
42+ ~ ys
43+ [item rest] [item (weld rest ys)]
43
44
44++ turn |= args=[(list A) $-(A B)]
45++ turn |= args=[(list A) $-(A B)]
45 ?- args
46 ?- args
tests/golden/prelude-unit-list-transforms/tokens.txt+1527−1520
@@ -190,1555 +190,1562 @@
19039:9 name ys
19039:9 name ys
19139:11 tight glyph ]
19139:11 tight glyph ]
19240:7 INDENT
19240:7 INDENT
193−40:7 glyph ?-
193+40:7 glyph ^-
194−40:10 name xs
194+40:10 glyph (
195+40:11 tight name list
196+40:16 tvar A
197+40:17 tight glyph )
19541:9 INDENT
19841:9 INDENT
196−41:9 lit ~
199+41:9 glyph ?-
197−41:11 name ys
200+41:12 name xs
198−42:9 NEWLINE
201+42:11 INDENT
199−42:9 glyph [
202+42:11 lit ~
200−42:10 tight name item
203+42:13 name ys
201−42:15 name rest
204+43:11 NEWLINE
202−42:19 tight glyph ]
205+43:11 glyph [
203−42:21 glyph [
206+43:12 tight name item
204−42:22 tight name item
207+43:17 name rest
205−42:27 glyph (
208+43:21 tight glyph ]
206−42:28 tight name weld
209+43:23 glyph [
207−42:33 name rest
210+43:24 tight name item
208−42:38 name ys
211+43:29 glyph (
209−42:40 tight glyph )
212+43:30 tight name weld
210−42:41 tight glyph ]
213+43:35 name rest
211−44:1 DEDENT
214+43:40 name ys
212−44:1 DEDENT
215+43:42 tight glyph )
213−44:1 DEDENT
216+43:43 tight glyph ]
214−44:1 DEDENT
217+45:1 DEDENT
215−44:1 NEWLINE
218+45:1 DEDENT
216−44:1 glyph ++
219+45:1 DEDENT
217−44:4 name turn
220+45:1 DEDENT
218−44:9 glyph |=
221+45:1 DEDENT
219−44:12 name args
222+45:1 NEWLINE
220−44:16 tight glyph =
223+45:1 glyph ++
221−44:17 tight glyph [
224+45:4 name turn
222−44:18 tight glyph (
225+45:9 glyph |=
223−44:19 tight name list
226+45:12 name args
224−44:24 tvar A
227+45:16 tight glyph =
225−44:25 tight glyph )
228+45:17 tight glyph [
226−44:27 glyph $-(
229+45:18 tight glyph (
227−44:30 tight tvar A
230+45:19 tight name list
228−44:32 tvar B
231+45:24 tvar A
229−44:33 tight glyph )
232+45:25 tight glyph )
230−44:34 tight glyph ]
233+45:27 glyph $-(
231−45:3 INDENT
234+45:30 tight tvar A
232−45:3 glyph ?-
235+45:32 tvar B
233−45:6 name args
236+45:33 tight glyph )
234−46:5 INDENT
237+45:34 tight glyph ]
235−46:5 glyph [
238+46:3 INDENT
236−46:6 tight name xs
239+46:3 glyph ?-
237−46:9 name f
240+46:6 name args
238−46:10 tight glyph ]
241+47:5 INDENT
239−47:7 INDENT
242+47:5 glyph [
240−47:7 glyph ?-
243+47:6 tight name xs
241−47:10 name xs
244+47:9 name f
242−48:9 INDENT
245+47:10 tight glyph ]
243−48:9 lit ~
246+48:7 INDENT
244−48:11 lit ~
247+48:7 glyph ?-
245−49:9 NEWLINE
248+48:10 name xs
246−49:9 glyph [
249+49:9 INDENT
247−49:10 tight name item
250+49:9 lit ~
248−49:15 name rest
251+49:11 lit ~
249−49:19 tight glyph ]
252+50:9 NEWLINE
250−49:21 glyph [
253+50:9 glyph [
251−49:22 tight glyph (
254+50:10 tight name item
252−49:23 tight name f
255+50:15 name rest
253−49:25 name item
256+50:19 tight glyph ]
254−49:29 tight glyph )
257+50:21 glyph [
255−49:31 glyph (
258+50:22 tight glyph (
256−49:32 tight name turn
259+50:23 tight name f
257−49:37 name rest
260+50:25 name item
258−49:42 name f
261+50:29 tight glyph )
259−49:43 tight glyph )
262+50:31 glyph (
260−49:44 tight glyph ]
263+50:32 tight name turn
261−51:1 DEDENT
264+50:37 name rest
262−51:1 DEDENT
265+50:42 name f
263−51:1 DEDENT
266+50:43 tight glyph )
264−51:1 DEDENT
267+50:44 tight glyph ]
265−51:1 NEWLINE
268+52:1 DEDENT
266−51:1 glyph +$
269+52:1 DEDENT
267−51:4 name dime
270+52:1 DEDENT
268−51:9 glyph [
271+52:1 DEDENT
269−51:10 tight name p
272+52:1 NEWLINE
270−51:11 tight glyph =
273+52:1 glyph +$
271−51:12 tight aura @ta
274+52:4 name dime
272−51:16 name q
275+52:9 glyph [
273−51:17 tight glyph =
276+52:10 tight name p
274−51:18 tight aura @
277+52:11 tight glyph =
275−51:19 tight glyph ]
278+52:12 tight aura @ta
276−53:1 NEWLINE
279+52:16 name q
277−53:1 glyph +$
280+52:17 tight glyph =
278−53:4 name hair
281+52:18 tight aura @
279−53:9 glyph [
282+52:19 tight glyph ]
280−53:10 tight name p
283+54:1 NEWLINE
281−53:11 tight glyph =
284+54:1 glyph +$
282−53:12 tight aura @ud
285+54:4 name hair
283−53:16 name q
286+54:9 glyph [
284−53:17 tight glyph =
287+54:10 tight name p
285−53:18 tight aura @ud
288+54:11 tight glyph =
286−53:21 tight glyph ]
289+54:12 tight aura @ud
287−55:1 NEWLINE
290+54:16 name q
288−55:1 glyph +$
291+54:17 tight glyph =
289−55:4 name pint
292+54:18 tight aura @ud
290−55:9 glyph [
293+54:21 tight glyph ]
291−55:10 tight name p
294+56:1 NEWLINE
292−55:11 tight glyph =
295+56:1 glyph +$
293−55:12 tight glyph [
296+56:4 name pint
294−55:13 tight name p
297+56:9 glyph [
295−55:14 tight glyph =
298+56:10 tight name p
296−55:15 tight aura @
299+56:11 tight glyph =
297−55:17 name q
300+56:12 tight glyph [
298−55:18 tight glyph =
301+56:13 tight name p
299−55:19 tight aura @
302+56:14 tight glyph =
300−55:20 tight glyph ]
303+56:15 tight aura @
301−55:22 name q
304+56:17 name q
302−55:23 tight glyph =
305+56:18 tight glyph =
303−55:24 tight glyph [
306+56:19 tight aura @
304−55:25 tight name p
307+56:20 tight glyph ]
305−55:26 tight glyph =
308+56:22 name q
306−55:27 tight aura @
309+56:23 tight glyph =
307−55:29 name q
310+56:24 tight glyph [
308−55:30 tight glyph =
311+56:25 tight name p
309−55:31 tight aura @
312+56:26 tight glyph =
310−55:32 tight glyph ]
313+56:27 tight aura @
311−55:33 tight glyph ]
314+56:29 name q
312−57:1 NEWLINE
315+56:30 tight glyph =
313−57:1 glyph +$
316+56:31 tight aura @
314−57:4 name coin
317+56:32 tight glyph ]
315−58:3 INDENT
318+56:33 tight glyph ]
316−58:3 glyph [
319+58:1 NEWLINE
317−58:4 tight lit %$
320+58:1 glyph +$
318−58:7 name p
321+58:4 name coin
319−58:8 tight glyph =
322+59:3 INDENT
320−58:9 tight name dime
321−58:13 tight glyph ]
322−59:3 NEWLINE
32359:3 glyph [
32359:3 glyph [
324−59:4 tight lit %blob
324+59:4 tight lit %$
325−59:10 name p
325+59:7 name p
326−59:11 tight glyph =
326+59:8 tight glyph =
327−59:12 tight glyph *
327+59:9 tight name dime
32859:13 tight glyph ]
32859:13 tight glyph ]
32960:3 NEWLINE
32960:3 NEWLINE
33060:3 glyph [
33060:3 glyph [
331−60:4 tight lit %many
331+60:4 tight lit %blob
33260:10 name p
33260:10 name p
33360:11 tight glyph =
33360:11 tight glyph =
334−60:12 tight glyph (
334+60:12 tight glyph *
335−60:13 tight name list
335+60:13 tight glyph ]
336−60:18 name coin
336+61:3 NEWLINE
337−60:22 tight glyph )
337+61:3 glyph [
338−60:23 tight glyph ]
338+61:4 tight lit %many
339−62:1 DEDENT
339+61:10 name p
340−62:1 NEWLINE
340+61:11 tight glyph =
341−62:1 glyph +$
341+61:12 tight glyph (
342−62:4 name pair
342+61:13 tight name list
343−62:9 glyph |$
343+61:18 name coin
344−62:12 glyph [
344+61:22 tight glyph )
345−62:13 tight tvar A
345+61:23 tight glyph ]
346−62:15 tvar B
346+63:1 DEDENT
347−62:16 tight glyph ]
347+63:1 NEWLINE
348−62:18 glyph [
348+63:1 glyph +$
349−62:19 tight name p
349+63:4 name pair
350−62:20 tight glyph =
350+63:9 glyph |$
351−62:21 tight tvar A
351+63:12 glyph [
352−62:23 name q
352+63:13 tight tvar A
353−62:24 tight glyph =
353+63:15 tvar B
354−62:25 tight tvar B
354+63:16 tight glyph ]
355−62:26 tight glyph ]
355+63:18 glyph [
356−64:1 NEWLINE
356+63:19 tight name p
357−64:1 glyph +$
357+63:20 tight glyph =
358−64:4 name trel
358+63:21 tight tvar A
359−64:9 glyph |$
359+63:23 name q
360−64:12 glyph [
360+63:24 tight glyph =
361−64:13 tight tvar A
361+63:25 tight tvar B
362−64:15 tvar B
362+63:26 tight glyph ]
363−64:17 tvar C
363+65:1 NEWLINE
364−64:18 tight glyph ]
364+65:1 glyph +$
365−64:20 glyph [
365+65:4 name trel
366−64:21 tight name p
366+65:9 glyph |$
367−64:22 tight glyph =
367+65:12 glyph [
368−64:23 tight tvar A
368+65:13 tight tvar A
369−64:25 name q
369+65:15 tvar B
370−64:26 tight glyph =
370+65:17 tvar C
371−64:27 tight tvar B
371+65:18 tight glyph ]
372−64:29 name r
372+65:20 glyph [
373−64:30 tight glyph =
373+65:21 tight name p
374−64:31 tight tvar C
374+65:22 tight glyph =
375−64:32 tight glyph ]
375+65:23 tight tvar A
376−66:1 NEWLINE
376+65:25 name q
377−66:1 glyph +$
377+65:26 tight glyph =
378−66:4 name qual
378+65:27 tight tvar B
379−66:9 glyph |$
379+65:29 name r
380−66:12 glyph [
380+65:30 tight glyph =
381−66:13 tight tvar A
381+65:31 tight tvar C
382−66:15 tvar B
382+65:32 tight glyph ]
383−66:17 tvar C
383+67:1 NEWLINE
384−66:19 tvar D
384+67:1 glyph +$
385−66:20 tight glyph ]
385+67:4 name qual
386−66:22 glyph [
386+67:9 glyph |$
387−66:23 tight name p
387+67:12 glyph [
388−66:24 tight glyph =
388+67:13 tight tvar A
389−66:25 tight tvar A
389+67:15 tvar B
390−66:27 name q
390+67:17 tvar C
391−66:28 tight glyph =
391+67:19 tvar D
392−66:29 tight tvar B
392+67:20 tight glyph ]
393−66:31 name r
393+67:22 glyph [
394−66:32 tight glyph =
394+67:23 tight name p
395−66:33 tight tvar C
395+67:24 tight glyph =
396−66:35 name s
396+67:25 tight tvar A
397−66:36 tight glyph =
397+67:27 name q
398−66:37 tight tvar D
398+67:28 tight glyph =
399−66:38 tight glyph ]
399+67:29 tight tvar B
400−68:1 NEWLINE
400+67:31 name r
401−68:1 glyph +$
401+67:32 tight glyph =
402−68:4 name cord
402+67:33 tight tvar C
403−68:9 aura @t
403+67:35 name s
404−70:1 NEWLINE
404+67:36 tight glyph =
405−70:1 glyph +$
405+67:37 tight tvar D
406−70:4 name knot
406+67:38 tight glyph ]
407−70:9 aura @ta
407+69:1 NEWLINE
408−72:1 NEWLINE
408+69:1 glyph +$
409−72:1 glyph +$
409+69:4 name cord
410−72:4 name tape
410+69:9 aura @t
411−72:9 glyph (
411+71:1 NEWLINE
412−72:10 tight name list
412+71:1 glyph +$
413−72:15 aura @tD
413+71:4 name knot
414−72:18 tight glyph )
414+71:9 aura @ta
415−74:1 NEWLINE
415+73:1 NEWLINE
416−74:1 glyph +$
416+73:1 glyph +$
417−74:4 name path
417+73:4 name tape
418−74:9 glyph (
418+73:9 glyph (
419−74:10 tight name list
419+73:10 tight name list
420−74:15 name knot
420+73:15 aura @tD
421−74:19 tight glyph )
421+73:18 tight glyph )
422−76:1 NEWLINE
422+75:1 NEWLINE
423−76:1 glyph +$
423+75:1 glyph +$
424−76:4 name tank
424+75:4 name path
425−77:3 INDENT
425+75:9 glyph (
426−77:3 name cord
426+75:10 tight name list
427−78:3 NEWLINE
427+75:15 name knot
428−78:3 glyph [
428+75:19 tight glyph )
429−78:4 tight lit %leaf
429+77:1 NEWLINE
430−78:10 name p
430+77:1 glyph +$
431−78:11 tight glyph =
431+77:4 name tank
432−78:12 tight name tape
432+78:3 INDENT
433−78:16 tight glyph ]
433+78:3 name cord
43479:3 NEWLINE
43479:3 NEWLINE
43579:3 glyph [
43579:3 glyph [
436−79:4 tight lit %palm
436+79:4 tight lit %leaf
43779:10 name p
43779:10 name p
43879:11 tight glyph =
43879:11 tight glyph =
439−79:12 tight glyph (
439+79:12 tight name tape
440−79:13 tight name qual
440+79:16 tight glyph ]
441−79:18 name tape
442−79:23 name tape
443−79:28 name tape
444−79:33 name tape
445−79:37 tight glyph )
446−79:39 name q
447−79:40 tight glyph =
448−79:41 tight glyph (
449−79:42 tight name list
450−79:47 name tank
451−79:51 tight glyph )
452−79:52 tight glyph ]
45380:3 NEWLINE
44180:3 NEWLINE
45480:3 glyph [
44280:3 glyph [
455−80:4 tight lit %rose
443+80:4 tight lit %palm
45680:10 name p
44480:10 name p
45780:11 tight glyph =
44580:11 tight glyph =
45880:12 tight glyph (
44680:12 tight glyph (
459−80:13 tight name trel
447+80:13 tight name qual
46080:18 name tape
44880:18 name tape
46180:23 name tape
44980:23 name tape
46280:28 name tape
45080:28 name tape
463−80:32 tight glyph )
451+80:33 name tape
464−80:34 name q
452+80:37 tight glyph )
465−80:35 tight glyph =
453+80:39 name q
466−80:36 tight glyph (
454+80:40 tight glyph =
467−80:37 tight name list
455+80:41 tight glyph (
468−80:42 name tank
456+80:42 tight name list
469−80:46 tight glyph )
457+80:47 name tank
470−80:47 tight glyph ]
458+80:51 tight glyph )
471−82:1 DEDENT
459+80:52 tight glyph ]
472−82:1 NEWLINE
460+81:3 NEWLINE
473−82:1 glyph +$
461+81:3 glyph [
474−82:4 name nail
462+81:4 tight lit %rose
475−82:9 glyph [
463+81:10 name p
476−82:10 tight name p
464+81:11 tight glyph =
477−82:11 tight glyph =
465+81:12 tight glyph (
478−82:12 tight name hair
466+81:13 tight name trel
479−82:17 name q
467+81:18 name tape
480−82:18 tight glyph =
468+81:23 name tape
481−82:19 tight name tape
469+81:28 name tape
482−82:23 tight glyph ]
470+81:32 tight glyph )
483−84:1 NEWLINE
471+81:34 name q
484−84:1 glyph +$
472+81:35 tight glyph =
485−84:4 name edge
473+81:36 tight glyph (
486−84:9 glyph [
474+81:37 tight name list
487−84:10 tight name p
475+81:42 name tank
488−84:11 tight glyph =
476+81:46 tight glyph )
489−84:12 tight name hair
477+81:47 tight glyph ]
490−84:17 name q
478+83:1 DEDENT
491−84:18 tight glyph =
479+83:1 NEWLINE
492−84:19 tight glyph (
480+83:1 glyph +$
493−84:20 tight name unit
481+83:4 name nail
494−84:25 glyph [
482+83:9 glyph [
495−84:26 tight name p
483+83:10 tight name p
496−84:27 tight glyph =
484+83:11 tight glyph =
497−84:28 tight glyph *
485+83:12 tight name hair
498−84:30 name q
486+83:17 name q
499−84:31 tight glyph =
487+83:18 tight glyph =
500−84:32 tight name nail
488+83:19 tight name tape
501−84:36 tight glyph ]
489+83:23 tight glyph ]
502−84:37 tight glyph )
490+85:1 NEWLINE
503−84:38 tight glyph ]
491+85:1 glyph +$
504−86:1 NEWLINE
492+85:4 name edge
505−86:1 glyph +$
493+85:9 glyph [
506−86:4 name rule
494+85:10 tight name p
507−86:9 glyph $-(
495+85:11 tight glyph =
508−86:12 tight name nail
496+85:12 tight name hair
509−86:17 name edge
497+85:17 name q
510−86:21 tight glyph )
498+85:18 tight glyph =
511−88:1 NEWLINE
499+85:19 tight glyph (
512−88:1 glyph +$
500+85:20 tight name unit
513−88:4 name spot
501+85:25 glyph [
514−88:9 glyph [
502+85:26 tight name p
515−88:10 tight name p
503+85:27 tight glyph =
516−88:11 tight glyph =
504+85:28 tight glyph *
517−88:12 tight name path
505+85:30 name q
518−88:17 name q
506+85:31 tight glyph =
519−88:18 tight glyph =
507+85:32 tight name nail
520−88:19 tight name pint
508+85:36 tight glyph ]
521−88:23 tight glyph ]
509+85:37 tight glyph )
522−90:1 NEWLINE
510+85:38 tight glyph ]
523−90:1 glyph +$
511+87:1 NEWLINE
524−90:4 name toon
512+87:1 glyph +$
525−91:3 INDENT
513+87:4 name rule
526−91:3 glyph [
514+87:9 glyph $-(
527−91:4 tight lit %0
515+87:12 tight name nail
528−91:7 name p
516+87:17 name edge
529−91:8 tight glyph =
517+87:21 tight glyph )
530−91:9 tight glyph *
518+89:1 NEWLINE
531−91:10 tight glyph ]
519+89:1 glyph +$
532−92:3 NEWLINE
520+89:4 name spot
521+89:9 glyph [
522+89:10 tight name p
523+89:11 tight glyph =
524+89:12 tight name path
525+89:17 name q
526+89:18 tight glyph =
527+89:19 tight name pint
528+89:23 tight glyph ]
529+91:1 NEWLINE
530+91:1 glyph +$
531+91:4 name toon
532+92:3 INDENT
53392:3 glyph [
53392:3 glyph [
534−92:4 tight lit %1
534+92:4 tight lit %0
53592:7 name p
53592:7 name p
53692:8 tight glyph =
53692:8 tight glyph =
53792:9 tight glyph *
53792:9 tight glyph *
53892:10 tight glyph ]
53892:10 tight glyph ]
53993:3 NEWLINE
53993:3 NEWLINE
54093:3 glyph [
54093:3 glyph [
541−93:4 tight lit %2
541+93:4 tight lit %1
54293:7 name p
54293:7 name p
54393:8 tight glyph =
54393:8 tight glyph =
544−93:9 tight glyph (
544+93:9 tight glyph *
545−93:10 tight name list
545+93:10 tight glyph ]
546−93:15 name tank
546+94:3 NEWLINE
547−93:19 tight glyph )
547+94:3 glyph [
548−93:20 tight glyph ]
548+94:4 tight lit %2
549−95:1 DEDENT
549+94:7 name p
550−95:1 NEWLINE
550+94:8 tight glyph =
551−95:1 glyph +$
551+94:9 tight glyph (
552−95:4 name like
552+94:10 tight name list
553−95:9 glyph |$
553+94:15 name tank
554−95:12 glyph [
554+94:19 tight glyph )
555−95:13 tight tvar A
555+94:20 tight glyph ]
556−95:14 tight glyph ]
556+96:1 DEDENT
557−95:16 glyph [
557+96:1 NEWLINE
558−95:17 tight name p
558+96:1 glyph +$
559−95:18 tight glyph =
559+96:4 name like
560−95:19 tight name hair
560+96:9 glyph |$
561−95:24 name q
561+96:12 glyph [
562−95:25 tight glyph =
562+96:13 tight tvar A
563−95:26 tight glyph (
563+96:14 tight glyph ]
564−95:27 tight name unit
564+96:16 glyph [
565−95:32 glyph [
565+96:17 tight name p
566−95:33 tight name p
566+96:18 tight glyph =
567−95:34 tight glyph =
567+96:19 tight name hair
568−95:35 tight tvar A
568+96:24 name q
569−95:37 name q
569+96:25 tight glyph =
570−95:38 tight glyph =
570+96:26 tight glyph (
571−95:39 tight name nail
571+96:27 tight name unit
572−95:43 tight glyph ]
572+96:32 glyph [
573−95:44 tight glyph )
573+96:33 tight name p
574−95:45 tight glyph ]
574+96:34 tight glyph =
575−97:1 NEWLINE
575+96:35 tight tvar A
576−97:1 glyph ++
576+96:37 name q
577−97:4 name wonk
577+96:38 tight glyph =
578−97:9 glyph |=
578+96:39 tight name nail
579−97:12 name veq
579+96:43 tight glyph ]
580−97:15 tight glyph =
580+96:44 tight glyph )
581−97:16 tight glyph (
581+96:45 tight glyph ]
582−97:17 tight name like
582+98:1 NEWLINE
583−97:22 tvar A
583+98:1 glyph ++
584−97:23 tight glyph )
584+98:4 name wonk
585−98:3 INDENT
585+98:9 glyph |=
586−98:3 glyph ?-
586+98:12 name veq
587−98:6 wing q.veq
587+98:15 tight glyph =
588−99:5 INDENT
588+98:16 tight glyph (
589−99:5 lit ~
589+98:17 tight name like
590−99:7 glyph !!
590+98:22 tvar A
591−100:5 NEWLINE
591+98:23 tight glyph )
592−100:5 glyph [
592+99:3 INDENT
593−100:6 tight lit ~
593+99:3 glyph ?-
594−100:8 name product
594+99:6 wing q.veq
595−100:15 tight glyph ]
595+100:5 INDENT
596−100:17 wing p.product
596+100:5 lit ~
597−102:1 DEDENT
597+100:7 glyph !!
598−102:1 DEDENT
598+101:5 NEWLINE
599−102:1 NEWLINE
599+101:5 glyph [
600−102:1 glyph +$
600+101:6 tight lit ~
601−102:4 name lone
601+101:8 name product
602−102:9 glyph |$
602+101:15 tight glyph ]
603−102:12 glyph [
603+101:17 wing p.product
604−102:13 tight tvar A
604+103:1 DEDENT
605−102:14 tight glyph ]
605+103:1 DEDENT
606−102:16 glyph [
606+103:1 NEWLINE
607−102:17 tight name p
607+103:1 glyph +$
608−102:18 tight glyph =
608+103:4 name lone
609−102:19 tight tvar A
609+103:9 glyph |$
610−102:20 tight glyph ]
610+103:12 glyph [
611−104:1 NEWLINE
611+103:13 tight tvar A
612−104:1 glyph +$
612+103:14 tight glyph ]
613−104:4 name lest
613+103:16 glyph [
614−104:9 glyph |$
614+103:17 tight name p
615−104:12 glyph [
615+103:18 tight glyph =
616−104:13 tight tvar A
616+103:19 tight tvar A
617−104:14 tight glyph ]
617+103:20 tight glyph ]
618−104:16 glyph [
618+105:1 NEWLINE
619−104:17 tight name i
619+105:1 glyph +$
620−104:18 tight glyph =
620+105:4 name lest
621−104:19 tight tvar A
621+105:9 glyph |$
622−104:21 name t
622+105:12 glyph [
623−104:22 tight glyph =
623+105:13 tight tvar A
624−104:23 tight glyph (
624+105:14 tight glyph ]
625−104:24 tight name list
625+105:16 glyph [
626−104:29 tvar A
626+105:17 tight name i
627−104:30 tight glyph )
627+105:18 tight glyph =
628−104:31 tight glyph ]
628+105:19 tight tvar A
629−106:1 NEWLINE
629+105:21 name t
630−106:1 glyph +$
630+105:22 tight glyph =
631−106:4 name pole
631+105:23 tight glyph (
632−106:9 glyph |$
632+105:24 tight name list
633−106:12 glyph [
633+105:29 tvar A
634−106:13 tight tvar A
634+105:30 tight glyph )
635−106:14 tight glyph ]
635+105:31 tight glyph ]
636−107:3 INDENT
636+107:1 NEWLINE
637−107:3 lit ~
637+107:1 glyph +$
638−108:3 NEWLINE
638+107:4 name pole
639−108:3 glyph [
639+107:9 glyph |$
640−108:4 tight tvar A
640+107:12 glyph [
641−108:6 glyph (
641+107:13 tight tvar A
642−108:7 tight name pole
642+107:14 tight glyph ]
643−108:12 tvar A
643+108:3 INDENT
644−108:13 tight glyph )
644+108:3 lit ~
645−108:14 tight glyph ]
645+109:3 NEWLINE
646−110:1 DEDENT
646+109:3 glyph [
647−110:1 NEWLINE
647+109:4 tight tvar A
648−110:1 glyph +$
648+109:6 glyph (
649−110:4 name quip
649+109:7 tight name pole
650−110:9 glyph |$
650+109:12 tvar A
651−110:12 glyph [
651+109:13 tight glyph )
652−110:13 tight tvar A
652+109:14 tight glyph ]
653−110:15 tvar B
653+111:1 DEDENT
654−110:16 tight glyph ]
654+111:1 NEWLINE
655−110:18 glyph [
655+111:1 glyph +$
656−110:19 tight glyph (
656+111:4 name quip
657−110:20 tight name list
657+111:9 glyph |$
658−110:25 tvar A
658+111:12 glyph [
659−110:26 tight glyph )
659+111:13 tight tvar A
660−110:28 tvar B
660+111:15 tvar B
661−110:29 tight glyph ]
661+111:16 tight glyph ]
662−112:1 NEWLINE
662+111:18 glyph [
663−112:1 glyph +$
663+111:19 tight glyph (
664−112:4 name tree
664+111:20 tight name list
665−112:9 glyph |$
665+111:25 tvar A
666−112:12 glyph [
666+111:26 tight glyph )
667−112:13 tight tvar A
667+111:28 tvar B
668−112:14 tight glyph ]
668+111:29 tight glyph ]
669−113:3 INDENT
669+113:1 NEWLINE
670−113:3 lit ~
670+113:1 glyph +$
671−114:3 NEWLINE
671+113:4 name tree
672−114:3 glyph [
672+113:9 glyph |$
673−114:4 tight name n
673+113:12 glyph [
674−114:5 tight glyph =
674+113:13 tight tvar A
675−114:6 tight tvar A
675+113:14 tight glyph ]
676−114:8 name l
676+114:3 INDENT
677−114:9 tight glyph =
677+114:3 lit ~
678−114:10 tight glyph (
678+115:3 NEWLINE
679−114:11 tight name tree
679+115:3 glyph [
680−114:16 tvar A
680+115:4 tight name n
681−114:17 tight glyph )
681+115:5 tight glyph =
682−114:19 name r
682+115:6 tight tvar A
683−114:20 tight glyph =
683+115:8 name l
684−114:21 tight glyph (
684+115:9 tight glyph =
685−114:22 tight name tree
685+115:10 tight glyph (
686−114:27 tvar A
686+115:11 tight name tree
687−114:28 tight glyph )
687+115:16 tvar A
688−114:29 tight glyph ]
688+115:17 tight glyph )
689−116:1 DEDENT
689+115:19 name r
690−116:1 NEWLINE
690+115:20 tight glyph =
691−116:1 glyph +$
691+115:21 tight glyph (
692−116:4 name each
692+115:22 tight name tree
693−116:9 glyph |$
693+115:27 tvar A
694−116:12 glyph [
694+115:28 tight glyph )
695−116:13 tight tvar A
695+115:29 tight glyph ]
696−116:15 tvar B
696+117:1 DEDENT
697−116:16 tight glyph ]
697+117:1 NEWLINE
698−117:3 INDENT
698+117:1 glyph +$
699−117:3 glyph [
699+117:4 name each
700−117:4 tight lit %|
700+117:9 glyph |$
701−117:7 name p
701+117:12 glyph [
702−117:8 tight glyph =
702+117:13 tight tvar A
703−117:9 tight tvar B
703+117:15 tvar B
704−117:10 tight glyph ]
704+117:16 tight glyph ]
705−118:3 NEWLINE
705+118:3 INDENT
706118:3 glyph [
706118:3 glyph [
707−118:4 tight lit %&
707+118:4 tight lit %|
708118:7 name p
708118:7 name p
709118:8 tight glyph =
709118:8 tight glyph =
710−118:9 tight tvar A
710+118:9 tight tvar B
711118:10 tight glyph ]
711118:10 tight glyph ]
712−120:1 DEDENT
712+119:3 NEWLINE
713−120:1 NEWLINE
713+119:3 glyph [
714−120:1 glyph +$
714+119:4 tight lit %&
715−120:4 name bloq
715+119:7 name p
716−120:9 aura @
716+119:8 tight glyph =
717−122:1 NEWLINE
717+119:9 tight tvar A
718−122:1 glyph ++
718+119:10 tight glyph ]
719−122:4 name some
719+121:1 DEDENT
720−122:9 glyph |=
720+121:1 NEWLINE
721−122:12 name item
721+121:1 glyph +$
722−122:16 tight glyph =
722+121:4 name bloq
723−122:17 tight tvar A
723+121:9 aura @
724−122:19 glyph `
724+123:1 NEWLINE
725−122:20 tight name item
725+123:1 glyph ++
726−124:1 NEWLINE
726+123:4 name some
727−124:1 glyph ++
727+123:9 glyph |=
728−124:4 name lure
728+123:12 name item
729−124:9 glyph |=
729+123:16 tight glyph =
730−124:12 name item
730+123:17 tight tvar A
731−124:16 tight glyph =
731+123:19 glyph `
732−124:17 tight tvar A
732+123:20 tight name item
733−125:3 INDENT
733+125:1 NEWLINE
734−125:3 glyph ^-
734+125:1 glyph ++
735−125:6 glyph (
735+125:4 name lure
736−125:7 tight name list
736+125:9 glyph |=
737−125:12 tvar A
737+125:12 name item
738−125:13 tight glyph )
738+125:16 tight glyph =
739−125:15 glyph [
739+125:17 tight tvar A
740−125:16 tight name item
740+126:3 INDENT
741−125:21 lit ~
741+126:3 glyph ^-
742−125:22 tight glyph ]
742+126:6 glyph (
743−127:1 DEDENT
743+126:7 tight name list
744−127:1 NEWLINE
744+126:12 tvar A
745−127:1 glyph ++
745+126:13 tight glyph )
746−127:4 name snoc
746+126:15 glyph [
747−127:9 glyph |=
747+126:16 tight name item
748−127:12 name args
748+126:21 lit ~
749−127:16 tight glyph =
749+126:22 tight glyph ]
750−127:17 tight glyph [
750+128:1 DEDENT
751−127:18 tight glyph (
751+128:1 NEWLINE
752−127:19 tight name list
752+128:1 glyph ++
753−127:24 tvar A
753+128:4 name snoc
754−127:25 tight glyph )
754+128:9 glyph |=
755−127:27 tvar A
755+128:12 name args
756−127:28 tight glyph ]
756+128:16 tight glyph =
757−128:3 INDENT
757+128:17 tight glyph [
758−128:3 glyph ?-
758+128:18 tight glyph (
759−128:6 name args
759+128:19 tight name list
760−129:5 INDENT
760+128:24 tvar A
761−129:5 glyph [
761+128:25 tight glyph )
762−129:6 tight name xs
762+128:27 tvar A
763−129:9 name item
763+128:28 tight glyph ]
764−129:13 tight glyph ]
764+129:3 INDENT
765−129:15 glyph (
765+129:3 glyph ?-
766−129:16 tight name weld
766+129:6 name args
767−129:21 name xs
767+130:5 INDENT
768−129:24 glyph [
768+130:5 glyph [
769−129:25 tight name item
769+130:6 tight name xs
770−129:30 lit ~
770+130:9 name item
771−129:31 tight glyph ]
771+130:13 tight glyph ]
772−129:32 tight glyph )
772+130:15 glyph (
773−131:1 DEDENT
773+130:16 tight name weld
774−131:1 DEDENT
774+130:21 name xs
775−131:1 NEWLINE
775+130:24 glyph [
776−131:1 glyph ++
776+130:25 tight name item
777−131:4 name flop
777+130:30 lit ~
778−131:9 glyph |=
778+130:31 tight glyph ]
779−131:12 name xs
779+130:32 tight glyph )
780−131:14 tight glyph =
780+132:1 DEDENT
781−131:15 tight glyph (
781+132:1 DEDENT
782−131:16 tight name list
782+132:1 NEWLINE
783−131:21 tvar A
783+132:1 glyph ++
784−131:22 tight glyph )
784+132:4 name flop
785−132:3 INDENT
785+132:9 glyph |=
786−132:3 glyph ++
786+132:12 name xs
787−132:6 name reverse-into
787+132:14 tight glyph =
788−132:19 glyph |=
788+132:15 tight glyph (
789−132:22 name args
789+132:16 tight name list
790−132:26 tight glyph =
790+132:21 tvar A
791−132:27 tight glyph [
791+132:22 tight glyph )
792−132:28 tight glyph (
792+133:3 INDENT
793−132:29 tight name list
793+133:3 glyph ++
794−132:34 tvar A
794+133:6 name reverse-into
795−132:35 tight glyph )
795+133:19 glyph |=
796−132:37 glyph (
796+133:22 name args
797−132:38 tight name list
797+133:26 tight glyph =
798−132:43 tvar A
798+133:27 tight glyph [
799−132:44 tight glyph )
799+133:28 tight glyph (
800−132:45 tight glyph ]
800+133:29 tight name list
801−133:5 INDENT
801+133:34 tvar A
802−133:5 glyph ?-
802+133:35 tight glyph )
803−133:8 name args
803+133:37 glyph (
804−134:7 INDENT
804+133:38 tight name list
805−134:7 glyph [
805+133:43 tvar A
806−134:8 tight name rest
806+133:44 tight glyph )
807−134:13 name acc
807+133:45 tight glyph ]
808−134:16 tight glyph ]
808+134:5 INDENT
809−135:9 INDENT
809+134:5 glyph ?-
810−135:9 glyph ?-
810+134:8 name args
811−135:12 name rest
811+135:7 INDENT
812−136:11 INDENT
812+135:7 glyph [
813−136:11 lit ~
813+135:8 tight name rest
814−136:13 name acc
814+135:13 name acc
815−137:11 NEWLINE
815+135:16 tight glyph ]
816−137:11 glyph [
816+136:9 INDENT
817−137:12 tight name item
817+136:9 glyph ?-
818−137:17 name more
818+136:12 name rest
819−137:21 tight glyph ]
819+137:11 INDENT
820−137:23 glyph (
820+137:11 lit ~
821−137:24 tight name reverse-into
821+137:13 name acc
822−137:37 name more
822+138:11 NEWLINE
823−137:42 glyph [
823+138:11 glyph [
824−137:43 tight name item
824+138:12 tight name item
825−137:48 name acc
825+138:17 name more
826−137:51 tight glyph ]
826+138:21 tight glyph ]
827−137:52 tight glyph )
827+138:23 glyph (
828−138:3 DEDENT
828+138:24 tight name reverse-into
829−138:3 DEDENT
829+138:37 name more
830−138:3 DEDENT
830+138:42 glyph [
831−138:3 DEDENT
831+138:43 tight name item
832−138:3 NEWLINE
832+138:48 name acc
833−138:3 glyph (
833+138:51 tight glyph ]
834−138:4 tight name reverse-into
834+138:52 tight glyph )
835−138:17 name xs
835+139:3 DEDENT
836−138:20 lit ~
836+139:3 DEDENT
837−138:21 tight glyph )
837+139:3 DEDENT
838−140:1 DEDENT
838+139:3 DEDENT
839−140:1 NEWLINE
839+139:3 NEWLINE
840−140:1 glyph ++
840+139:3 glyph (
841−140:4 name drop
841+139:4 tight name reverse-into
842−140:9 glyph |=
842+139:17 name xs
843−140:12 name maybe
843+139:20 lit ~
844−140:17 tight glyph =
844+139:21 tight glyph )
845−140:18 tight glyph (
845+141:1 DEDENT
846−140:19 tight name unit
846+141:1 NEWLINE
847−140:24 tvar A
847+141:1 glyph ++
848−140:25 tight glyph )
848+141:4 name drop
849−141:3 INDENT
849+141:9 glyph |=
850−141:3 glyph ?-
850+141:12 name maybe
851−141:6 name maybe
851+141:17 tight glyph =
852−142:5 INDENT
852+141:18 tight glyph (
853−142:5 lit ~
853+141:19 tight name unit
854−142:7 lit ~
854+141:24 tvar A
855−143:5 NEWLINE
855+141:25 tight glyph )
856−143:5 glyph [
856+142:3 INDENT
857−143:6 tight lit ~
857+142:3 glyph ?-
858−143:8 name value
858+142:6 name maybe
859−143:13 tight glyph ]
859+143:5 INDENT
860−143:15 glyph [
860+143:5 lit ~
861−143:16 tight name value
861+143:7 lit ~
862−143:22 lit ~
862+144:5 NEWLINE
863−143:23 tight glyph ]
863+144:5 glyph [
864−145:1 DEDENT
864+144:6 tight lit ~
865−145:1 DEDENT
865+144:8 name value
866−145:1 NEWLINE
866+144:13 tight glyph ]
867−145:1 glyph ++
867+144:15 glyph [
868−145:4 name bind
868+144:16 tight name value
869−145:9 glyph |=
869+144:22 lit ~
870−145:12 name args
870+144:23 tight glyph ]
871−145:16 tight glyph =
871+146:1 DEDENT
872−145:17 tight glyph [
872+146:1 DEDENT
873−145:18 tight glyph (
873+146:1 NEWLINE
874−145:19 tight name unit
874+146:1 glyph ++
875−145:24 tvar A
875+146:4 name bind
876−145:25 tight glyph )
876+146:9 glyph |=
877−145:27 glyph $-(
877+146:12 name args
878−145:30 tight tvar A
878+146:16 tight glyph =
879−145:32 tvar B
879+146:17 tight glyph [
880−145:33 tight glyph )
880+146:18 tight glyph (
881−145:34 tight glyph ]
881+146:19 tight name unit
882−146:3 INDENT
882+146:24 tvar A
883−146:3 glyph ?-
883+146:25 tight glyph )
884−146:6 name args
884+146:27 glyph $-(
885−147:5 INDENT
885+146:30 tight tvar A
886−147:5 glyph [
886+146:32 tvar B
887−147:6 tight name maybe
887+146:33 tight glyph )
888−147:12 name f
888+146:34 tight glyph ]
889−147:13 tight glyph ]
889+147:3 INDENT
890−148:7 INDENT
890+147:3 glyph ?-
891−148:7 glyph ?-
891+147:6 name args
892−148:10 name maybe
892+148:5 INDENT
893−149:9 INDENT
893+148:5 glyph [
894−149:9 lit ~
894+148:6 tight name maybe
895−149:11 lit ~
895+148:12 name f
896−150:9 NEWLINE
896+148:13 tight glyph ]
897−150:9 glyph [
897+149:7 INDENT
898−150:10 tight lit ~
898+149:7 glyph ?-
899−150:12 name value
899+149:10 name maybe
900−150:17 tight glyph ]
900+150:9 INDENT
901−150:19 glyph `
901+150:9 lit ~
902−150:20 tight glyph (
902+150:11 lit ~
903−150:21 tight name f
903+151:9 NEWLINE
904−150:23 name value
904+151:9 glyph [
905−150:28 tight glyph )
905+151:10 tight lit ~
906−152:1 DEDENT
906+151:12 name value
907−152:1 DEDENT
907+151:17 tight glyph ]
908−152:1 DEDENT
908+151:19 glyph `
909−152:1 DEDENT
909+151:20 tight glyph (
910−152:1 NEWLINE
910+151:21 tight name f
911−152:1 glyph ++
911+151:23 name value
912−152:4 name biff
912+151:28 tight glyph )
913−152:9 glyph |=
913+153:1 DEDENT
914−152:12 name args
914+153:1 DEDENT
915−152:16 tight glyph =
915+153:1 DEDENT
916−152:17 tight glyph [
916+153:1 DEDENT
917−152:18 tight glyph (
917+153:1 NEWLINE
918−152:19 tight name unit
918+153:1 glyph ++
919−152:24 tvar A
919+153:4 name biff
920−152:25 tight glyph )
920+153:9 glyph |=
921−152:27 glyph $-(
921+153:12 name args
922−152:30 tight tvar A
922+153:16 tight glyph =
923−152:32 glyph (
923+153:17 tight glyph [
924−152:33 tight name unit
924+153:18 tight glyph (
925−152:38 tvar B
925+153:19 tight name unit
926−152:39 tight glyph )
926+153:24 tvar A
927−152:40 tight glyph )
927+153:25 tight glyph )
928−152:41 tight glyph ]
928+153:27 glyph $-(
929−153:3 INDENT
929+153:30 tight tvar A
930−153:3 glyph ?-
930+153:32 glyph (
931−153:6 name args
931+153:33 tight name unit
932−154:5 INDENT
932+153:38 tvar B
933−154:5 glyph [
933+153:39 tight glyph )
934−154:6 tight name maybe
934+153:40 tight glyph )
935−154:12 name f
935+153:41 tight glyph ]
936−154:13 tight glyph ]
936+154:3 INDENT
937−155:7 INDENT
937+154:3 glyph ?-
938−155:7 glyph ?-
938+154:6 name args
939−155:10 name maybe
939+155:5 INDENT
940−156:9 INDENT
940+155:5 glyph [
941−156:9 lit ~
941+155:6 tight name maybe
942−156:11 lit ~
942+155:12 name f
943−157:9 NEWLINE
943+155:13 tight glyph ]
944−157:9 glyph [
944+156:7 INDENT
945−157:10 tight lit ~
945+156:7 glyph ?-
946−157:12 name value
946+156:10 name maybe
947−157:17 tight glyph ]
947+157:9 INDENT
948−157:19 glyph (
948+157:9 lit ~
949−157:20 tight name f
949+157:11 lit ~
950−157:22 name value
950+158:9 NEWLINE
951−157:27 tight glyph )
951+158:9 glyph [
952−159:1 DEDENT
952+158:10 tight lit ~
953−159:1 DEDENT
953+158:12 name value
954−159:1 DEDENT
954+158:17 tight glyph ]
955−159:1 DEDENT
955+158:19 glyph (
956−159:1 NEWLINE
956+158:20 tight name f
957−159:1 glyph ++
957+158:22 name value
958−159:4 name both
958+158:27 tight glyph )
959−159:9 glyph |=
959+160:1 DEDENT
960−159:12 name args
960+160:1 DEDENT
961−159:16 tight glyph =
961+160:1 DEDENT
962−159:17 tight glyph [
962+160:1 DEDENT
963−159:18 tight glyph (
963+160:1 NEWLINE
964−159:19 tight name unit
964+160:1 glyph ++
965−159:24 tvar A
965+160:4 name both
966−159:25 tight glyph )
966+160:9 glyph |=
967−159:27 glyph (
967+160:12 name args
968−159:28 tight name unit
968+160:16 tight glyph =
969−159:33 tvar B
969+160:17 tight glyph [
970−159:34 tight glyph )
970+160:18 tight glyph (
971−159:35 tight glyph ]
971+160:19 tight name unit
972−160:3 INDENT
972+160:24 tvar A
973−160:3 glyph ?-
973+160:25 tight glyph )
974−160:6 name args
974+160:27 glyph (
975−161:5 INDENT
975+160:28 tight name unit
976−161:5 glyph [
976+160:33 tvar B
977−161:6 tight name first
977+160:34 tight glyph )
978−161:12 name second
978+160:35 tight glyph ]
979−161:18 tight glyph ]
979+161:3 INDENT
980−162:7 INDENT
980+161:3 glyph ?-
981−162:7 glyph ?-
981+161:6 name args
982−162:10 name first
982+162:5 INDENT
983−163:9 INDENT
983+162:5 glyph [
984−163:9 lit ~
984+162:6 tight name first
985−163:11 lit ~
985+162:12 name second
986−164:9 NEWLINE
986+162:18 tight glyph ]
987−164:9 glyph [
987+163:7 INDENT
988−164:10 tight lit ~
988+163:7 glyph ?-
989−164:12 name a
989+163:10 name first
990−164:13 tight glyph ]
990+164:9 INDENT
991−165:11 INDENT
991+164:9 lit ~
992−165:11 glyph ?-
992+164:11 lit ~
993−165:14 name second
993+165:9 NEWLINE
994−166:13 INDENT
994+165:9 glyph [
995−166:13 lit ~
995+165:10 tight lit ~
996−166:15 lit ~
996+165:12 name a
997−167:13 NEWLINE
997+165:13 tight glyph ]
998−167:13 glyph [
998+166:11 INDENT
999−167:14 tight lit ~
999+166:11 glyph ?-
1000−167:16 name b
1000+166:14 name second
1001−167:17 tight glyph ]
1001+167:13 INDENT
1002−167:19 glyph `
1002+167:13 lit ~
1003−167:20 tight glyph [
1003+167:15 lit ~
1004−167:21 tight name a
1004+168:13 NEWLINE
1005−167:23 name b
1005+168:13 glyph [
1006−167:24 tight glyph ]
1006+168:14 tight lit ~
1007−169:1 DEDENT
1007+168:16 name b
1008−169:1 DEDENT
1008+168:17 tight glyph ]
1009−169:1 DEDENT
1009+168:19 glyph `
1010−169:1 DEDENT
1010+168:20 tight glyph [
1011−169:1 DEDENT
1011+168:21 tight name a
1012−169:1 DEDENT
1012+168:23 name b
1013−169:1 NEWLINE
1013+168:24 tight glyph ]
1014−169:1 glyph ++
1014+170:1 DEDENT
1015−169:4 name clap
1015+170:1 DEDENT
1016−169:9 glyph |=
1016+170:1 DEDENT
1017−169:12 name args
1017+170:1 DEDENT
1018−169:16 tight glyph =
1018+170:1 DEDENT
1019−169:17 tight glyph [
1019+170:1 DEDENT
1020−169:18 tight glyph (
1020+170:1 NEWLINE
1021−169:19 tight name unit
1021+170:1 glyph ++
1022−169:24 tvar A
1022+170:4 name clap
1023−169:25 tight glyph )
1023+170:9 glyph |=
1024−169:27 glyph (
1024+170:12 name args
1025−169:28 tight name unit
1025+170:16 tight glyph =
1026−169:33 tvar A
1026+170:17 tight glyph [
1027−169:34 tight glyph )
1027+170:18 tight glyph (
1028−169:36 glyph $-(
1028+170:19 tight name unit
1029−169:39 tight glyph [
1029+170:24 tvar A
1030−169:40 tight tvar A
1030+170:25 tight glyph )
1031−169:42 tvar A
1031+170:27 glyph (
1032−169:43 tight glyph ]
1032+170:28 tight name unit
1033−169:45 tvar A
1033+170:33 tvar A
1034−169:46 tight glyph )
1034+170:34 tight glyph )
1035−169:47 tight glyph ]
1035+170:36 glyph $-(
1036−170:3 INDENT
1036+170:39 tight glyph [
1037−170:3 glyph ?-
1037+170:40 tight tvar A
1038−170:6 name args
1038+170:42 tvar A
1039−171:5 INDENT
1039+170:43 tight glyph ]
1040−171:5 glyph [
1040+170:45 tvar A
1041−171:6 tight name first
1041+170:46 tight glyph )
1042−171:12 name second
1042+170:47 tight glyph ]
1043−171:19 name combine
1043+171:3 INDENT
1044−171:26 tight glyph ]
1044+171:3 glyph ?-
1045−172:7 INDENT
1045+171:6 name args
1046−172:7 glyph ?-
1046+172:5 INDENT
1047−172:10 name first
1047+172:5 glyph [
1048−173:9 INDENT
1048+172:6 tight name first
1049−173:9 lit ~
1049+172:12 name second
1050−173:11 name second
1050+172:19 name combine
1051−174:9 NEWLINE
1051+172:26 tight glyph ]
1052−174:9 glyph [
1052+173:7 INDENT
1053−174:10 tight lit ~
1053+173:7 glyph ?-
1054−174:12 name a
1054+173:10 name first
1055−174:13 tight glyph ]
1055+174:9 INDENT
1056−175:11 INDENT
1056+174:9 lit ~
1057−175:11 glyph ?-
1057+174:11 name second
1058−175:14 name second
1058+175:9 NEWLINE
1059−176:13 INDENT
1059+175:9 glyph [
1060−176:13 lit ~
1060+175:10 tight lit ~
1061−176:15 name first
1061+175:12 name a
1062−177:13 NEWLINE
1062+175:13 tight glyph ]
1063−177:13 glyph [
1063+176:11 INDENT
1064−177:14 tight lit ~
1064+176:11 glyph ?-
1065−177:16 name b
1065+176:14 name second
1066−177:17 tight glyph ]
1066+177:13 INDENT
1067−177:19 glyph `
1067+177:13 lit ~
1068−177:20 tight glyph (
1068+177:15 name first
1069−177:21 tight name combine
1069+178:13 NEWLINE
1070−177:29 name a
1070+178:13 glyph [
1071−177:31 name b
1071+178:14 tight lit ~
1072−177:32 tight glyph )
1072+178:16 name b
1073−179:1 DEDENT
1073+178:17 tight glyph ]
1074−179:1 DEDENT
1074+178:19 glyph `
1075−179:1 DEDENT
1075+178:20 tight glyph (
1076−179:1 DEDENT
1076+178:21 tight name combine
1077−179:1 DEDENT
1077+178:29 name a
1078−179:1 DEDENT
1078+178:31 name b
1079−179:1 NEWLINE
1079+178:32 tight glyph )
1080−179:1 glyph ++
1080+180:1 DEDENT
1081−179:4 name clef
1081+180:1 DEDENT
1082−179:9 glyph |=
1082+180:1 DEDENT
1083−179:12 name args
1083+180:1 DEDENT
1084−179:16 tight glyph =
1084+180:1 DEDENT
1085−179:17 tight glyph [
1085+180:1 DEDENT
1086−179:18 tight glyph (
1086+180:1 NEWLINE
1087−179:19 tight name unit
1087+180:1 glyph ++
1088−179:24 tvar A
1088+180:4 name clef
1089−179:25 tight glyph )
1089+180:9 glyph |=
1090−179:27 glyph (
1090+180:12 name args
1091−179:28 tight name unit
1091+180:16 tight glyph =
1092−179:33 tvar B
1092+180:17 tight glyph [
1093−179:34 tight glyph )
1093+180:18 tight glyph (
1094−179:36 glyph $-(
1094+180:19 tight name unit
1095−179:39 tight glyph [
1095+180:24 tvar A
1096−179:40 tight tvar A
1096+180:25 tight glyph )
1097−179:42 tvar B
1097+180:27 glyph (
1098−179:43 tight glyph ]
1098+180:28 tight name unit
1099−179:45 glyph (
1099+180:33 tvar B
1100−179:46 tight name unit
1100+180:34 tight glyph )
1101−179:51 tvar C
1101+180:36 glyph $-(
1102−179:52 tight glyph )
1102+180:39 tight glyph [
1103−179:53 tight glyph )
1103+180:40 tight tvar A
1104−179:54 tight glyph ]
1104+180:42 tvar B
1105−180:3 INDENT
1105+180:43 tight glyph ]
1106−180:3 glyph ?-
1106+180:45 glyph (
1107−180:6 name args
1107+180:46 tight name unit
1108−181:5 INDENT
1108+180:51 tvar C
1109−181:5 glyph [
1109+180:52 tight glyph )
1110−181:6 tight name first
1110+180:53 tight glyph )
1111−181:12 name second
1111+180:54 tight glyph ]
1112−181:19 name combine
1112+181:3 INDENT
1113−181:26 tight glyph ]
1113+181:3 glyph ?-
1114−182:7 INDENT
1114+181:6 name args
1115−182:7 glyph ?-
1115+182:5 INDENT
1116−182:10 name first
1116+182:5 glyph [
1117−183:9 INDENT
1117+182:6 tight name first
1118−183:9 lit ~
1118+182:12 name second
1119−183:11 lit ~
1119+182:19 name combine
1120−184:9 NEWLINE
1120+182:26 tight glyph ]
1121−184:9 glyph [
1121+183:7 INDENT
1122−184:10 tight lit ~
1122+183:7 glyph ?-
1123−184:12 name a
1123+183:10 name first
1124−184:13 tight glyph ]
1124+184:9 INDENT
1125−185:11 INDENT
1125+184:9 lit ~
1126−185:11 glyph ?-
1126+184:11 lit ~
1127−185:14 name second
1127+185:9 NEWLINE
1128−186:13 INDENT
1128+185:9 glyph [
1129−186:13 lit ~
1129+185:10 tight lit ~
1130−186:15 lit ~
1130+185:12 name a
1131−187:13 NEWLINE
1131+185:13 tight glyph ]
1132−187:13 glyph [
1132+186:11 INDENT
1133−187:14 tight lit ~
1133+186:11 glyph ?-
1134−187:16 name b
1134+186:14 name second
1135−187:17 tight glyph ]
1135+187:13 INDENT
1136−187:19 glyph (
1136+187:13 lit ~
1137−187:20 tight name combine
1137+187:15 lit ~
1138−187:28 name a
1138+188:13 NEWLINE
1139−187:30 name b
1139+188:13 glyph [
1140−187:31 tight glyph )
1140+188:14 tight lit ~
1141−189:1 DEDENT
1141+188:16 name b
1142−189:1 DEDENT
1142+188:17 tight glyph ]
1143−189:1 DEDENT
1143+188:19 glyph (
1144−189:1 DEDENT
1144+188:20 tight name combine
1145−189:1 DEDENT
1145+188:28 name a
1146−189:1 DEDENT
1146+188:30 name b
1147−189:1 NEWLINE
1147+188:31 tight glyph )
1148−189:1 glyph ++
1148+190:1 DEDENT
1149−189:4 name skim
1149+190:1 DEDENT
1150−189:9 glyph |=
1150+190:1 DEDENT
1151−189:12 name args
1151+190:1 DEDENT
1152−189:16 tight glyph =
1152+190:1 DEDENT
1153−189:17 tight glyph [
1153+190:1 DEDENT
1154−189:18 tight glyph (
1154+190:1 NEWLINE
1155−189:19 tight name list
1155+190:1 glyph ++
1156−189:24 tvar A
1156+190:4 name skim
1157−189:25 tight glyph )
1157+190:9 glyph |=
1158−189:27 glyph $-(
1158+190:12 name args
1159−189:30 tight tvar A
1159+190:16 tight glyph =
1160−189:32 glyph ?
1160+190:17 tight glyph [
1161−189:33 tight glyph )
1161+190:18 tight glyph (
1162−189:34 tight glyph ]
1162+190:19 tight name list
1163−190:3 INDENT
1163+190:24 tvar A
1164−190:3 glyph ?-
1164+190:25 tight glyph )
1165−190:6 name args
1165+190:27 glyph $-(
1166−191:5 INDENT
1166+190:30 tight tvar A
1167−191:5 glyph [
1167+190:32 glyph ?
1168−191:6 tight name xs
1168+190:33 tight glyph )
1169−191:9 name predicate
1169+190:34 tight glyph ]
1170−191:18 tight glyph ]
1170+191:3 INDENT
1171−192:7 INDENT
1171+191:3 glyph ?-
1172−192:7 glyph ?-
1172+191:6 name args
1173−192:10 name xs
1173+192:5 INDENT
1174−193:9 INDENT
1174+192:5 glyph [
1175−193:9 lit ~
1175+192:6 tight name xs
1176−193:11 lit ~
1176+192:9 name predicate
1177−194:9 NEWLINE
1177+192:18 tight glyph ]
1178−194:9 glyph [
1178+193:7 INDENT
1179−194:10 tight name item
1179+193:7 glyph ?-
1180−194:15 name rest
1180+193:10 name xs
1181−194:19 tight glyph ]
1181+194:9 INDENT
1182−195:11 INDENT
1182+194:9 lit ~
1183−195:11 glyph ?-
1183+194:11 lit ~
1184−195:14 glyph (
1184+195:9 NEWLINE
1185−195:15 tight name predicate
1185+195:9 glyph [
1186−195:25 name item
1186+195:10 tight name item
1187−195:29 tight glyph )
1187+195:15 name rest
1188−196:13 INDENT
1188+195:19 tight glyph ]
1189−196:13 lit %.y
1189+196:11 INDENT
1190−196:17 glyph [
1190+196:11 glyph ?-
1191−196:18 tight name item
1191+196:14 glyph (
1192−196:23 glyph (
1192+196:15 tight name predicate
1193−196:24 tight name skim
1193+196:25 name item
1194−196:29 name rest
1194+196:29 tight glyph )
1195−196:34 name predicate
1195+197:13 INDENT
1196−196:43 tight glyph )
1196+197:13 lit %.y
1197−196:44 tight glyph ]
1197+197:17 glyph [
1198−197:13 NEWLINE
1198+197:18 tight name item
1199−197:13 lit %.n
1199+197:23 glyph (
1200−197:17 glyph (
1200+197:24 tight name skim
1201−197:18 tight name skim
1201+197:29 name rest
1202−197:23 name rest
1202+197:34 name predicate
1203−197:28 name predicate
1203+197:43 tight glyph )
1204−197:37 tight glyph )
1204+197:44 tight glyph ]
1205−199:1 DEDENT
1205+198:13 NEWLINE
1206−199:1 DEDENT
1206+198:13 lit %.n
1207−199:1 DEDENT
1207+198:17 glyph (
1208−199:1 DEDENT
1208+198:18 tight name skim
1209−199:1 DEDENT
1209+198:23 name rest
1210−199:1 DEDENT
1210+198:28 name predicate
1211−199:1 NEWLINE
1211+198:37 tight glyph )
1212−199:1 glyph ++
1212+200:1 DEDENT
1213−199:4 name skip
1213+200:1 DEDENT
1214−199:9 glyph |=
1214+200:1 DEDENT
1215−199:12 name args
1215+200:1 DEDENT
1216−199:16 tight glyph =
1216+200:1 DEDENT
1217−199:17 tight glyph [
1217+200:1 DEDENT
1218−199:18 tight glyph (
1218+200:1 NEWLINE
1219−199:19 tight name list
1219+200:1 glyph ++
1220−199:24 tvar A
1220+200:4 name skip
1221−199:25 tight glyph )
1221+200:9 glyph |=
1222−199:27 glyph $-(
1222+200:12 name args
1223−199:30 tight tvar A
1223+200:16 tight glyph =
1224−199:32 glyph ?
1224+200:17 tight glyph [
1225−199:33 tight glyph )
1225+200:18 tight glyph (
1226−199:34 tight glyph ]
1226+200:19 tight name list
1227−200:3 INDENT
1227+200:24 tvar A
1228−200:3 glyph ?-
1228+200:25 tight glyph )
1229−200:6 name args
1229+200:27 glyph $-(
1230−201:5 INDENT
1230+200:30 tight tvar A
1231−201:5 glyph [
1231+200:32 glyph ?
1232−201:6 tight name xs
1232+200:33 tight glyph )
1233−201:9 name predicate
1233+200:34 tight glyph ]
1234−201:18 tight glyph ]
1234+201:3 INDENT
1235−202:7 INDENT
1235+201:3 glyph ?-
1236−202:7 glyph ?-
1236+201:6 name args
1237−202:10 name xs
1237+202:5 INDENT
1238−203:9 INDENT
1238+202:5 glyph [
1239−203:9 lit ~
1239+202:6 tight name xs
1240−203:11 lit ~
1240+202:9 name predicate
1241−204:9 NEWLINE
1241+202:18 tight glyph ]
1242−204:9 glyph [
1242+203:7 INDENT
1243−204:10 tight name item
1243+203:7 glyph ?-
1244−204:15 name rest
1244+203:10 name xs
1245−204:19 tight glyph ]
1245+204:9 INDENT
1246−205:11 INDENT
1246+204:9 lit ~
1247−205:11 glyph ?-
1247+204:11 lit ~
1248−205:14 glyph (
1248+205:9 NEWLINE
1249−205:15 tight name predicate
1249+205:9 glyph [
1250−205:25 name item
1250+205:10 tight name item
1251−205:29 tight glyph )
1251+205:15 name rest
1252−206:13 INDENT
1252+205:19 tight glyph ]
1253−206:13 lit %.y
1253+206:11 INDENT
1254−206:17 glyph (
1254+206:11 glyph ?-
1255−206:18 tight name skip
1255+206:14 glyph (
1256−206:23 name rest
1256+206:15 tight name predicate
1257−206:28 name predicate
1257+206:25 name item
1258−206:37 tight glyph )
1258+206:29 tight glyph )
1259−207:13 NEWLINE
1259+207:13 INDENT
1260−207:13 lit %.n
1260+207:13 lit %.y
1261−207:17 glyph [
1261+207:17 glyph (
1262−207:18 tight name item
1262+207:18 tight name skip
1263−207:23 glyph (
1263+207:23 name rest
1264−207:24 tight name skip
1264+207:28 name predicate
1265−207:29 name rest
1265+207:37 tight glyph )
1266−207:34 name predicate
1266+208:13 NEWLINE
1267−207:43 tight glyph )
1267+208:13 lit %.n
1268−207:44 tight glyph ]
1268+208:17 glyph [
1269−209:1 DEDENT
1269+208:18 tight name item
1270−209:1 DEDENT
1270+208:23 glyph (
1271−209:1 DEDENT
1271+208:24 tight name skip
1272−209:1 DEDENT
1272+208:29 name rest
1273−209:1 DEDENT
1273+208:34 name predicate
1274−209:1 DEDENT
1274+208:43 tight glyph )
1275−209:1 NEWLINE
1275+208:44 tight glyph ]
1276−209:1 glyph ++
1276+210:1 DEDENT
1277−209:4 name levy
1277+210:1 DEDENT
1278−209:9 glyph |=
1278+210:1 DEDENT
1279−209:12 name args
1279+210:1 DEDENT
1280−209:16 tight glyph =
1280+210:1 DEDENT
1281−209:17 tight glyph [
1281+210:1 DEDENT
1282−209:18 tight glyph (
1282+210:1 NEWLINE
1283−209:19 tight name list
1283+210:1 glyph ++
1284−209:24 tvar A
1284+210:4 name levy
1285−209:25 tight glyph )
1285+210:9 glyph |=
1286−209:27 glyph $-(
1286+210:12 name args
1287−209:30 tight tvar A
1287+210:16 tight glyph =
1288−209:32 glyph ?
1288+210:17 tight glyph [
1289−209:33 tight glyph )
1289+210:18 tight glyph (
1290−209:34 tight glyph ]
1290+210:19 tight name list
1291−210:3 INDENT
1291+210:24 tvar A
1292−210:3 glyph ?-
1292+210:25 tight glyph )
1293−210:6 name args
1293+210:27 glyph $-(
1294−211:5 INDENT
1294+210:30 tight tvar A
1295−211:5 glyph [
1295+210:32 glyph ?
1296−211:6 tight name xs
1296+210:33 tight glyph )
1297−211:9 name predicate
1297+210:34 tight glyph ]
1298−211:18 tight glyph ]
1298+211:3 INDENT
1299−212:7 INDENT
1299+211:3 glyph ?-
1300−212:7 glyph ?-
1300+211:6 name args
1301−212:10 name xs
1301+212:5 INDENT
1302−213:9 INDENT
1302+212:5 glyph [
1303−213:9 lit ~
1303+212:6 tight name xs
1304−213:11 lit %.y
1304+212:9 name predicate
1305−214:9 NEWLINE
1305+212:18 tight glyph ]
1306−214:9 glyph [
1306+213:7 INDENT
1307−214:10 tight name item
1307+213:7 glyph ?-
1308−214:15 name rest
1308+213:10 name xs
1309−214:19 tight glyph ]
1309+214:9 INDENT
1310−215:11 INDENT
1310+214:9 lit ~
1311−215:11 glyph ?-
1311+214:11 lit %.y
1312−215:14 glyph (
1312+215:9 NEWLINE
1313−215:15 tight name predicate
1313+215:9 glyph [
1314−215:25 name item
1314+215:10 tight name item
1315−215:29 tight glyph )
1315+215:15 name rest
1316−216:13 INDENT
1316+215:19 tight glyph ]
1317−216:13 lit %.y
1317+216:11 INDENT
1318−216:17 glyph (
1318+216:11 glyph ?-
1319−216:18 tight name levy
1319+216:14 glyph (
1320−216:23 name rest
1320+216:15 tight name predicate
1321−216:28 name predicate
1321+216:25 name item
1322−216:37 tight glyph )
1322+216:29 tight glyph )
1323−217:13 NEWLINE
1323+217:13 INDENT
1324−217:13 lit %.n
1324+217:13 lit %.y
1325−217:17 lit %.n
1325+217:17 glyph (
1326−219:1 DEDENT
1326+217:18 tight name levy
1327−219:1 DEDENT
1327+217:23 name rest
1328−219:1 DEDENT
1328+217:28 name predicate
1329−219:1 DEDENT
1329+217:37 tight glyph )
1330−219:1 DEDENT
1330+218:13 NEWLINE
1331−219:1 DEDENT
1331+218:13 lit %.n
1332−219:1 NEWLINE
1332+218:17 lit %.n
1333−219:1 glyph ++
1333+220:1 DEDENT
1334−219:4 name lien
1334+220:1 DEDENT
1335−219:9 glyph |=
1335+220:1 DEDENT
1336−219:12 name args
1336+220:1 DEDENT
1337−219:16 tight glyph =
1337+220:1 DEDENT
1338−219:17 tight glyph [
1338+220:1 DEDENT
1339−219:18 tight glyph (
1339+220:1 NEWLINE
1340−219:19 tight name list
1340+220:1 glyph ++
1341−219:24 tvar A
1341+220:4 name lien
1342−219:25 tight glyph )
1342+220:9 glyph |=
1343−219:27 glyph $-(
1343+220:12 name args
1344−219:30 tight tvar A
1344+220:16 tight glyph =
1345−219:32 glyph ?
1345+220:17 tight glyph [
1346−219:33 tight glyph )
1346+220:18 tight glyph (
1347−219:34 tight glyph ]
1347+220:19 tight name list
1348−220:3 INDENT
1348+220:24 tvar A
1349−220:3 glyph ?-
1349+220:25 tight glyph )
1350−220:6 name args
1350+220:27 glyph $-(
1351−221:5 INDENT
1351+220:30 tight tvar A
1352−221:5 glyph [
1352+220:32 glyph ?
1353−221:6 tight name xs
1353+220:33 tight glyph )
1354−221:9 name predicate
1354+220:34 tight glyph ]
1355−221:18 tight glyph ]
1355+221:3 INDENT
1356−222:7 INDENT
1356+221:3 glyph ?-
1357−222:7 glyph ?-
1357+221:6 name args
1358−222:10 name xs
1358+222:5 INDENT
1359−223:9 INDENT
1359+222:5 glyph [
1360−223:9 lit ~
1360+222:6 tight name xs
1361−223:11 lit %.n
1361+222:9 name predicate
1362−224:9 NEWLINE
1362+222:18 tight glyph ]
1363−224:9 glyph [
1363+223:7 INDENT
1364−224:10 tight name item
1364+223:7 glyph ?-
1365−224:15 name rest
1365+223:10 name xs
1366−224:19 tight glyph ]
1366+224:9 INDENT
1367−225:11 INDENT
1367+224:9 lit ~
1368−225:11 glyph ?-
1368+224:11 lit %.n
1369−225:14 glyph (
1369+225:9 NEWLINE
1370−225:15 tight name predicate
1370+225:9 glyph [
1371−225:25 name item
1371+225:10 tight name item
1372−225:29 tight glyph )
1372+225:15 name rest
1373−226:13 INDENT
1373+225:19 tight glyph ]
1374−226:13 lit %.y
1374+226:11 INDENT
1375−226:17 lit %.y
1375+226:11 glyph ?-
1376−227:13 NEWLINE
1376+226:14 glyph (
1377−227:13 lit %.n
1377+226:15 tight name predicate
1378−227:17 glyph (
1378+226:25 name item
1379−227:18 tight name lien
1379+226:29 tight glyph )
1380−227:23 name rest
1380+227:13 INDENT
1381−227:28 name predicate
1381+227:13 lit %.y
1382−227:37 tight glyph )
1382+227:17 lit %.y
1383−229:1 DEDENT
1383+228:13 NEWLINE
1384−229:1 DEDENT
1384+228:13 lit %.n
1385−229:1 DEDENT
1385+228:17 glyph (
1386−229:1 DEDENT
1386+228:18 tight name lien
1387−229:1 DEDENT
1387+228:23 name rest
1388−229:1 DEDENT
1388+228:28 name predicate
1389−229:1 NEWLINE
1389+228:37 tight glyph )
1390−229:1 glyph ++
1390+230:1 DEDENT
1391−229:4 name roll
1391+230:1 DEDENT
1392−229:9 glyph |=
1392+230:1 DEDENT
1393−229:12 name args
1393+230:1 DEDENT
1394−229:16 tight glyph =
1394+230:1 DEDENT
1395−229:17 tight glyph [
1395+230:1 DEDENT
1396−229:18 tight glyph (
1396+230:1 NEWLINE
1397−229:19 tight name list
1397+230:1 glyph ++
1398−229:24 tvar A
1398+230:4 name roll
1399−229:25 tight glyph )
1399+230:9 glyph |=
1400−229:27 tvar B
1400+230:12 name args
1401−229:29 glyph $-(
1401+230:16 tight glyph =
1402−229:32 tight glyph [
1402+230:17 tight glyph [
1403−229:33 tight tvar A
1403+230:18 tight glyph (
1404−229:35 tvar B
1404+230:19 tight name list
1405−229:36 tight glyph ]
1405+230:24 tvar A
1406−229:38 tvar B
1406+230:25 tight glyph )
1407−229:39 tight glyph )
1407+230:27 tvar B
1408−229:40 tight glyph ]
1408+230:29 glyph $-(
1409−230:3 INDENT
1409+230:32 tight glyph [
1410−230:3 glyph ?-
1410+230:33 tight tvar A
1411−230:6 name args
1411+230:35 tvar B
1412−231:5 INDENT
1412+230:36 tight glyph ]
1413−231:5 glyph [
1413+230:38 tvar B
1414−231:6 tight name xs
1414+230:39 tight glyph )
1415−231:9 name start
1415+230:40 tight glyph ]
1416−231:15 name combine
1416+231:3 INDENT
1417−231:22 tight glyph ]
1417+231:3 glyph ?-
1418−232:7 INDENT
1418+231:6 name args
1419−232:7 glyph ?-
1419+232:5 INDENT
1420−232:10 name xs
1420+232:5 glyph [
1421−233:9 INDENT
1421+232:6 tight name xs
1422−233:9 lit ~
1422+232:9 name start
1423−233:11 name start
1423+232:15 name combine
1424−234:9 NEWLINE
1424+232:22 tight glyph ]
1425−234:9 glyph [
1425+233:7 INDENT
1426−234:10 tight name item
1426+233:7 glyph ?-
1427−234:15 name rest
1427+233:10 name xs
1428−234:19 tight glyph ]
1428+234:9 INDENT
1429−234:21 glyph (
1429+234:9 lit ~
1430−234:22 tight name roll
1430+234:11 name start
1431−234:27 name rest
1431+235:9 NEWLINE
1432−234:32 glyph (
1432+235:9 glyph [
1433−234:33 tight name combine
1433+235:10 tight name item
1434−234:41 name item
1434+235:15 name rest
1435−234:46 name start
1435+235:19 tight glyph ]
1436−234:51 tight glyph )
1436+235:21 glyph (
1437−234:53 name combine
1437+235:22 tight name roll
1438−234:60 tight glyph )
1438+235:27 name rest
1439−236:1 DEDENT
1439+235:32 glyph (
1440−236:1 DEDENT
1440+235:33 tight name combine
1441−236:1 DEDENT
1441+235:41 name item
1442−236:1 DEDENT
1442+235:46 name start
1443−236:1 NEWLINE
1443+235:51 tight glyph )
1444−236:1 glyph ++
1444+235:53 name combine
1445−236:4 name reel
1445+235:60 tight glyph )
1446−236:9 glyph |=
1446+237:1 DEDENT
1447−236:12 name args
1447+237:1 DEDENT
1448−236:16 tight glyph =
1448+237:1 DEDENT
1449−236:17 tight glyph [
1449+237:1 DEDENT
1450−236:18 tight glyph (
1450+237:1 NEWLINE
1451−236:19 tight name list
1451+237:1 glyph ++
1452−236:24 tvar A
1452+237:4 name reel
1453−236:25 tight glyph )
1453+237:9 glyph |=
1454−236:27 tvar B
1454+237:12 name args
1455−236:29 glyph $-(
1455+237:16 tight glyph =
1456−236:32 tight glyph [
1456+237:17 tight glyph [
1457−236:33 tight tvar A
1457+237:18 tight glyph (
1458−236:35 tvar B
1458+237:19 tight name list
1459−236:36 tight glyph ]
1459+237:24 tvar A
1460−236:38 tvar B
1460+237:25 tight glyph )
1461−236:39 tight glyph )
1461+237:27 tvar B
1462−236:40 tight glyph ]
1462+237:29 glyph $-(
1463−237:3 INDENT
1463+237:32 tight glyph [
1464−237:3 glyph ?-
1464+237:33 tight tvar A
1465−237:6 name args
1465+237:35 tvar B
1466−238:5 INDENT
1466+237:36 tight glyph ]
1467−238:5 glyph [
1467+237:38 tvar B
1468−238:6 tight name xs
1468+237:39 tight glyph )
1469−238:9 name start
1469+237:40 tight glyph ]
1470−238:15 name combine
1470+238:3 INDENT
1471−238:22 tight glyph ]
1471+238:3 glyph ?-
1472−239:7 INDENT
1472+238:6 name args
1473−239:7 glyph ?-
1473+239:5 INDENT
1474−239:10 name xs
1474+239:5 glyph [
1475−240:9 INDENT
1475+239:6 tight name xs
1476−240:9 lit ~
1476+239:9 name start
1477−240:11 name start
1477+239:15 name combine
1478−241:9 NEWLINE
1478+239:22 tight glyph ]
1479−241:9 glyph [
1479+240:7 INDENT
1480−241:10 tight name item
1480+240:7 glyph ?-
1481−241:15 name rest
1481+240:10 name xs
1482−241:19 tight glyph ]
1482+241:9 INDENT
1483−241:21 glyph (
1483+241:9 lit ~
1484−241:22 tight name combine
1484+241:11 name start
1485−241:30 name item
1485+242:9 NEWLINE
1486−241:35 glyph (
1486+242:9 glyph [
1487−241:36 tight name reel
1487+242:10 tight name item
1488−241:41 name rest
1488+242:15 name rest
1489−241:46 name start
1489+242:19 tight glyph ]
1490−241:52 name combine
1490+242:21 glyph (
1491−241:59 tight glyph )
1491+242:22 tight name combine
1492−241:60 tight glyph )
1492+242:30 name item
1493−243:1 DEDENT
1493+242:35 glyph (
1494−243:1 DEDENT
1494+242:36 tight name reel
1495−243:1 DEDENT
1495+242:41 name rest
1496−243:1 DEDENT
1496+242:46 name start
1497−243:1 NEWLINE
1497+242:52 name combine
1498−243:1 glyph ++
1498+242:59 tight glyph )
1499−243:4 name flit
1499+242:60 tight glyph )
1500−243:9 glyph |=
1500+244:1 DEDENT
1501−243:12 name predicate
1501+244:1 DEDENT
1502−243:21 tight glyph =
1502+244:1 DEDENT
1503−243:22 tight glyph $-(
1503+244:1 DEDENT
1504−243:25 tight tvar A
1504+244:1 NEWLINE
1505−243:27 glyph ?
1505+244:1 glyph ++
1506−243:28 tight glyph )
1506+244:4 name flit
1507−244:3 INDENT
1507+244:9 glyph |=
1508−244:3 glyph |=
1508+244:12 name predicate
1509−244:6 name value
1509+244:21 tight glyph =
1510−244:11 tight glyph =
1510+244:22 tight glyph $-(
1511−244:12 tight tvar A
1511+244:25 tight tvar A
1512−245:5 INDENT
1512+244:27 glyph ?
1513−245:5 glyph ?-
1513+244:28 tight glyph )
1514−245:8 glyph (
1514+245:3 INDENT
1515−245:9 tight name predicate
1515+245:3 glyph |=
1516−245:19 name value
1516+245:6 name value
1517−245:24 tight glyph )
1517+245:11 tight glyph =
1518−246:7 INDENT
1518+245:12 tight tvar A
1519−246:7 lit %.y
1519+246:5 INDENT
1520−246:11 glyph `
1520+246:5 glyph ?-
1521−246:12 tight name value
1521+246:8 glyph (
1522−247:7 NEWLINE
1522+246:9 tight name predicate
1523−247:7 lit %.n
1523+246:19 name value
1524−247:11 lit ~
1524+246:24 tight glyph )
1525−249:1 DEDENT
1525+247:7 INDENT
1526−249:1 DEDENT
1526+247:7 lit %.y
1527−249:1 DEDENT
1527+247:11 glyph `
1528−249:1 NEWLINE
1528+247:12 tight name value
1529−249:1 glyph ++
1529+248:7 NEWLINE
1530−249:4 name murn
1530+248:7 lit %.n
1531−249:9 glyph |=
1531+248:11 lit ~
1532−249:12 name args
1532+250:1 DEDENT
1533−249:16 tight glyph =
1533+250:1 DEDENT
1534−249:17 tight glyph [
1534+250:1 DEDENT
1535−249:18 tight glyph (
1535+250:1 NEWLINE
1536−249:19 tight name list
1536+250:1 glyph ++
1537−249:24 tvar A
1537+250:4 name murn
1538−249:25 tight glyph )
1538+250:9 glyph |=
1539−249:27 glyph $-(
1539+250:12 name args
1540−249:30 tight tvar A
1540+250:16 tight glyph =
1541−249:32 glyph (
1541+250:17 tight glyph [
1542−249:33 tight name unit
1542+250:18 tight glyph (
1543−249:38 tvar B
1543+250:19 tight name list
1544−249:39 tight glyph )
1544+250:24 tvar A
1545−249:40 tight glyph )
1545+250:25 tight glyph )
1546−249:41 tight glyph ]
1546+250:27 glyph $-(
1547−250:3 INDENT
1547+250:30 tight tvar A
1548−250:3 glyph ?-
1548+250:32 glyph (
1549−250:6 name args
1549+250:33 tight name unit
1550−251:5 INDENT
1550+250:38 tvar B
1551−251:5 glyph [
1551+250:39 tight glyph )
1552−251:6 tight name xs
1552+250:40 tight glyph )
1553−251:9 name f
1553+250:41 tight glyph ]
1554−251:10 tight glyph ]
1554+251:3 INDENT
1555−252:7 INDENT
1555+251:3 glyph ?-
1556−252:7 glyph ?-
1556+251:6 name args
1557−252:10 name xs
1557+252:5 INDENT
1558−253:9 INDENT
1558+252:5 glyph [
1559−253:9 lit ~
1559+252:6 tight name xs
1560−253:11 lit ~
1560+252:9 name f
1561−254:9 NEWLINE
1561+252:10 tight glyph ]
1562−254:9 glyph [
1562+253:7 INDENT
1563−254:10 tight name item
1563+253:7 glyph ?-
1564−254:15 name rest
1564+253:10 name xs
1565−254:19 tight glyph ]
1565+254:9 INDENT
1566−255:11 INDENT
1566+254:9 lit ~
1567−255:11 glyph ?-
1567+254:11 lit ~
1568−255:14 glyph (
1568+255:9 NEWLINE
1569−255:15 tight name f
1569+255:9 glyph [
1570−255:17 name item
1570+255:10 tight name item
1571−255:21 tight glyph )
1571+255:15 name rest
1572−256:13 INDENT
1572+255:19 tight glyph ]
1573−256:13 lit ~
1573+256:11 INDENT
1574−256:15 glyph (
1574+256:11 glyph ?-
1575−256:16 tight name murn
1575+256:14 glyph (
1576−256:21 name rest
1576+256:15 tight name f
1577−256:26 name f
1577+256:17 name item
1578−256:27 tight glyph )
1578+256:21 tight glyph )
1579−257:13 NEWLINE
1579+257:13 INDENT
1580−257:13 glyph [
1580+257:13 lit ~
1581−257:14 tight lit ~
1581+257:15 glyph (
1582−257:16 name value
1582+257:16 tight name murn
1583−257:21 tight glyph ]
1583+257:21 name rest
1584−257:23 glyph [
1584+257:26 name f
1585−257:24 tight name value
1585+257:27 tight glyph )
1586−257:30 glyph (
1586+258:13 NEWLINE
1587−257:31 tight name murn
1587+258:13 glyph [
1588−257:36 name rest
1588+258:14 tight lit ~
1589−257:41 name f
1589+258:16 name value
1590−257:42 tight glyph )
1590+258:21 tight glyph ]
1591−257:43 tight glyph ]
1591+258:23 glyph [
1592−259:1 DEDENT
1592+258:24 tight name value
1593−259:1 DEDENT
1593+258:30 glyph (
1594−259:1 DEDENT
1594+258:31 tight name murn
1595−259:1 DEDENT
1595+258:36 name rest
1596−259:1 DEDENT
1596+258:41 name f
1597−259:1 DEDENT
1597+258:42 tight glyph )
1598−259:1 NEWLINE
1598+258:43 tight glyph ]
1599−259:1 glyph ++
1599+260:1 DEDENT
1600−259:4 name join
1600+260:1 DEDENT
1601−259:9 glyph |=
1601+260:1 DEDENT
1602−259:12 name args
1602+260:1 DEDENT
1603−259:16 tight glyph =
1603+260:1 DEDENT
1604−259:17 tight glyph [
1604+260:1 DEDENT
1605−259:18 tight tvar A
1605+260:1 NEWLINE
1606−259:20 glyph (
1606+260:1 glyph ++
1607−259:21 tight name list
1607+260:4 name join
1608−259:26 tvar A
1608+260:9 glyph |=
1609−259:27 tight glyph )
1609+260:12 name args
1610−259:28 tight glyph ]
1610+260:16 tight glyph =
1611−260:3 INDENT
1611+260:17 tight glyph [
1612−260:3 glyph ?-
1612+260:18 tight tvar A
1613−260:6 name args
1613+260:20 glyph (
1614−261:5 INDENT
1614+260:21 tight name list
1615−261:5 glyph [
1615+260:26 tvar A
1616−261:6 tight name separator
1616+260:27 tight glyph )
1617−261:16 name xs
1617+260:28 tight glyph ]
1618−261:18 tight glyph ]
1618+261:3 INDENT
1619−262:7 INDENT
1619+261:3 glyph ?-
1620−262:7 glyph ?-
1620+261:6 name args
1621−262:10 name xs
1621+262:5 INDENT
1622−263:9 INDENT
1622+262:5 glyph [
1623−263:9 lit ~
1623+262:6 tight name separator
1624−263:11 lit ~
1624+262:16 name xs
1625−264:9 NEWLINE
1625+262:18 tight glyph ]
1626−264:9 glyph [
1626+263:7 INDENT
1627−264:10 tight name item
1627+263:7 glyph ?-
1628−264:15 name rest
1628+263:10 name xs
1629−264:19 tight glyph ]
1629+264:9 INDENT
1630−265:11 INDENT
1630+264:9 lit ~
1631−265:11 glyph ?-
1631+264:11 lit ~
1632−265:14 name rest
1632+265:9 NEWLINE
1633−266:13 INDENT
1633+265:9 glyph [
1634−266:13 lit ~
1634+265:10 tight name item
1635−266:15 glyph [
1635+265:15 name rest
1636−266:16 tight name item
1636+265:19 tight glyph ]
1637−266:21 lit ~
1637+266:11 INDENT
1638−266:22 tight glyph ]
1638+266:11 glyph ?-
1639−267:13 NEWLINE
1639+266:14 name rest
1640−267:13 glyph [
1640+267:13 INDENT
1641−267:14 tight name next
1641+267:13 lit ~
1642−267:19 name more
1642+267:15 glyph [
1643−267:23 tight glyph ]
1643+267:16 tight name item
1644−267:25 glyph [
1644+267:21 lit ~
1645−267:26 tight name item
1645+267:22 tight glyph ]
1646−267:31 glyph [
1646+268:13 NEWLINE
1647−267:32 tight name separator
1647+268:13 glyph [
1648−267:42 glyph (
1648+268:14 tight name next
1649−267:43 tight name join
1649+268:19 name more
1650−267:48 name separator
1650+268:23 tight glyph ]
1651−267:58 name rest
1651+268:25 glyph [
1652−267:62 tight glyph )
1652+268:26 tight name item
1653−267:63 tight glyph ]
1653+268:31 glyph [
1654−267:64 tight glyph ]
1654+268:32 tight name separator
1655−269:1 DEDENT
1655+268:42 glyph (
1656−269:1 DEDENT
1656+268:43 tight name join
1657−269:1 DEDENT
1657+268:48 name separator
1658−269:1 DEDENT
1658+268:58 name rest
1659−269:1 DEDENT
1659+268:62 tight glyph )
1660−269:1 DEDENT
1660+268:63 tight glyph ]
1661−269:1 NEWLINE
1661+268:64 tight glyph ]
1662−269:1 glyph ++
1662+270:1 DEDENT
1663−269:4 name snip
1663+270:1 DEDENT
1664−269:9 glyph |=
1664+270:1 DEDENT
1665−269:12 name xs
1665+270:1 DEDENT
1666−269:14 tight glyph =
1666+270:1 DEDENT
1667−269:15 tight glyph (
1667+270:1 DEDENT
1668−269:16 tight name list
1668+270:1 NEWLINE
1669−269:21 tvar A
1669+270:1 glyph ++
1670−269:22 tight glyph )
1670+270:4 name snip
1671−270:3 INDENT
1671+270:9 glyph |=
1672−270:3 glyph ?-
1672+270:12 name xs
1673−270:6 name xs
1673+270:14 tight glyph =
1674−271:5 INDENT
1674+270:15 tight glyph (
1675−271:5 lit ~
1675+270:16 tight name list
1676−271:7 lit ~
1676+270:21 tvar A
1677−272:5 NEWLINE
1677+270:22 tight glyph )
1678−272:5 glyph [
1678+271:3 INDENT
1679−272:6 tight name item
1679+271:3 glyph ?-
1680−272:11 name rest
1680+271:6 name xs
1681−272:15 tight glyph ]
1681+272:5 INDENT
1682−273:7 INDENT
1682+272:5 lit ~
1683−273:7 glyph ?-
1683+272:7 lit ~
1684−273:10 name rest
1684+273:5 NEWLINE
1685−274:9 INDENT
1685+273:5 glyph [
1686−274:9 lit ~
1686+273:6 tight name item
1687−274:11 lit ~
1687+273:11 name rest
1688−275:9 NEWLINE
1688+273:15 tight glyph ]
1689−275:9 glyph [
1689+274:7 INDENT
1690−275:10 tight name next
1690+274:7 glyph ?-
1691−275:15 name more
1691+274:10 name rest
1692−275:19 tight glyph ]
1692+275:9 INDENT
1693−275:21 glyph [
1693+275:9 lit ~
1694−275:22 tight name item
1694+275:11 lit ~
1695−275:27 glyph (
1695+276:9 NEWLINE
1696−275:28 tight name snip
1696+276:9 glyph [
1697−275:33 name rest
1697+276:10 tight name next
1698−275:37 tight glyph )
1698+276:15 name more
1699−275:38 tight glyph ]
1699+276:19 tight glyph ]
1700−277:1 DEDENT
1700+276:21 glyph [
1701−277:1 DEDENT
1701+276:22 tight name item
1702−277:1 DEDENT
1702+276:27 glyph (
1703−277:1 DEDENT
1703+276:28 tight name snip
1704−277:1 NEWLINE
1704+276:33 name rest
1705−277:1 glyph ++
1705+276:37 tight glyph )
1706−277:4 name rear
1706+276:38 tight glyph ]
1707−277:9 glyph |=
1707+278:1 DEDENT
1708−277:12 name xs
1708+278:1 DEDENT
1709−277:14 tight glyph =
1709+278:1 DEDENT
1710−277:15 tight glyph (
1710+278:1 DEDENT
1711−277:16 tight name list
1711+278:1 NEWLINE
1712−277:21 tvar A
1712+278:1 glyph ++
1713−277:22 tight glyph )
1713+278:4 name rear
1714−278:3 INDENT
1714+278:9 glyph |=
1715−278:3 glyph ?-
1715+278:12 name xs
1716−278:6 name xs
1716+278:14 tight glyph =
1717−279:5 INDENT
1717+278:15 tight glyph (
1718−279:5 lit ~
1718+278:16 tight name list
1719−279:7 glyph !!
1719+278:21 tvar A
1720−280:5 NEWLINE
1720+278:22 tight glyph )
1721−280:5 glyph [
1721+279:3 INDENT
1722−280:6 tight name item
1722+279:3 glyph ?-
1723−280:11 name rest
1723+279:6 name xs
1724−280:15 tight glyph ]
1724+280:5 INDENT
1725−281:7 INDENT
1725+280:5 lit ~
1726−281:7 glyph ?-
1726+280:7 glyph !!
1727−281:10 name rest
1727+281:5 NEWLINE
1728−282:9 INDENT
1728+281:5 glyph [
1729−282:9 lit ~
1729+281:6 tight name item
1730−282:11 name item
1730+281:11 name rest
1731−283:9 NEWLINE
1731+281:15 tight glyph ]
1732−283:9 glyph [
1732+282:7 INDENT
1733−283:10 tight name next
1733+282:7 glyph ?-
1734−283:15 name more
1734+282:10 name rest
1735−283:19 tight glyph ]
1735+283:9 INDENT
1736−283:21 glyph (
1736+283:9 lit ~
1737−283:22 tight name rear
1737+283:11 name item
1738−283:27 name rest
1738+284:9 NEWLINE
1739−283:31 tight glyph )
1739+284:9 glyph [
1740−283:32 DEDENT
1740+284:10 tight name next
1741−283:32 DEDENT
1741+284:15 name more
1742−283:32 DEDENT
1742+284:19 tight glyph ]
1743−283:32 DEDENT
1743+284:21 glyph (
1744−283:32 NEWLINE
1744+284:22 tight name rear
1745+284:27 name rest
1746+284:31 tight glyph )
1747+284:32 DEDENT
1748+284:32 DEDENT
1749+284:32 DEDENT
1750+284:32 DEDENT
1751+284:32 NEWLINE
tests/golden/prelude-unit-list-transforms/tree.txt+659−656
@@ -87,672 +87,675 @@
87 (arm 39:5
87 (arm 39:5
88 (cell 39:5 (bind 39:6 xs) (bind 39:9 ys))
88 (cell 39:5 (bind 39:6 xs) (bind 39:9 ys))
89 (body 40:7
89 (body 40:7
90− (branch 40:7
90+ (cast 40:7
91− (wing 40:10 xs)
91+ (apply 40:10 list (tvar 40:16 A))
92− (arm 41:9 (lit 41:9 ~) (wing 41:11 ys))
92+ (body 41:9
93− (arm 42:9
93+ (branch 41:9
94− (cell 42:9 (bind 42:10 item) (bind 42:15 rest))
94+ (wing 41:12 xs)
95− (tuple 42:21
95+ (arm 42:11 (lit 42:11 ~) (wing 42:13 ys))
96− (wing 42:22 item)
96+ (arm 43:11
97− (group 42:27
97+ (cell 43:11 (bind 43:12 item) (bind 43:17 rest))
98− (call 42:28 (wing 42:28 weld) (wing 42:33 rest) (wing 42:38 ys))))))))))))
98+ (tuple 43:23
99− (value 44:1 turn
99+ (wing 43:24 item)
100− (gate 44:9
100+ (group 43:29
101− (face 44:12 args
101+ (call 43:30 (wing 43:30 weld) (wing 43:35 rest) (wing 43:40 ys))))))))))))))
102− (cell 44:17
102+ (value 45:1 turn
103− (apply 44:18 list (tvar 44:24 A))
103+ (gate 45:9
104− (fn 44:27 (tvar 44:30 A) (tvar 44:32 B))))
104+ (face 45:12 args
105− (body 45:3
105+ (cell 45:17
106− (branch 45:3
106+ (apply 45:18 list (tvar 45:24 A))
107− (wing 45:6 args)
107+ (fn 45:27 (tvar 45:30 A) (tvar 45:32 B))))
108− (arm 46:5
108+ (body 46:3
109− (cell 46:5 (bind 46:6 xs) (bind 46:9 f))
109+ (branch 46:3
110− (body 47:7
110+ (wing 46:6 args)
111− (branch 47:7
111+ (arm 47:5
112− (wing 47:10 xs)
112+ (cell 47:5 (bind 47:6 xs) (bind 47:9 f))
113− (arm 48:9 (lit 48:9 ~) (lit 48:11 ~))
113+ (body 48:7
114− (arm 49:9
114+ (branch 48:7
115− (cell 49:9 (bind 49:10 item) (bind 49:15 rest))
115+ (wing 48:10 xs)
116− (tuple 49:21
116+ (arm 49:9 (lit 49:9 ~) (lit 49:11 ~))
117− (group 49:22
117+ (arm 50:9
118− (call 49:23 (wing 49:23 f) (wing 49:25 item)))
118+ (cell 50:9 (bind 50:10 item) (bind 50:15 rest))
119− (group 49:31
119+ (tuple 50:21
120− (call 49:32 (wing 49:32 turn) (wing 49:37 rest) (wing 49:42 f))))))))))))
120+ (group 50:22
121− (mold 51:1 dime
121+ (call 50:23 (wing 50:23 f) (wing 50:25 item)))
122− (cell 51:9
122+ (group 50:31
123− (face 51:10 p (aura 51:12 @ta))
123+ (call 50:32 (wing 50:32 turn) (wing 50:37 rest) (wing 50:42 f))))))))))))
124− (face 51:16 q (aura 51:18 @))))
124+ (mold 52:1 dime
125− (mold 53:1 hair
125+ (cell 52:9
126− (cell 53:9
126+ (face 52:10 p (aura 52:12 @ta))
127− (face 53:10 p (aura 53:12 @ud))
127+ (face 52:16 q (aura 52:18 @))))
128− (face 53:16 q (aura 53:18 @ud))))
128+ (mold 54:1 hair
129− (mold 55:1 pint
129+ (cell 54:9
130− (cell 55:9
130+ (face 54:10 p (aura 54:12 @ud))
131− (face 55:10 p
131+ (face 54:16 q (aura 54:18 @ud))))
132− (cell 55:12
132+ (mold 56:1 pint
133− (face 55:13 p (aura 55:15 @))
133+ (cell 56:9
134− (face 55:17 q (aura 55:19 @))))
134+ (face 56:10 p
135− (face 55:22 q
135+ (cell 56:12
136− (cell 55:24
136+ (face 56:13 p (aura 56:15 @))
137− (face 55:25 p (aura 55:27 @))
137+ (face 56:17 q (aura 56:19 @))))
138− (face 55:29 q (aura 55:31 @))))))
138+ (face 56:22 q
139− (mold 57:1 coin
139+ (cell 56:24
140− (union 58:3
140+ (face 56:25 p (aura 56:27 @))
141− (cell 58:3
141+ (face 56:29 q (aura 56:31 @))))))
142− (const 58:4 %$)
142+ (mold 58:1 coin
143− (face 58:7 p (ref 58:9 dime)))
143+ (union 59:3
144 (cell 59:3
144 (cell 59:3
145− (const 59:4 %blob)
145+ (const 59:4 %$)
146− (face 59:10 p (noun 59:12)))
146+ (face 59:7 p (ref 59:9 dime)))
147 (cell 60:3
147 (cell 60:3
148− (const 60:4 %many)
148+ (const 60:4 %blob)
149− (face 60:10 p
149+ (face 60:10 p (noun 60:12)))
150− (apply 60:12 list (ref 60:18 coin))))))
150+ (cell 61:3
151− (mold 62:1 pair
151+ (const 61:4 %many)
152− (generic 62:9 A B
152+ (face 61:10 p
153− (cell 62:18
153+ (apply 61:12 list (ref 61:18 coin))))))
154− (face 62:19 p (tvar 62:21 A))
154+ (mold 63:1 pair
155− (face 62:23 q (tvar 62:25 B)))))
155+ (generic 63:9 A B
156− (mold 64:1 trel
156+ (cell 63:18
157− (generic 64:9 A B C
157+ (face 63:19 p (tvar 63:21 A))
158− (cell 64:20
158+ (face 63:23 q (tvar 63:25 B)))))
159− (face 64:21 p (tvar 64:23 A))
159+ (mold 65:1 trel
160− (face 64:25 q (tvar 64:27 B))
160+ (generic 65:9 A B C
161− (face 64:29 r (tvar 64:31 C)))))
161+ (cell 65:20
162− (mold 66:1 qual
162+ (face 65:21 p (tvar 65:23 A))
163− (generic 66:9 A B C D
163+ (face 65:25 q (tvar 65:27 B))
164− (cell 66:22
164+ (face 65:29 r (tvar 65:31 C)))))
165− (face 66:23 p (tvar 66:25 A))
165+ (mold 67:1 qual
166− (face 66:27 q (tvar 66:29 B))
166+ (generic 67:9 A B C D
167− (face 66:31 r (tvar 66:33 C))
167+ (cell 67:22
168− (face 66:35 s (tvar 66:37 D)))))
168+ (face 67:23 p (tvar 67:25 A))
169− (mold 68:1 cord (aura 68:9 @t))
169+ (face 67:27 q (tvar 67:29 B))
170− (mold 70:1 knot (aura 70:9 @ta))
170+ (face 67:31 r (tvar 67:33 C))
171− (mold 72:1 tape
171+ (face 67:35 s (tvar 67:37 D)))))
172− (apply 72:9 list (aura 72:15 @tD)))
172+ (mold 69:1 cord (aura 69:9 @t))
173− (mold 74:1 path
173+ (mold 71:1 knot (aura 71:9 @ta))
174− (apply 74:9 list (ref 74:15 knot)))
174+ (mold 73:1 tape
175− (mold 76:1 tank
175+ (apply 73:9 list (aura 73:15 @tD)))
176− (union 77:3
176+ (mold 75:1 path
177− (ref 77:3 cord)
177+ (apply 75:9 list (ref 75:15 knot)))
178− (cell 78:3
178+ (mold 77:1 tank
179− (const 78:4 %leaf)
179+ (union 78:3
180− (face 78:10 p (ref 78:12 tape)))
180+ (ref 78:3 cord)
181 (cell 79:3
181 (cell 79:3
182− (const 79:4 %palm)
182+ (const 79:4 %leaf)
183− (face 79:10 p
183+ (face 79:10 p (ref 79:12 tape)))
184− (apply 79:12 qual (ref 79:18 tape) (ref 79:23 tape) (ref 79:28 tape) (ref 79:33 tape)))
185− (face 79:39 q
186− (apply 79:41 list (ref 79:47 tank))))
187 (cell 80:3
184 (cell 80:3
188− (const 80:4 %rose)
185+ (const 80:4 %palm)
189 (face 80:10 p
186 (face 80:10 p
190− (apply 80:12 trel (ref 80:18 tape) (ref 80:23 tape) (ref 80:28 tape)))
187+ (apply 80:12 qual (ref 80:18 tape) (ref 80:23 tape) (ref 80:28 tape) (ref 80:33 tape)))
191− (face 80:34 q
188+ (face 80:39 q
192− (apply 80:36 list (ref 80:42 tank))))))
189+ (apply 80:41 list (ref 80:47 tank))))
193− (mold 82:1 nail
190+ (cell 81:3
194− (cell 82:9
191+ (const 81:4 %rose)
195− (face 82:10 p (ref 82:12 hair))
192+ (face 81:10 p
196− (face 82:17 q (ref 82:19 tape))))
193+ (apply 81:12 trel (ref 81:18 tape) (ref 81:23 tape) (ref 81:28 tape)))
197− (mold 84:1 edge
194+ (face 81:34 q
198− (cell 84:9
195+ (apply 81:36 list (ref 81:42 tank))))))
199− (face 84:10 p (ref 84:12 hair))
196+ (mold 83:1 nail
200− (face 84:17 q
197+ (cell 83:9
201− (apply 84:19 unit
198+ (face 83:10 p (ref 83:12 hair))
202− (cell 84:25
199+ (face 83:17 q (ref 83:19 tape))))
203− (face 84:26 p (noun 84:28))
200+ (mold 85:1 edge
204− (face 84:30 q (ref 84:32 nail)))))))
201+ (cell 85:9
205− (mold 86:1 rule
202+ (face 85:10 p (ref 85:12 hair))
206− (fn 86:9 (ref 86:12 nail) (ref 86:17 edge)))
203+ (face 85:17 q
207− (mold 88:1 spot
204+ (apply 85:19 unit
208− (cell 88:9
205+ (cell 85:25
209− (face 88:10 p (ref 88:12 path))
206+ (face 85:26 p (noun 85:28))
210− (face 88:17 q (ref 88:19 pint))))
207+ (face 85:30 q (ref 85:32 nail)))))))
211− (mold 90:1 toon
208+ (mold 87:1 rule
212− (union 91:3
209+ (fn 87:9 (ref 87:12 nail) (ref 87:17 edge)))
213− (cell 91:3
210+ (mold 89:1 spot
214− (const 91:4 %0)
211+ (cell 89:9
215− (face 91:7 p (noun 91:9)))
212+ (face 89:10 p (ref 89:12 path))
213+ (face 89:17 q (ref 89:19 pint))))
214+ (mold 91:1 toon
215+ (union 92:3
216 (cell 92:3
216 (cell 92:3
217− (const 92:4 %1)
217+ (const 92:4 %0)
218 (face 92:7 p (noun 92:9)))
218 (face 92:7 p (noun 92:9)))
219 (cell 93:3
219 (cell 93:3
220− (const 93:4 %2)
220+ (const 93:4 %1)
221− (face 93:7 p
221+ (face 93:7 p (noun 93:9)))
222− (apply 93:9 list (ref 93:15 tank))))))
222+ (cell 94:3
223− (mold 95:1 like
223+ (const 94:4 %2)
224− (generic 95:9 A
224+ (face 94:7 p
225− (cell 95:16
225+ (apply 94:9 list (ref 94:15 tank))))))
226− (face 95:17 p (ref 95:19 hair))
226+ (mold 96:1 like
227− (face 95:24 q
227+ (generic 96:9 A
228− (apply 95:26 unit
228+ (cell 96:16
229− (cell 95:32
229+ (face 96:17 p (ref 96:19 hair))
230− (face 95:33 p (tvar 95:35 A))
230+ (face 96:24 q
231− (face 95:37 q (ref 95:39 nail))))))))
231+ (apply 96:26 unit
232− (value 97:1 wonk
232+ (cell 96:32
233− (gate 97:9
233+ (face 96:33 p (tvar 96:35 A))
234− (face 97:12 veq
234+ (face 96:37 q (ref 96:39 nail))))))))
235− (apply 97:16 like (tvar 97:22 A)))
235+ (value 98:1 wonk
236− (body 98:3
236+ (gate 98:9
237− (branch 98:3
237+ (face 98:12 veq
238− (wing 98:6 q.veq)
238+ (apply 98:16 like (tvar 98:22 A)))
239− (arm 99:5 (lit 99:5 ~) (crash 99:7))
239+ (body 99:3
240− (arm 100:5
240+ (branch 99:3
241− (cell 100:5 (lit 100:6 ~) (bind 100:8 product))
241+ (wing 99:6 q.veq)
242− (wing 100:17 p.product))))))
242+ (arm 100:5 (lit 100:5 ~) (crash 100:7))
243− (mold 102:1 lone
243+ (arm 101:5
244− (generic 102:9 A
244+ (cell 101:5 (lit 101:6 ~) (bind 101:8 product))
245− (cell 102:16
245+ (wing 101:17 p.product))))))
246− (face 102:17 p (tvar 102:19 A)))))
246+ (mold 103:1 lone
247− (mold 104:1 lest
247+ (generic 103:9 A
248− (generic 104:9 A
248+ (cell 103:16
249− (cell 104:16
249+ (face 103:17 p (tvar 103:19 A)))))
250− (face 104:17 i (tvar 104:19 A))
250+ (mold 105:1 lest
251− (face 104:21 t
251+ (generic 105:9 A
252− (apply 104:23 list (tvar 104:29 A))))))
252+ (cell 105:16
253− (mold 106:1 pole
253+ (face 105:17 i (tvar 105:19 A))
254− (generic 106:9 A
254+ (face 105:21 t
255− (union 107:3
255+ (apply 105:23 list (tvar 105:29 A))))))
256− (const 107:3 ~)
256+ (mold 107:1 pole
257− (cell 108:3
257+ (generic 107:9 A
258− (tvar 108:4 A)
258+ (union 108:3
259− (apply 108:6 pole (tvar 108:12 A))))))
259+ (const 108:3 ~)
260− (mold 110:1 quip
260+ (cell 109:3
261− (generic 110:9 A B
261+ (tvar 109:4 A)
262− (cell 110:18
262+ (apply 109:6 pole (tvar 109:12 A))))))
263− (apply 110:19 list (tvar 110:25 A))
263+ (mold 111:1 quip
264− (tvar 110:28 B))))
264+ (generic 111:9 A B
265− (mold 112:1 tree
265+ (cell 111:18
266− (generic 112:9 A
266+ (apply 111:19 list (tvar 111:25 A))
267− (union 113:3
267+ (tvar 111:28 B))))
268− (const 113:3 ~)
268+ (mold 113:1 tree
269− (cell 114:3
269+ (generic 113:9 A
270− (face 114:4 n (tvar 114:6 A))
270+ (union 114:3
271− (face 114:8 l
271+ (const 114:3 ~)
272− (apply 114:10 tree (tvar 114:16 A)))
272+ (cell 115:3
273− (face 114:19 r
273+ (face 115:4 n (tvar 115:6 A))
274− (apply 114:21 tree (tvar 114:27 A)))))))
274+ (face 115:8 l
275− (mold 116:1 each
275+ (apply 115:10 tree (tvar 115:16 A)))
276− (generic 116:9 A B
276+ (face 115:19 r
277− (union 117:3
277+ (apply 115:21 tree (tvar 115:27 A)))))))
278− (cell 117:3
278+ (mold 117:1 each
279− (const 117:4 %|)
279+ (generic 117:9 A B
280− (face 117:7 p (tvar 117:9 B)))
280+ (union 118:3
281 (cell 118:3
281 (cell 118:3
282− (const 118:4 %&)
282+ (const 118:4 %|)
283− (face 118:7 p (tvar 118:9 A))))))
283+ (face 118:7 p (tvar 118:9 B)))
284− (mold 120:1 bloq (aura 120:9 @))
284+ (cell 119:3
285− (value 122:1 some
285+ (const 119:4 %&)
286− (gate 122:9
286+ (face 119:7 p (tvar 119:9 A))))))
287− (face 122:12 item (tvar 122:17 A))
287+ (mold 121:1 bloq (aura 121:9 @))
288− (unit 122:19 (wing 122:20 item))))
288+ (value 123:1 some
289− (value 124:1 lure
289+ (gate 123:9
290− (gate 124:9
290+ (face 123:12 item (tvar 123:17 A))
291− (face 124:12 item (tvar 124:17 A))
291+ (unit 123:19 (wing 123:20 item))))
292− (body 125:3
292+ (value 125:1 lure
293− (cast 125:3
293+ (gate 125:9
294− (apply 125:6 list (tvar 125:12 A))
294+ (face 125:12 item (tvar 125:17 A))
295− (tuple 125:15 (wing 125:16 item) (lit 125:21 ~))))))
295+ (body 126:3
296− (value 127:1 snoc
296+ (cast 126:3
297− (gate 127:9
297+ (apply 126:6 list (tvar 126:12 A))
298− (face 127:12 args
298+ (tuple 126:15 (wing 126:16 item) (lit 126:21 ~))))))
299− (cell 127:17
299+ (value 128:1 snoc
300− (apply 127:18 list (tvar 127:24 A))
300+ (gate 128:9
301− (tvar 127:27 A)))
301+ (face 128:12 args
302− (body 128:3
302+ (cell 128:17
303− (branch 128:3
303+ (apply 128:18 list (tvar 128:24 A))
304− (wing 128:6 args)
304+ (tvar 128:27 A)))
305− (arm 129:5
305+ (body 129:3
306− (cell 129:5 (bind 129:6 xs) (bind 129:9 item))
306+ (branch 129:3
307− (group 129:15
307+ (wing 129:6 args)
308− (call 129:16
308+ (arm 130:5
309− (wing 129:16 weld)
309+ (cell 130:5 (bind 130:6 xs) (bind 130:9 item))
310− (wing 129:21 xs)
310+ (group 130:15
311− (tuple 129:24 (wing 129:25 item) (lit 129:30 ~)))))))))
311+ (call 130:16
312− (value 131:1 flop
312+ (wing 130:16 weld)
313− (gate 131:9
313+ (wing 130:21 xs)
314− (face 131:12 xs
314+ (tuple 130:24 (wing 130:25 item) (lit 130:30 ~)))))))))
315− (apply 131:15 list (tvar 131:21 A)))
315+ (value 132:1 flop
316− (body 132:3
316+ (gate 132:9
317− (value 132:3 reverse-into
317+ (face 132:12 xs
318− (gate 132:19
318+ (apply 132:15 list (tvar 132:21 A)))
319− (face 132:22 args
319+ (body 133:3
320− (cell 132:27
320+ (value 133:3 reverse-into
321− (apply 132:28 list (tvar 132:34 A))
321+ (gate 133:19
322− (apply 132:37 list (tvar 132:43 A))))
322+ (face 133:22 args
323− (body 133:5
323+ (cell 133:27
324− (branch 133:5
324+ (apply 133:28 list (tvar 133:34 A))
325− (wing 133:8 args)
325+ (apply 133:37 list (tvar 133:43 A))))
326− (arm 134:7
326+ (body 134:5
327− (cell 134:7 (bind 134:8 rest) (bind 134:13 acc))
327+ (branch 134:5
328− (body 135:9
328+ (wing 134:8 args)
329− (branch 135:9
329+ (arm 135:7
330− (wing 135:12 rest)
330+ (cell 135:7 (bind 135:8 rest) (bind 135:13 acc))
331− (arm 136:11 (lit 136:11 ~) (wing 136:13 acc))
331+ (body 136:9
332− (arm 137:11
332+ (branch 136:9
333− (cell 137:11 (bind 137:12 item) (bind 137:17 more))
333+ (wing 136:12 rest)
334− (group 137:23
334+ (arm 137:11 (lit 137:11 ~) (wing 137:13 acc))
335− (call 137:24
335+ (arm 138:11
336− (wing 137:24 reverse-into)
336+ (cell 138:11 (bind 138:12 item) (bind 138:17 more))
337− (wing 137:37 more)
337+ (group 138:23
338− (tuple 137:42 (wing 137:43 item) (wing 137:48 acc))))))))))))
338+ (call 138:24
339− (group 138:3
339+ (wing 138:24 reverse-into)
340− (call 138:4 (wing 138:4 reverse-into) (wing 138:17 xs) (lit 138:20 ~))))))
340+ (wing 138:37 more)
341− (value 140:1 drop
341+ (tuple 138:42 (wing 138:43 item) (wing 138:48 acc))))))))))))
342− (gate 140:9
342+ (group 139:3
343− (face 140:12 maybe
343+ (call 139:4 (wing 139:4 reverse-into) (wing 139:17 xs) (lit 139:20 ~))))))
344− (apply 140:18 unit (tvar 140:24 A)))
344+ (value 141:1 drop
345− (body 141:3
345+ (gate 141:9
346− (branch 141:3
346+ (face 141:12 maybe
347− (wing 141:6 maybe)
347+ (apply 141:18 unit (tvar 141:24 A)))
348− (arm 142:5 (lit 142:5 ~) (lit 142:7 ~))
348+ (body 142:3
349− (arm 143:5
349+ (branch 142:3
350− (cell 143:5 (lit 143:6 ~) (bind 143:8 value))
350+ (wing 142:6 maybe)
351− (tuple 143:15 (wing 143:16 value) (lit 143:22 ~)))))))
351+ (arm 143:5 (lit 143:5 ~) (lit 143:7 ~))
352− (value 145:1 bind
352+ (arm 144:5
353− (gate 145:9
353+ (cell 144:5 (lit 144:6 ~) (bind 144:8 value))
354− (face 145:12 args
354+ (tuple 144:15 (wing 144:16 value) (lit 144:22 ~)))))))
355− (cell 145:17
355+ (value 146:1 bind
356− (apply 145:18 unit (tvar 145:24 A))
356+ (gate 146:9
357− (fn 145:27 (tvar 145:30 A) (tvar 145:32 B))))
357+ (face 146:12 args
358− (body 146:3
358+ (cell 146:17
359− (branch 146:3
359+ (apply 146:18 unit (tvar 146:24 A))
360− (wing 146:6 args)
360+ (fn 146:27 (tvar 146:30 A) (tvar 146:32 B))))
361− (arm 147:5
361+ (body 147:3
362− (cell 147:5 (bind 147:6 maybe) (bind 147:12 f))
362+ (branch 147:3
363− (body 148:7
363+ (wing 147:6 args)
364− (branch 148:7
364+ (arm 148:5
365− (wing 148:10 maybe)
365+ (cell 148:5 (bind 148:6 maybe) (bind 148:12 f))
366− (arm 149:9 (lit 149:9 ~) (lit 149:11 ~))
366+ (body 149:7
367− (arm 150:9
367+ (branch 149:7
368− (cell 150:9 (lit 150:10 ~) (bind 150:12 value))
368+ (wing 149:10 maybe)
369− (unit 150:19
369+ (arm 150:9 (lit 150:9 ~) (lit 150:11 ~))
370− (group 150:20
370+ (arm 151:9
371− (call 150:21 (wing 150:21 f) (wing 150:23 value))))))))))))
371+ (cell 151:9 (lit 151:10 ~) (bind 151:12 value))
372− (value 152:1 biff
372+ (unit 151:19
373− (gate 152:9
373+ (group 151:20
374− (face 152:12 args
374+ (call 151:21 (wing 151:21 f) (wing 151:23 value))))))))))))
375− (cell 152:17
375+ (value 153:1 biff
376− (apply 152:18 unit (tvar 152:24 A))
376+ (gate 153:9
377− (fn 152:27
377+ (face 153:12 args
378− (tvar 152:30 A)
378+ (cell 153:17
379− (apply 152:32 unit (tvar 152:38 B)))))
379+ (apply 153:18 unit (tvar 153:24 A))
380− (body 153:3
380+ (fn 153:27
381− (branch 153:3
381+ (tvar 153:30 A)
382− (wing 153:6 args)
382+ (apply 153:32 unit (tvar 153:38 B)))))
383− (arm 154:5
383+ (body 154:3
384− (cell 154:5 (bind 154:6 maybe) (bind 154:12 f))
384+ (branch 154:3
385− (body 155:7
385+ (wing 154:6 args)
386− (branch 155:7
386+ (arm 155:5
387− (wing 155:10 maybe)
387+ (cell 155:5 (bind 155:6 maybe) (bind 155:12 f))
388− (arm 156:9 (lit 156:9 ~) (lit 156:11 ~))
388+ (body 156:7
389− (arm 157:9
389+ (branch 156:7
390− (cell 157:9 (lit 157:10 ~) (bind 157:12 value))
390+ (wing 156:10 maybe)
391− (group 157:19
391+ (arm 157:9 (lit 157:9 ~) (lit 157:11 ~))
392− (call 157:20 (wing 157:20 f) (wing 157:22 value)))))))))))
392+ (arm 158:9
393− (value 159:1 both
393+ (cell 158:9 (lit 158:10 ~) (bind 158:12 value))
394− (gate 159:9
394+ (group 158:19
395− (face 159:12 args
395+ (call 158:20 (wing 158:20 f) (wing 158:22 value)))))))))))
396− (cell 159:17
396+ (value 160:1 both
397− (apply 159:18 unit (tvar 159:24 A))
397+ (gate 160:9
398− (apply 159:27 unit (tvar 159:33 B))))
398+ (face 160:12 args
399− (body 160:3
399+ (cell 160:17
400− (branch 160:3
400+ (apply 160:18 unit (tvar 160:24 A))
401− (wing 160:6 args)
401+ (apply 160:27 unit (tvar 160:33 B))))
402− (arm 161:5
402+ (body 161:3
403− (cell 161:5 (bind 161:6 first) (bind 161:12 second))
403+ (branch 161:3
404− (body 162:7
404+ (wing 161:6 args)
405− (branch 162:7
405+ (arm 162:5
406− (wing 162:10 first)
406+ (cell 162:5 (bind 162:6 first) (bind 162:12 second))
407− (arm 163:9 (lit 163:9 ~) (lit 163:11 ~))
407+ (body 163:7
408− (arm 164:9
408+ (branch 163:7
409− (cell 164:9 (lit 164:10 ~) (bind 164:12 a))
409+ (wing 163:10 first)
410− (body 165:11
410+ (arm 164:9 (lit 164:9 ~) (lit 164:11 ~))
411− (branch 165:11
411+ (arm 165:9
412− (wing 165:14 second)
412+ (cell 165:9 (lit 165:10 ~) (bind 165:12 a))
413− (arm 166:13 (lit 166:13 ~) (lit 166:15 ~))
413+ (body 166:11
414− (arm 167:13
414+ (branch 166:11
415− (cell 167:13 (lit 167:14 ~) (bind 167:16 b))
415+ (wing 166:14 second)
416− (unit 167:19
416+ (arm 167:13 (lit 167:13 ~) (lit 167:15 ~))
417− (tuple 167:20 (wing 167:21 a) (wing 167:23 b))))))))))))))
417+ (arm 168:13
418− (value 169:1 clap
418+ (cell 168:13 (lit 168:14 ~) (bind 168:16 b))
419− (gate 169:9
419+ (unit 168:19
420− (face 169:12 args
420+ (tuple 168:20 (wing 168:21 a) (wing 168:23 b))))))))))))))
421− (cell 169:17
421+ (value 170:1 clap
422− (apply 169:18 unit (tvar 169:24 A))
422+ (gate 170:9
423− (apply 169:27 unit (tvar 169:33 A))
423+ (face 170:12 args
424− (fn 169:36
424+ (cell 170:17
425− (cell 169:39 (tvar 169:40 A) (tvar 169:42 A))
425+ (apply 170:18 unit (tvar 170:24 A))
426− (tvar 169:45 A))))
426+ (apply 170:27 unit (tvar 170:33 A))
427− (body 170:3
427+ (fn 170:36
428− (branch 170:3
428+ (cell 170:39 (tvar 170:40 A) (tvar 170:42 A))
429− (wing 170:6 args)
429+ (tvar 170:45 A))))
430− (arm 171:5
430+ (body 171:3
431− (cell 171:5 (bind 171:6 first) (bind 171:12 second) (bind 171:19 combine))
431+ (branch 171:3
432− (body 172:7
432+ (wing 171:6 args)
433− (branch 172:7
433+ (arm 172:5
434− (wing 172:10 first)
434+ (cell 172:5 (bind 172:6 first) (bind 172:12 second) (bind 172:19 combine))
435− (arm 173:9 (lit 173:9 ~) (wing 173:11 second))
435+ (body 173:7
436− (arm 174:9
436+ (branch 173:7
437− (cell 174:9 (lit 174:10 ~) (bind 174:12 a))
437+ (wing 173:10 first)
438− (body 175:11
438+ (arm 174:9 (lit 174:9 ~) (wing 174:11 second))
439− (branch 175:11
439+ (arm 175:9
440− (wing 175:14 second)
440+ (cell 175:9 (lit 175:10 ~) (bind 175:12 a))
441− (arm 176:13 (lit 176:13 ~) (wing 176:15 first))
441+ (body 176:11
442− (arm 177:13
442+ (branch 176:11
443− (cell 177:13 (lit 177:14 ~) (bind 177:16 b))
443+ (wing 176:14 second)
444− (unit 177:19
444+ (arm 177:13 (lit 177:13 ~) (wing 177:15 first))
445− (group 177:20
445+ (arm 178:13
446− (call 177:21 (wing 177:21 combine) (wing 177:29 a) (wing 177:31 b)))))))))))))))
446+ (cell 178:13 (lit 178:14 ~) (bind 178:16 b))
447− (value 179:1 clef
447+ (unit 178:19
448− (gate 179:9
448+ (group 178:20
449− (face 179:12 args
449+ (call 178:21 (wing 178:21 combine) (wing 178:29 a) (wing 178:31 b)))))))))))))))
450− (cell 179:17
450+ (value 180:1 clef
451− (apply 179:18 unit (tvar 179:24 A))
451+ (gate 180:9
452− (apply 179:27 unit (tvar 179:33 B))
452+ (face 180:12 args
453− (fn 179:36
453+ (cell 180:17
454− (cell 179:39 (tvar 179:40 A) (tvar 179:42 B))
454+ (apply 180:18 unit (tvar 180:24 A))
455− (apply 179:45 unit (tvar 179:51 C)))))
455+ (apply 180:27 unit (tvar 180:33 B))
456− (body 180:3
456+ (fn 180:36
457− (branch 180:3
457+ (cell 180:39 (tvar 180:40 A) (tvar 180:42 B))
458− (wing 180:6 args)
458+ (apply 180:45 unit (tvar 180:51 C)))))
459− (arm 181:5
459+ (body 181:3
460− (cell 181:5 (bind 181:6 first) (bind 181:12 second) (bind 181:19 combine))
460+ (branch 181:3
461− (body 182:7
461+ (wing 181:6 args)
462− (branch 182:7
462+ (arm 182:5
463− (wing 182:10 first)
463+ (cell 182:5 (bind 182:6 first) (bind 182:12 second) (bind 182:19 combine))
464− (arm 183:9 (lit 183:9 ~) (lit 183:11 ~))
464+ (body 183:7
465− (arm 184:9
465+ (branch 183:7
466− (cell 184:9 (lit 184:10 ~) (bind 184:12 a))
466+ (wing 183:10 first)
467− (body 185:11
467+ (arm 184:9 (lit 184:9 ~) (lit 184:11 ~))
468− (branch 185:11
468+ (arm 185:9
469− (wing 185:14 second)
469+ (cell 185:9 (lit 185:10 ~) (bind 185:12 a))
470− (arm 186:13 (lit 186:13 ~) (lit 186:15 ~))
470+ (body 186:11
471− (arm 187:13
471+ (branch 186:11
472− (cell 187:13 (lit 187:14 ~) (bind 187:16 b))
472+ (wing 186:14 second)
473− (group 187:19
473+ (arm 187:13 (lit 187:13 ~) (lit 187:15 ~))
474− (call 187:20 (wing 187:20 combine) (wing 187:28 a) (wing 187:30 b))))))))))))))
474+ (arm 188:13
475− (value 189:1 skim
475+ (cell 188:13 (lit 188:14 ~) (bind 188:16 b))
476− (gate 189:9
476+ (group 188:19
477− (face 189:12 args
477+ (call 188:20 (wing 188:20 combine) (wing 188:28 a) (wing 188:30 b))))))))))))))
478− (cell 189:17
478+ (value 190:1 skim
479− (apply 189:18 list (tvar 189:24 A))
479+ (gate 190:9
480− (fn 189:27 (tvar 189:30 A) (flag 189:32))))
480+ (face 190:12 args
481− (body 190:3
481+ (cell 190:17
482− (branch 190:3
482+ (apply 190:18 list (tvar 190:24 A))
483− (wing 190:6 args)
483+ (fn 190:27 (tvar 190:30 A) (flag 190:32))))
484− (arm 191:5
484+ (body 191:3
485− (cell 191:5 (bind 191:6 xs) (bind 191:9 predicate))
485+ (branch 191:3
486− (body 192:7
486+ (wing 191:6 args)
487− (branch 192:7
487+ (arm 192:5
488− (wing 192:10 xs)
488+ (cell 192:5 (bind 192:6 xs) (bind 192:9 predicate))
489− (arm 193:9 (lit 193:9 ~) (lit 193:11 ~))
489+ (body 193:7
490− (arm 194:9
490+ (branch 193:7
491− (cell 194:9 (bind 194:10 item) (bind 194:15 rest))
491+ (wing 193:10 xs)
492− (body 195:11
492+ (arm 194:9 (lit 194:9 ~) (lit 194:11 ~))
493− (branch 195:11
493+ (arm 195:9
494− (group 195:14
494+ (cell 195:9 (bind 195:10 item) (bind 195:15 rest))
495− (call 195:15 (wing 195:15 predicate) (wing 195:25 item)))
495+ (body 196:11
496− (arm 196:13
496+ (branch 196:11
497− (lit 196:13 %.y)
497+ (group 196:14
498− (tuple 196:17
498+ (call 196:15 (wing 196:15 predicate) (wing 196:25 item)))
499− (wing 196:18 item)
500− (group 196:23
501− (call 196:24 (wing 196:24 skim) (wing 196:29 rest) (wing 196:34 predicate)))))
502 (arm 197:13
499 (arm 197:13
503− (lit 197:13 %.n)
500+ (lit 197:13 %.y)
504− (group 197:17
501+ (tuple 197:17
505− (call 197:18 (wing 197:18 skim) (wing 197:23 rest) (wing 197:28 predicate))))))))))))))
502+ (wing 197:18 item)
506− (value 199:1 skip
503+ (group 197:23
507− (gate 199:9
504+ (call 197:24 (wing 197:24 skim) (wing 197:29 rest) (wing 197:34 predicate)))))
508− (face 199:12 args
505+ (arm 198:13
509− (cell 199:17
506+ (lit 198:13 %.n)
510− (apply 199:18 list (tvar 199:24 A))
507+ (group 198:17
511− (fn 199:27 (tvar 199:30 A) (flag 199:32))))
508+ (call 198:18 (wing 198:18 skim) (wing 198:23 rest) (wing 198:28 predicate))))))))))))))
512− (body 200:3
509+ (value 200:1 skip
513− (branch 200:3
510+ (gate 200:9
514− (wing 200:6 args)
511+ (face 200:12 args
515− (arm 201:5
512+ (cell 200:17
516− (cell 201:5 (bind 201:6 xs) (bind 201:9 predicate))
513+ (apply 200:18 list (tvar 200:24 A))
517− (body 202:7
514+ (fn 200:27 (tvar 200:30 A) (flag 200:32))))
518− (branch 202:7
515+ (body 201:3
519− (wing 202:10 xs)
516+ (branch 201:3
520− (arm 203:9 (lit 203:9 ~) (lit 203:11 ~))
517+ (wing 201:6 args)
521− (arm 204:9
518+ (arm 202:5
522− (cell 204:9 (bind 204:10 item) (bind 204:15 rest))
519+ (cell 202:5 (bind 202:6 xs) (bind 202:9 predicate))
523− (body 205:11
520+ (body 203:7
524− (branch 205:11
521+ (branch 203:7
525− (group 205:14
522+ (wing 203:10 xs)
526− (call 205:15 (wing 205:15 predicate) (wing 205:25 item)))
523+ (arm 204:9 (lit 204:9 ~) (lit 204:11 ~))
527− (arm 206:13
524+ (arm 205:9
528− (lit 206:13 %.y)
525+ (cell 205:9 (bind 205:10 item) (bind 205:15 rest))
529− (group 206:17
526+ (body 206:11
530− (call 206:18 (wing 206:18 skip) (wing 206:23 rest) (wing 206:28 predicate))))
527+ (branch 206:11
528+ (group 206:14
529+ (call 206:15 (wing 206:15 predicate) (wing 206:25 item)))
531 (arm 207:13
530 (arm 207:13
532− (lit 207:13 %.n)
531+ (lit 207:13 %.y)
533− (tuple 207:17
532+ (group 207:17
534− (wing 207:18 item)
533+ (call 207:18 (wing 207:18 skip) (wing 207:23 rest) (wing 207:28 predicate))))
535− (group 207:23
534+ (arm 208:13
536− (call 207:24 (wing 207:24 skip) (wing 207:29 rest) (wing 207:34 predicate)))))))))))))))
535+ (lit 208:13 %.n)
537− (value 209:1 levy
536+ (tuple 208:17
538− (gate 209:9
537+ (wing 208:18 item)
539− (face 209:12 args
538+ (group 208:23
540− (cell 209:17
539+ (call 208:24 (wing 208:24 skip) (wing 208:29 rest) (wing 208:34 predicate)))))))))))))))
541− (apply 209:18 list (tvar 209:24 A))
540+ (value 210:1 levy
542− (fn 209:27 (tvar 209:30 A) (flag 209:32))))
541+ (gate 210:9
543− (body 210:3
542+ (face 210:12 args
544− (branch 210:3
543+ (cell 210:17
545− (wing 210:6 args)
544+ (apply 210:18 list (tvar 210:24 A))
546− (arm 211:5
545+ (fn 210:27 (tvar 210:30 A) (flag 210:32))))
547− (cell 211:5 (bind 211:6 xs) (bind 211:9 predicate))
546+ (body 211:3
548− (body 212:7
547+ (branch 211:3
549− (branch 212:7
548+ (wing 211:6 args)
550− (wing 212:10 xs)
549+ (arm 212:5
551− (arm 213:9 (lit 213:9 ~) (lit 213:11 %.y))
550+ (cell 212:5 (bind 212:6 xs) (bind 212:9 predicate))
552− (arm 214:9
551+ (body 213:7
553− (cell 214:9 (bind 214:10 item) (bind 214:15 rest))
552+ (branch 213:7
554− (body 215:11
553+ (wing 213:10 xs)
555− (branch 215:11
554+ (arm 214:9 (lit 214:9 ~) (lit 214:11 %.y))
556− (group 215:14
555+ (arm 215:9
557− (call 215:15 (wing 215:15 predicate) (wing 215:25 item)))
556+ (cell 215:9 (bind 215:10 item) (bind 215:15 rest))
558− (arm 216:13
557+ (body 216:11
559− (lit 216:13 %.y)
558+ (branch 216:11
560− (group 216:17
559+ (group 216:14
561− (call 216:18 (wing 216:18 levy) (wing 216:23 rest) (wing 216:28 predicate))))
560+ (call 216:15 (wing 216:15 predicate) (wing 216:25 item)))
562− (arm 217:13 (lit 217:13 %.n) (lit 217:17 %.n))))))))))))
561+ (arm 217:13
563− (value 219:1 lien
562+ (lit 217:13 %.y)
564− (gate 219:9
563+ (group 217:17
565− (face 219:12 args
564+ (call 217:18 (wing 217:18 levy) (wing 217:23 rest) (wing 217:28 predicate))))
566− (cell 219:17
565+ (arm 218:13 (lit 218:13 %.n) (lit 218:17 %.n))))))))))))
567− (apply 219:18 list (tvar 219:24 A))
566+ (value 220:1 lien
568− (fn 219:27 (tvar 219:30 A) (flag 219:32))))
567+ (gate 220:9
569− (body 220:3
568+ (face 220:12 args
570− (branch 220:3
569+ (cell 220:17
571− (wing 220:6 args)
570+ (apply 220:18 list (tvar 220:24 A))
572− (arm 221:5
571+ (fn 220:27 (tvar 220:30 A) (flag 220:32))))
573− (cell 221:5 (bind 221:6 xs) (bind 221:9 predicate))
572+ (body 221:3
574− (body 222:7
573+ (branch 221:3
575− (branch 222:7
574+ (wing 221:6 args)
576− (wing 222:10 xs)
575+ (arm 222:5
577− (arm 223:9 (lit 223:9 ~) (lit 223:11 %.n))
576+ (cell 222:5 (bind 222:6 xs) (bind 222:9 predicate))
578− (arm 224:9
577+ (body 223:7
579− (cell 224:9 (bind 224:10 item) (bind 224:15 rest))
578+ (branch 223:7
580− (body 225:11
579+ (wing 223:10 xs)
581− (branch 225:11
580+ (arm 224:9 (lit 224:9 ~) (lit 224:11 %.n))
582− (group 225:14
581+ (arm 225:9
583− (call 225:15 (wing 225:15 predicate) (wing 225:25 item)))
582+ (cell 225:9 (bind 225:10 item) (bind 225:15 rest))
584− (arm 226:13 (lit 226:13 %.y) (lit 226:17 %.y))
583+ (body 226:11
585− (arm 227:13
584+ (branch 226:11
586− (lit 227:13 %.n)
585+ (group 226:14
587− (group 227:17
586+ (call 226:15 (wing 226:15 predicate) (wing 226:25 item)))
588− (call 227:18 (wing 227:18 lien) (wing 227:23 rest) (wing 227:28 predicate))))))))))))))
587+ (arm 227:13 (lit 227:13 %.y) (lit 227:17 %.y))
589− (value 229:1 roll
588+ (arm 228:13
590− (gate 229:9
589+ (lit 228:13 %.n)
591− (face 229:12 args
590+ (group 228:17
592− (cell 229:17
591+ (call 228:18 (wing 228:18 lien) (wing 228:23 rest) (wing 228:28 predicate))))))))))))))
593− (apply 229:18 list (tvar 229:24 A))
592+ (value 230:1 roll
594− (tvar 229:27 B)
593+ (gate 230:9
595− (fn 229:29
594+ (face 230:12 args
596− (cell 229:32 (tvar 229:33 A) (tvar 229:35 B))
595+ (cell 230:17
597− (tvar 229:38 B))))
596+ (apply 230:18 list (tvar 230:24 A))
598− (body 230:3
597+ (tvar 230:27 B)
599− (branch 230:3
598+ (fn 230:29
600− (wing 230:6 args)
599+ (cell 230:32 (tvar 230:33 A) (tvar 230:35 B))
601− (arm 231:5
600+ (tvar 230:38 B))))
602− (cell 231:5 (bind 231:6 xs) (bind 231:9 start) (bind 231:15 combine))
601+ (body 231:3
603− (body 232:7
602+ (branch 231:3
604− (branch 232:7
603+ (wing 231:6 args)
605− (wing 232:10 xs)
604+ (arm 232:5
606− (arm 233:9 (lit 233:9 ~) (wing 233:11 start))
605+ (cell 232:5 (bind 232:6 xs) (bind 232:9 start) (bind 232:15 combine))
607− (arm 234:9
606+ (body 233:7
608− (cell 234:9 (bind 234:10 item) (bind 234:15 rest))
607+ (branch 233:7
609− (group 234:21
608+ (wing 233:10 xs)
610− (call 234:22
609+ (arm 234:9 (lit 234:9 ~) (wing 234:11 start))
611− (wing 234:22 roll)
610+ (arm 235:9
612− (wing 234:27 rest)
611+ (cell 235:9 (bind 235:10 item) (bind 235:15 rest))
613− (group 234:32
612+ (group 235:21
614− (call 234:33 (wing 234:33 combine) (wing 234:41 item) (wing 234:46 start)))
613+ (call 235:22
615− (wing 234:53 combine)))))))))))
614+ (wing 235:22 roll)
616− (value 236:1 reel
615+ (wing 235:27 rest)
617− (gate 236:9
616+ (group 235:32
618− (face 236:12 args
617+ (call 235:33 (wing 235:33 combine) (wing 235:41 item) (wing 235:46 start)))
619− (cell 236:17
618+ (wing 235:53 combine)))))))))))
620− (apply 236:18 list (tvar 236:24 A))
619+ (value 237:1 reel
621− (tvar 236:27 B)
620+ (gate 237:9
622− (fn 236:29
621+ (face 237:12 args
623− (cell 236:32 (tvar 236:33 A) (tvar 236:35 B))
622+ (cell 237:17
624− (tvar 236:38 B))))
623+ (apply 237:18 list (tvar 237:24 A))
625− (body 237:3
624+ (tvar 237:27 B)
626− (branch 237:3
625+ (fn 237:29
627− (wing 237:6 args)
626+ (cell 237:32 (tvar 237:33 A) (tvar 237:35 B))
628− (arm 238:5
627+ (tvar 237:38 B))))
629− (cell 238:5 (bind 238:6 xs) (bind 238:9 start) (bind 238:15 combine))
628+ (body 238:3
630− (body 239:7
629+ (branch 238:3
631− (branch 239:7
630+ (wing 238:6 args)
632− (wing 239:10 xs)
631+ (arm 239:5
633− (arm 240:9 (lit 240:9 ~) (wing 240:11 start))
632+ (cell 239:5 (bind 239:6 xs) (bind 239:9 start) (bind 239:15 combine))
634− (arm 241:9
633+ (body 240:7
635− (cell 241:9 (bind 241:10 item) (bind 241:15 rest))
634+ (branch 240:7
636− (group 241:21
635+ (wing 240:10 xs)
637− (call 241:22
636+ (arm 241:9 (lit 241:9 ~) (wing 241:11 start))
638− (wing 241:22 combine)
637+ (arm 242:9
639− (wing 241:30 item)
638+ (cell 242:9 (bind 242:10 item) (bind 242:15 rest))
640− (group 241:35
639+ (group 242:21
641− (call 241:36 (wing 241:36 reel) (wing 241:41 rest) (wing 241:46 start) (wing 241:52 combine)))))))))))))
640+ (call 242:22
642− (value 243:1 flit
641+ (wing 242:22 combine)
643− (gate 243:9
642+ (wing 242:30 item)
644− (face 243:12 predicate
643+ (group 242:35
645− (fn 243:22 (tvar 243:25 A) (flag 243:27)))
644+ (call 242:36 (wing 242:36 reel) (wing 242:41 rest) (wing 242:46 start) (wing 242:52 combine)))))))))))))
646− (body 244:3
645+ (value 244:1 flit
647− (gate 244:3
646+ (gate 244:9
648− (face 244:6 value (tvar 244:12 A))
647+ (face 244:12 predicate
649− (body 245:5
648+ (fn 244:22 (tvar 244:25 A) (flag 244:27)))
650− (branch 245:5
649+ (body 245:3
651− (group 245:8
650+ (gate 245:3
652− (call 245:9 (wing 245:9 predicate) (wing 245:19 value)))
651+ (face 245:6 value (tvar 245:12 A))
653− (arm 246:7
652+ (body 246:5
654− (lit 246:7 %.y)
653+ (branch 246:5
655− (unit 246:11 (wing 246:12 value)))
654+ (group 246:8
656− (arm 247:7 (lit 247:7 %.n) (lit 247:11 ~))))))))
655+ (call 246:9 (wing 246:9 predicate) (wing 246:19 value)))
657− (value 249:1 murn
656+ (arm 247:7
658− (gate 249:9
657+ (lit 247:7 %.y)
659− (face 249:12 args
658+ (unit 247:11 (wing 247:12 value)))
660− (cell 249:17
659+ (arm 248:7 (lit 248:7 %.n) (lit 248:11 ~))))))))
661− (apply 249:18 list (tvar 249:24 A))
660+ (value 250:1 murn
662− (fn 249:27
661+ (gate 250:9
663− (tvar 249:30 A)
662+ (face 250:12 args
664− (apply 249:32 unit (tvar 249:38 B)))))
663+ (cell 250:17
665− (body 250:3
664+ (apply 250:18 list (tvar 250:24 A))
666− (branch 250:3
665+ (fn 250:27
667− (wing 250:6 args)
666+ (tvar 250:30 A)
668− (arm 251:5
667+ (apply 250:32 unit (tvar 250:38 B)))))
669− (cell 251:5 (bind 251:6 xs) (bind 251:9 f))
668+ (body 251:3
670− (body 252:7
669+ (branch 251:3
671− (branch 252:7
670+ (wing 251:6 args)
672− (wing 252:10 xs)
671+ (arm 252:5
673− (arm 253:9 (lit 253:9 ~) (lit 253:11 ~))
672+ (cell 252:5 (bind 252:6 xs) (bind 252:9 f))
674− (arm 254:9
673+ (body 253:7
675− (cell 254:9 (bind 254:10 item) (bind 254:15 rest))
674+ (branch 253:7
676− (body 255:11
675+ (wing 253:10 xs)
677− (branch 255:11
676+ (arm 254:9 (lit 254:9 ~) (lit 254:11 ~))
678− (group 255:14
677+ (arm 255:9
679− (call 255:15 (wing 255:15 f) (wing 255:17 item)))
678+ (cell 255:9 (bind 255:10 item) (bind 255:15 rest))
680− (arm 256:13
679+ (body 256:11
681− (lit 256:13 ~)
680+ (branch 256:11
682− (group 256:15
681+ (group 256:14
683− (call 256:16 (wing 256:16 murn) (wing 256:21 rest) (wing 256:26 f))))
682+ (call 256:15 (wing 256:15 f) (wing 256:17 item)))
684 (arm 257:13
683 (arm 257:13
685− (cell 257:13 (lit 257:14 ~) (bind 257:16 value))
684+ (lit 257:13 ~)
686− (tuple 257:23
685+ (group 257:15
687− (wing 257:24 value)
686+ (call 257:16 (wing 257:16 murn) (wing 257:21 rest) (wing 257:26 f))))
688− (group 257:30
687+ (arm 258:13
689− (call 257:31 (wing 257:31 murn) (wing 257:36 rest) (wing 257:41 f)))))))))))))))
688+ (cell 258:13 (lit 258:14 ~) (bind 258:16 value))
690− (value 259:1 join
689+ (tuple 258:23
691− (gate 259:9
690+ (wing 258:24 value)
692− (face 259:12 args
691+ (group 258:30
693− (cell 259:17
692+ (call 258:31 (wing 258:31 murn) (wing 258:36 rest) (wing 258:41 f)))))))))))))))
694− (tvar 259:18 A)
693+ (value 260:1 join
695− (apply 259:20 list (tvar 259:26 A))))
694+ (gate 260:9
696− (body 260:3
695+ (face 260:12 args
697− (branch 260:3
696+ (cell 260:17
698− (wing 260:6 args)
697+ (tvar 260:18 A)
699− (arm 261:5
698+ (apply 260:20 list (tvar 260:26 A))))
700− (cell 261:5 (bind 261:6 separator) (bind 261:16 xs))
699+ (body 261:3
701− (body 262:7
700+ (branch 261:3
702− (branch 262:7
701+ (wing 261:6 args)
703− (wing 262:10 xs)
702+ (arm 262:5
704− (arm 263:9 (lit 263:9 ~) (lit 263:11 ~))
703+ (cell 262:5 (bind 262:6 separator) (bind 262:16 xs))
705− (arm 264:9
704+ (body 263:7
706− (cell 264:9 (bind 264:10 item) (bind 264:15 rest))
705+ (branch 263:7
707− (body 265:11
706+ (wing 263:10 xs)
708− (branch 265:11
707+ (arm 264:9 (lit 264:9 ~) (lit 264:11 ~))
709− (wing 265:14 rest)
708+ (arm 265:9
710− (arm 266:13
709+ (cell 265:9 (bind 265:10 item) (bind 265:15 rest))
711− (lit 266:13 ~)
710+ (body 266:11
712− (tuple 266:15 (wing 266:16 item) (lit 266:21 ~)))
711+ (branch 266:11
712+ (wing 266:14 rest)
713 (arm 267:13
713 (arm 267:13
714− (cell 267:13 (bind 267:14 next) (bind 267:19 more))
714+ (lit 267:13 ~)
715− (tuple 267:25
715+ (tuple 267:15 (wing 267:16 item) (lit 267:21 ~)))
716− (wing 267:26 item)
716+ (arm 268:13
717− (tuple 267:31
717+ (cell 268:13 (bind 268:14 next) (bind 268:19 more))
718− (wing 267:32 separator)
718+ (tuple 268:25
719− (group 267:42
719+ (wing 268:26 item)
720− (call 267:43 (wing 267:43 join) (wing 267:48 separator) (wing 267:58 rest))))))))))))))))
720+ (tuple 268:31
721− (value 269:1 snip
721+ (wing 268:32 separator)
722− (gate 269:9
722+ (group 268:42
723− (face 269:12 xs
723+ (call 268:43 (wing 268:43 join) (wing 268:48 separator) (wing 268:58 rest))))))))))))))))
724− (apply 269:15 list (tvar 269:21 A)))
724+ (value 270:1 snip
725− (body 270:3
725+ (gate 270:9
726− (branch 270:3
726+ (face 270:12 xs
727− (wing 270:6 xs)
727+ (apply 270:15 list (tvar 270:21 A)))
728− (arm 271:5 (lit 271:5 ~) (lit 271:7 ~))
728+ (body 271:3
729− (arm 272:5
729+ (branch 271:3
730− (cell 272:5 (bind 272:6 item) (bind 272:11 rest))
730+ (wing 271:6 xs)
731− (body 273:7
731+ (arm 272:5 (lit 272:5 ~) (lit 272:7 ~))
732− (branch 273:7
732+ (arm 273:5
733− (wing 273:10 rest)
733+ (cell 273:5 (bind 273:6 item) (bind 273:11 rest))
734− (arm 274:9 (lit 274:9 ~) (lit 274:11 ~))
734+ (body 274:7
735− (arm 275:9
735+ (branch 274:7
736− (cell 275:9 (bind 275:10 next) (bind 275:15 more))
736+ (wing 274:10 rest)
737− (tuple 275:21
737+ (arm 275:9 (lit 275:9 ~) (lit 275:11 ~))
738− (wing 275:22 item)
738+ (arm 276:9
739− (group 275:27
739+ (cell 276:9 (bind 276:10 next) (bind 276:15 more))
740− (call 275:28 (wing 275:28 snip) (wing 275:33 rest))))))))))))
740+ (tuple 276:21
741− (value 277:1 rear
741+ (wing 276:22 item)
742− (gate 277:9
742+ (group 276:27
743− (face 277:12 xs
743+ (call 276:28 (wing 276:28 snip) (wing 276:33 rest))))))))))))
744− (apply 277:15 list (tvar 277:21 A)))
744+ (value 278:1 rear
745− (body 278:3
745+ (gate 278:9
746− (branch 278:3
746+ (face 278:12 xs
747− (wing 278:6 xs)
747+ (apply 278:15 list (tvar 278:21 A)))
748− (arm 279:5 (lit 279:5 ~) (crash 279:7))
748+ (body 279:3
749− (arm 280:5
749+ (branch 279:3
750− (cell 280:5 (bind 280:6 item) (bind 280:11 rest))
750+ (wing 279:6 xs)
751− (body 281:7
751+ (arm 280:5 (lit 280:5 ~) (crash 280:7))
752− (branch 281:7
752+ (arm 281:5
753− (wing 281:10 rest)
753+ (cell 281:5 (bind 281:6 item) (bind 281:11 rest))
754− (arm 282:9 (lit 282:9 ~) (wing 282:11 item))
754+ (body 282:7
755− (arm 283:9
755+ (branch 282:7
756− (cell 283:9 (bind 283:10 next) (bind 283:15 more))
756+ (wing 282:10 rest)
757− (group 283:21
757+ (arm 283:9 (lit 283:9 ~) (wing 283:11 item))
758− (call 283:22 (wing 283:22 rear) (wing 283:27 rest))))))))))))
758+ (arm 284:9
759+ (cell 284:9 (bind 284:10 next) (bind 284:15 more))
760+ (group 284:21
761+ (call 284:22 (wing 284:22 rear) (wing 284:27 rest))))))))))))
tests/golden/types-prelude-list-functions/about.txtnew file+4
@@ -0,0 +1,4 @@
1+source: Overview, Prelude: "Jetted prelude functions have working Jibb implementations"; Molds: type variables are generalized per `++`.
2+tests: The actual prelude list helpers infer and instantiate independently for cords and ships, including through an imported module; incompatible list elements and unrelated unresolved tags fail closed.
3+expect: parses
4+expect-types: a partial inference report
tests/golden/types-prelude-list-functions/module-trees.txtnew file+5
@@ -0,0 +1,5 @@
1+/ui/lib.jibb
2+(module
3+ (value 1:1 value
4+ (group 1:10
5+ (call 1:11 (wing 1:11 lure) (lit 1:16 ~zod)))))
tests/golden/types-prelude-list-functions/modules.txtnew file+1
@@ -0,0 +1 @@
1+/ui/lib.jibb
tests/golden/types-prelude-list-functions/modules/ui/lib.jibbnew file+1
@@ -0,0 +1 @@
1+++ value (lure ~zod)
tests/golden/types-prelude-list-functions/source.jibbnew file+11
@@ -0,0 +1,11 @@
1+/= lib /ui/lib
2+++ texts (lure "hi")
3+++ ships (lure ~zod)
4+++ joined (weld ~["a"] ~["b"])
5+++ joined-ships (weld ~[~zod] ~[~zod])
6+++ appended (snoc ~["a"] "b")
7+++ imported value.lib
8+++ mismatch (weld ~["a"] ~[~zod])
9+++ pending
10+ ~& %unknown
11+ (lure "hi")
tests/golden/types-prelude-list-functions/tokens.txtnew file+84
@@ -0,0 +1,84 @@
1+1:1 glyph /=
2+1:5 name lib
3+1:9 glyph /
4+1:10 tight knot ui
5+1:12 tight glyph /
6+1:13 tight knot lib
7+2:1 NEWLINE
8+2:1 glyph ++
9+2:4 name texts
10+2:10 glyph (
11+2:11 tight name lure
12+2:16 str "hi"
13+2:20 tight glyph )
14+3:1 NEWLINE
15+3:1 glyph ++
16+3:4 name ships
17+3:10 glyph (
18+3:11 tight name lure
19+3:16 lit ~zod
20+3:20 tight glyph )
21+4:1 NEWLINE
22+4:1 glyph ++
23+4:4 name joined
24+4:11 glyph (
25+4:12 tight name weld
26+4:17 glyph ~[
27+4:19 tight str "a"
28+4:22 tight glyph ]
29+4:24 glyph ~[
30+4:26 tight str "b"
31+4:29 tight glyph ]
32+4:30 tight glyph )
33+5:1 NEWLINE
34+5:1 glyph ++
35+5:4 name joined-ships
36+5:17 glyph (
37+5:18 tight name weld
38+5:23 glyph ~[
39+5:25 tight lit ~zod
40+5:29 tight glyph ]
41+5:31 glyph ~[
42+5:33 tight lit ~zod
43+5:37 tight glyph ]
44+5:38 tight glyph )
45+6:1 NEWLINE
46+6:1 glyph ++
47+6:4 name appended
48+6:13 glyph (
49+6:14 tight name snoc
50+6:19 glyph ~[
51+6:21 tight str "a"
52+6:24 tight glyph ]
53+6:26 str "b"
54+6:29 tight glyph )
55+7:1 NEWLINE
56+7:1 glyph ++
57+7:4 name imported
58+7:13 wing value.lib
59+8:1 NEWLINE
60+8:1 glyph ++
61+8:4 name mismatch
62+8:13 glyph (
63+8:14 tight name weld
64+8:19 glyph ~[
65+8:21 tight str "a"
66+8:24 tight glyph ]
67+8:26 glyph ~[
68+8:28 tight lit ~zod
69+8:32 tight glyph ]
70+8:33 tight glyph )
71+9:1 NEWLINE
72+9:1 glyph ++
73+9:4 name pending
74+10:3 INDENT
75+10:3 glyph ~&
76+10:6 lit %unknown
77+11:5 INDENT
78+11:5 glyph (
79+11:6 tight name lure
80+11:11 str "hi"
81+11:15 tight glyph )
82+11:16 DEDENT
83+11:16 DEDENT
84+11:16 NEWLINE
tests/golden/types-prelude-list-functions/tree.txtnew file+40
@@ -0,0 +1,40 @@
1+(module
2+ (jibb 1:1 lib /ui/lib)
3+ (value 2:1 texts
4+ (group 2:10
5+ (call 2:11 (wing 2:11 lure) (str 2:16 "hi"))))
6+ (value 3:1 ships
7+ (group 3:10
8+ (call 3:11 (wing 3:11 lure) (lit 3:16 ~zod))))
9+ (value 4:1 joined
10+ (group 4:11
11+ (call 4:12
12+ (wing 4:12 weld)
13+ (list 4:17 (str 4:19 "a"))
14+ (list 4:24 (str 4:26 "b")))))
15+ (value 5:1 joined-ships
16+ (group 5:17
17+ (call 5:18
18+ (wing 5:18 weld)
19+ (list 5:23 (lit 5:25 ~zod))
20+ (list 5:31 (lit 5:33 ~zod)))))
21+ (value 6:1 appended
22+ (group 6:13
23+ (call 6:14
24+ (wing 6:14 snoc)
25+ (list 6:19 (str 6:21 "a"))
26+ (str 6:26 "b"))))
27+ (value 7:1 imported (wing 7:13 value.lib))
28+ (value 8:1 mismatch
29+ (group 8:13
30+ (call 8:14
31+ (wing 8:14 weld)
32+ (list 8:19 (str 8:21 "a"))
33+ (list 8:26 (lit 8:28 ~zod)))))
34+ (value 9:1 pending
35+ (body 10:3
36+ (trace 10:3
37+ (lit 10:6 %unknown)
38+ (body 11:5
39+ (group 11:5
40+ (call 11:6 (wing 11:6 lure) (str 11:11 "hi"))))))))
tests/golden/types-prelude-list-functions/types.txtnew file+15
@@ -0,0 +1,15 @@
1+partial inference; module not checked
2+++ texts: (list @t)
3+++ ships: (list @p)
4+++ joined: (list @t)
5+++ joined-ships: (list @p)
6+++ appended: (list @t)
7+++ imported: (list @p)
8+++ mismatch: list item does not fit its expected type
9+/tests/golden/types-prelude-list-functions/source.jibb:8:14: expected item has type @t
10+++ mismatch (weld ~["a"] ~[~zod])
11+ ^
12+/tests/golden/types-prelude-list-functions/source.jibb:8:28: list item has type @p
13+++ mismatch (weld ~["a"] ~[~zod])
14+ ^
15+++ pending: tag needs context in partial inference
tests/lib/jibb-module-scope.hoon+17−1
@@ -38,7 +38,7 @@
38 =/ after-fixtures=(list [at=path source=@t])
38 =/ after-fixtures=(list [at=path source=@t])
39 [[~[%ui %safe %jibb] library] duplicates]
39 [[~[%ui %safe %jibb] library] duplicates]
40 =/ after (golden-types-with-prelude:jibb /ui/main/jibb after-source ~ ~ after-fixtures prelude)
40 =/ after (golden-types-with-prelude:jibb /ui/main/jibb after-source ~ ~ after-fixtures prelude)
41− (of-wain:format ~[okay empty bad bad-value bad-mold collision duplicate after real-parity list-guard])
41+ (of-wain:format ~[okay empty bad bad-value bad-mold collision duplicate after real-parity list-guard self-prelude-guards])
42::
42::
43++ real-parity
43++ real-parity
44 ^- @t
44 ^- @t
@@ -64,4 +64,20 @@
64 =/ b (golden-types-with-prelude:jibb /ui/main/jibb source ext ~ ~ changed)
64 =/ b (golden-types-with-prelude:jibb /ui/main/jibb source ext ~ ~ changed)
65 =/ c (golden-types-with-prelude:jibb /ui/main/jibb source ext ~ ~ malformed)
65 =/ c (golden-types-with-prelude:jibb /ui/main/jibb source ext ~ ~ malformed)
66 (of-wain:format ~[a b c])
66 (of-wain:format ~[a b c])
67+::
68+++ self-prelude-guards
69+ ^- @t
70+ =/ src=@t (crip "++ attempt (helper \"hi\")\0a")
71+ =/ altered=@t (crip "+$ list |$ [A] [A A]\0a++ helper |= x=@t ^- (list @t) [x x]\0a")
72+ =/ omitted=@t (crip "++ helper |= x=@t ^- (list @t) [x x]\0a")
73+ =/ shadow=@t (crip "+$ list |$ [A]\0a ~\0a [i=A t=(list A)]\0a++ helper |= x=@t\0a +$ list @t\0a ^- list x\0a")
74+ =/ malformed=@t (crip "+$ list |$ [A]\0a")
75+ =/ alias-source=@t (crip "++ attempt (helper \"hi\")\0a++ direct |= x=hidden x\0a")
76+ =/ alias-prelude=@t (crip "+$ list |$ [A] [A A]\0a+$ hidden (list @t)\0a++ helper |= x=hidden x\0a")
77+ =/ a (golden-types-with-prelude:jibb /ui/main/jibb src ~ ~ ~ altered)
78+ =/ b (golden-types-with-prelude:jibb /ui/main/jibb src ~ ~ ~ omitted)
79+ =/ c (golden-types-with-prelude:jibb /ui/main/jibb src ~ ~ ~ shadow)
80+ =/ d (golden-types-with-prelude:jibb /ui/main/jibb src ~ ~ ~ malformed)
81+ =/ e (golden-types-with-prelude:jibb /ui/main/jibb alias-source ~ ~ ~ alias-prelude)
82+ (of-wain:format ~[a b c d e])
67--
83--
tests/lib/jibb.hoon+188−180
@@ -1660,153 +1660,159 @@
1660/* mod-478-2 %jibb /tests/golden/types-prelude-interface/modules/ui/right/jibb
1660/* mod-478-2 %jibb /tests/golden/types-prelude-interface/modules/ui/right/jibb
1661/* typ-478 %txt /tests/golden/types-prelude-interface/types/txt
1661/* typ-478 %txt /tests/golden/types-prelude-interface/types/txt
1662/* mtre-478 %txt /tests/golden/types-prelude-interface/module-trees/txt
1662/* mtre-478 %txt /tests/golden/types-prelude-interface/module-trees/txt
1663−/* src-479 %jibb /tests/golden/types-record-bound-variable/source/jibb
1663+/* src-479 %jibb /tests/golden/types-prelude-list-functions/source/jibb
1664−/* tok-479 %txt /tests/golden/types-record-bound-variable/tokens/txt
1664+/* tok-479 %txt /tests/golden/types-prelude-list-functions/tokens/txt
1665−/* tre-479 %txt /tests/golden/types-record-bound-variable/tree/txt
1665+/* tre-479 %txt /tests/golden/types-prelude-list-functions/tree/txt
1666−/* typ-479 %txt /tests/golden/types-record-bound-variable/types/txt
1666+/* mod-479-1 %jibb /tests/golden/types-prelude-list-functions/modules/ui/lib/jibb
1667−/* src-480 %jibb /tests/golden/types-record-faces/source/jibb
1667+/* typ-479 %txt /tests/golden/types-prelude-list-functions/types/txt
1668−/* tok-480 %txt /tests/golden/types-record-faces/tokens/txt
1668+/* mtre-479 %txt /tests/golden/types-prelude-list-functions/module-trees/txt
1669−/* tre-480 %txt /tests/golden/types-record-faces/tree/txt
1669+/* src-480 %jibb /tests/golden/types-record-bound-variable/source/jibb
1670−/* typ-480 %txt /tests/golden/types-record-faces/types/txt
1670+/* tok-480 %txt /tests/golden/types-record-bound-variable/tokens/txt
1671−/* src-481 %jibb /tests/golden/types-record-import/source/jibb
1671+/* tre-480 %txt /tests/golden/types-record-bound-variable/tree/txt
1672−/* tok-481 %txt /tests/golden/types-record-import/tokens/txt
1672+/* typ-480 %txt /tests/golden/types-record-bound-variable/types/txt
1673−/* tre-481 %txt /tests/golden/types-record-import/tree/txt
1673+/* src-481 %jibb /tests/golden/types-record-faces/source/jibb
1674−/* mod-481-1 %jibb /tests/golden/types-record-import/modules/ui/lib/jibb
1674+/* tok-481 %txt /tests/golden/types-record-faces/tokens/txt
1675−/* typ-481 %txt /tests/golden/types-record-import/types/txt
1675+/* tre-481 %txt /tests/golden/types-record-faces/tree/txt
1676−/* mtre-481 %txt /tests/golden/types-record-import/module-trees/txt
1676+/* typ-481 %txt /tests/golden/types-record-faces/types/txt
1677−/* src-482 %jibb /tests/golden/types-record-local-scheme/source/jibb
1677+/* src-482 %jibb /tests/golden/types-record-import/source/jibb
1678−/* tok-482 %txt /tests/golden/types-record-local-scheme/tokens/txt
1678+/* tok-482 %txt /tests/golden/types-record-import/tokens/txt
1679−/* tre-482 %txt /tests/golden/types-record-local-scheme/tree/txt
1679+/* tre-482 %txt /tests/golden/types-record-import/tree/txt
1680−/* typ-482 %txt /tests/golden/types-record-local-scheme/types/txt
1680+/* mod-482-1 %jibb /tests/golden/types-record-import/modules/ui/lib/jibb
1681−/* src-483 %jibb /tests/golden/types-record-nested/source/jibb
1681+/* typ-482 %txt /tests/golden/types-record-import/types/txt
1682−/* tok-483 %txt /tests/golden/types-record-nested/tokens/txt
1682+/* mtre-482 %txt /tests/golden/types-record-import/module-trees/txt
1683−/* tre-483 %txt /tests/golden/types-record-nested/tree/txt
1683+/* src-483 %jibb /tests/golden/types-record-local-scheme/source/jibb
1684−/* typ-483 %txt /tests/golden/types-record-nested/types/txt
1684+/* tok-483 %txt /tests/golden/types-record-local-scheme/tokens/txt
1685−/* src-484 %jibb /tests/golden/types-record-to-tuple/source/jibb
1685+/* tre-483 %txt /tests/golden/types-record-local-scheme/tree/txt
1686−/* tok-484 %txt /tests/golden/types-record-to-tuple/tokens/txt
1686+/* typ-483 %txt /tests/golden/types-record-local-scheme/types/txt
1687−/* tre-484 %txt /tests/golden/types-record-to-tuple/tree/txt
1687+/* src-484 %jibb /tests/golden/types-record-nested/source/jibb
1688−/* typ-484 %txt /tests/golden/types-record-to-tuple/types/txt
1688+/* tok-484 %txt /tests/golden/types-record-nested/tokens/txt
1689−/* src-485 %jibb /tests/golden/types-recursive-branch/source/jibb
1689+/* tre-484 %txt /tests/golden/types-record-nested/tree/txt
1690−/* tok-485 %txt /tests/golden/types-recursive-branch/tokens/txt
1690+/* typ-484 %txt /tests/golden/types-record-nested/types/txt
1691−/* tre-485 %txt /tests/golden/types-recursive-branch/tree/txt
1691+/* src-485 %jibb /tests/golden/types-record-to-tuple/source/jibb
1692−/* typ-485 %txt /tests/golden/types-recursive-branch/types/txt
1692+/* tok-485 %txt /tests/golden/types-record-to-tuple/tokens/txt
1693−/* src-486 %jibb /tests/golden/types-recursive-gate/source/jibb
1693+/* tre-485 %txt /tests/golden/types-record-to-tuple/tree/txt
1694−/* tok-486 %txt /tests/golden/types-recursive-gate/tokens/txt
1694+/* typ-485 %txt /tests/golden/types-record-to-tuple/types/txt
1695−/* tre-486 %txt /tests/golden/types-recursive-gate/tree/txt
1695+/* src-486 %jibb /tests/golden/types-recursive-branch/source/jibb
1696−/* typ-486 %txt /tests/golden/types-recursive-gate/types/txt
1696+/* tok-486 %txt /tests/golden/types-recursive-branch/tokens/txt
1697−/* src-487 %jibb /tests/golden/types-recursive-sample/source/jibb
1697+/* tre-486 %txt /tests/golden/types-recursive-branch/tree/txt
1698−/* tok-487 %txt /tests/golden/types-recursive-sample/tokens/txt
1698+/* typ-486 %txt /tests/golden/types-recursive-branch/types/txt
1699−/* tre-487 %txt /tests/golden/types-recursive-sample/tree/txt
1699+/* src-487 %jibb /tests/golden/types-recursive-gate/source/jibb
1700−/* typ-487 %txt /tests/golden/types-recursive-sample/types/txt
1700+/* tok-487 %txt /tests/golden/types-recursive-gate/tokens/txt
1701−/* src-488 %jibb /tests/golden/types-union-alias/source/jibb
1701+/* tre-487 %txt /tests/golden/types-recursive-gate/tree/txt
1702−/* tok-488 %txt /tests/golden/types-union-alias/tokens/txt
1702+/* typ-487 %txt /tests/golden/types-recursive-gate/types/txt
1703−/* tre-488 %txt /tests/golden/types-union-alias/tree/txt
1703+/* src-488 %jibb /tests/golden/types-recursive-sample/source/jibb
1704−/* typ-488 %txt /tests/golden/types-union-alias/types/txt
1704+/* tok-488 %txt /tests/golden/types-recursive-sample/tokens/txt
1705−/* src-489 %jibb /tests/golden/types-union-branch-context/source/jibb
1705+/* tre-488 %txt /tests/golden/types-recursive-sample/tree/txt
1706−/* tok-489 %txt /tests/golden/types-union-branch-context/tokens/txt
1706+/* typ-488 %txt /tests/golden/types-recursive-sample/types/txt
1707−/* tre-489 %txt /tests/golden/types-union-branch-context/tree/txt
1707+/* src-489 %jibb /tests/golden/types-union-alias/source/jibb
1708−/* typ-489 %txt /tests/golden/types-union-branch-context/types/txt
1708+/* tok-489 %txt /tests/golden/types-union-alias/tokens/txt
1709−/* src-490 %jibb /tests/golden/types-union-branch-pending/source/jibb
1709+/* tre-489 %txt /tests/golden/types-union-alias/tree/txt
1710−/* tok-490 %txt /tests/golden/types-union-branch-pending/tokens/txt
1710+/* typ-489 %txt /tests/golden/types-union-alias/types/txt
1711−/* tre-490 %txt /tests/golden/types-union-branch-pending/tree/txt
1711+/* src-490 %jibb /tests/golden/types-union-branch-context/source/jibb
1712−/* typ-490 %txt /tests/golden/types-union-branch-pending/types/txt
1712+/* tok-490 %txt /tests/golden/types-union-branch-context/tokens/txt
1713−/* src-491 %jibb /tests/golden/types-union-constructor-shape/source/jibb
1713+/* tre-490 %txt /tests/golden/types-union-branch-context/tree/txt
1714−/* tok-491 %txt /tests/golden/types-union-constructor-shape/tokens/txt
1714+/* typ-490 %txt /tests/golden/types-union-branch-context/types/txt
1715−/* tre-491 %txt /tests/golden/types-union-constructor-shape/tree/txt
1715+/* src-491 %jibb /tests/golden/types-union-branch-pending/source/jibb
1716−/* typ-491 %txt /tests/golden/types-union-constructor-shape/types/txt
1716+/* tok-491 %txt /tests/golden/types-union-branch-pending/tokens/txt
1717−/* src-492 %jibb /tests/golden/types-union-context-flow/source/jibb
1717+/* tre-491 %txt /tests/golden/types-union-branch-pending/tree/txt
1718−/* tok-492 %txt /tests/golden/types-union-context-flow/tokens/txt
1718+/* typ-491 %txt /tests/golden/types-union-branch-pending/types/txt
1719−/* tre-492 %txt /tests/golden/types-union-context-flow/tree/txt
1719+/* src-492 %jibb /tests/golden/types-union-constructor-shape/source/jibb
1720−/* typ-492 %txt /tests/golden/types-union-context-flow/types/txt
1720+/* tok-492 %txt /tests/golden/types-union-constructor-shape/tokens/txt
1721−/* src-493 %jibb /tests/golden/types-union-import/source/jibb
1721+/* tre-492 %txt /tests/golden/types-union-constructor-shape/tree/txt
1722−/* tok-493 %txt /tests/golden/types-union-import/tokens/txt
1722+/* typ-492 %txt /tests/golden/types-union-constructor-shape/types/txt
1723−/* tre-493 %txt /tests/golden/types-union-import/tree/txt
1723+/* src-493 %jibb /tests/golden/types-union-context-flow/source/jibb
1724−/* mod-493-1 %jibb /tests/golden/types-union-import/modules/ui/lib/jibb
1724+/* tok-493 %txt /tests/golden/types-union-context-flow/tokens/txt
1725−/* typ-493 %txt /tests/golden/types-union-import/types/txt
1725+/* tre-493 %txt /tests/golden/types-union-context-flow/tree/txt
1726−/* mtre-493 %txt /tests/golden/types-union-import/module-trees/txt
1726+/* typ-493 %txt /tests/golden/types-union-context-flow/types/txt
1727−/* src-494 %jibb /tests/golden/types-union-local-pending/source/jibb
1727+/* src-494 %jibb /tests/golden/types-union-import/source/jibb
1728−/* tok-494 %txt /tests/golden/types-union-local-pending/tokens/txt
1728+/* tok-494 %txt /tests/golden/types-union-import/tokens/txt
1729−/* tre-494 %txt /tests/golden/types-union-local-pending/tree/txt
1729+/* tre-494 %txt /tests/golden/types-union-import/tree/txt
1730−/* typ-494 %txt /tests/golden/types-union-local-pending/types/txt
1730+/* mod-494-1 %jibb /tests/golden/types-union-import/modules/ui/lib/jibb
1731−/* src-495 %jibb /tests/golden/types-union-overlap/source/jibb
1731+/* typ-494 %txt /tests/golden/types-union-import/types/txt
1732−/* tok-495 %txt /tests/golden/types-union-overlap/tokens/txt
1732+/* mtre-494 %txt /tests/golden/types-union-import/module-trees/txt
1733−/* tre-495 %txt /tests/golden/types-union-overlap/tree/txt
1733+/* src-495 %jibb /tests/golden/types-union-local-pending/source/jibb
1734−/* typ-495 %txt /tests/golden/types-union-overlap/types/txt
1734+/* tok-495 %txt /tests/golden/types-union-local-pending/tokens/txt
1735−/* src-496 %jibb /tests/golden/types-union-overlap-nested/source/jibb
1735+/* tre-495 %txt /tests/golden/types-union-local-pending/tree/txt
1736−/* tok-496 %txt /tests/golden/types-union-overlap-nested/tokens/txt
1736+/* typ-495 %txt /tests/golden/types-union-local-pending/types/txt
1737−/* tre-496 %txt /tests/golden/types-union-overlap-nested/tree/txt
1737+/* src-496 %jibb /tests/golden/types-union-overlap/source/jibb
1738−/* typ-496 %txt /tests/golden/types-union-overlap-nested/types/txt
1738+/* tok-496 %txt /tests/golden/types-union-overlap/tokens/txt
1739−/* src-497 %jibb /tests/golden/types-union-phantom-generic/source/jibb
1739+/* tre-496 %txt /tests/golden/types-union-overlap/tree/txt
1740−/* tok-497 %txt /tests/golden/types-union-phantom-generic/tokens/txt
1740+/* typ-496 %txt /tests/golden/types-union-overlap/types/txt
1741−/* tre-497 %txt /tests/golden/types-union-phantom-generic/tree/txt
1741+/* src-497 %jibb /tests/golden/types-union-overlap-nested/source/jibb
1742−/* typ-497 %txt /tests/golden/types-union-phantom-generic/types/txt
1742+/* tok-497 %txt /tests/golden/types-union-overlap-nested/tokens/txt
1743−/* src-498 %jibb /tests/golden/types-union-print-cross-namespace/source/jibb
1743+/* tre-497 %txt /tests/golden/types-union-overlap-nested/tree/txt
1744−/* tok-498 %txt /tests/golden/types-union-print-cross-namespace/tokens/txt
1744+/* typ-497 %txt /tests/golden/types-union-overlap-nested/types/txt
1745−/* tre-498 %txt /tests/golden/types-union-print-cross-namespace/tree/txt
1745+/* src-498 %jibb /tests/golden/types-union-phantom-generic/source/jibb
1746−/* mod-498-1 %jibb /tests/golden/types-union-print-cross-namespace/modules/ui/lib/jibb
1746+/* tok-498 %txt /tests/golden/types-union-phantom-generic/tokens/txt
1747−/* typ-498 %txt /tests/golden/types-union-print-cross-namespace/types/txt
1747+/* tre-498 %txt /tests/golden/types-union-phantom-generic/tree/txt
1748−/* mtre-498 %txt /tests/golden/types-union-print-cross-namespace/module-trees/txt
1748+/* typ-498 %txt /tests/golden/types-union-phantom-generic/types/txt
1749−/* src-499 %jibb /tests/golden/types-union-print-distinct/source/jibb
1749+/* src-499 %jibb /tests/golden/types-union-print-cross-namespace/source/jibb
1750−/* tok-499 %txt /tests/golden/types-union-print-distinct/tokens/txt
1750+/* tok-499 %txt /tests/golden/types-union-print-cross-namespace/tokens/txt
1751−/* tre-499 %txt /tests/golden/types-union-print-distinct/tree/txt
1751+/* tre-499 %txt /tests/golden/types-union-print-cross-namespace/tree/txt
1752−/* mod-499-1 %jibb /tests/golden/types-union-print-distinct/modules/ui/left/jibb
1752+/* mod-499-1 %jibb /tests/golden/types-union-print-cross-namespace/modules/ui/lib/jibb
1753−/* mod-499-2 %jibb /tests/golden/types-union-print-distinct/modules/ui/right/jibb
1753+/* typ-499 %txt /tests/golden/types-union-print-cross-namespace/types/txt
1754−/* mod-499-3 %jibb /tests/golden/types-union-print-distinct/modules/ui/twin/jibb
1754+/* mtre-499 %txt /tests/golden/types-union-print-cross-namespace/module-trees/txt
1755−/* typ-499 %txt /tests/golden/types-union-print-distinct/types/txt
1755+/* src-500 %jibb /tests/golden/types-union-print-distinct/source/jibb
1756−/* mtre-499 %txt /tests/golden/types-union-print-distinct/module-trees/txt
1756+/* tok-500 %txt /tests/golden/types-union-print-distinct/tokens/txt
1757−/* src-500 %jibb /tests/golden/types-union-print-escape/source/jibb
1757+/* tre-500 %txt /tests/golden/types-union-print-distinct/tree/txt
1758−/* tok-500 %txt /tests/golden/types-union-print-escape/tokens/txt
1758+/* mod-500-1 %jibb /tests/golden/types-union-print-distinct/modules/ui/left/jibb
1759−/* tre-500 %txt /tests/golden/types-union-print-escape/tree/txt
1759+/* mod-500-2 %jibb /tests/golden/types-union-print-distinct/modules/ui/right/jibb
1760−/* typ-500 %txt /tests/golden/types-union-print-escape/types/txt
1760+/* mod-500-3 %jibb /tests/golden/types-union-print-distinct/modules/ui/twin/jibb
1761−/* src-501 %jibb /tests/golden/types-union-print-local/source/jibb
1761+/* typ-500 %txt /tests/golden/types-union-print-distinct/types/txt
1762−/* tok-501 %txt /tests/golden/types-union-print-local/tokens/txt
1762+/* mtre-500 %txt /tests/golden/types-union-print-distinct/module-trees/txt
1763−/* tre-501 %txt /tests/golden/types-union-print-local/tree/txt
1763+/* src-501 %jibb /tests/golden/types-union-print-escape/source/jibb
1764−/* typ-501 %txt /tests/golden/types-union-print-local/types/txt
1764+/* tok-501 %txt /tests/golden/types-union-print-escape/tokens/txt
1765−/* src-502 %jibb /tests/golden/types-union-print-nested/source/jibb
1765+/* tre-501 %txt /tests/golden/types-union-print-escape/tree/txt
1766−/* tok-502 %txt /tests/golden/types-union-print-nested/tokens/txt
1766+/* typ-501 %txt /tests/golden/types-union-print-escape/types/txt
1767−/* tre-502 %txt /tests/golden/types-union-print-nested/tree/txt
1767+/* src-502 %jibb /tests/golden/types-union-print-local/source/jibb
1768−/* typ-502 %txt /tests/golden/types-union-print-nested/types/txt
1768+/* tok-502 %txt /tests/golden/types-union-print-local/tokens/txt
1769−/* src-503 %jibb /tests/golden/types-union-print-same-origin/source/jibb
1769+/* tre-502 %txt /tests/golden/types-union-print-local/tree/txt
1770−/* tok-503 %txt /tests/golden/types-union-print-same-origin/tokens/txt
1770+/* typ-502 %txt /tests/golden/types-union-print-local/types/txt
1771−/* tre-503 %txt /tests/golden/types-union-print-same-origin/tree/txt
1771+/* src-503 %jibb /tests/golden/types-union-print-nested/source/jibb
1772−/* mod-503-1 %jibb /tests/golden/types-union-print-same-origin/modules/ui/shared/jibb
1772+/* tok-503 %txt /tests/golden/types-union-print-nested/tokens/txt
1773−/* typ-503 %txt /tests/golden/types-union-print-same-origin/types/txt
1773+/* tre-503 %txt /tests/golden/types-union-print-nested/tree/txt
1774−/* mtre-503 %txt /tests/golden/types-union-print-same-origin/module-trees/txt
1774+/* typ-503 %txt /tests/golden/types-union-print-nested/types/txt
1775−/* src-504 %jibb /tests/golden/types-union-print-transitive/source/jibb
1775+/* src-504 %jibb /tests/golden/types-union-print-same-origin/source/jibb
1776−/* tok-504 %txt /tests/golden/types-union-print-transitive/tokens/txt
1776+/* tok-504 %txt /tests/golden/types-union-print-same-origin/tokens/txt
1777−/* tre-504 %txt /tests/golden/types-union-print-transitive/tree/txt
1777+/* tre-504 %txt /tests/golden/types-union-print-same-origin/tree/txt
1778−/* mod-504-1 %jibb /tests/golden/types-union-print-transitive/modules/ui/mid/jibb
1778+/* mod-504-1 %jibb /tests/golden/types-union-print-same-origin/modules/ui/shared/jibb
1779−/* mod-504-2 %jibb /tests/golden/types-union-print-transitive/modules/ui/base/jibb
1779+/* typ-504 %txt /tests/golden/types-union-print-same-origin/types/txt
1780−/* typ-504 %txt /tests/golden/types-union-print-transitive/types/txt
1780+/* mtre-504 %txt /tests/golden/types-union-print-same-origin/module-trees/txt
1781−/* mtre-504 %txt /tests/golden/types-union-print-transitive/module-trees/txt
1781+/* src-505 %jibb /tests/golden/types-union-print-transitive/source/jibb
1782−/* src-505 %jibb /tests/golden/types-union-singleton/source/jibb
1782+/* tok-505 %txt /tests/golden/types-union-print-transitive/tokens/txt
1783−/* tok-505 %txt /tests/golden/types-union-singleton/tokens/txt
1783+/* tre-505 %txt /tests/golden/types-union-print-transitive/tree/txt
1784−/* tre-505 %txt /tests/golden/types-union-singleton/tree/txt
1784+/* mod-505-1 %jibb /tests/golden/types-union-print-transitive/modules/ui/mid/jibb
1785−/* typ-505 %txt /tests/golden/types-union-singleton/types/txt
1785+/* mod-505-2 %jibb /tests/golden/types-union-print-transitive/modules/ui/base/jibb
1786−/* src-506 %jibb /tests/golden/types-union-tag-atoms/source/jibb
1786+/* typ-505 %txt /tests/golden/types-union-print-transitive/types/txt
1787−/* tok-506 %txt /tests/golden/types-union-tag-atoms/tokens/txt
1787+/* mtre-505 %txt /tests/golden/types-union-print-transitive/module-trees/txt
1788−/* tre-506 %txt /tests/golden/types-union-tag-atoms/tree/txt
1788+/* src-506 %jibb /tests/golden/types-union-singleton/source/jibb
1789−/* typ-506 %txt /tests/golden/types-union-tag-atoms/types/txt
1789+/* tok-506 %txt /tests/golden/types-union-singleton/tokens/txt
1790−/* src-507 %jibb /tests/golden/types-union-tags/source/jibb
1790+/* tre-506 %txt /tests/golden/types-union-singleton/tree/txt
1791−/* tok-507 %txt /tests/golden/types-union-tags/tokens/txt
1791+/* typ-506 %txt /tests/golden/types-union-singleton/types/txt
1792−/* tre-507 %txt /tests/golden/types-union-tags/tree/txt
1792+/* src-507 %jibb /tests/golden/types-union-tag-atoms/source/jibb
1793−/* typ-507 %txt /tests/golden/types-union-tags/types/txt
1793+/* tok-507 %txt /tests/golden/types-union-tag-atoms/tokens/txt
1794−/* src-508 %jibb /tests/golden/types-union-unresolved/source/jibb
1794+/* tre-507 %txt /tests/golden/types-union-tag-atoms/tree/txt
1795−/* tok-508 %txt /tests/golden/types-union-unresolved/tokens/txt
1795+/* typ-507 %txt /tests/golden/types-union-tag-atoms/types/txt
1796−/* tre-508 %txt /tests/golden/types-union-unresolved/tree/txt
1796+/* src-508 %jibb /tests/golden/types-union-tags/source/jibb
1797−/* typ-508 %txt /tests/golden/types-union-unresolved/types/txt
1797+/* tok-508 %txt /tests/golden/types-union-tags/tokens/txt
1798−/* src-509 %jibb /tests/golden/types-union-unresolved-flow/source/jibb
1798+/* tre-508 %txt /tests/golden/types-union-tags/tree/txt
1799−/* tok-509 %txt /tests/golden/types-union-unresolved-flow/tokens/txt
1799+/* typ-508 %txt /tests/golden/types-union-tags/types/txt
1800−/* tre-509 %txt /tests/golden/types-union-unresolved-flow/tree/txt
1800+/* src-509 %jibb /tests/golden/types-union-unresolved/source/jibb
1801−/* typ-509 %txt /tests/golden/types-union-unresolved-flow/types/txt
1801+/* tok-509 %txt /tests/golden/types-union-unresolved/tokens/txt
1802−/* src-510 %jibb /tests/golden/types-unit-context/source/jibb
1802+/* tre-509 %txt /tests/golden/types-union-unresolved/tree/txt
1803−/* tok-510 %txt /tests/golden/types-unit-context/tokens/txt
1803+/* typ-509 %txt /tests/golden/types-union-unresolved/types/txt
1804−/* tre-510 %txt /tests/golden/types-unit-context/tree/txt
1804+/* src-510 %jibb /tests/golden/types-union-unresolved-flow/source/jibb
1805−/* typ-510 %txt /tests/golden/types-unit-context/types/txt
1805+/* tok-510 %txt /tests/golden/types-union-unresolved-flow/tokens/txt
1806−/* src-511 %jibb /tests/golden/types-unit-patterns/source/jibb
1806+/* tre-510 %txt /tests/golden/types-union-unresolved-flow/tree/txt
1807−/* tok-511 %txt /tests/golden/types-unit-patterns/tokens/txt
1807+/* typ-510 %txt /tests/golden/types-union-unresolved-flow/types/txt
1808−/* tre-511 %txt /tests/golden/types-unit-patterns/tree/txt
1808+/* src-511 %jibb /tests/golden/types-unit-context/source/jibb
1809−/* typ-511 %txt /tests/golden/types-unit-patterns/types/txt
1809+/* tok-511 %txt /tests/golden/types-unit-context/tokens/txt
1810+/* tre-511 %txt /tests/golden/types-unit-context/tree/txt
1811+/* typ-511 %txt /tests/golden/types-unit-context/types/txt
1812+/* src-512 %jibb /tests/golden/types-unit-patterns/source/jibb
1813+/* tok-512 %txt /tests/golden/types-unit-patterns/tokens/txt
1814+/* tre-512 %txt /tests/golden/types-unit-patterns/tree/txt
1815+/* typ-512 %txt /tests/golden/types-unit-patterns/types/txt
1810=/ prepared-prelude (prepare-prelude:jibb prelude-source)
1816=/ prepared-prelude (prepare-prelude:jibb prelude-source)
1811|%
1817|%
1812:: one arm per case
1818:: one arm per case
@@ -2767,72 +2773,74 @@
2767 (weld (check ~.types-prelude-direct src-477 `tok-477 `tre-477) (check-module-types ~.types-prelude-direct ~[%tests %golden ~.types-prelude-direct %source %jibb] src-477 `typ-477 ~ ~ ~))
2773 (weld (check ~.types-prelude-direct src-477 `tok-477 `tre-477) (check-module-types ~.types-prelude-direct ~[%tests %golden ~.types-prelude-direct %source %jibb] src-477 `typ-477 ~ ~ ~))
2768++ test-types-prelude-interface
2774++ test-types-prelude-interface
2769 (weld (weld (check ~.types-prelude-interface src-478 `tok-478 `tre-478) (check-module-types ~.types-prelude-interface ~[%tests %golden ~.types-prelude-interface %source %jibb] src-478 `typ-478 ~ ~ ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-478-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-478-2]])) (check-module-trees ~.types-prelude-interface `mtre-478 ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-478-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-478-2]]))
2775 (weld (weld (check ~.types-prelude-interface src-478 `tok-478 `tre-478) (check-module-types ~.types-prelude-interface ~[%tests %golden ~.types-prelude-interface %source %jibb] src-478 `typ-478 ~ ~ ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-478-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-478-2]])) (check-module-trees ~.types-prelude-interface `mtre-478 ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-478-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-478-2]]))
2776+++ test-types-prelude-list-functions
2777+ (weld (weld (check ~.types-prelude-list-functions src-479 `tok-479 `tre-479) (check-module-types ~.types-prelude-list-functions ~[%tests %golden ~.types-prelude-list-functions %source %jibb] src-479 `typ-479 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-479-1]])) (check-module-trees ~.types-prelude-list-functions `mtre-479 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-479-1]]))
2770++ test-types-record-bound-variable
2778++ test-types-record-bound-variable
2771− (weld (check ~.types-record-bound-variable src-479 `tok-479 `tre-479) (check-types ~.types-record-bound-variable ~[%tests %golden ~.types-record-bound-variable %source %jibb] src-479 `typ-479))
2779+ (weld (check ~.types-record-bound-variable src-480 `tok-480 `tre-480) (check-types ~.types-record-bound-variable ~[%tests %golden ~.types-record-bound-variable %source %jibb] src-480 `typ-480))
2772++ test-types-record-faces
2780++ test-types-record-faces
2773− (weld (check ~.types-record-faces src-480 `tok-480 `tre-480) (check-types ~.types-record-faces ~[%tests %golden ~.types-record-faces %source %jibb] src-480 `typ-480))
2781+ (weld (check ~.types-record-faces src-481 `tok-481 `tre-481) (check-types ~.types-record-faces ~[%tests %golden ~.types-record-faces %source %jibb] src-481 `typ-481))
2774++ test-types-record-import
2782++ test-types-record-import
2775− (weld (weld (check ~.types-record-import src-481 `tok-481 `tre-481) (check-module-types ~.types-record-import ~[%tests %golden ~.types-record-import %source %jibb] src-481 `typ-481 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-481-1]])) (check-module-trees ~.types-record-import `mtre-481 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-481-1]]))
2783+ (weld (weld (check ~.types-record-import src-482 `tok-482 `tre-482) (check-module-types ~.types-record-import ~[%tests %golden ~.types-record-import %source %jibb] src-482 `typ-482 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-482-1]])) (check-module-trees ~.types-record-import `mtre-482 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-482-1]]))
2776++ test-types-record-local-scheme
2784++ test-types-record-local-scheme
2777− (weld (check ~.types-record-local-scheme src-482 `tok-482 `tre-482) (check-types ~.types-record-local-scheme ~[%tests %golden ~.types-record-local-scheme %source %jibb] src-482 `typ-482))
2785+ (weld (check ~.types-record-local-scheme src-483 `tok-483 `tre-483) (check-types ~.types-record-local-scheme ~[%tests %golden ~.types-record-local-scheme %source %jibb] src-483 `typ-483))
2778++ test-types-record-nested
2786++ test-types-record-nested
2779− (weld (check ~.types-record-nested src-483 `tok-483 `tre-483) (check-types ~.types-record-nested ~[%tests %golden ~.types-record-nested %source %jibb] src-483 `typ-483))
2787+ (weld (check ~.types-record-nested src-484 `tok-484 `tre-484) (check-types ~.types-record-nested ~[%tests %golden ~.types-record-nested %source %jibb] src-484 `typ-484))
2780++ test-types-record-to-tuple
2788++ test-types-record-to-tuple
2781− (weld (check ~.types-record-to-tuple src-484 `tok-484 `tre-484) (check-types ~.types-record-to-tuple ~[%tests %golden ~.types-record-to-tuple %source %jibb] src-484 `typ-484))
2789+ (weld (check ~.types-record-to-tuple src-485 `tok-485 `tre-485) (check-types ~.types-record-to-tuple ~[%tests %golden ~.types-record-to-tuple %source %jibb] src-485 `typ-485))
2782++ test-types-recursive-branch
2790++ test-types-recursive-branch
2783− (weld (check ~.types-recursive-branch src-485 `tok-485 `tre-485) (check-module-types ~.types-recursive-branch ~[%tests %golden ~.types-recursive-branch %source %jibb] src-485 `typ-485 ~ ~ ~))
2791+ (weld (check ~.types-recursive-branch src-486 `tok-486 `tre-486) (check-module-types ~.types-recursive-branch ~[%tests %golden ~.types-recursive-branch %source %jibb] src-486 `typ-486 ~ ~ ~))
2784++ test-types-recursive-gate
2792++ test-types-recursive-gate
2785− (weld (check ~.types-recursive-gate src-486 `tok-486 `tre-486) (check-types ~.types-recursive-gate ~[%tests %golden ~.types-recursive-gate %source %jibb] src-486 `typ-486))
2793+ (weld (check ~.types-recursive-gate src-487 `tok-487 `tre-487) (check-types ~.types-recursive-gate ~[%tests %golden ~.types-recursive-gate %source %jibb] src-487 `typ-487))
2786++ test-types-recursive-sample
2794++ test-types-recursive-sample
2787− (weld (check ~.types-recursive-sample src-487 `tok-487 `tre-487) (check-types ~.types-recursive-sample ~[%tests %golden ~.types-recursive-sample %source %jibb] src-487 `typ-487))
2795+ (weld (check ~.types-recursive-sample src-488 `tok-488 `tre-488) (check-types ~.types-recursive-sample ~[%tests %golden ~.types-recursive-sample %source %jibb] src-488 `typ-488))
2788++ test-types-union-alias
2796++ test-types-union-alias
2789− (weld (check ~.types-union-alias src-488 `tok-488 `tre-488) (check-types ~.types-union-alias ~[%tests %golden ~.types-union-alias %source %jibb] src-488 `typ-488))
2797+ (weld (check ~.types-union-alias src-489 `tok-489 `tre-489) (check-types ~.types-union-alias ~[%tests %golden ~.types-union-alias %source %jibb] src-489 `typ-489))
2790++ test-types-union-branch-context
2798++ test-types-union-branch-context
2791− (weld (check ~.types-union-branch-context src-489 `tok-489 `tre-489) (check-types ~.types-union-branch-context ~[%tests %golden ~.types-union-branch-context %source %jibb] src-489 `typ-489))
2799+ (weld (check ~.types-union-branch-context src-490 `tok-490 `tre-490) (check-types ~.types-union-branch-context ~[%tests %golden ~.types-union-branch-context %source %jibb] src-490 `typ-490))
2792++ test-types-union-branch-pending
2800++ test-types-union-branch-pending
2793− (weld (check ~.types-union-branch-pending src-490 `tok-490 `tre-490) (check-types ~.types-union-branch-pending ~[%tests %golden ~.types-union-branch-pending %source %jibb] src-490 `typ-490))
2801+ (weld (check ~.types-union-branch-pending src-491 `tok-491 `tre-491) (check-types ~.types-union-branch-pending ~[%tests %golden ~.types-union-branch-pending %source %jibb] src-491 `typ-491))
2794++ test-types-union-constructor-shape
2802++ test-types-union-constructor-shape
2795− (weld (check ~.types-union-constructor-shape src-491 `tok-491 `tre-491) (check-types ~.types-union-constructor-shape ~[%tests %golden ~.types-union-constructor-shape %source %jibb] src-491 `typ-491))
2803+ (weld (check ~.types-union-constructor-shape src-492 `tok-492 `tre-492) (check-types ~.types-union-constructor-shape ~[%tests %golden ~.types-union-constructor-shape %source %jibb] src-492 `typ-492))
2796++ test-types-union-context-flow
2804++ test-types-union-context-flow
2797− (weld (check ~.types-union-context-flow src-492 `tok-492 `tre-492) (check-types ~.types-union-context-flow ~[%tests %golden ~.types-union-context-flow %source %jibb] src-492 `typ-492))
2805+ (weld (check ~.types-union-context-flow src-493 `tok-493 `tre-493) (check-types ~.types-union-context-flow ~[%tests %golden ~.types-union-context-flow %source %jibb] src-493 `typ-493))
2798++ test-types-union-import
2806++ test-types-union-import
2799− (weld (weld (check ~.types-union-import src-493 `tok-493 `tre-493) (check-module-types ~.types-union-import ~[%tests %golden ~.types-union-import %source %jibb] src-493 `typ-493 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-493-1]])) (check-module-trees ~.types-union-import `mtre-493 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-493-1]]))
2807+ (weld (weld (check ~.types-union-import src-494 `tok-494 `tre-494) (check-module-types ~.types-union-import ~[%tests %golden ~.types-union-import %source %jibb] src-494 `typ-494 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-494-1]])) (check-module-trees ~.types-union-import `mtre-494 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-494-1]]))
2800++ test-types-union-local-pending
2808++ test-types-union-local-pending
2801− (weld (check ~.types-union-local-pending src-494 `tok-494 `tre-494) (check-types ~.types-union-local-pending ~[%tests %golden ~.types-union-local-pending %source %jibb] src-494 `typ-494))
2809+ (weld (check ~.types-union-local-pending src-495 `tok-495 `tre-495) (check-types ~.types-union-local-pending ~[%tests %golden ~.types-union-local-pending %source %jibb] src-495 `typ-495))
2802++ test-types-union-overlap
2810++ test-types-union-overlap
2803− (weld (check ~.types-union-overlap src-495 `tok-495 `tre-495) (check-types ~.types-union-overlap ~[%tests %golden ~.types-union-overlap %source %jibb] src-495 `typ-495))
2811+ (weld (check ~.types-union-overlap src-496 `tok-496 `tre-496) (check-types ~.types-union-overlap ~[%tests %golden ~.types-union-overlap %source %jibb] src-496 `typ-496))
2804++ test-types-union-overlap-nested
2812++ test-types-union-overlap-nested
2805− (weld (check ~.types-union-overlap-nested src-496 `tok-496 `tre-496) (check-types ~.types-union-overlap-nested ~[%tests %golden ~.types-union-overlap-nested %source %jibb] src-496 `typ-496))
2813+ (weld (check ~.types-union-overlap-nested src-497 `tok-497 `tre-497) (check-types ~.types-union-overlap-nested ~[%tests %golden ~.types-union-overlap-nested %source %jibb] src-497 `typ-497))
2806++ test-types-union-phantom-generic
2814++ test-types-union-phantom-generic
2807− (weld (check ~.types-union-phantom-generic src-497 `tok-497 `tre-497) (check-types ~.types-union-phantom-generic ~[%tests %golden ~.types-union-phantom-generic %source %jibb] src-497 `typ-497))
2815+ (weld (check ~.types-union-phantom-generic src-498 `tok-498 `tre-498) (check-types ~.types-union-phantom-generic ~[%tests %golden ~.types-union-phantom-generic %source %jibb] src-498 `typ-498))
2808++ test-types-union-print-cross-namespace
2816++ test-types-union-print-cross-namespace
2809− (weld (weld (check ~.types-union-print-cross-namespace src-498 `tok-498 `tre-498) (check-module-types ~.types-union-print-cross-namespace ~[%tests %golden ~.types-union-print-cross-namespace %source %jibb] src-498 `typ-498 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-498-1]])) (check-module-trees ~.types-union-print-cross-namespace `mtre-498 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-498-1]]))
2817+ (weld (weld (check ~.types-union-print-cross-namespace src-499 `tok-499 `tre-499) (check-module-types ~.types-union-print-cross-namespace ~[%tests %golden ~.types-union-print-cross-namespace %source %jibb] src-499 `typ-499 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-499-1]])) (check-module-trees ~.types-union-print-cross-namespace `mtre-499 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-499-1]]))
2810++ test-types-union-print-distinct
2818++ test-types-union-print-distinct
2811− (weld (weld (check ~.types-union-print-distinct src-499 `tok-499 `tre-499) (check-module-types ~.types-union-print-distinct ~[%tests %golden ~.types-union-print-distinct %source %jibb] src-499 `typ-499 ~ ~ ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-499-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-499-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-499-3]])) (check-module-trees ~.types-union-print-distinct `mtre-499 ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-499-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-499-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-499-3]]))
2819+ (weld (weld (check ~.types-union-print-distinct src-500 `tok-500 `tre-500) (check-module-types ~.types-union-print-distinct ~[%tests %golden ~.types-union-print-distinct %source %jibb] src-500 `typ-500 ~ ~ ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-500-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-500-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-500-3]])) (check-module-trees ~.types-union-print-distinct `mtre-500 ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-500-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-500-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-500-3]]))
2812++ test-types-union-print-escape
2820++ test-types-union-print-escape
2813− (weld (check ~.types-union-print-escape src-500 `tok-500 `tre-500) (check-types ~.types-union-print-escape ~[%tests %golden ~.types-union-print-escape %source %jibb] src-500 `typ-500))
2821+ (weld (check ~.types-union-print-escape src-501 `tok-501 `tre-501) (check-types ~.types-union-print-escape ~[%tests %golden ~.types-union-print-escape %source %jibb] src-501 `typ-501))
2814++ test-types-union-print-local
2822++ test-types-union-print-local
2815− (weld (check ~.types-union-print-local src-501 `tok-501 `tre-501) (check-types ~.types-union-print-local ~[%tests %golden ~.types-union-print-local %source %jibb] src-501 `typ-501))
2823+ (weld (check ~.types-union-print-local src-502 `tok-502 `tre-502) (check-types ~.types-union-print-local ~[%tests %golden ~.types-union-print-local %source %jibb] src-502 `typ-502))
2816++ test-types-union-print-nested
2824++ test-types-union-print-nested
2817− (weld (check ~.types-union-print-nested src-502 `tok-502 `tre-502) (check-types ~.types-union-print-nested ~[%tests %golden ~.types-union-print-nested %source %jibb] src-502 `typ-502))
2825+ (weld (check ~.types-union-print-nested src-503 `tok-503 `tre-503) (check-types ~.types-union-print-nested ~[%tests %golden ~.types-union-print-nested %source %jibb] src-503 `typ-503))
2818++ test-types-union-print-same-origin
2826++ test-types-union-print-same-origin
2819− (weld (weld (check ~.types-union-print-same-origin src-503 `tok-503 `tre-503) (check-module-types ~.types-union-print-same-origin ~[%tests %golden ~.types-union-print-same-origin %source %jibb] src-503 `typ-503 ~ ~ ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-503-1]])) (check-module-trees ~.types-union-print-same-origin `mtre-503 ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-503-1]]))
2827+ (weld (weld (check ~.types-union-print-same-origin src-504 `tok-504 `tre-504) (check-module-types ~.types-union-print-same-origin ~[%tests %golden ~.types-union-print-same-origin %source %jibb] src-504 `typ-504 ~ ~ ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-504-1]])) (check-module-trees ~.types-union-print-same-origin `mtre-504 ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-504-1]]))
2820++ test-types-union-print-transitive
2828++ test-types-union-print-transitive
2821− (weld (weld (check ~.types-union-print-transitive src-504 `tok-504 `tre-504) (check-module-types ~.types-union-print-transitive ~[%tests %golden ~.types-union-print-transitive %source %jibb] src-504 `typ-504 ~ ~ ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-504-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-504-2]])) (check-module-trees ~.types-union-print-transitive `mtre-504 ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-504-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-504-2]]))
2829+ (weld (weld (check ~.types-union-print-transitive src-505 `tok-505 `tre-505) (check-module-types ~.types-union-print-transitive ~[%tests %golden ~.types-union-print-transitive %source %jibb] src-505 `typ-505 ~ ~ ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-505-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-505-2]])) (check-module-trees ~.types-union-print-transitive `mtre-505 ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-505-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-505-2]]))
2822++ test-types-union-singleton
2830++ test-types-union-singleton
2823− (weld (check ~.types-union-singleton src-505 `tok-505 `tre-505) (check-types ~.types-union-singleton ~[%tests %golden ~.types-union-singleton %source %jibb] src-505 `typ-505))
2831+ (weld (check ~.types-union-singleton src-506 `tok-506 `tre-506) (check-types ~.types-union-singleton ~[%tests %golden ~.types-union-singleton %source %jibb] src-506 `typ-506))
2824++ test-types-union-tag-atoms
2832++ test-types-union-tag-atoms
2825− (weld (check ~.types-union-tag-atoms src-506 `tok-506 `tre-506) (check-types ~.types-union-tag-atoms ~[%tests %golden ~.types-union-tag-atoms %source %jibb] src-506 `typ-506))
2833+ (weld (check ~.types-union-tag-atoms src-507 `tok-507 `tre-507) (check-types ~.types-union-tag-atoms ~[%tests %golden ~.types-union-tag-atoms %source %jibb] src-507 `typ-507))
2826++ test-types-union-tags
2834++ test-types-union-tags
2827− (weld (check ~.types-union-tags src-507 `tok-507 `tre-507) (check-types ~.types-union-tags ~[%tests %golden ~.types-union-tags %source %jibb] src-507 `typ-507))
2835+ (weld (check ~.types-union-tags src-508 `tok-508 `tre-508) (check-types ~.types-union-tags ~[%tests %golden ~.types-union-tags %source %jibb] src-508 `typ-508))
2828++ test-types-union-unresolved
2836++ test-types-union-unresolved
2829− (weld (check ~.types-union-unresolved src-508 `tok-508 `tre-508) (check-types ~.types-union-unresolved ~[%tests %golden ~.types-union-unresolved %source %jibb] src-508 `typ-508))
2837+ (weld (check ~.types-union-unresolved src-509 `tok-509 `tre-509) (check-types ~.types-union-unresolved ~[%tests %golden ~.types-union-unresolved %source %jibb] src-509 `typ-509))
2830++ test-types-union-unresolved-flow
2838++ test-types-union-unresolved-flow
2831− (weld (check ~.types-union-unresolved-flow src-509 `tok-509 `tre-509) (check-types ~.types-union-unresolved-flow ~[%tests %golden ~.types-union-unresolved-flow %source %jibb] src-509 `typ-509))
2839+ (weld (check ~.types-union-unresolved-flow src-510 `tok-510 `tre-510) (check-types ~.types-union-unresolved-flow ~[%tests %golden ~.types-union-unresolved-flow %source %jibb] src-510 `typ-510))
2832++ test-types-unit-context
2840++ test-types-unit-context
2833− (weld (check ~.types-unit-context src-510 `tok-510 `tre-510) (check-types ~.types-unit-context ~[%tests %golden ~.types-unit-context %source %jibb] src-510 `typ-510))
2841+ (weld (check ~.types-unit-context src-511 `tok-511 `tre-511) (check-types ~.types-unit-context ~[%tests %golden ~.types-unit-context %source %jibb] src-511 `typ-511))
2834++ test-types-unit-patterns
2842++ test-types-unit-patterns
2835− (weld (check ~.types-unit-patterns src-511 `tok-511 `tre-511) (check-types ~.types-unit-patterns ~[%tests %golden ~.types-unit-patterns %source %jibb] src-511 `typ-511))
2843+ (weld (check ~.types-unit-patterns src-512 `tok-512 `tre-512) (check-types ~.types-unit-patterns ~[%tests %golden ~.types-unit-patterns %source %jibb] src-512 `typ-512))
2836::
2844::
2837:: +check: run golden:jibb on a case and compare both outputs
2845:: +check: run golden:jibb on a case and compare both outputs
2838::
2846::
tests/type-module-scope/about.txt+3
@@ -11,3 +11,6 @@ that source-wrapper and prepared-interface outputs agree with each other and
11with the golden report under eval and on the ship.
11with the golden report under eval and on the ship.
12An imported list stays representable with an omitted or altered prelude
12An imported list stays representable with an omitted or altered prelude
13list, but its list literals, cons, null and list patterns, including literals in branches, fail closed; a malformed prelude is rejected.
13list, but its list literals, cons, null and list patterns, including literals in branches, fail closed; a malformed prelude is rejected.
14+Prelude helpers cannot infer through a missing or altered canonical list, or
15+through a local mold that shadows the prelude's list. A noncanonical list
16+cannot leak through a transitive prelude mold alias either.
tests/type-module-scope/expected.txt+11
@@ -36,3 +36,14 @@ partial inference; module not checked
36++ bridge: cast mold is not supported by partial inference
36++ bridge: cast mold is not supported by partial inference
37partial inference; module not checked
37partial inference; module not checked
38prelude source does not parse; module import inference unsupported
38prelude source does not parse; module import inference unsupported
39+partial inference; module not checked
40+++ attempt: name is not available to partial inference
41+partial inference; module not checked
42+++ attempt: name is not available to partial inference
43+partial inference; module not checked
44+++ attempt: name is not available to partial inference
45+partial inference; module not checked
46+prelude source does not parse; module import inference unsupported
47+partial inference; module not checked
48+++ attempt: name is not available to partial inference
49+++ direct: sample mold is not supported by partial inference