on master help sign in
Infer recursive prelude list helpers
commit1470d18358fa5690849998c6e07fbf5be84fb325 authoriko <mail@iko.soy> dateFri 30 Oct 2026, 22:47 (12 hours ago) parent918acbd
37 files changed+5496−5210
docs/compiler.md+2−2 docs/status.md+8−7 jibb-dev/lib/jibb.hoon+10−2 jibb-dev/lib/jibb/prelude.jibb+4−3 tests/golden/prelude-1c-structural/source.jibb+4−3 tests/golden/prelude-1c-structural/tokens.txt+500−493 tests/golden/prelude-1c-structural/tree.txt+189−186 tests/golden/prelude-3g-basic/source.jibb+4−3 tests/golden/prelude-3g-basic/tokens.txt+148−141 tests/golden/prelude-3g-basic/tree.txt+62−59 tests/golden/prelude-3g-like/source.jibb+4−3 tests/golden/prelude-3g-like/tokens.txt+386−379 tests/golden/prelude-3g-like/tree.txt+148−145 tests/golden/prelude-3g-structural/source.jibb+4−3 tests/golden/prelude-3g-structural/tokens.txt+337−330 tests/golden/prelude-3g-structural/tree.txt+128−125 tests/golden/prelude-list-helpers/source.jibb+4−3 tests/golden/prelude-list-helpers/tokens.txt+622−615 tests/golden/prelude-list-helpers/tree.txt+245−242 tests/golden/prelude-list-unit/source.jibb+4−3 tests/golden/prelude-list-unit/tokens.txt+79−72 tests/golden/prelude-list-unit/tree.txt+34−31 tests/golden/prelude-unit-list-transforms/source.jibb+4−3 tests/golden/prelude-unit-list-transforms/tokens.txt+1527−1520 tests/golden/prelude-unit-list-transforms/tree.txt+659−656 tests/golden/types-prelude-list-functions/about.txt+4 tests/golden/types-prelude-list-functions/module-trees.txt+5 tests/golden/types-prelude-list-functions/modules.txt+1 tests/golden/types-prelude-list-functions/modules/ui/lib.jibb+1 tests/golden/types-prelude-list-functions/source.jibb+11 tests/golden/types-prelude-list-functions/tokens.txt+84 tests/golden/types-prelude-list-functions/tree.txt+40 tests/golden/types-prelude-list-functions/types.txt+15 tests/lib/jibb-module-scope.hoon+17−1 tests/lib/jibb.hoon+188−180 tests/type-module-scope/about.txt+3 tests/type-module-scope/expected.txt+11
docs/compiler.md+2−2
@@ -68,7 +68,7 @@ A known union of `~` and a null-headed cell can be matched by `~` and `[~ value]
6868
6969A 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.
7070
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.
7272
7373Self-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.
7474
@@ -76,7 +76,7 @@ Callers that have a `/sur` core and a name can use `+read-named`: it checks for
7676
7777`+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.
7878
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.
8080
8181`+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.
8282
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
1919
2020## Milestone 2: in progress
2121
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.
2323
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.
2525
2626## Milestone 1: parser and mark
2727
@@ -39,8 +39,8 @@ What the plan asks for, and where it is:
3939
4040Besides the plan's list:
4141
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.
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.
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 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.
4444- `tools/testdata/selftest` (22 checks) and `tools/testdata/ship-selftest` test the tools themselves.
4545- 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.
4646- 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:
8787| 9ab52e8 | 2026-10-30 | Infer recursive branches with closed base types |
8888| d782b45 | 2026-10-30 | Propagate list context and apply settled type decisions |
8989| 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 |
9192
9293## Checking it
9394
9495On a machine set up as [development.md](development.md) says:
9596
9697```
97−tools/golden # 511 cases under urbit eval
98+tools/golden # 512 cases under urbit eval
9899tools/importer-test # the Hoon importer fixture projection
99100tools/type-import-test # the importer/checker bridge fixture
100101tools/type-mark-test # the mark/checker bridge fixture
@@ -104,7 +105,7 @@ tools/testdata/selftest # the tools themselves
104105tools/doc-blocks docs/spec # the doc's examples are golden cases
105106tools/ship start
106107tools/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
108109tools/testdata/ship-selftest
109110tools/ship check-commit # |commit stores .jibb files
110111tools/clay-fixtures # example /sur files and marks build through Clay
jibb-dev/lib/jibb.hoon+10−2
@@ -7390,9 +7390,17 @@
73907390 =/ molds=imolds (collect-simple-molds ds)
73917391 =/ names=(list term) (turn molds |=(m=[name=term body=shape] name.m))
73927392 =/ globals=(list term) (global-value-names ds)
7393− =/ state=istate [0 ~ ~ ~ molds globals ~ ~ ~ ~ ~ ~ ~ ~ ~ | at names ~]
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] ~)
7400+ =/ state=istate [0 ~ ~ ~ env-molds globals ~ ~ ~ ~ ~ reserved ~ ~ ~ | at names ~]
73947401 =/ mt=imold-types (partial-prelude-molds molds state)
7395− =/ env=ienv (resolve-supported-defs ds molds globals ~ ~ ~ ~ ~ ~ at ~)
7402+ =/ partial=ifile [~ mt at]
7403+ =/ env=ienv (resolve-supported-defs ds env-molds globals ~ ~ ~ ~ ~ reserved at `partial)
73967404 `[env mt at]
73977405::
73987406+$ iprelude [iface=ifile values=(list term) molds=(list term)]
jibb-dev/lib/jibb/prelude.jibb+4−3
@@ -37,9 +37,10 @@
3737++ weld |= args=[(list A) (list A)]
3838 ?- args
3939 [xs ys]
40− ?- xs
41− ~ ys
42− [item rest] [item (weld rest ys)]
40+ ^- (list A)
41+ ?- xs
42+ ~ ys
43+ [item rest] [item (weld rest ys)]
4344
4445++ turn |= args=[(list A) $-(A B)]
4546 ?- args
tests/golden/prelude-1c-structural/source.jibb+4−3
@@ -37,9 +37,10 @@
3737++ weld |= args=[(list A) (list A)]
3838 ?- args
3939 [xs ys]
40− ?- xs
41− ~ ys
42− [item rest] [item (weld rest ys)]
40+ ^- (list A)
41+ ?- xs
42+ ~ ys
43+ [item rest] [item (weld rest ys)]
4344
4445++ turn |= args=[(list A) $-(A B)]
4546 ?- args
tests/golden/prelude-1c-structural/tokens.txt+500−493
@@ -190,528 +190,535 @@
19019039:9 name ys
19119139:11 tight glyph ]
19219240:7 INDENT
193−40:7 glyph ?-
194−40:10 name xs
193+40:7 glyph ^-
194+40:10 glyph (
195+40:11 tight name list
196+40:16 tvar A
197+40:17 tight glyph )
19519841:9 INDENT
196−41:9 lit ~
197−41:11 name ys
198−42:9 NEWLINE
199−42:9 glyph [
200−42:10 tight name item
201−42:15 name rest
202−42:19 tight glyph ]
203−42:21 glyph [
204−42:22 tight name item
205−42:27 glyph (
206−42:28 tight name weld
207−42:33 name rest
208−42:38 name ys
209−42:40 tight glyph )
210−42:41 tight glyph ]
211−44:1 DEDENT
212−44:1 DEDENT
213−44:1 DEDENT
214−44:1 DEDENT
215−44:1 NEWLINE
216−44:1 glyph ++
217−44:4 name turn
218−44:9 glyph |=
219−44:12 name args
220−44:16 tight glyph =
221−44:17 tight glyph [
222−44:18 tight glyph (
223−44:19 tight name list
224−44:24 tvar A
225−44:25 tight glyph )
226−44:27 glyph $-(
227−44:30 tight tvar A
228−44:32 tvar B
229−44:33 tight glyph )
230−44:34 tight glyph ]
231−45:3 INDENT
232−45:3 glyph ?-
233−45:6 name args
234−46:5 INDENT
235−46:5 glyph [
236−46:6 tight name xs
237−46:9 name f
238−46:10 tight glyph ]
239−47:7 INDENT
240−47:7 glyph ?-
241−47:10 name xs
242−48:9 INDENT
243−48:9 lit ~
244−48:11 lit ~
245−49:9 NEWLINE
246−49:9 glyph [
247−49:10 tight name item
248−49:15 name rest
249−49:19 tight glyph ]
250−49:21 glyph [
251−49:22 tight glyph (
252−49:23 tight name f
253−49:25 name item
254−49:29 tight glyph )
255−49:31 glyph (
256−49:32 tight name turn
257−49:37 name rest
258−49:42 name f
259−49:43 tight glyph )
260−49:44 tight glyph ]
261−51:1 DEDENT
262−51:1 DEDENT
263−51:1 DEDENT
264−51:1 DEDENT
265−51:1 NEWLINE
266−51:1 glyph +$
267−51:4 name dime
268−51:9 glyph [
269−51:10 tight name p
270−51:11 tight glyph =
271−51:12 tight aura @ta
272−51:16 name q
273−51:17 tight glyph =
274−51:18 tight aura @
275−51:19 tight glyph ]
276−53:1 NEWLINE
277−53:1 glyph +$
278−53:4 name hair
279−53:9 glyph [
280−53:10 tight name p
281−53:11 tight glyph =
282−53:12 tight aura @ud
283−53:16 name q
284−53:17 tight glyph =
285−53:18 tight aura @ud
286−53:21 tight glyph ]
287−55:1 NEWLINE
288−55:1 glyph +$
289−55:4 name pint
290−55:9 glyph [
291−55:10 tight name p
292−55:11 tight glyph =
293−55:12 tight glyph [
294−55:13 tight name p
295−55:14 tight glyph =
296−55:15 tight aura @
297−55:17 name q
298−55:18 tight glyph =
299−55:19 tight aura @
300−55:20 tight glyph ]
301−55:22 name q
302−55:23 tight glyph =
303−55:24 tight glyph [
304−55:25 tight name p
305−55:26 tight glyph =
306−55:27 tight aura @
307−55:29 name q
308−55:30 tight glyph =
309−55:31 tight aura @
310−55:32 tight glyph ]
311−55:33 tight glyph ]
312−57:1 NEWLINE
313−57:1 glyph +$
314−57:4 name coin
315−58: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
199+41:9 glyph ?-
200+41:12 name xs
201+42:11 INDENT
202+42:11 lit ~
203+42:13 name ys
204+43:11 NEWLINE
205+43:11 glyph [
206+43:12 tight name item
207+43:17 name rest
208+43:21 tight glyph ]
209+43:23 glyph [
210+43:24 tight name item
211+43:29 glyph (
212+43:30 tight name weld
213+43:35 name rest
214+43:40 name ys
215+43:42 tight glyph )
216+43:43 tight glyph ]
217+45:1 DEDENT
218+45:1 DEDENT
219+45:1 DEDENT
220+45:1 DEDENT
221+45:1 DEDENT
222+45:1 NEWLINE
223+45:1 glyph ++
224+45:4 name turn
225+45:9 glyph |=
226+45:12 name args
227+45:16 tight glyph =
228+45:17 tight glyph [
229+45:18 tight glyph (
230+45:19 tight name list
231+45:24 tvar A
232+45:25 tight glyph )
233+45:27 glyph $-(
234+45:30 tight tvar A
235+45:32 tvar B
236+45:33 tight glyph )
237+45:34 tight glyph ]
238+46:3 INDENT
239+46:3 glyph ?-
240+46:6 name args
241+47:5 INDENT
242+47:5 glyph [
243+47:6 tight name xs
244+47:9 name f
245+47:10 tight glyph ]
246+48:7 INDENT
247+48:7 glyph ?-
248+48:10 name xs
249+49:9 INDENT
250+49:9 lit ~
251+49:11 lit ~
252+50:9 NEWLINE
253+50:9 glyph [
254+50:10 tight name item
255+50:15 name rest
256+50:19 tight glyph ]
257+50:21 glyph [
258+50:22 tight glyph (
259+50:23 tight name f
260+50:25 name item
261+50:29 tight glyph )
262+50:31 glyph (
263+50:32 tight name turn
264+50:37 name rest
265+50:42 name f
266+50:43 tight glyph )
267+50:44 tight glyph ]
268+52:1 DEDENT
269+52:1 DEDENT
270+52:1 DEDENT
271+52:1 DEDENT
272+52:1 NEWLINE
273+52:1 glyph +$
274+52:4 name dime
275+52:9 glyph [
276+52:10 tight name p
277+52:11 tight glyph =
278+52:12 tight aura @ta
279+52:16 name q
280+52:17 tight glyph =
281+52:18 tight aura @
282+52:19 tight glyph ]
283+54:1 NEWLINE
284+54:1 glyph +$
285+54:4 name hair
286+54:9 glyph [
287+54:10 tight name p
288+54:11 tight glyph =
289+54:12 tight aura @ud
290+54:16 name q
291+54:17 tight glyph =
292+54:18 tight aura @ud
293+54:21 tight glyph ]
294+56:1 NEWLINE
295+56:1 glyph +$
296+56:4 name pint
297+56:9 glyph [
298+56:10 tight name p
299+56:11 tight glyph =
300+56:12 tight glyph [
301+56:13 tight name p
302+56:14 tight glyph =
303+56:15 tight aura @
304+56:17 name q
305+56:18 tight glyph =
306+56:19 tight aura @
307+56:20 tight glyph ]
308+56:22 name q
309+56:23 tight glyph =
310+56:24 tight glyph [
311+56:25 tight name p
312+56:26 tight glyph =
313+56:27 tight aura @
314+56:29 name q
315+56:30 tight glyph =
316+56:31 tight aura @
317+56:32 tight glyph ]
318+56:33 tight glyph ]
319+58:1 NEWLINE
320+58:1 glyph +$
321+58:4 name coin
322+59:3 INDENT
32332359:3 glyph [
324−59:4 tight lit %blob
325−59:10 name p
326−59:11 tight glyph =
327−59:12 tight glyph *
324+59:4 tight lit %$
325+59:7 name p
326+59:8 tight glyph =
327+59:9 tight name dime
32832859:13 tight glyph ]
32932960:3 NEWLINE
33033060:3 glyph [
331−60:4 tight lit %many
331+60:4 tight lit %blob
33233260:10 name p
33333360:11 tight glyph =
334−60:12 tight glyph (
335−60:13 tight name list
336−60:18 name coin
337−60:22 tight glyph )
338−60:23 tight glyph ]
339−62:1 DEDENT
340−62:1 NEWLINE
341−62:1 glyph +$
342−62:4 name pair
343−62:9 glyph |$
344−62:12 glyph [
345−62:13 tight tvar A
346−62:15 tvar B
347−62:16 tight glyph ]
348−62:18 glyph [
349−62:19 tight name p
350−62:20 tight glyph =
351−62:21 tight tvar A
352−62:23 name q
353−62:24 tight glyph =
354−62:25 tight tvar B
355−62:26 tight glyph ]
356−64:1 NEWLINE
357−64:1 glyph +$
358−64:4 name trel
359−64:9 glyph |$
360−64:12 glyph [
361−64:13 tight tvar A
362−64:15 tvar B
363−64:17 tvar C
364−64:18 tight glyph ]
365−64:20 glyph [
366−64:21 tight name p
367−64:22 tight glyph =
368−64:23 tight tvar A
369−64:25 name q
370−64:26 tight glyph =
371−64:27 tight tvar B
372−64:29 name r
373−64:30 tight glyph =
374−64:31 tight tvar C
375−64:32 tight glyph ]
376−66:1 NEWLINE
377−66:1 glyph +$
378−66:4 name qual
379−66:9 glyph |$
380−66:12 glyph [
381−66:13 tight tvar A
382−66:15 tvar B
383−66:17 tvar C
384−66:19 tvar D
385−66:20 tight glyph ]
386−66:22 glyph [
387−66:23 tight name p
388−66:24 tight glyph =
389−66:25 tight tvar A
390−66:27 name q
391−66:28 tight glyph =
392−66:29 tight tvar B
393−66:31 name r
394−66:32 tight glyph =
395−66:33 tight tvar C
396−66:35 name s
397−66:36 tight glyph =
398−66:37 tight tvar D
399−66:38 tight glyph ]
400−68:1 NEWLINE
401−68:1 glyph +$
402−68:4 name cord
403−68:9 aura @t
404−70:1 NEWLINE
405−70:1 glyph +$
406−70:4 name knot
407−70:9 aura @ta
408−72:1 NEWLINE
409−72:1 glyph +$
410−72:4 name tape
411−72:9 glyph (
412−72:10 tight name list
413−72:15 aura @tD
414−72:18 tight glyph )
415−74:1 NEWLINE
416−74:1 glyph +$
417−74:4 name path
418−74:9 glyph (
419−74:10 tight name list
420−74:15 name knot
421−74:19 tight glyph )
422−76:1 NEWLINE
423−76:1 glyph +$
424−76:4 name tank
425−77: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
431−78:11 tight glyph =
432−78:12 tight name tape
433−78:16 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 (
342+61:13 tight name list
343+61:18 name coin
344+61:22 tight glyph )
345+61:23 tight glyph ]
346+63:1 DEDENT
347+63:1 NEWLINE
348+63:1 glyph +$
349+63:4 name pair
350+63:9 glyph |$
351+63:12 glyph [
352+63:13 tight tvar A
353+63:15 tvar B
354+63:16 tight glyph ]
355+63:18 glyph [
356+63:19 tight name p
357+63:20 tight glyph =
358+63:21 tight tvar A
359+63:23 name q
360+63:24 tight glyph =
361+63:25 tight tvar B
362+63:26 tight glyph ]
363+65:1 NEWLINE
364+65:1 glyph +$
365+65:4 name trel
366+65:9 glyph |$
367+65:12 glyph [
368+65:13 tight tvar A
369+65:15 tvar B
370+65:17 tvar C
371+65:18 tight glyph ]
372+65:20 glyph [
373+65:21 tight name p
374+65:22 tight glyph =
375+65:23 tight tvar A
376+65:25 name q
377+65:26 tight glyph =
378+65:27 tight tvar B
379+65:29 name r
380+65:30 tight glyph =
381+65:31 tight tvar C
382+65:32 tight glyph ]
383+67:1 NEWLINE
384+67:1 glyph +$
385+67:4 name qual
386+67:9 glyph |$
387+67:12 glyph [
388+67:13 tight tvar A
389+67:15 tvar B
390+67:17 tvar C
391+67:19 tvar D
392+67:20 tight glyph ]
393+67:22 glyph [
394+67:23 tight name p
395+67:24 tight glyph =
396+67:25 tight tvar A
397+67:27 name q
398+67:28 tight glyph =
399+67:29 tight tvar B
400+67:31 name r
401+67:32 tight glyph =
402+67:33 tight tvar C
403+67:35 name s
404+67:36 tight glyph =
405+67:37 tight tvar D
406+67:38 tight glyph ]
407+69:1 NEWLINE
408+69:1 glyph +$
409+69:4 name cord
410+69:9 aura @t
411+71:1 NEWLINE
412+71:1 glyph +$
413+71:4 name knot
414+71:9 aura @ta
415+73:1 NEWLINE
416+73:1 glyph +$
417+73:4 name tape
418+73:9 glyph (
419+73:10 tight name list
420+73:15 aura @tD
421+73:18 tight glyph )
422+75:1 NEWLINE
423+75:1 glyph +$
424+75:4 name path
425+75:9 glyph (
426+75:10 tight name list
427+75:15 name knot
428+75:19 tight glyph )
429+77:1 NEWLINE
430+77:1 glyph +$
431+77:4 name tank
432+78:3 INDENT
433+78:3 name cord
43443479:3 NEWLINE
43543579:3 glyph [
436−79:4 tight lit %palm
436+79:4 tight lit %leaf
43743779:10 name p
43843879:11 tight glyph =
439−79:12 tight glyph (
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 ]
439+79:12 tight name tape
440+79:16 tight glyph ]
45344180:3 NEWLINE
45444280:3 glyph [
455−80:4 tight lit %rose
443+80:4 tight lit %palm
45644480:10 name p
45744580:11 tight glyph =
45844680:12 tight glyph (
459−80:13 tight name trel
447+80:13 tight name qual
46044880:18 name tape
46144980:23 name tape
46245080:28 name tape
463−80:32 tight glyph )
464−80:34 name q
465−80:35 tight glyph =
466−80:36 tight glyph (
467−80:37 tight name list
468−80:42 name tank
469−80:46 tight glyph )
470−80:47 tight glyph ]
471−82:1 DEDENT
472−82:1 NEWLINE
473−82:1 glyph +$
474−82:4 name nail
475−82:9 glyph [
476−82:10 tight name p
477−82:11 tight glyph =
478−82:12 tight name hair
479−82:17 name q
480−82:18 tight glyph =
481−82:19 tight name tape
482−82:23 tight glyph ]
483−84:1 NEWLINE
484−84:1 glyph +$
485−84:4 name edge
486−84:9 glyph [
487−84:10 tight name p
488−84:11 tight glyph =
489−84:12 tight name hair
490−84:17 name q
491−84:18 tight glyph =
492−84:19 tight glyph (
493−84:20 tight name unit
494−84:25 glyph [
495−84:26 tight name p
496−84:27 tight glyph =
497−84:28 tight glyph *
498−84:30 name q
499−84:31 tight glyph =
500−84:32 tight name nail
501−84:36 tight glyph ]
502−84:37 tight glyph )
503−84:38 tight glyph ]
504−86:1 NEWLINE
505−86:1 glyph +$
506−86:4 name rule
507−86:9 glyph $-(
508−86:12 tight name nail
509−86:17 name edge
510−86:21 tight glyph )
511−88:1 NEWLINE
512−88:1 glyph +$
513−88:4 name spot
514−88:9 glyph [
515−88:10 tight name p
516−88:11 tight glyph =
517−88:12 tight name path
518−88:17 name q
519−88:18 tight glyph =
520−88:19 tight name pint
521−88:23 tight glyph ]
522−90:1 NEWLINE
523−90:1 glyph +$
524−90:4 name toon
525−91: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
451+80:33 name tape
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 )
471+81:34 name q
472+81:35 tight glyph =
473+81:36 tight glyph (
474+81:37 tight name list
475+81:42 name tank
476+81:46 tight glyph )
477+81:47 tight glyph ]
478+83:1 DEDENT
479+83:1 NEWLINE
480+83:1 glyph +$
481+83:4 name nail
482+83:9 glyph [
483+83:10 tight name p
484+83:11 tight glyph =
485+83:12 tight name hair
486+83:17 name q
487+83:18 tight glyph =
488+83:19 tight name tape
489+83:23 tight glyph ]
490+85:1 NEWLINE
491+85:1 glyph +$
492+85:4 name edge
493+85:9 glyph [
494+85:10 tight name p
495+85:11 tight glyph =
496+85:12 tight name hair
497+85:17 name q
498+85:18 tight glyph =
499+85:19 tight glyph (
500+85:20 tight name unit
501+85:25 glyph [
502+85:26 tight name p
503+85:27 tight glyph =
504+85:28 tight glyph *
505+85:30 name q
506+85:31 tight glyph =
507+85:32 tight name nail
508+85:36 tight glyph ]
509+85:37 tight glyph )
510+85:38 tight glyph ]
511+87:1 NEWLINE
512+87:1 glyph +$
513+87:4 name rule
514+87:9 glyph $-(
515+87:12 tight name nail
516+87:17 name edge
517+87:21 tight glyph )
518+89:1 NEWLINE
519+89:1 glyph +$
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
53353392:3 glyph [
534−92:4 tight lit %1
534+92:4 tight lit %0
53553592:7 name p
53653692:8 tight glyph =
53753792:9 tight glyph *
53853892:10 tight glyph ]
53953993:3 NEWLINE
54054093:3 glyph [
541−93:4 tight lit %2
541+93:4 tight lit %1
54254293:7 name p
54354393:8 tight glyph =
544−93:9 tight glyph (
545−93:10 tight name list
546−93:15 name tank
547−93:19 tight glyph )
548−93:20 tight glyph ]
549−95:1 DEDENT
550−95:1 NEWLINE
551−95:1 glyph +$
552−95:4 name like
553−95:9 glyph |$
554−95:12 glyph [
555−95:13 tight tvar A
556−95:14 tight glyph ]
557−95:16 glyph [
558−95:17 tight name p
559−95:18 tight glyph =
560−95:19 tight name hair
561−95:24 name q
562−95:25 tight glyph =
563−95:26 tight glyph (
564−95:27 tight name unit
565−95:32 glyph [
566−95:33 tight name p
567−95:34 tight glyph =
568−95:35 tight tvar A
569−95:37 name q
570−95:38 tight glyph =
571−95:39 tight name nail
572−95:43 tight glyph ]
573−95:44 tight glyph )
574−95:45 tight glyph ]
575−97:1 NEWLINE
576−97:1 glyph ++
577−97:4 name wonk
578−97:9 glyph |=
579−97:12 name veq
580−97:15 tight glyph =
581−97:16 tight glyph (
582−97:17 tight name like
583−97:22 tvar A
584−97:23 tight glyph )
585−98:3 INDENT
586−98:3 glyph ?-
587−98:6 wing q.veq
588−99:5 INDENT
589−99:5 lit ~
590−99:7 glyph !!
591−100:5 NEWLINE
592−100:5 glyph [
593−100:6 tight lit ~
594−100:8 name product
595−100:15 tight glyph ]
596−100:17 wing p.product
597−102:1 DEDENT
598−102:1 DEDENT
599−102:1 NEWLINE
600−102:1 glyph +$
601−102:4 name lone
602−102:9 glyph |$
603−102:12 glyph [
604−102:13 tight tvar A
605−102:14 tight glyph ]
606−102:16 glyph [
607−102:17 tight name p
608−102:18 tight glyph =
609−102:19 tight tvar A
610−102:20 tight glyph ]
611−104:1 NEWLINE
612−104:1 glyph +$
613−104:4 name lest
614−104:9 glyph |$
615−104:12 glyph [
616−104:13 tight tvar A
617−104:14 tight glyph ]
618−104:16 glyph [
619−104:17 tight name i
620−104:18 tight glyph =
621−104:19 tight tvar A
622−104:21 name t
623−104:22 tight glyph =
624−104:23 tight glyph (
625−104:24 tight name list
626−104:29 tvar A
627−104:30 tight glyph )
628−104:31 tight glyph ]
629−106:1 NEWLINE
630−106:1 glyph +$
631−106:4 name pole
632−106:9 glyph |$
633−106:12 glyph [
634−106:13 tight tvar A
635−106:14 tight glyph ]
636−107:3 INDENT
637−107:3 lit ~
638−108:3 NEWLINE
639−108:3 glyph [
640−108:4 tight tvar A
641−108:6 glyph (
642−108:7 tight name pole
643−108:12 tvar A
644−108:13 tight glyph )
645−108:14 tight glyph ]
646−110:1 DEDENT
647−110:1 NEWLINE
648−110:1 glyph +$
649−110:4 name quip
650−110:9 glyph |$
651−110:12 glyph [
652−110:13 tight tvar A
653−110:15 tvar B
654−110:16 tight glyph ]
655−110:18 glyph [
656−110:19 tight glyph (
657−110:20 tight name list
658−110:25 tvar A
659−110:26 tight glyph )
660−110:28 tvar B
661−110:29 tight glyph ]
662−112:1 NEWLINE
663−112:1 glyph +$
664−112:4 name tree
665−112:9 glyph |$
666−112:12 glyph [
667−112:13 tight tvar A
668−112:14 tight glyph ]
669−113:3 INDENT
670−113:3 lit ~
671−114:3 NEWLINE
672−114:3 glyph [
673−114:4 tight name n
674−114:5 tight glyph =
675−114:6 tight tvar A
676−114:8 name l
677−114:9 tight glyph =
678−114:10 tight glyph (
679−114:11 tight name tree
680−114:16 tvar A
681−114:17 tight glyph )
682−114:19 name r
683−114:20 tight glyph =
684−114:21 tight glyph (
685−114:22 tight name tree
686−114:27 tvar A
687−114:28 tight glyph )
688−114:29 tight glyph ]
689−116:1 DEDENT
690−116:1 NEWLINE
691−116:1 glyph +$
692−116:4 name each
693−116:9 glyph |$
694−116:12 glyph [
695−116:13 tight tvar A
696−116: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 ]
705−118:3 NEWLINE
544+93:9 tight glyph *
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
553+94:15 name tank
554+94:19 tight glyph )
555+94:20 tight glyph ]
556+96:1 DEDENT
557+96:1 NEWLINE
558+96:1 glyph +$
559+96:4 name like
560+96:9 glyph |$
561+96:12 glyph [
562+96:13 tight tvar A
563+96:14 tight glyph ]
564+96:16 glyph [
565+96:17 tight name p
566+96:18 tight glyph =
567+96:19 tight name hair
568+96:24 name q
569+96:25 tight glyph =
570+96:26 tight glyph (
571+96:27 tight name unit
572+96:32 glyph [
573+96:33 tight name p
574+96:34 tight glyph =
575+96:35 tight tvar A
576+96:37 name q
577+96:38 tight glyph =
578+96:39 tight name nail
579+96:43 tight glyph ]
580+96:44 tight glyph )
581+96:45 tight glyph ]
582+98:1 NEWLINE
583+98:1 glyph ++
584+98:4 name wonk
585+98:9 glyph |=
586+98:12 name veq
587+98:15 tight glyph =
588+98:16 tight glyph (
589+98:17 tight name like
590+98:22 tvar A
591+98:23 tight glyph )
592+99:3 INDENT
593+99:3 glyph ?-
594+99:6 wing q.veq
595+100:5 INDENT
596+100:5 lit ~
597+100:7 glyph !!
598+101:5 NEWLINE
599+101:5 glyph [
600+101:6 tight lit ~
601+101:8 name product
602+101:15 tight glyph ]
603+101:17 wing p.product
604+103:1 DEDENT
605+103:1 DEDENT
606+103:1 NEWLINE
607+103:1 glyph +$
608+103:4 name lone
609+103:9 glyph |$
610+103:12 glyph [
611+103:13 tight tvar A
612+103:14 tight glyph ]
613+103:16 glyph [
614+103:17 tight name p
615+103:18 tight glyph =
616+103:19 tight tvar A
617+103:20 tight glyph ]
618+105:1 NEWLINE
619+105:1 glyph +$
620+105:4 name lest
621+105:9 glyph |$
622+105:12 glyph [
623+105:13 tight tvar A
624+105:14 tight glyph ]
625+105:16 glyph [
626+105:17 tight name i
627+105:18 tight glyph =
628+105:19 tight tvar A
629+105:21 name t
630+105:22 tight glyph =
631+105:23 tight glyph (
632+105:24 tight name list
633+105:29 tvar A
634+105:30 tight glyph )
635+105:31 tight glyph ]
636+107:1 NEWLINE
637+107:1 glyph +$
638+107:4 name pole
639+107:9 glyph |$
640+107:12 glyph [
641+107:13 tight tvar A
642+107:14 tight glyph ]
643+108:3 INDENT
644+108:3 lit ~
645+109:3 NEWLINE
646+109:3 glyph [
647+109:4 tight tvar A
648+109:6 glyph (
649+109:7 tight name pole
650+109:12 tvar A
651+109:13 tight glyph )
652+109:14 tight glyph ]
653+111:1 DEDENT
654+111:1 NEWLINE
655+111:1 glyph +$
656+111:4 name quip
657+111:9 glyph |$
658+111:12 glyph [
659+111:13 tight tvar A
660+111:15 tvar B
661+111:16 tight glyph ]
662+111:18 glyph [
663+111:19 tight glyph (
664+111:20 tight name list
665+111:25 tvar A
666+111:26 tight glyph )
667+111:28 tvar B
668+111:29 tight glyph ]
669+113:1 NEWLINE
670+113:1 glyph +$
671+113:4 name tree
672+113:9 glyph |$
673+113:12 glyph [
674+113:13 tight tvar A
675+113:14 tight glyph ]
676+114:3 INDENT
677+114:3 lit ~
678+115:3 NEWLINE
679+115:3 glyph [
680+115:4 tight name n
681+115:5 tight glyph =
682+115:6 tight tvar A
683+115:8 name l
684+115:9 tight glyph =
685+115:10 tight glyph (
686+115:11 tight name tree
687+115:16 tvar A
688+115:17 tight glyph )
689+115:19 name r
690+115:20 tight glyph =
691+115:21 tight glyph (
692+115:22 tight name tree
693+115:27 tvar A
694+115:28 tight glyph )
695+115:29 tight glyph ]
696+117:1 DEDENT
697+117:1 NEWLINE
698+117:1 glyph +$
699+117:4 name each
700+117:9 glyph |$
701+117:12 glyph [
702+117:13 tight tvar A
703+117:15 tvar B
704+117:16 tight glyph ]
705+118:3 INDENT
706706118:3 glyph [
707−118:4 tight lit %&
707+118:4 tight lit %|
708708118:7 name p
709709118:8 tight glyph =
710−118:9 tight tvar A
710+118:9 tight tvar B
711711118:10 tight glyph ]
712−120:1 DEDENT
713−120:1 NEWLINE
714−120:1 glyph +$
715−120:4 name bloq
716−120:9 aura @
717−120:10 NEWLINE
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 ]
719+121:1 DEDENT
720+121:1 NEWLINE
721+121:1 glyph +$
722+121:4 name bloq
723+121:9 aura @
724+121:10 NEWLINE
tests/golden/prelude-1c-structural/tree.txt+189−186
@@ -87,198 +87,201 @@
8787 (arm 39:5
8888 (cell 39:5 (bind 39:6 xs) (bind 39:9 ys))
8989 (body 40:7
90− (branch 40:7
91− (wing 40:10 xs)
92− (arm 41:9 (lit 41:9 ~) (wing 41:11 ys))
93− (arm 42:9
94− (cell 42:9 (bind 42:10 item) (bind 42:15 rest))
95− (tuple 42:21
96− (wing 42:22 item)
97− (group 42:27
98− (call 42:28 (wing 42:28 weld) (wing 42:33 rest) (wing 42:38 ys))))))))))))
99− (value 44:1 turn
100− (gate 44:9
101− (face 44:12 args
102− (cell 44:17
103− (apply 44:18 list (tvar 44:24 A))
104− (fn 44:27 (tvar 44:30 A) (tvar 44:32 B))))
105− (body 45:3
106− (branch 45:3
107− (wing 45:6 args)
108− (arm 46:5
109− (cell 46:5 (bind 46:6 xs) (bind 46:9 f))
110− (body 47:7
111− (branch 47:7
112− (wing 47:10 xs)
113− (arm 48:9 (lit 48:9 ~) (lit 48:11 ~))
114− (arm 49:9
115− (cell 49:9 (bind 49:10 item) (bind 49:15 rest))
116− (tuple 49:21
117− (group 49:22
118− (call 49:23 (wing 49:23 f) (wing 49:25 item)))
119− (group 49:31
120− (call 49:32 (wing 49:32 turn) (wing 49:37 rest) (wing 49:42 f))))))))))))
121− (mold 51:1 dime
122− (cell 51:9
123− (face 51:10 p (aura 51:12 @ta))
124− (face 51:16 q (aura 51:18 @))))
125− (mold 53:1 hair
126− (cell 53:9
127− (face 53:10 p (aura 53:12 @ud))
128− (face 53:16 q (aura 53:18 @ud))))
129− (mold 55:1 pint
130− (cell 55:9
131− (face 55:10 p
132− (cell 55:12
133− (face 55:13 p (aura 55:15 @))
134− (face 55:17 q (aura 55:19 @))))
135− (face 55:22 q
136− (cell 55:24
137− (face 55:25 p (aura 55:27 @))
138− (face 55:29 q (aura 55:31 @))))))
139− (mold 57:1 coin
140− (union 58:3
141− (cell 58:3
142− (const 58:4 %$)
143− (face 58:7 p (ref 58:9 dime)))
90+ (cast 40:7
91+ (apply 40:10 list (tvar 40:16 A))
92+ (body 41:9
93+ (branch 41:9
94+ (wing 41:12 xs)
95+ (arm 42:11 (lit 42:11 ~) (wing 42:13 ys))
96+ (arm 43:11
97+ (cell 43:11 (bind 43:12 item) (bind 43:17 rest))
98+ (tuple 43:23
99+ (wing 43:24 item)
100+ (group 43:29
101+ (call 43:30 (wing 43:30 weld) (wing 43:35 rest) (wing 43:40 ys))))))))))))))
102+ (value 45:1 turn
103+ (gate 45:9
104+ (face 45:12 args
105+ (cell 45:17
106+ (apply 45:18 list (tvar 45:24 A))
107+ (fn 45:27 (tvar 45:30 A) (tvar 45:32 B))))
108+ (body 46:3
109+ (branch 46:3
110+ (wing 46:6 args)
111+ (arm 47:5
112+ (cell 47:5 (bind 47:6 xs) (bind 47:9 f))
113+ (body 48:7
114+ (branch 48:7
115+ (wing 48:10 xs)
116+ (arm 49:9 (lit 49:9 ~) (lit 49:11 ~))
117+ (arm 50:9
118+ (cell 50:9 (bind 50:10 item) (bind 50:15 rest))
119+ (tuple 50:21
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))))))))))))
124+ (mold 52:1 dime
125+ (cell 52:9
126+ (face 52:10 p (aura 52:12 @ta))
127+ (face 52:16 q (aura 52:18 @))))
128+ (mold 54:1 hair
129+ (cell 54:9
130+ (face 54:10 p (aura 54:12 @ud))
131+ (face 54:16 q (aura 54:18 @ud))))
132+ (mold 56:1 pint
133+ (cell 56:9
134+ (face 56:10 p
135+ (cell 56:12
136+ (face 56:13 p (aura 56:15 @))
137+ (face 56:17 q (aura 56:19 @))))
138+ (face 56:22 q
139+ (cell 56:24
140+ (face 56:25 p (aura 56:27 @))
141+ (face 56:29 q (aura 56:31 @))))))
142+ (mold 58:1 coin
143+ (union 59:3
144144 (cell 59:3
145− (const 59:4 %blob)
146− (face 59:10 p (noun 59:12)))
145+ (const 59:4 %$)
146+ (face 59:7 p (ref 59:9 dime)))
147147 (cell 60:3
148− (const 60:4 %many)
149− (face 60:10 p
150− (apply 60:12 list (ref 60:18 coin))))))
151− (mold 62:1 pair
152− (generic 62:9 A B
153− (cell 62:18
154− (face 62:19 p (tvar 62:21 A))
155− (face 62:23 q (tvar 62:25 B)))))
156− (mold 64:1 trel
157− (generic 64:9 A B C
158− (cell 64:20
159− (face 64:21 p (tvar 64:23 A))
160− (face 64:25 q (tvar 64:27 B))
161− (face 64:29 r (tvar 64:31 C)))))
162− (mold 66:1 qual
163− (generic 66:9 A B C D
164− (cell 66:22
165− (face 66:23 p (tvar 66:25 A))
166− (face 66:27 q (tvar 66:29 B))
167− (face 66:31 r (tvar 66:33 C))
168− (face 66:35 s (tvar 66:37 D)))))
169− (mold 68:1 cord (aura 68:9 @t))
170− (mold 70:1 knot (aura 70:9 @ta))
171− (mold 72:1 tape
172− (apply 72:9 list (aura 72:15 @tD)))
173− (mold 74:1 path
174− (apply 74:9 list (ref 74:15 knot)))
175− (mold 76:1 tank
176− (union 77:3
177− (ref 77:3 cord)
178− (cell 78:3
179− (const 78:4 %leaf)
180− (face 78:10 p (ref 78:12 tape)))
148+ (const 60:4 %blob)
149+ (face 60:10 p (noun 60:12)))
150+ (cell 61:3
151+ (const 61:4 %many)
152+ (face 61:10 p
153+ (apply 61:12 list (ref 61:18 coin))))))
154+ (mold 63:1 pair
155+ (generic 63:9 A B
156+ (cell 63:18
157+ (face 63:19 p (tvar 63:21 A))
158+ (face 63:23 q (tvar 63:25 B)))))
159+ (mold 65:1 trel
160+ (generic 65:9 A B C
161+ (cell 65:20
162+ (face 65:21 p (tvar 65:23 A))
163+ (face 65:25 q (tvar 65:27 B))
164+ (face 65:29 r (tvar 65:31 C)))))
165+ (mold 67:1 qual
166+ (generic 67:9 A B C D
167+ (cell 67:22
168+ (face 67:23 p (tvar 67:25 A))
169+ (face 67:27 q (tvar 67:29 B))
170+ (face 67:31 r (tvar 67:33 C))
171+ (face 67:35 s (tvar 67:37 D)))))
172+ (mold 69:1 cord (aura 69:9 @t))
173+ (mold 71:1 knot (aura 71:9 @ta))
174+ (mold 73:1 tape
175+ (apply 73:9 list (aura 73:15 @tD)))
176+ (mold 75:1 path
177+ (apply 75:9 list (ref 75:15 knot)))
178+ (mold 77:1 tank
179+ (union 78:3
180+ (ref 78:3 cord)
181181 (cell 79:3
182− (const 79:4 %palm)
183− (face 79:10 p
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))))
182+ (const 79:4 %leaf)
183+ (face 79:10 p (ref 79:12 tape)))
187184 (cell 80:3
188− (const 80:4 %rose)
185+ (const 80:4 %palm)
189186 (face 80:10 p
190− (apply 80:12 trel (ref 80:18 tape) (ref 80:23 tape) (ref 80:28 tape)))
191− (face 80:34 q
192− (apply 80:36 list (ref 80:42 tank))))))
193− (mold 82:1 nail
194− (cell 82:9
195− (face 82:10 p (ref 82:12 hair))
196− (face 82:17 q (ref 82:19 tape))))
197− (mold 84:1 edge
198− (cell 84:9
199− (face 84:10 p (ref 84:12 hair))
200− (face 84:17 q
201− (apply 84:19 unit
202− (cell 84:25
203− (face 84:26 p (noun 84:28))
204− (face 84:30 q (ref 84:32 nail)))))))
205− (mold 86:1 rule
206− (fn 86:9 (ref 86:12 nail) (ref 86:17 edge)))
207− (mold 88:1 spot
208− (cell 88:9
209− (face 88:10 p (ref 88:12 path))
210− (face 88:17 q (ref 88:19 pint))))
211− (mold 90:1 toon
212− (union 91:3
213− (cell 91:3
214− (const 91:4 %0)
215− (face 91:7 p (noun 91:9)))
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
193+ (apply 81:12 trel (ref 81:18 tape) (ref 81:23 tape) (ref 81:28 tape)))
194+ (face 81:34 q
195+ (apply 81:36 list (ref 81:42 tank))))))
196+ (mold 83:1 nail
197+ (cell 83:9
198+ (face 83:10 p (ref 83:12 hair))
199+ (face 83:17 q (ref 83:19 tape))))
200+ (mold 85:1 edge
201+ (cell 85:9
202+ (face 85:10 p (ref 85:12 hair))
203+ (face 85:17 q
204+ (apply 85:19 unit
205+ (cell 85:25
206+ (face 85:26 p (noun 85:28))
207+ (face 85:30 q (ref 85:32 nail)))))))
208+ (mold 87:1 rule
209+ (fn 87:9 (ref 87:12 nail) (ref 87:17 edge)))
210+ (mold 89:1 spot
211+ (cell 89: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
216216 (cell 92:3
217− (const 92:4 %1)
217+ (const 92:4 %0)
218218 (face 92:7 p (noun 92:9)))
219219 (cell 93:3
220− (const 93:4 %2)
221− (face 93:7 p
222− (apply 93:9 list (ref 93:15 tank))))))
223− (mold 95:1 like
224− (generic 95:9 A
225− (cell 95:16
226− (face 95:17 p (ref 95:19 hair))
227− (face 95:24 q
228− (apply 95:26 unit
229− (cell 95:32
230− (face 95:33 p (tvar 95:35 A))
231− (face 95:37 q (ref 95:39 nail))))))))
232− (value 97:1 wonk
233− (gate 97:9
234− (face 97:12 veq
235− (apply 97:16 like (tvar 97:22 A)))
236− (body 98:3
237− (branch 98:3
238− (wing 98:6 q.veq)
239− (arm 99:5 (lit 99:5 ~) (crash 99:7))
240− (arm 100:5
241− (cell 100:5 (lit 100:6 ~) (bind 100:8 product))
242− (wing 100:17 p.product))))))
243− (mold 102:1 lone
244− (generic 102:9 A
245− (cell 102:16
246− (face 102:17 p (tvar 102:19 A)))))
247− (mold 104:1 lest
248− (generic 104:9 A
249− (cell 104:16
250− (face 104:17 i (tvar 104:19 A))
251− (face 104:21 t
252− (apply 104:23 list (tvar 104:29 A))))))
253− (mold 106:1 pole
254− (generic 106:9 A
255− (union 107:3
256− (const 107:3 ~)
257− (cell 108:3
258− (tvar 108:4 A)
259− (apply 108:6 pole (tvar 108:12 A))))))
260− (mold 110:1 quip
261− (generic 110:9 A B
262− (cell 110:18
263− (apply 110:19 list (tvar 110:25 A))
264− (tvar 110:28 B))))
265− (mold 112:1 tree
266− (generic 112:9 A
267− (union 113:3
268− (const 113:3 ~)
269− (cell 114:3
270− (face 114:4 n (tvar 114:6 A))
271− (face 114:8 l
272− (apply 114:10 tree (tvar 114:16 A)))
273− (face 114:19 r
274− (apply 114:21 tree (tvar 114:27 A)))))))
275− (mold 116:1 each
276− (generic 116:9 A B
277− (union 117:3
278− (cell 117:3
279− (const 117:4 %|)
280− (face 117:7 p (tvar 117:9 B)))
220+ (const 93:4 %1)
221+ (face 93:7 p (noun 93:9)))
222+ (cell 94:3
223+ (const 94:4 %2)
224+ (face 94:7 p
225+ (apply 94:9 list (ref 94:15 tank))))))
226+ (mold 96:1 like
227+ (generic 96:9 A
228+ (cell 96:16
229+ (face 96:17 p (ref 96:19 hair))
230+ (face 96:24 q
231+ (apply 96:26 unit
232+ (cell 96:32
233+ (face 96:33 p (tvar 96:35 A))
234+ (face 96:37 q (ref 96:39 nail))))))))
235+ (value 98:1 wonk
236+ (gate 98:9
237+ (face 98:12 veq
238+ (apply 98:16 like (tvar 98:22 A)))
239+ (body 99:3
240+ (branch 99:3
241+ (wing 99:6 q.veq)
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))))))
246+ (mold 103:1 lone
247+ (generic 103:9 A
248+ (cell 103:16
249+ (face 103:17 p (tvar 103:19 A)))))
250+ (mold 105:1 lest
251+ (generic 105:9 A
252+ (cell 105:16
253+ (face 105:17 i (tvar 105:19 A))
254+ (face 105:21 t
255+ (apply 105:23 list (tvar 105:29 A))))))
256+ (mold 107:1 pole
257+ (generic 107:9 A
258+ (union 108:3
259+ (const 108:3 ~)
260+ (cell 109:3
261+ (tvar 109:4 A)
262+ (apply 109:6 pole (tvar 109:12 A))))))
263+ (mold 111:1 quip
264+ (generic 111:9 A B
265+ (cell 111:18
266+ (apply 111:19 list (tvar 111:25 A))
267+ (tvar 111:28 B))))
268+ (mold 113:1 tree
269+ (generic 113:9 A
270+ (union 114:3
271+ (const 114:3 ~)
272+ (cell 115:3
273+ (face 115:4 n (tvar 115:6 A))
274+ (face 115:8 l
275+ (apply 115:10 tree (tvar 115:16 A)))
276+ (face 115:19 r
277+ (apply 115:21 tree (tvar 115:27 A)))))))
278+ (mold 117:1 each
279+ (generic 117:9 A B
280+ (union 118:3
281281 (cell 118:3
282− (const 118:4 %&)
283− (face 118:7 p (tvar 118:9 A))))))
284− (mold 120:1 bloq (aura 120:9 @)))
282+ (const 118:4 %|)
283+ (face 118:7 p (tvar 118:9 B)))
284+ (cell 119:3
285+ (const 119:4 %&)
286+ (face 119:7 p (tvar 119:9 A))))))
287+ (mold 121:1 bloq (aura 121:9 @)))
tests/golden/prelude-3g-basic/source.jibb+4−3
@@ -37,9 +37,10 @@
3737++ weld |= args=[(list A) (list A)]
3838 ?- args
3939 [xs ys]
40− ?- xs
41− ~ ys
42− [item rest] [item (weld rest ys)]
40+ ^- (list A)
41+ ?- xs
42+ ~ ys
43+ [item rest] [item (weld rest ys)]
4344
4445++ turn |= args=[(list A) $-(A B)]
4546 ?- args
tests/golden/prelude-3g-basic/tokens.txt+148−141
@@ -190,151 +190,158 @@
19019039:9 name ys
19119139:11 tight glyph ]
19219240:7 INDENT
193−40:7 glyph ?-
194−40:10 name xs
193+40:7 glyph ^-
194+40:10 glyph (
195+40:11 tight name list
196+40:16 tvar A
197+40:17 tight glyph )
19519841:9 INDENT
196−41:9 lit ~
197−41:11 name ys
198−42:9 NEWLINE
199−42:9 glyph [
200−42:10 tight name item
201−42:15 name rest
202−42:19 tight glyph ]
203−42:21 glyph [
204−42:22 tight name item
205−42:27 glyph (
206−42:28 tight name weld
207−42:33 name rest
208−42:38 name ys
209−42:40 tight glyph )
210−42:41 tight glyph ]
211−44:1 DEDENT
212−44:1 DEDENT
213−44:1 DEDENT
214−44:1 DEDENT
215−44:1 NEWLINE
216−44:1 glyph ++
217−44:4 name turn
218−44:9 glyph |=
219−44:12 name args
220−44:16 tight glyph =
221−44:17 tight glyph [
222−44:18 tight glyph (
223−44:19 tight name list
224−44:24 tvar A
225−44:25 tight glyph )
226−44:27 glyph $-(
227−44:30 tight tvar A
228−44:32 tvar B
229−44:33 tight glyph )
230−44:34 tight glyph ]
231−45:3 INDENT
232−45:3 glyph ?-
233−45:6 name args
234−46:5 INDENT
235−46:5 glyph [
236−46:6 tight name xs
237−46:9 name f
238−46:10 tight glyph ]
239−47:7 INDENT
240−47:7 glyph ?-
241−47:10 name xs
242−48:9 INDENT
243−48:9 lit ~
244−48:11 lit ~
245−49:9 NEWLINE
246−49:9 glyph [
247−49:10 tight name item
248−49:15 name rest
249−49:19 tight glyph ]
250−49:21 glyph [
251−49:22 tight glyph (
252−49:23 tight name f
253−49:25 name item
254−49:29 tight glyph )
255−49:31 glyph (
256−49:32 tight name turn
257−49:37 name rest
258−49:42 name f
259−49:43 tight glyph )
260−49:44 tight glyph ]
261−51:1 DEDENT
262−51:1 DEDENT
263−51:1 DEDENT
264−51:1 DEDENT
265−51:1 NEWLINE
266−51:1 glyph +$
267−51:4 name dime
268−51:9 glyph [
269−51:10 tight name p
270−51:11 tight glyph =
271−51:12 tight aura @ta
272−51:16 name q
273−51:17 tight glyph =
274−51:18 tight aura @
275−51:19 tight glyph ]
276−53:1 NEWLINE
277−53:1 glyph +$
278−53:4 name hair
279−53:9 glyph [
280−53:10 tight name p
281−53:11 tight glyph =
282−53:12 tight aura @ud
283−53:16 name q
284−53:17 tight glyph =
285−53:18 tight aura @ud
286−53:21 tight glyph ]
287−55:1 NEWLINE
288−55:1 glyph +$
289−55:4 name pint
290−55:9 glyph [
291−55:10 tight name p
292−55:11 tight glyph =
293−55:12 tight glyph [
294−55:13 tight name p
295−55:14 tight glyph =
296−55:15 tight aura @
297−55:17 name q
298−55:18 tight glyph =
299−55:19 tight aura @
300−55:20 tight glyph ]
301−55:22 name q
302−55:23 tight glyph =
303−55:24 tight glyph [
304−55:25 tight name p
305−55:26 tight glyph =
306−55:27 tight aura @
307−55:29 name q
308−55:30 tight glyph =
309−55:31 tight aura @
310−55:32 tight glyph ]
311−55:33 tight glyph ]
312−57:1 NEWLINE
313−57:1 glyph +$
314−57:4 name coin
315−58: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
199+41:9 glyph ?-
200+41:12 name xs
201+42:11 INDENT
202+42:11 lit ~
203+42:13 name ys
204+43:11 NEWLINE
205+43:11 glyph [
206+43:12 tight name item
207+43:17 name rest
208+43:21 tight glyph ]
209+43:23 glyph [
210+43:24 tight name item
211+43:29 glyph (
212+43:30 tight name weld
213+43:35 name rest
214+43:40 name ys
215+43:42 tight glyph )
216+43:43 tight glyph ]
217+45:1 DEDENT
218+45:1 DEDENT
219+45:1 DEDENT
220+45:1 DEDENT
221+45:1 DEDENT
222+45:1 NEWLINE
223+45:1 glyph ++
224+45:4 name turn
225+45:9 glyph |=
226+45:12 name args
227+45:16 tight glyph =
228+45:17 tight glyph [
229+45:18 tight glyph (
230+45:19 tight name list
231+45:24 tvar A
232+45:25 tight glyph )
233+45:27 glyph $-(
234+45:30 tight tvar A
235+45:32 tvar B
236+45:33 tight glyph )
237+45:34 tight glyph ]
238+46:3 INDENT
239+46:3 glyph ?-
240+46:6 name args
241+47:5 INDENT
242+47:5 glyph [
243+47:6 tight name xs
244+47:9 name f
245+47:10 tight glyph ]
246+48:7 INDENT
247+48:7 glyph ?-
248+48:10 name xs
249+49:9 INDENT
250+49:9 lit ~
251+49:11 lit ~
252+50:9 NEWLINE
253+50:9 glyph [
254+50:10 tight name item
255+50:15 name rest
256+50:19 tight glyph ]
257+50:21 glyph [
258+50:22 tight glyph (
259+50:23 tight name f
260+50:25 name item
261+50:29 tight glyph )
262+50:31 glyph (
263+50:32 tight name turn
264+50:37 name rest
265+50:42 name f
266+50:43 tight glyph )
267+50:44 tight glyph ]
268+52:1 DEDENT
269+52:1 DEDENT
270+52:1 DEDENT
271+52:1 DEDENT
272+52:1 NEWLINE
273+52:1 glyph +$
274+52:4 name dime
275+52:9 glyph [
276+52:10 tight name p
277+52:11 tight glyph =
278+52:12 tight aura @ta
279+52:16 name q
280+52:17 tight glyph =
281+52:18 tight aura @
282+52:19 tight glyph ]
283+54:1 NEWLINE
284+54:1 glyph +$
285+54:4 name hair
286+54:9 glyph [
287+54:10 tight name p
288+54:11 tight glyph =
289+54:12 tight aura @ud
290+54:16 name q
291+54:17 tight glyph =
292+54:18 tight aura @ud
293+54:21 tight glyph ]
294+56:1 NEWLINE
295+56:1 glyph +$
296+56:4 name pint
297+56:9 glyph [
298+56:10 tight name p
299+56:11 tight glyph =
300+56:12 tight glyph [
301+56:13 tight name p
302+56:14 tight glyph =
303+56:15 tight aura @
304+56:17 name q
305+56:18 tight glyph =
306+56:19 tight aura @
307+56:20 tight glyph ]
308+56:22 name q
309+56:23 tight glyph =
310+56:24 tight glyph [
311+56:25 tight name p
312+56:26 tight glyph =
313+56:27 tight aura @
314+56:29 name q
315+56:30 tight glyph =
316+56:31 tight aura @
317+56:32 tight glyph ]
318+56:33 tight glyph ]
319+58:1 NEWLINE
320+58:1 glyph +$
321+58:4 name coin
322+59:3 INDENT
32332359:3 glyph [
324−59:4 tight lit %blob
325−59:10 name p
326−59:11 tight glyph =
327−59:12 tight glyph *
324+59:4 tight lit %$
325+59:7 name p
326+59:8 tight glyph =
327+59:9 tight name dime
32832859:13 tight glyph ]
32932960:3 NEWLINE
33033060:3 glyph [
331−60:4 tight lit %many
331+60:4 tight lit %blob
33233260:10 name p
33333360:11 tight glyph =
334−60:12 tight glyph (
335−60:13 tight name list
336−60:18 name coin
337−60:22 tight glyph )
338−60:23 tight glyph ]
339−60:24 DEDENT
340−60:24 NEWLINE
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 (
342+61:13 tight name list
343+61:18 name coin
344+61:22 tight glyph )
345+61:23 tight glyph ]
346+61:24 DEDENT
347+61:24 NEWLINE
tests/golden/prelude-3g-basic/tree.txt+62−59
@@ -87,64 +87,67 @@
8787 (arm 39:5
8888 (cell 39:5 (bind 39:6 xs) (bind 39:9 ys))
8989 (body 40:7
90− (branch 40:7
91− (wing 40:10 xs)
92− (arm 41:9 (lit 41:9 ~) (wing 41:11 ys))
93− (arm 42:9
94− (cell 42:9 (bind 42:10 item) (bind 42:15 rest))
95− (tuple 42:21
96− (wing 42:22 item)
97− (group 42:27
98− (call 42:28 (wing 42:28 weld) (wing 42:33 rest) (wing 42:38 ys))))))))))))
99− (value 44:1 turn
100− (gate 44:9
101− (face 44:12 args
102− (cell 44:17
103− (apply 44:18 list (tvar 44:24 A))
104− (fn 44:27 (tvar 44:30 A) (tvar 44:32 B))))
105− (body 45:3
106− (branch 45:3
107− (wing 45:6 args)
108− (arm 46:5
109− (cell 46:5 (bind 46:6 xs) (bind 46:9 f))
110− (body 47:7
111− (branch 47:7
112− (wing 47:10 xs)
113− (arm 48:9 (lit 48:9 ~) (lit 48:11 ~))
114− (arm 49:9
115− (cell 49:9 (bind 49:10 item) (bind 49:15 rest))
116− (tuple 49:21
117− (group 49:22
118− (call 49:23 (wing 49:23 f) (wing 49:25 item)))
119− (group 49:31
120− (call 49:32 (wing 49:32 turn) (wing 49:37 rest) (wing 49:42 f))))))))))))
121− (mold 51:1 dime
122− (cell 51:9
123− (face 51:10 p (aura 51:12 @ta))
124− (face 51:16 q (aura 51:18 @))))
125− (mold 53:1 hair
126− (cell 53:9
127− (face 53:10 p (aura 53:12 @ud))
128− (face 53:16 q (aura 53:18 @ud))))
129− (mold 55:1 pint
130− (cell 55:9
131− (face 55:10 p
132− (cell 55:12
133− (face 55:13 p (aura 55:15 @))
134− (face 55:17 q (aura 55:19 @))))
135− (face 55:22 q
136− (cell 55:24
137− (face 55:25 p (aura 55:27 @))
138− (face 55:29 q (aura 55:31 @))))))
139− (mold 57:1 coin
140− (union 58:3
141− (cell 58:3
142− (const 58:4 %$)
143− (face 58:7 p (ref 58:9 dime)))
90+ (cast 40:7
91+ (apply 40:10 list (tvar 40:16 A))
92+ (body 41:9
93+ (branch 41:9
94+ (wing 41:12 xs)
95+ (arm 42:11 (lit 42:11 ~) (wing 42:13 ys))
96+ (arm 43:11
97+ (cell 43:11 (bind 43:12 item) (bind 43:17 rest))
98+ (tuple 43:23
99+ (wing 43:24 item)
100+ (group 43:29
101+ (call 43:30 (wing 43:30 weld) (wing 43:35 rest) (wing 43:40 ys))))))))))))))
102+ (value 45:1 turn
103+ (gate 45:9
104+ (face 45:12 args
105+ (cell 45:17
106+ (apply 45:18 list (tvar 45:24 A))
107+ (fn 45:27 (tvar 45:30 A) (tvar 45:32 B))))
108+ (body 46:3
109+ (branch 46:3
110+ (wing 46:6 args)
111+ (arm 47:5
112+ (cell 47:5 (bind 47:6 xs) (bind 47:9 f))
113+ (body 48:7
114+ (branch 48:7
115+ (wing 48:10 xs)
116+ (arm 49:9 (lit 49:9 ~) (lit 49:11 ~))
117+ (arm 50:9
118+ (cell 50:9 (bind 50:10 item) (bind 50:15 rest))
119+ (tuple 50:21
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))))))))))))
124+ (mold 52:1 dime
125+ (cell 52:9
126+ (face 52:10 p (aura 52:12 @ta))
127+ (face 52:16 q (aura 52:18 @))))
128+ (mold 54:1 hair
129+ (cell 54:9
130+ (face 54:10 p (aura 54:12 @ud))
131+ (face 54:16 q (aura 54:18 @ud))))
132+ (mold 56:1 pint
133+ (cell 56:9
134+ (face 56:10 p
135+ (cell 56:12
136+ (face 56:13 p (aura 56:15 @))
137+ (face 56:17 q (aura 56:19 @))))
138+ (face 56:22 q
139+ (cell 56:24
140+ (face 56:25 p (aura 56:27 @))
141+ (face 56:29 q (aura 56:31 @))))))
142+ (mold 58:1 coin
143+ (union 59:3
144144 (cell 59:3
145− (const 59:4 %blob)
146− (face 59:10 p (noun 59:12)))
145+ (const 59:4 %$)
146+ (face 59:7 p (ref 59:9 dime)))
147147 (cell 60:3
148− (const 60:4 %many)
149− (face 60:10 p
150− (apply 60:12 list (ref 60:18 coin)))))))
148+ (const 60:4 %blob)
149+ (face 60:10 p (noun 60:12)))
150+ (cell 61:3
151+ (const 61:4 %many)
152+ (face 61:10 p
153+ (apply 61:12 list (ref 61:18 coin)))))))
tests/golden/prelude-3g-like/source.jibb+4−3
@@ -37,9 +37,10 @@
3737++ weld |= args=[(list A) (list A)]
3838 ?- args
3939 [xs ys]
40− ?- xs
41− ~ ys
42− [item rest] [item (weld rest ys)]
40+ ^- (list A)
41+ ?- xs
42+ ~ ys
43+ [item rest] [item (weld rest ys)]
4344
4445++ turn |= args=[(list A) $-(A B)]
4546 ?- args
tests/golden/prelude-3g-like/tokens.txt+386−379
@@ -190,410 +190,417 @@
19019039:9 name ys
19119139:11 tight glyph ]
19219240:7 INDENT
193−40:7 glyph ?-
194−40:10 name xs
193+40:7 glyph ^-
194+40:10 glyph (
195+40:11 tight name list
196+40:16 tvar A
197+40:17 tight glyph )
19519841:9 INDENT
196−41:9 lit ~
197−41:11 name ys
198−42:9 NEWLINE
199−42:9 glyph [
200−42:10 tight name item
201−42:15 name rest
202−42:19 tight glyph ]
203−42:21 glyph [
204−42:22 tight name item
205−42:27 glyph (
206−42:28 tight name weld
207−42:33 name rest
208−42:38 name ys
209−42:40 tight glyph )
210−42:41 tight glyph ]
211−44:1 DEDENT
212−44:1 DEDENT
213−44:1 DEDENT
214−44:1 DEDENT
215−44:1 NEWLINE
216−44:1 glyph ++
217−44:4 name turn
218−44:9 glyph |=
219−44:12 name args
220−44:16 tight glyph =
221−44:17 tight glyph [
222−44:18 tight glyph (
223−44:19 tight name list
224−44:24 tvar A
225−44:25 tight glyph )
226−44:27 glyph $-(
227−44:30 tight tvar A
228−44:32 tvar B
229−44:33 tight glyph )
230−44:34 tight glyph ]
231−45:3 INDENT
232−45:3 glyph ?-
233−45:6 name args
234−46:5 INDENT
235−46:5 glyph [
236−46:6 tight name xs
237−46:9 name f
238−46:10 tight glyph ]
239−47:7 INDENT
240−47:7 glyph ?-
241−47:10 name xs
242−48:9 INDENT
243−48:9 lit ~
244−48:11 lit ~
245−49:9 NEWLINE
246−49:9 glyph [
247−49:10 tight name item
248−49:15 name rest
249−49:19 tight glyph ]
250−49:21 glyph [
251−49:22 tight glyph (
252−49:23 tight name f
253−49:25 name item
254−49:29 tight glyph )
255−49:31 glyph (
256−49:32 tight name turn
257−49:37 name rest
258−49:42 name f
259−49:43 tight glyph )
260−49:44 tight glyph ]
261−51:1 DEDENT
262−51:1 DEDENT
263−51:1 DEDENT
264−51:1 DEDENT
265−51:1 NEWLINE
266−51:1 glyph +$
267−51:4 name dime
268−51:9 glyph [
269−51:10 tight name p
270−51:11 tight glyph =
271−51:12 tight aura @ta
272−51:16 name q
273−51:17 tight glyph =
274−51:18 tight aura @
275−51:19 tight glyph ]
276−53:1 NEWLINE
277−53:1 glyph +$
278−53:4 name hair
279−53:9 glyph [
280−53:10 tight name p
281−53:11 tight glyph =
282−53:12 tight aura @ud
283−53:16 name q
284−53:17 tight glyph =
285−53:18 tight aura @ud
286−53:21 tight glyph ]
287−55:1 NEWLINE
288−55:1 glyph +$
289−55:4 name pint
290−55:9 glyph [
291−55:10 tight name p
292−55:11 tight glyph =
293−55:12 tight glyph [
294−55:13 tight name p
295−55:14 tight glyph =
296−55:15 tight aura @
297−55:17 name q
298−55:18 tight glyph =
299−55:19 tight aura @
300−55:20 tight glyph ]
301−55:22 name q
302−55:23 tight glyph =
303−55:24 tight glyph [
304−55:25 tight name p
305−55:26 tight glyph =
306−55:27 tight aura @
307−55:29 name q
308−55:30 tight glyph =
309−55:31 tight aura @
310−55:32 tight glyph ]
311−55:33 tight glyph ]
312−57:1 NEWLINE
313−57:1 glyph +$
314−57:4 name coin
315−58: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
199+41:9 glyph ?-
200+41:12 name xs
201+42:11 INDENT
202+42:11 lit ~
203+42:13 name ys
204+43:11 NEWLINE
205+43:11 glyph [
206+43:12 tight name item
207+43:17 name rest
208+43:21 tight glyph ]
209+43:23 glyph [
210+43:24 tight name item
211+43:29 glyph (
212+43:30 tight name weld
213+43:35 name rest
214+43:40 name ys
215+43:42 tight glyph )
216+43:43 tight glyph ]
217+45:1 DEDENT
218+45:1 DEDENT
219+45:1 DEDENT
220+45:1 DEDENT
221+45:1 DEDENT
222+45:1 NEWLINE
223+45:1 glyph ++
224+45:4 name turn
225+45:9 glyph |=
226+45:12 name args
227+45:16 tight glyph =
228+45:17 tight glyph [
229+45:18 tight glyph (
230+45:19 tight name list
231+45:24 tvar A
232+45:25 tight glyph )
233+45:27 glyph $-(
234+45:30 tight tvar A
235+45:32 tvar B
236+45:33 tight glyph )
237+45:34 tight glyph ]
238+46:3 INDENT
239+46:3 glyph ?-
240+46:6 name args
241+47:5 INDENT
242+47:5 glyph [
243+47:6 tight name xs
244+47:9 name f
245+47:10 tight glyph ]
246+48:7 INDENT
247+48:7 glyph ?-
248+48:10 name xs
249+49:9 INDENT
250+49:9 lit ~
251+49:11 lit ~
252+50:9 NEWLINE
253+50:9 glyph [
254+50:10 tight name item
255+50:15 name rest
256+50:19 tight glyph ]
257+50:21 glyph [
258+50:22 tight glyph (
259+50:23 tight name f
260+50:25 name item
261+50:29 tight glyph )
262+50:31 glyph (
263+50:32 tight name turn
264+50:37 name rest
265+50:42 name f
266+50:43 tight glyph )
267+50:44 tight glyph ]
268+52:1 DEDENT
269+52:1 DEDENT
270+52:1 DEDENT
271+52:1 DEDENT
272+52:1 NEWLINE
273+52:1 glyph +$
274+52:4 name dime
275+52:9 glyph [
276+52:10 tight name p
277+52:11 tight glyph =
278+52:12 tight aura @ta
279+52:16 name q
280+52:17 tight glyph =
281+52:18 tight aura @
282+52:19 tight glyph ]
283+54:1 NEWLINE
284+54:1 glyph +$
285+54:4 name hair
286+54:9 glyph [
287+54:10 tight name p
288+54:11 tight glyph =
289+54:12 tight aura @ud
290+54:16 name q
291+54:17 tight glyph =
292+54:18 tight aura @ud
293+54:21 tight glyph ]
294+56:1 NEWLINE
295+56:1 glyph +$
296+56:4 name pint
297+56:9 glyph [
298+56:10 tight name p
299+56:11 tight glyph =
300+56:12 tight glyph [
301+56:13 tight name p
302+56:14 tight glyph =
303+56:15 tight aura @
304+56:17 name q
305+56:18 tight glyph =
306+56:19 tight aura @
307+56:20 tight glyph ]
308+56:22 name q
309+56:23 tight glyph =
310+56:24 tight glyph [
311+56:25 tight name p
312+56:26 tight glyph =
313+56:27 tight aura @
314+56:29 name q
315+56:30 tight glyph =
316+56:31 tight aura @
317+56:32 tight glyph ]
318+56:33 tight glyph ]
319+58:1 NEWLINE
320+58:1 glyph +$
321+58:4 name coin
322+59:3 INDENT
32332359:3 glyph [
324−59:4 tight lit %blob
325−59:10 name p
326−59:11 tight glyph =
327−59:12 tight glyph *
324+59:4 tight lit %$
325+59:7 name p
326+59:8 tight glyph =
327+59:9 tight name dime
32832859:13 tight glyph ]
32932960:3 NEWLINE
33033060:3 glyph [
331−60:4 tight lit %many
331+60:4 tight lit %blob
33233260:10 name p
33333360:11 tight glyph =
334−60:12 tight glyph (
335−60:13 tight name list
336−60:18 name coin
337−60:22 tight glyph )
338−60:23 tight glyph ]
339−62:1 DEDENT
340−62:1 NEWLINE
341−62:1 glyph +$
342−62:4 name pair
343−62:9 glyph |$
344−62:12 glyph [
345−62:13 tight tvar A
346−62:15 tvar B
347−62:16 tight glyph ]
348−62:18 glyph [
349−62:19 tight name p
350−62:20 tight glyph =
351−62:21 tight tvar A
352−62:23 name q
353−62:24 tight glyph =
354−62:25 tight tvar B
355−62:26 tight glyph ]
356−64:1 NEWLINE
357−64:1 glyph +$
358−64:4 name trel
359−64:9 glyph |$
360−64:12 glyph [
361−64:13 tight tvar A
362−64:15 tvar B
363−64:17 tvar C
364−64:18 tight glyph ]
365−64:20 glyph [
366−64:21 tight name p
367−64:22 tight glyph =
368−64:23 tight tvar A
369−64:25 name q
370−64:26 tight glyph =
371−64:27 tight tvar B
372−64:29 name r
373−64:30 tight glyph =
374−64:31 tight tvar C
375−64:32 tight glyph ]
376−66:1 NEWLINE
377−66:1 glyph +$
378−66:4 name qual
379−66:9 glyph |$
380−66:12 glyph [
381−66:13 tight tvar A
382−66:15 tvar B
383−66:17 tvar C
384−66:19 tvar D
385−66:20 tight glyph ]
386−66:22 glyph [
387−66:23 tight name p
388−66:24 tight glyph =
389−66:25 tight tvar A
390−66:27 name q
391−66:28 tight glyph =
392−66:29 tight tvar B
393−66:31 name r
394−66:32 tight glyph =
395−66:33 tight tvar C
396−66:35 name s
397−66:36 tight glyph =
398−66:37 tight tvar D
399−66:38 tight glyph ]
400−68:1 NEWLINE
401−68:1 glyph +$
402−68:4 name cord
403−68:9 aura @t
404−70:1 NEWLINE
405−70:1 glyph +$
406−70:4 name knot
407−70:9 aura @ta
408−72:1 NEWLINE
409−72:1 glyph +$
410−72:4 name tape
411−72:9 glyph (
412−72:10 tight name list
413−72:15 aura @tD
414−72:18 tight glyph )
415−74:1 NEWLINE
416−74:1 glyph +$
417−74:4 name path
418−74:9 glyph (
419−74:10 tight name list
420−74:15 name knot
421−74:19 tight glyph )
422−76:1 NEWLINE
423−76:1 glyph +$
424−76:4 name tank
425−77: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
431−78:11 tight glyph =
432−78:12 tight name tape
433−78:16 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 (
342+61:13 tight name list
343+61:18 name coin
344+61:22 tight glyph )
345+61:23 tight glyph ]
346+63:1 DEDENT
347+63:1 NEWLINE
348+63:1 glyph +$
349+63:4 name pair
350+63:9 glyph |$
351+63:12 glyph [
352+63:13 tight tvar A
353+63:15 tvar B
354+63:16 tight glyph ]
355+63:18 glyph [
356+63:19 tight name p
357+63:20 tight glyph =
358+63:21 tight tvar A
359+63:23 name q
360+63:24 tight glyph =
361+63:25 tight tvar B
362+63:26 tight glyph ]
363+65:1 NEWLINE
364+65:1 glyph +$
365+65:4 name trel
366+65:9 glyph |$
367+65:12 glyph [
368+65:13 tight tvar A
369+65:15 tvar B
370+65:17 tvar C
371+65:18 tight glyph ]
372+65:20 glyph [
373+65:21 tight name p
374+65:22 tight glyph =
375+65:23 tight tvar A
376+65:25 name q
377+65:26 tight glyph =
378+65:27 tight tvar B
379+65:29 name r
380+65:30 tight glyph =
381+65:31 tight tvar C
382+65:32 tight glyph ]
383+67:1 NEWLINE
384+67:1 glyph +$
385+67:4 name qual
386+67:9 glyph |$
387+67:12 glyph [
388+67:13 tight tvar A
389+67:15 tvar B
390+67:17 tvar C
391+67:19 tvar D
392+67:20 tight glyph ]
393+67:22 glyph [
394+67:23 tight name p
395+67:24 tight glyph =
396+67:25 tight tvar A
397+67:27 name q
398+67:28 tight glyph =
399+67:29 tight tvar B
400+67:31 name r
401+67:32 tight glyph =
402+67:33 tight tvar C
403+67:35 name s
404+67:36 tight glyph =
405+67:37 tight tvar D
406+67:38 tight glyph ]
407+69:1 NEWLINE
408+69:1 glyph +$
409+69:4 name cord
410+69:9 aura @t
411+71:1 NEWLINE
412+71:1 glyph +$
413+71:4 name knot
414+71:9 aura @ta
415+73:1 NEWLINE
416+73:1 glyph +$
417+73:4 name tape
418+73:9 glyph (
419+73:10 tight name list
420+73:15 aura @tD
421+73:18 tight glyph )
422+75:1 NEWLINE
423+75:1 glyph +$
424+75:4 name path
425+75:9 glyph (
426+75:10 tight name list
427+75:15 name knot
428+75:19 tight glyph )
429+77:1 NEWLINE
430+77:1 glyph +$
431+77:4 name tank
432+78:3 INDENT
433+78:3 name cord
43443479:3 NEWLINE
43543579:3 glyph [
436−79:4 tight lit %palm
436+79:4 tight lit %leaf
43743779:10 name p
43843879:11 tight glyph =
439−79:12 tight glyph (
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 ]
439+79:12 tight name tape
440+79:16 tight glyph ]
45344180:3 NEWLINE
45444280:3 glyph [
455−80:4 tight lit %rose
443+80:4 tight lit %palm
45644480:10 name p
45744580:11 tight glyph =
45844680:12 tight glyph (
459−80:13 tight name trel
447+80:13 tight name qual
46044880:18 name tape
46144980:23 name tape
46245080:28 name tape
463−80:32 tight glyph )
464−80:34 name q
465−80:35 tight glyph =
466−80:36 tight glyph (
467−80:37 tight name list
468−80:42 name tank
469−80:46 tight glyph )
470−80:47 tight glyph ]
471−82:1 DEDENT
472−82:1 NEWLINE
473−82:1 glyph +$
474−82:4 name nail
475−82:9 glyph [
476−82:10 tight name p
477−82:11 tight glyph =
478−82:12 tight name hair
479−82:17 name q
480−82:18 tight glyph =
481−82:19 tight name tape
482−82:23 tight glyph ]
483−84:1 NEWLINE
484−84:1 glyph +$
485−84:4 name edge
486−84:9 glyph [
487−84:10 tight name p
488−84:11 tight glyph =
489−84:12 tight name hair
490−84:17 name q
491−84:18 tight glyph =
492−84:19 tight glyph (
493−84:20 tight name unit
494−84:25 glyph [
495−84:26 tight name p
496−84:27 tight glyph =
497−84:28 tight glyph *
498−84:30 name q
499−84:31 tight glyph =
500−84:32 tight name nail
501−84:36 tight glyph ]
502−84:37 tight glyph )
503−84:38 tight glyph ]
504−86:1 NEWLINE
505−86:1 glyph +$
506−86:4 name rule
507−86:9 glyph $-(
508−86:12 tight name nail
509−86:17 name edge
510−86:21 tight glyph )
511−88:1 NEWLINE
512−88:1 glyph +$
513−88:4 name spot
514−88:9 glyph [
515−88:10 tight name p
516−88:11 tight glyph =
517−88:12 tight name path
518−88:17 name q
519−88:18 tight glyph =
520−88:19 tight name pint
521−88:23 tight glyph ]
522−90:1 NEWLINE
523−90:1 glyph +$
524−90:4 name toon
525−91: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
451+80:33 name tape
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 )
471+81:34 name q
472+81:35 tight glyph =
473+81:36 tight glyph (
474+81:37 tight name list
475+81:42 name tank
476+81:46 tight glyph )
477+81:47 tight glyph ]
478+83:1 DEDENT
479+83:1 NEWLINE
480+83:1 glyph +$
481+83:4 name nail
482+83:9 glyph [
483+83:10 tight name p
484+83:11 tight glyph =
485+83:12 tight name hair
486+83:17 name q
487+83:18 tight glyph =
488+83:19 tight name tape
489+83:23 tight glyph ]
490+85:1 NEWLINE
491+85:1 glyph +$
492+85:4 name edge
493+85:9 glyph [
494+85:10 tight name p
495+85:11 tight glyph =
496+85:12 tight name hair
497+85:17 name q
498+85:18 tight glyph =
499+85:19 tight glyph (
500+85:20 tight name unit
501+85:25 glyph [
502+85:26 tight name p
503+85:27 tight glyph =
504+85:28 tight glyph *
505+85:30 name q
506+85:31 tight glyph =
507+85:32 tight name nail
508+85:36 tight glyph ]
509+85:37 tight glyph )
510+85:38 tight glyph ]
511+87:1 NEWLINE
512+87:1 glyph +$
513+87:4 name rule
514+87:9 glyph $-(
515+87:12 tight name nail
516+87:17 name edge
517+87:21 tight glyph )
518+89:1 NEWLINE
519+89:1 glyph +$
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
53353392:3 glyph [
534−92:4 tight lit %1
534+92:4 tight lit %0
53553592:7 name p
53653692:8 tight glyph =
53753792:9 tight glyph *
53853892:10 tight glyph ]
53953993:3 NEWLINE
54054093:3 glyph [
541−93:4 tight lit %2
541+93:4 tight lit %1
54254293:7 name p
54354393:8 tight glyph =
544−93:9 tight glyph (
545−93:10 tight name list
546−93:15 name tank
547−93:19 tight glyph )
548−93:20 tight glyph ]
549−95:1 DEDENT
550−95:1 NEWLINE
551−95:1 glyph +$
552−95:4 name like
553−95:9 glyph |$
554−95:12 glyph [
555−95:13 tight tvar A
556−95:14 tight glyph ]
557−95:16 glyph [
558−95:17 tight name p
559−95:18 tight glyph =
560−95:19 tight name hair
561−95:24 name q
562−95:25 tight glyph =
563−95:26 tight glyph (
564−95:27 tight name unit
565−95:32 glyph [
566−95:33 tight name p
567−95:34 tight glyph =
568−95:35 tight tvar A
569−95:37 name q
570−95:38 tight glyph =
571−95:39 tight name nail
572−95:43 tight glyph ]
573−95:44 tight glyph )
574−95:45 tight glyph ]
575−97:1 NEWLINE
576−97:1 glyph ++
577−97:4 name wonk
578−97:9 glyph |=
579−97:12 name veq
580−97:15 tight glyph =
581−97:16 tight glyph (
582−97:17 tight name like
583−97:22 tvar A
584−97:23 tight glyph )
585−98:3 INDENT
586−98:3 glyph ?-
587−98:6 wing q.veq
588−99:5 INDENT
589−99:5 lit ~
590−99:7 glyph !!
591−100:5 NEWLINE
592−100:5 glyph [
593−100:6 tight lit ~
594−100:8 name product
595−100:15 tight glyph ]
596−100:17 wing p.product
597−100:26 DEDENT
598−100:26 DEDENT
599−100:26 NEWLINE
544+93:9 tight glyph *
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
553+94:15 name tank
554+94:19 tight glyph )
555+94:20 tight glyph ]
556+96:1 DEDENT
557+96:1 NEWLINE
558+96:1 glyph +$
559+96:4 name like
560+96:9 glyph |$
561+96:12 glyph [
562+96:13 tight tvar A
563+96:14 tight glyph ]
564+96:16 glyph [
565+96:17 tight name p
566+96:18 tight glyph =
567+96:19 tight name hair
568+96:24 name q
569+96:25 tight glyph =
570+96:26 tight glyph (
571+96:27 tight name unit
572+96:32 glyph [
573+96:33 tight name p
574+96:34 tight glyph =
575+96:35 tight tvar A
576+96:37 name q
577+96:38 tight glyph =
578+96:39 tight name nail
579+96:43 tight glyph ]
580+96:44 tight glyph )
581+96:45 tight glyph ]
582+98:1 NEWLINE
583+98:1 glyph ++
584+98:4 name wonk
585+98:9 glyph |=
586+98:12 name veq
587+98:15 tight glyph =
588+98:16 tight glyph (
589+98:17 tight name like
590+98:22 tvar A
591+98:23 tight glyph )
592+99:3 INDENT
593+99:3 glyph ?-
594+99:6 wing q.veq
595+100:5 INDENT
596+100:5 lit ~
597+100:7 glyph !!
598+101:5 NEWLINE
599+101:5 glyph [
600+101:6 tight lit ~
601+101:8 name product
602+101:15 tight glyph ]
603+101:17 wing p.product
604+101:26 DEDENT
605+101:26 DEDENT
606+101:26 NEWLINE
tests/golden/prelude-3g-like/tree.txt+148−145
@@ -87,156 +87,159 @@
8787 (arm 39:5
8888 (cell 39:5 (bind 39:6 xs) (bind 39:9 ys))
8989 (body 40:7
90− (branch 40:7
91− (wing 40:10 xs)
92− (arm 41:9 (lit 41:9 ~) (wing 41:11 ys))
93− (arm 42:9
94− (cell 42:9 (bind 42:10 item) (bind 42:15 rest))
95− (tuple 42:21
96− (wing 42:22 item)
97− (group 42:27
98− (call 42:28 (wing 42:28 weld) (wing 42:33 rest) (wing 42:38 ys))))))))))))
99− (value 44:1 turn
100− (gate 44:9
101− (face 44:12 args
102− (cell 44:17
103− (apply 44:18 list (tvar 44:24 A))
104− (fn 44:27 (tvar 44:30 A) (tvar 44:32 B))))
105− (body 45:3
106− (branch 45:3
107− (wing 45:6 args)
108− (arm 46:5
109− (cell 46:5 (bind 46:6 xs) (bind 46:9 f))
110− (body 47:7
111− (branch 47:7
112− (wing 47:10 xs)
113− (arm 48:9 (lit 48:9 ~) (lit 48:11 ~))
114− (arm 49:9
115− (cell 49:9 (bind 49:10 item) (bind 49:15 rest))
116− (tuple 49:21
117− (group 49:22
118− (call 49:23 (wing 49:23 f) (wing 49:25 item)))
119− (group 49:31
120− (call 49:32 (wing 49:32 turn) (wing 49:37 rest) (wing 49:42 f))))))))))))
121− (mold 51:1 dime
122− (cell 51:9
123− (face 51:10 p (aura 51:12 @ta))
124− (face 51:16 q (aura 51:18 @))))
125− (mold 53:1 hair
126− (cell 53:9
127− (face 53:10 p (aura 53:12 @ud))
128− (face 53:16 q (aura 53:18 @ud))))
129− (mold 55:1 pint
130− (cell 55:9
131− (face 55:10 p
132− (cell 55:12
133− (face 55:13 p (aura 55:15 @))
134− (face 55:17 q (aura 55:19 @))))
135− (face 55:22 q
136− (cell 55:24
137− (face 55:25 p (aura 55:27 @))
138− (face 55:29 q (aura 55:31 @))))))
139− (mold 57:1 coin
140− (union 58:3
141− (cell 58:3
142− (const 58:4 %$)
143− (face 58:7 p (ref 58:9 dime)))
90+ (cast 40:7
91+ (apply 40:10 list (tvar 40:16 A))
92+ (body 41:9
93+ (branch 41:9
94+ (wing 41:12 xs)
95+ (arm 42:11 (lit 42:11 ~) (wing 42:13 ys))
96+ (arm 43:11
97+ (cell 43:11 (bind 43:12 item) (bind 43:17 rest))
98+ (tuple 43:23
99+ (wing 43:24 item)
100+ (group 43:29
101+ (call 43:30 (wing 43:30 weld) (wing 43:35 rest) (wing 43:40 ys))))))))))))))
102+ (value 45:1 turn
103+ (gate 45:9
104+ (face 45:12 args
105+ (cell 45:17
106+ (apply 45:18 list (tvar 45:24 A))
107+ (fn 45:27 (tvar 45:30 A) (tvar 45:32 B))))
108+ (body 46:3
109+ (branch 46:3
110+ (wing 46:6 args)
111+ (arm 47:5
112+ (cell 47:5 (bind 47:6 xs) (bind 47:9 f))
113+ (body 48:7
114+ (branch 48:7
115+ (wing 48:10 xs)
116+ (arm 49:9 (lit 49:9 ~) (lit 49:11 ~))
117+ (arm 50:9
118+ (cell 50:9 (bind 50:10 item) (bind 50:15 rest))
119+ (tuple 50:21
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))))))))))))
124+ (mold 52:1 dime
125+ (cell 52:9
126+ (face 52:10 p (aura 52:12 @ta))
127+ (face 52:16 q (aura 52:18 @))))
128+ (mold 54:1 hair
129+ (cell 54:9
130+ (face 54:10 p (aura 54:12 @ud))
131+ (face 54:16 q (aura 54:18 @ud))))
132+ (mold 56:1 pint
133+ (cell 56:9
134+ (face 56:10 p
135+ (cell 56:12
136+ (face 56:13 p (aura 56:15 @))
137+ (face 56:17 q (aura 56:19 @))))
138+ (face 56:22 q
139+ (cell 56:24
140+ (face 56:25 p (aura 56:27 @))
141+ (face 56:29 q (aura 56:31 @))))))
142+ (mold 58:1 coin
143+ (union 59:3
144144 (cell 59:3
145− (const 59:4 %blob)
146− (face 59:10 p (noun 59:12)))
145+ (const 59:4 %$)
146+ (face 59:7 p (ref 59:9 dime)))
147147 (cell 60:3
148− (const 60:4 %many)
149− (face 60:10 p
150− (apply 60:12 list (ref 60:18 coin))))))
151− (mold 62:1 pair
152− (generic 62:9 A B
153− (cell 62:18
154− (face 62:19 p (tvar 62:21 A))
155− (face 62:23 q (tvar 62:25 B)))))
156− (mold 64:1 trel
157− (generic 64:9 A B C
158− (cell 64:20
159− (face 64:21 p (tvar 64:23 A))
160− (face 64:25 q (tvar 64:27 B))
161− (face 64:29 r (tvar 64:31 C)))))
162− (mold 66:1 qual
163− (generic 66:9 A B C D
164− (cell 66:22
165− (face 66:23 p (tvar 66:25 A))
166− (face 66:27 q (tvar 66:29 B))
167− (face 66:31 r (tvar 66:33 C))
168− (face 66:35 s (tvar 66:37 D)))))
169− (mold 68:1 cord (aura 68:9 @t))
170− (mold 70:1 knot (aura 70:9 @ta))
171− (mold 72:1 tape
172− (apply 72:9 list (aura 72:15 @tD)))
173− (mold 74:1 path
174− (apply 74:9 list (ref 74:15 knot)))
175− (mold 76:1 tank
176− (union 77:3
177− (ref 77:3 cord)
178− (cell 78:3
179− (const 78:4 %leaf)
180− (face 78:10 p (ref 78:12 tape)))
148+ (const 60:4 %blob)
149+ (face 60:10 p (noun 60:12)))
150+ (cell 61:3
151+ (const 61:4 %many)
152+ (face 61:10 p
153+ (apply 61:12 list (ref 61:18 coin))))))
154+ (mold 63:1 pair
155+ (generic 63:9 A B
156+ (cell 63:18
157+ (face 63:19 p (tvar 63:21 A))
158+ (face 63:23 q (tvar 63:25 B)))))
159+ (mold 65:1 trel
160+ (generic 65:9 A B C
161+ (cell 65:20
162+ (face 65:21 p (tvar 65:23 A))
163+ (face 65:25 q (tvar 65:27 B))
164+ (face 65:29 r (tvar 65:31 C)))))
165+ (mold 67:1 qual
166+ (generic 67:9 A B C D
167+ (cell 67:22
168+ (face 67:23 p (tvar 67:25 A))
169+ (face 67:27 q (tvar 67:29 B))
170+ (face 67:31 r (tvar 67:33 C))
171+ (face 67:35 s (tvar 67:37 D)))))
172+ (mold 69:1 cord (aura 69:9 @t))
173+ (mold 71:1 knot (aura 71:9 @ta))
174+ (mold 73:1 tape
175+ (apply 73:9 list (aura 73:15 @tD)))
176+ (mold 75:1 path
177+ (apply 75:9 list (ref 75:15 knot)))
178+ (mold 77:1 tank
179+ (union 78:3
180+ (ref 78:3 cord)
181181 (cell 79:3
182− (const 79:4 %palm)
183− (face 79:10 p
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))))
182+ (const 79:4 %leaf)
183+ (face 79:10 p (ref 79:12 tape)))
187184 (cell 80:3
188− (const 80:4 %rose)
185+ (const 80:4 %palm)
189186 (face 80:10 p
190− (apply 80:12 trel (ref 80:18 tape) (ref 80:23 tape) (ref 80:28 tape)))
191− (face 80:34 q
192− (apply 80:36 list (ref 80:42 tank))))))
193− (mold 82:1 nail
194− (cell 82:9
195− (face 82:10 p (ref 82:12 hair))
196− (face 82:17 q (ref 82:19 tape))))
197− (mold 84:1 edge
198− (cell 84:9
199− (face 84:10 p (ref 84:12 hair))
200− (face 84:17 q
201− (apply 84:19 unit
202− (cell 84:25
203− (face 84:26 p (noun 84:28))
204− (face 84:30 q (ref 84:32 nail)))))))
205− (mold 86:1 rule
206− (fn 86:9 (ref 86:12 nail) (ref 86:17 edge)))
207− (mold 88:1 spot
208− (cell 88:9
209− (face 88:10 p (ref 88:12 path))
210− (face 88:17 q (ref 88:19 pint))))
211− (mold 90:1 toon
212− (union 91:3
213− (cell 91:3
214− (const 91:4 %0)
215− (face 91:7 p (noun 91:9)))
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
193+ (apply 81:12 trel (ref 81:18 tape) (ref 81:23 tape) (ref 81:28 tape)))
194+ (face 81:34 q
195+ (apply 81:36 list (ref 81:42 tank))))))
196+ (mold 83:1 nail
197+ (cell 83:9
198+ (face 83:10 p (ref 83:12 hair))
199+ (face 83:17 q (ref 83:19 tape))))
200+ (mold 85:1 edge
201+ (cell 85:9
202+ (face 85:10 p (ref 85:12 hair))
203+ (face 85:17 q
204+ (apply 85:19 unit
205+ (cell 85:25
206+ (face 85:26 p (noun 85:28))
207+ (face 85:30 q (ref 85:32 nail)))))))
208+ (mold 87:1 rule
209+ (fn 87:9 (ref 87:12 nail) (ref 87:17 edge)))
210+ (mold 89:1 spot
211+ (cell 89: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
216216 (cell 92:3
217− (const 92:4 %1)
217+ (const 92:4 %0)
218218 (face 92:7 p (noun 92:9)))
219219 (cell 93:3
220− (const 93:4 %2)
221− (face 93:7 p
222− (apply 93:9 list (ref 93:15 tank))))))
223− (mold 95:1 like
224− (generic 95:9 A
225− (cell 95:16
226− (face 95:17 p (ref 95:19 hair))
227− (face 95:24 q
228− (apply 95:26 unit
229− (cell 95:32
230− (face 95:33 p (tvar 95:35 A))
231− (face 95:37 q (ref 95:39 nail))))))))
232− (value 97:1 wonk
233− (gate 97:9
234− (face 97:12 veq
235− (apply 97:16 like (tvar 97:22 A)))
236− (body 98:3
237− (branch 98:3
238− (wing 98:6 q.veq)
239− (arm 99:5 (lit 99:5 ~) (crash 99:7))
240− (arm 100:5
241− (cell 100:5 (lit 100:6 ~) (bind 100:8 product))
242− (wing 100:17 p.product)))))))
220+ (const 93:4 %1)
221+ (face 93:7 p (noun 93:9)))
222+ (cell 94:3
223+ (const 94:4 %2)
224+ (face 94:7 p
225+ (apply 94:9 list (ref 94:15 tank))))))
226+ (mold 96:1 like
227+ (generic 96:9 A
228+ (cell 96:16
229+ (face 96:17 p (ref 96:19 hair))
230+ (face 96:24 q
231+ (apply 96:26 unit
232+ (cell 96:32
233+ (face 96:33 p (tvar 96:35 A))
234+ (face 96:37 q (ref 96:39 nail))))))))
235+ (value 98:1 wonk
236+ (gate 98:9
237+ (face 98:12 veq
238+ (apply 98:16 like (tvar 98:22 A)))
239+ (body 99:3
240+ (branch 99:3
241+ (wing 99:6 q.veq)
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 @@
3737++ weld |= args=[(list A) (list A)]
3838 ?- args
3939 [xs ys]
40− ?- xs
41− ~ ys
42− [item rest] [item (weld rest ys)]
40+ ^- (list A)
41+ ?- xs
42+ ~ ys
43+ [item rest] [item (weld rest ys)]
4344
4445++ turn |= args=[(list A) $-(A B)]
4546 ?- args
tests/golden/prelude-3g-structural/tokens.txt+337−330
@@ -190,361 +190,368 @@
19019039:9 name ys
19119139:11 tight glyph ]
19219240:7 INDENT
193−40:7 glyph ?-
194−40:10 name xs
193+40:7 glyph ^-
194+40:10 glyph (
195+40:11 tight name list
196+40:16 tvar A
197+40:17 tight glyph )
19519841:9 INDENT
196−41:9 lit ~
197−41:11 name ys
198−42:9 NEWLINE
199−42:9 glyph [
200−42:10 tight name item
201−42:15 name rest
202−42:19 tight glyph ]
203−42:21 glyph [
204−42:22 tight name item
205−42:27 glyph (
206−42:28 tight name weld
207−42:33 name rest
208−42:38 name ys
209−42:40 tight glyph )
210−42:41 tight glyph ]
211−44:1 DEDENT
212−44:1 DEDENT
213−44:1 DEDENT
214−44:1 DEDENT
215−44:1 NEWLINE
216−44:1 glyph ++
217−44:4 name turn
218−44:9 glyph |=
219−44:12 name args
220−44:16 tight glyph =
221−44:17 tight glyph [
222−44:18 tight glyph (
223−44:19 tight name list
224−44:24 tvar A
225−44:25 tight glyph )
226−44:27 glyph $-(
227−44:30 tight tvar A
228−44:32 tvar B
229−44:33 tight glyph )
230−44:34 tight glyph ]
231−45:3 INDENT
232−45:3 glyph ?-
233−45:6 name args
234−46:5 INDENT
235−46:5 glyph [
236−46:6 tight name xs
237−46:9 name f
238−46:10 tight glyph ]
239−47:7 INDENT
240−47:7 glyph ?-
241−47:10 name xs
242−48:9 INDENT
243−48:9 lit ~
244−48:11 lit ~
245−49:9 NEWLINE
246−49:9 glyph [
247−49:10 tight name item
248−49:15 name rest
249−49:19 tight glyph ]
250−49:21 glyph [
251−49:22 tight glyph (
252−49:23 tight name f
253−49:25 name item
254−49:29 tight glyph )
255−49:31 glyph (
256−49:32 tight name turn
257−49:37 name rest
258−49:42 name f
259−49:43 tight glyph )
260−49:44 tight glyph ]
261−51:1 DEDENT
262−51:1 DEDENT
263−51:1 DEDENT
264−51:1 DEDENT
265−51:1 NEWLINE
266−51:1 glyph +$
267−51:4 name dime
268−51:9 glyph [
269−51:10 tight name p
270−51:11 tight glyph =
271−51:12 tight aura @ta
272−51:16 name q
273−51:17 tight glyph =
274−51:18 tight aura @
275−51:19 tight glyph ]
276−53:1 NEWLINE
277−53:1 glyph +$
278−53:4 name hair
279−53:9 glyph [
280−53:10 tight name p
281−53:11 tight glyph =
282−53:12 tight aura @ud
283−53:16 name q
284−53:17 tight glyph =
285−53:18 tight aura @ud
286−53:21 tight glyph ]
287−55:1 NEWLINE
288−55:1 glyph +$
289−55:4 name pint
290−55:9 glyph [
291−55:10 tight name p
292−55:11 tight glyph =
293−55:12 tight glyph [
294−55:13 tight name p
295−55:14 tight glyph =
296−55:15 tight aura @
297−55:17 name q
298−55:18 tight glyph =
299−55:19 tight aura @
300−55:20 tight glyph ]
301−55:22 name q
302−55:23 tight glyph =
303−55:24 tight glyph [
304−55:25 tight name p
305−55:26 tight glyph =
306−55:27 tight aura @
307−55:29 name q
308−55:30 tight glyph =
309−55:31 tight aura @
310−55:32 tight glyph ]
311−55:33 tight glyph ]
312−57:1 NEWLINE
313−57:1 glyph +$
314−57:4 name coin
315−58: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
199+41:9 glyph ?-
200+41:12 name xs
201+42:11 INDENT
202+42:11 lit ~
203+42:13 name ys
204+43:11 NEWLINE
205+43:11 glyph [
206+43:12 tight name item
207+43:17 name rest
208+43:21 tight glyph ]
209+43:23 glyph [
210+43:24 tight name item
211+43:29 glyph (
212+43:30 tight name weld
213+43:35 name rest
214+43:40 name ys
215+43:42 tight glyph )
216+43:43 tight glyph ]
217+45:1 DEDENT
218+45:1 DEDENT
219+45:1 DEDENT
220+45:1 DEDENT
221+45:1 DEDENT
222+45:1 NEWLINE
223+45:1 glyph ++
224+45:4 name turn
225+45:9 glyph |=
226+45:12 name args
227+45:16 tight glyph =
228+45:17 tight glyph [
229+45:18 tight glyph (
230+45:19 tight name list
231+45:24 tvar A
232+45:25 tight glyph )
233+45:27 glyph $-(
234+45:30 tight tvar A
235+45:32 tvar B
236+45:33 tight glyph )
237+45:34 tight glyph ]
238+46:3 INDENT
239+46:3 glyph ?-
240+46:6 name args
241+47:5 INDENT
242+47:5 glyph [
243+47:6 tight name xs
244+47:9 name f
245+47:10 tight glyph ]
246+48:7 INDENT
247+48:7 glyph ?-
248+48:10 name xs
249+49:9 INDENT
250+49:9 lit ~
251+49:11 lit ~
252+50:9 NEWLINE
253+50:9 glyph [
254+50:10 tight name item
255+50:15 name rest
256+50:19 tight glyph ]
257+50:21 glyph [
258+50:22 tight glyph (
259+50:23 tight name f
260+50:25 name item
261+50:29 tight glyph )
262+50:31 glyph (
263+50:32 tight name turn
264+50:37 name rest
265+50:42 name f
266+50:43 tight glyph )
267+50:44 tight glyph ]
268+52:1 DEDENT
269+52:1 DEDENT
270+52:1 DEDENT
271+52:1 DEDENT
272+52:1 NEWLINE
273+52:1 glyph +$
274+52:4 name dime
275+52:9 glyph [
276+52:10 tight name p
277+52:11 tight glyph =
278+52:12 tight aura @ta
279+52:16 name q
280+52:17 tight glyph =
281+52:18 tight aura @
282+52:19 tight glyph ]
283+54:1 NEWLINE
284+54:1 glyph +$
285+54:4 name hair
286+54:9 glyph [
287+54:10 tight name p
288+54:11 tight glyph =
289+54:12 tight aura @ud
290+54:16 name q
291+54:17 tight glyph =
292+54:18 tight aura @ud
293+54:21 tight glyph ]
294+56:1 NEWLINE
295+56:1 glyph +$
296+56:4 name pint
297+56:9 glyph [
298+56:10 tight name p
299+56:11 tight glyph =
300+56:12 tight glyph [
301+56:13 tight name p
302+56:14 tight glyph =
303+56:15 tight aura @
304+56:17 name q
305+56:18 tight glyph =
306+56:19 tight aura @
307+56:20 tight glyph ]
308+56:22 name q
309+56:23 tight glyph =
310+56:24 tight glyph [
311+56:25 tight name p
312+56:26 tight glyph =
313+56:27 tight aura @
314+56:29 name q
315+56:30 tight glyph =
316+56:31 tight aura @
317+56:32 tight glyph ]
318+56:33 tight glyph ]
319+58:1 NEWLINE
320+58:1 glyph +$
321+58:4 name coin
322+59:3 INDENT
32332359:3 glyph [
324−59:4 tight lit %blob
325−59:10 name p
326−59:11 tight glyph =
327−59:12 tight glyph *
324+59:4 tight lit %$
325+59:7 name p
326+59:8 tight glyph =
327+59:9 tight name dime
32832859:13 tight glyph ]
32932960:3 NEWLINE
33033060:3 glyph [
331−60:4 tight lit %many
331+60:4 tight lit %blob
33233260:10 name p
33333360:11 tight glyph =
334−60:12 tight glyph (
335−60:13 tight name list
336−60:18 name coin
337−60:22 tight glyph )
338−60:23 tight glyph ]
339−62:1 DEDENT
340−62:1 NEWLINE
341−62:1 glyph +$
342−62:4 name pair
343−62:9 glyph |$
344−62:12 glyph [
345−62:13 tight tvar A
346−62:15 tvar B
347−62:16 tight glyph ]
348−62:18 glyph [
349−62:19 tight name p
350−62:20 tight glyph =
351−62:21 tight tvar A
352−62:23 name q
353−62:24 tight glyph =
354−62:25 tight tvar B
355−62:26 tight glyph ]
356−64:1 NEWLINE
357−64:1 glyph +$
358−64:4 name trel
359−64:9 glyph |$
360−64:12 glyph [
361−64:13 tight tvar A
362−64:15 tvar B
363−64:17 tvar C
364−64:18 tight glyph ]
365−64:20 glyph [
366−64:21 tight name p
367−64:22 tight glyph =
368−64:23 tight tvar A
369−64:25 name q
370−64:26 tight glyph =
371−64:27 tight tvar B
372−64:29 name r
373−64:30 tight glyph =
374−64:31 tight tvar C
375−64:32 tight glyph ]
376−66:1 NEWLINE
377−66:1 glyph +$
378−66:4 name qual
379−66:9 glyph |$
380−66:12 glyph [
381−66:13 tight tvar A
382−66:15 tvar B
383−66:17 tvar C
384−66:19 tvar D
385−66:20 tight glyph ]
386−66:22 glyph [
387−66:23 tight name p
388−66:24 tight glyph =
389−66:25 tight tvar A
390−66:27 name q
391−66:28 tight glyph =
392−66:29 tight tvar B
393−66:31 name r
394−66:32 tight glyph =
395−66:33 tight tvar C
396−66:35 name s
397−66:36 tight glyph =
398−66:37 tight tvar D
399−66:38 tight glyph ]
400−68:1 NEWLINE
401−68:1 glyph +$
402−68:4 name cord
403−68:9 aura @t
404−70:1 NEWLINE
405−70:1 glyph +$
406−70:4 name knot
407−70:9 aura @ta
408−72:1 NEWLINE
409−72:1 glyph +$
410−72:4 name tape
411−72:9 glyph (
412−72:10 tight name list
413−72:15 aura @tD
414−72:18 tight glyph )
415−74:1 NEWLINE
416−74:1 glyph +$
417−74:4 name path
418−74:9 glyph (
419−74:10 tight name list
420−74:15 name knot
421−74:19 tight glyph )
422−76:1 NEWLINE
423−76:1 glyph +$
424−76:4 name tank
425−77: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
431−78:11 tight glyph =
432−78:12 tight name tape
433−78:16 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 (
342+61:13 tight name list
343+61:18 name coin
344+61:22 tight glyph )
345+61:23 tight glyph ]
346+63:1 DEDENT
347+63:1 NEWLINE
348+63:1 glyph +$
349+63:4 name pair
350+63:9 glyph |$
351+63:12 glyph [
352+63:13 tight tvar A
353+63:15 tvar B
354+63:16 tight glyph ]
355+63:18 glyph [
356+63:19 tight name p
357+63:20 tight glyph =
358+63:21 tight tvar A
359+63:23 name q
360+63:24 tight glyph =
361+63:25 tight tvar B
362+63:26 tight glyph ]
363+65:1 NEWLINE
364+65:1 glyph +$
365+65:4 name trel
366+65:9 glyph |$
367+65:12 glyph [
368+65:13 tight tvar A
369+65:15 tvar B
370+65:17 tvar C
371+65:18 tight glyph ]
372+65:20 glyph [
373+65:21 tight name p
374+65:22 tight glyph =
375+65:23 tight tvar A
376+65:25 name q
377+65:26 tight glyph =
378+65:27 tight tvar B
379+65:29 name r
380+65:30 tight glyph =
381+65:31 tight tvar C
382+65:32 tight glyph ]
383+67:1 NEWLINE
384+67:1 glyph +$
385+67:4 name qual
386+67:9 glyph |$
387+67:12 glyph [
388+67:13 tight tvar A
389+67:15 tvar B
390+67:17 tvar C
391+67:19 tvar D
392+67:20 tight glyph ]
393+67:22 glyph [
394+67:23 tight name p
395+67:24 tight glyph =
396+67:25 tight tvar A
397+67:27 name q
398+67:28 tight glyph =
399+67:29 tight tvar B
400+67:31 name r
401+67:32 tight glyph =
402+67:33 tight tvar C
403+67:35 name s
404+67:36 tight glyph =
405+67:37 tight tvar D
406+67:38 tight glyph ]
407+69:1 NEWLINE
408+69:1 glyph +$
409+69:4 name cord
410+69:9 aura @t
411+71:1 NEWLINE
412+71:1 glyph +$
413+71:4 name knot
414+71:9 aura @ta
415+73:1 NEWLINE
416+73:1 glyph +$
417+73:4 name tape
418+73:9 glyph (
419+73:10 tight name list
420+73:15 aura @tD
421+73:18 tight glyph )
422+75:1 NEWLINE
423+75:1 glyph +$
424+75:4 name path
425+75:9 glyph (
426+75:10 tight name list
427+75:15 name knot
428+75:19 tight glyph )
429+77:1 NEWLINE
430+77:1 glyph +$
431+77:4 name tank
432+78:3 INDENT
433+78:3 name cord
43443479:3 NEWLINE
43543579:3 glyph [
436−79:4 tight lit %palm
436+79:4 tight lit %leaf
43743779:10 name p
43843879:11 tight glyph =
439−79:12 tight glyph (
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 ]
439+79:12 tight name tape
440+79:16 tight glyph ]
45344180:3 NEWLINE
45444280:3 glyph [
455−80:4 tight lit %rose
443+80:4 tight lit %palm
45644480:10 name p
45744580:11 tight glyph =
45844680:12 tight glyph (
459−80:13 tight name trel
447+80:13 tight name qual
46044880:18 name tape
46144980:23 name tape
46245080:28 name tape
463−80:32 tight glyph )
464−80:34 name q
465−80:35 tight glyph =
466−80:36 tight glyph (
467−80:37 tight name list
468−80:42 name tank
469−80:46 tight glyph )
470−80:47 tight glyph ]
471−82:1 DEDENT
472−82:1 NEWLINE
473−82:1 glyph +$
474−82:4 name nail
475−82:9 glyph [
476−82:10 tight name p
477−82:11 tight glyph =
478−82:12 tight name hair
479−82:17 name q
480−82:18 tight glyph =
481−82:19 tight name tape
482−82:23 tight glyph ]
483−84:1 NEWLINE
484−84:1 glyph +$
485−84:4 name edge
486−84:9 glyph [
487−84:10 tight name p
488−84:11 tight glyph =
489−84:12 tight name hair
490−84:17 name q
491−84:18 tight glyph =
492−84:19 tight glyph (
493−84:20 tight name unit
494−84:25 glyph [
495−84:26 tight name p
496−84:27 tight glyph =
497−84:28 tight glyph *
498−84:30 name q
499−84:31 tight glyph =
500−84:32 tight name nail
501−84:36 tight glyph ]
502−84:37 tight glyph )
503−84:38 tight glyph ]
504−86:1 NEWLINE
505−86:1 glyph +$
506−86:4 name rule
507−86:9 glyph $-(
508−86:12 tight name nail
509−86:17 name edge
510−86:21 tight glyph )
511−88:1 NEWLINE
512−88:1 glyph +$
513−88:4 name spot
514−88:9 glyph [
515−88:10 tight name p
516−88:11 tight glyph =
517−88:12 tight name path
518−88:17 name q
519−88:18 tight glyph =
520−88:19 tight name pint
521−88:23 tight glyph ]
522−90:1 NEWLINE
523−90:1 glyph +$
524−90:4 name toon
525−91: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
451+80:33 name tape
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 )
471+81:34 name q
472+81:35 tight glyph =
473+81:36 tight glyph (
474+81:37 tight name list
475+81:42 name tank
476+81:46 tight glyph )
477+81:47 tight glyph ]
478+83:1 DEDENT
479+83:1 NEWLINE
480+83:1 glyph +$
481+83:4 name nail
482+83:9 glyph [
483+83:10 tight name p
484+83:11 tight glyph =
485+83:12 tight name hair
486+83:17 name q
487+83:18 tight glyph =
488+83:19 tight name tape
489+83:23 tight glyph ]
490+85:1 NEWLINE
491+85:1 glyph +$
492+85:4 name edge
493+85:9 glyph [
494+85:10 tight name p
495+85:11 tight glyph =
496+85:12 tight name hair
497+85:17 name q
498+85:18 tight glyph =
499+85:19 tight glyph (
500+85:20 tight name unit
501+85:25 glyph [
502+85:26 tight name p
503+85:27 tight glyph =
504+85:28 tight glyph *
505+85:30 name q
506+85:31 tight glyph =
507+85:32 tight name nail
508+85:36 tight glyph ]
509+85:37 tight glyph )
510+85:38 tight glyph ]
511+87:1 NEWLINE
512+87:1 glyph +$
513+87:4 name rule
514+87:9 glyph $-(
515+87:12 tight name nail
516+87:17 name edge
517+87:21 tight glyph )
518+89:1 NEWLINE
519+89:1 glyph +$
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
53353392:3 glyph [
534−92:4 tight lit %1
534+92:4 tight lit %0
53553592:7 name p
53653692:8 tight glyph =
53753792:9 tight glyph *
53853892:10 tight glyph ]
53953993:3 NEWLINE
54054093:3 glyph [
541−93:4 tight lit %2
541+93:4 tight lit %1
54254293:7 name p
54354393:8 tight glyph =
544−93:9 tight glyph (
545−93:10 tight name list
546−93:15 name tank
547−93:19 tight glyph )
548−93:20 tight glyph ]
549−93:21 DEDENT
550−93:21 NEWLINE
544+93:9 tight glyph *
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
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 @@
8787 (arm 39:5
8888 (cell 39:5 (bind 39:6 xs) (bind 39:9 ys))
8989 (body 40:7
90− (branch 40:7
91− (wing 40:10 xs)
92− (arm 41:9 (lit 41:9 ~) (wing 41:11 ys))
93− (arm 42:9
94− (cell 42:9 (bind 42:10 item) (bind 42:15 rest))
95− (tuple 42:21
96− (wing 42:22 item)
97− (group 42:27
98− (call 42:28 (wing 42:28 weld) (wing 42:33 rest) (wing 42:38 ys))))))))))))
99− (value 44:1 turn
100− (gate 44:9
101− (face 44:12 args
102− (cell 44:17
103− (apply 44:18 list (tvar 44:24 A))
104− (fn 44:27 (tvar 44:30 A) (tvar 44:32 B))))
105− (body 45:3
106− (branch 45:3
107− (wing 45:6 args)
108− (arm 46:5
109− (cell 46:5 (bind 46:6 xs) (bind 46:9 f))
110− (body 47:7
111− (branch 47:7
112− (wing 47:10 xs)
113− (arm 48:9 (lit 48:9 ~) (lit 48:11 ~))
114− (arm 49:9
115− (cell 49:9 (bind 49:10 item) (bind 49:15 rest))
116− (tuple 49:21
117− (group 49:22
118− (call 49:23 (wing 49:23 f) (wing 49:25 item)))
119− (group 49:31
120− (call 49:32 (wing 49:32 turn) (wing 49:37 rest) (wing 49:42 f))))))))))))
121− (mold 51:1 dime
122− (cell 51:9
123− (face 51:10 p (aura 51:12 @ta))
124− (face 51:16 q (aura 51:18 @))))
125− (mold 53:1 hair
126− (cell 53:9
127− (face 53:10 p (aura 53:12 @ud))
128− (face 53:16 q (aura 53:18 @ud))))
129− (mold 55:1 pint
130− (cell 55:9
131− (face 55:10 p
132− (cell 55:12
133− (face 55:13 p (aura 55:15 @))
134− (face 55:17 q (aura 55:19 @))))
135− (face 55:22 q
136− (cell 55:24
137− (face 55:25 p (aura 55:27 @))
138− (face 55:29 q (aura 55:31 @))))))
139− (mold 57:1 coin
140− (union 58:3
141− (cell 58:3
142− (const 58:4 %$)
143− (face 58:7 p (ref 58:9 dime)))
90+ (cast 40:7
91+ (apply 40:10 list (tvar 40:16 A))
92+ (body 41:9
93+ (branch 41:9
94+ (wing 41:12 xs)
95+ (arm 42:11 (lit 42:11 ~) (wing 42:13 ys))
96+ (arm 43:11
97+ (cell 43:11 (bind 43:12 item) (bind 43:17 rest))
98+ (tuple 43:23
99+ (wing 43:24 item)
100+ (group 43:29
101+ (call 43:30 (wing 43:30 weld) (wing 43:35 rest) (wing 43:40 ys))))))))))))))
102+ (value 45:1 turn
103+ (gate 45:9
104+ (face 45:12 args
105+ (cell 45:17
106+ (apply 45:18 list (tvar 45:24 A))
107+ (fn 45:27 (tvar 45:30 A) (tvar 45:32 B))))
108+ (body 46:3
109+ (branch 46:3
110+ (wing 46:6 args)
111+ (arm 47:5
112+ (cell 47:5 (bind 47:6 xs) (bind 47:9 f))
113+ (body 48:7
114+ (branch 48:7
115+ (wing 48:10 xs)
116+ (arm 49:9 (lit 49:9 ~) (lit 49:11 ~))
117+ (arm 50:9
118+ (cell 50:9 (bind 50:10 item) (bind 50:15 rest))
119+ (tuple 50:21
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))))))))))))
124+ (mold 52:1 dime
125+ (cell 52:9
126+ (face 52:10 p (aura 52:12 @ta))
127+ (face 52:16 q (aura 52:18 @))))
128+ (mold 54:1 hair
129+ (cell 54:9
130+ (face 54:10 p (aura 54:12 @ud))
131+ (face 54:16 q (aura 54:18 @ud))))
132+ (mold 56:1 pint
133+ (cell 56:9
134+ (face 56:10 p
135+ (cell 56:12
136+ (face 56:13 p (aura 56:15 @))
137+ (face 56:17 q (aura 56:19 @))))
138+ (face 56:22 q
139+ (cell 56:24
140+ (face 56:25 p (aura 56:27 @))
141+ (face 56:29 q (aura 56:31 @))))))
142+ (mold 58:1 coin
143+ (union 59:3
144144 (cell 59:3
145− (const 59:4 %blob)
146− (face 59:10 p (noun 59:12)))
145+ (const 59:4 %$)
146+ (face 59:7 p (ref 59:9 dime)))
147147 (cell 60:3
148− (const 60:4 %many)
149− (face 60:10 p
150− (apply 60:12 list (ref 60:18 coin))))))
151− (mold 62:1 pair
152− (generic 62:9 A B
153− (cell 62:18
154− (face 62:19 p (tvar 62:21 A))
155− (face 62:23 q (tvar 62:25 B)))))
156− (mold 64:1 trel
157− (generic 64:9 A B C
158− (cell 64:20
159− (face 64:21 p (tvar 64:23 A))
160− (face 64:25 q (tvar 64:27 B))
161− (face 64:29 r (tvar 64:31 C)))))
162− (mold 66:1 qual
163− (generic 66:9 A B C D
164− (cell 66:22
165− (face 66:23 p (tvar 66:25 A))
166− (face 66:27 q (tvar 66:29 B))
167− (face 66:31 r (tvar 66:33 C))
168− (face 66:35 s (tvar 66:37 D)))))
169− (mold 68:1 cord (aura 68:9 @t))
170− (mold 70:1 knot (aura 70:9 @ta))
171− (mold 72:1 tape
172− (apply 72:9 list (aura 72:15 @tD)))
173− (mold 74:1 path
174− (apply 74:9 list (ref 74:15 knot)))
175− (mold 76:1 tank
176− (union 77:3
177− (ref 77:3 cord)
178− (cell 78:3
179− (const 78:4 %leaf)
180− (face 78:10 p (ref 78:12 tape)))
148+ (const 60:4 %blob)
149+ (face 60:10 p (noun 60:12)))
150+ (cell 61:3
151+ (const 61:4 %many)
152+ (face 61:10 p
153+ (apply 61:12 list (ref 61:18 coin))))))
154+ (mold 63:1 pair
155+ (generic 63:9 A B
156+ (cell 63:18
157+ (face 63:19 p (tvar 63:21 A))
158+ (face 63:23 q (tvar 63:25 B)))))
159+ (mold 65:1 trel
160+ (generic 65:9 A B C
161+ (cell 65:20
162+ (face 65:21 p (tvar 65:23 A))
163+ (face 65:25 q (tvar 65:27 B))
164+ (face 65:29 r (tvar 65:31 C)))))
165+ (mold 67:1 qual
166+ (generic 67:9 A B C D
167+ (cell 67:22
168+ (face 67:23 p (tvar 67:25 A))
169+ (face 67:27 q (tvar 67:29 B))
170+ (face 67:31 r (tvar 67:33 C))
171+ (face 67:35 s (tvar 67:37 D)))))
172+ (mold 69:1 cord (aura 69:9 @t))
173+ (mold 71:1 knot (aura 71:9 @ta))
174+ (mold 73:1 tape
175+ (apply 73:9 list (aura 73:15 @tD)))
176+ (mold 75:1 path
177+ (apply 75:9 list (ref 75:15 knot)))
178+ (mold 77:1 tank
179+ (union 78:3
180+ (ref 78:3 cord)
181181 (cell 79:3
182− (const 79:4 %palm)
183− (face 79:10 p
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))))
182+ (const 79:4 %leaf)
183+ (face 79:10 p (ref 79:12 tape)))
187184 (cell 80:3
188− (const 80:4 %rose)
185+ (const 80:4 %palm)
189186 (face 80:10 p
190− (apply 80:12 trel (ref 80:18 tape) (ref 80:23 tape) (ref 80:28 tape)))
191− (face 80:34 q
192− (apply 80:36 list (ref 80:42 tank))))))
193− (mold 82:1 nail
194− (cell 82:9
195− (face 82:10 p (ref 82:12 hair))
196− (face 82:17 q (ref 82:19 tape))))
197− (mold 84:1 edge
198− (cell 84:9
199− (face 84:10 p (ref 84:12 hair))
200− (face 84:17 q
201− (apply 84:19 unit
202− (cell 84:25
203− (face 84:26 p (noun 84:28))
204− (face 84:30 q (ref 84:32 nail)))))))
205− (mold 86:1 rule
206− (fn 86:9 (ref 86:12 nail) (ref 86:17 edge)))
207− (mold 88:1 spot
208− (cell 88:9
209− (face 88:10 p (ref 88:12 path))
210− (face 88:17 q (ref 88:19 pint))))
211− (mold 90:1 toon
212− (union 91:3
213− (cell 91:3
214− (const 91:4 %0)
215− (face 91:7 p (noun 91:9)))
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
193+ (apply 81:12 trel (ref 81:18 tape) (ref 81:23 tape) (ref 81:28 tape)))
194+ (face 81:34 q
195+ (apply 81:36 list (ref 81:42 tank))))))
196+ (mold 83:1 nail
197+ (cell 83:9
198+ (face 83:10 p (ref 83:12 hair))
199+ (face 83:17 q (ref 83:19 tape))))
200+ (mold 85:1 edge
201+ (cell 85:9
202+ (face 85:10 p (ref 85:12 hair))
203+ (face 85:17 q
204+ (apply 85:19 unit
205+ (cell 85:25
206+ (face 85:26 p (noun 85:28))
207+ (face 85:30 q (ref 85:32 nail)))))))
208+ (mold 87:1 rule
209+ (fn 87:9 (ref 87:12 nail) (ref 87:17 edge)))
210+ (mold 89:1 spot
211+ (cell 89: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
216216 (cell 92:3
217− (const 92:4 %1)
217+ (const 92:4 %0)
218218 (face 92:7 p (noun 92:9)))
219219 (cell 93:3
220− (const 93:4 %2)
221− (face 93:7 p
222− (apply 93:9 list (ref 93:15 tank)))))))
220+ (const 93:4 %1)
221+ (face 93:7 p (noun 93:9)))
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 @@
3737++ weld |= args=[(list A) (list A)]
3838 ?- args
3939 [xs ys]
40− ?- xs
41− ~ ys
42− [item rest] [item (weld rest ys)]
40+ ^- (list A)
41+ ?- xs
42+ ~ ys
43+ [item rest] [item (weld rest ys)]
4344
4445++ turn |= args=[(list A) $-(A B)]
4546 ?- args
tests/golden/prelude-list-helpers/tokens.txt+622−615
@@ -190,650 +190,657 @@
19019039:9 name ys
19119139:11 tight glyph ]
19219240:7 INDENT
193−40:7 glyph ?-
194−40:10 name xs
193+40:7 glyph ^-
194+40:10 glyph (
195+40:11 tight name list
196+40:16 tvar A
197+40:17 tight glyph )
19519841:9 INDENT
196−41:9 lit ~
197−41:11 name ys
198−42:9 NEWLINE
199−42:9 glyph [
200−42:10 tight name item
201−42:15 name rest
202−42:19 tight glyph ]
203−42:21 glyph [
204−42:22 tight name item
205−42:27 glyph (
206−42:28 tight name weld
207−42:33 name rest
208−42:38 name ys
209−42:40 tight glyph )
210−42:41 tight glyph ]
211−44:1 DEDENT
212−44:1 DEDENT
213−44:1 DEDENT
214−44:1 DEDENT
215−44:1 NEWLINE
216−44:1 glyph ++
217−44:4 name turn
218−44:9 glyph |=
219−44:12 name args
220−44:16 tight glyph =
221−44:17 tight glyph [
222−44:18 tight glyph (
223−44:19 tight name list
224−44:24 tvar A
225−44:25 tight glyph )
226−44:27 glyph $-(
227−44:30 tight tvar A
228−44:32 tvar B
229−44:33 tight glyph )
230−44:34 tight glyph ]
231−45:3 INDENT
232−45:3 glyph ?-
233−45:6 name args
234−46:5 INDENT
235−46:5 glyph [
236−46:6 tight name xs
237−46:9 name f
238−46:10 tight glyph ]
239−47:7 INDENT
240−47:7 glyph ?-
241−47:10 name xs
242−48:9 INDENT
243−48:9 lit ~
244−48:11 lit ~
245−49:9 NEWLINE
246−49:9 glyph [
247−49:10 tight name item
248−49:15 name rest
249−49:19 tight glyph ]
250−49:21 glyph [
251−49:22 tight glyph (
252−49:23 tight name f
253−49:25 name item
254−49:29 tight glyph )
255−49:31 glyph (
256−49:32 tight name turn
257−49:37 name rest
258−49:42 name f
259−49:43 tight glyph )
260−49:44 tight glyph ]
261−51:1 DEDENT
262−51:1 DEDENT
263−51:1 DEDENT
264−51:1 DEDENT
265−51:1 NEWLINE
266−51:1 glyph +$
267−51:4 name dime
268−51:9 glyph [
269−51:10 tight name p
270−51:11 tight glyph =
271−51:12 tight aura @ta
272−51:16 name q
273−51:17 tight glyph =
274−51:18 tight aura @
275−51:19 tight glyph ]
276−53:1 NEWLINE
277−53:1 glyph +$
278−53:4 name hair
279−53:9 glyph [
280−53:10 tight name p
281−53:11 tight glyph =
282−53:12 tight aura @ud
283−53:16 name q
284−53:17 tight glyph =
285−53:18 tight aura @ud
286−53:21 tight glyph ]
287−55:1 NEWLINE
288−55:1 glyph +$
289−55:4 name pint
290−55:9 glyph [
291−55:10 tight name p
292−55:11 tight glyph =
293−55:12 tight glyph [
294−55:13 tight name p
295−55:14 tight glyph =
296−55:15 tight aura @
297−55:17 name q
298−55:18 tight glyph =
299−55:19 tight aura @
300−55:20 tight glyph ]
301−55:22 name q
302−55:23 tight glyph =
303−55:24 tight glyph [
304−55:25 tight name p
305−55:26 tight glyph =
306−55:27 tight aura @
307−55:29 name q
308−55:30 tight glyph =
309−55:31 tight aura @
310−55:32 tight glyph ]
311−55:33 tight glyph ]
312−57:1 NEWLINE
313−57:1 glyph +$
314−57:4 name coin
315−58: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
199+41:9 glyph ?-
200+41:12 name xs
201+42:11 INDENT
202+42:11 lit ~
203+42:13 name ys
204+43:11 NEWLINE
205+43:11 glyph [
206+43:12 tight name item
207+43:17 name rest
208+43:21 tight glyph ]
209+43:23 glyph [
210+43:24 tight name item
211+43:29 glyph (
212+43:30 tight name weld
213+43:35 name rest
214+43:40 name ys
215+43:42 tight glyph )
216+43:43 tight glyph ]
217+45:1 DEDENT
218+45:1 DEDENT
219+45:1 DEDENT
220+45:1 DEDENT
221+45:1 DEDENT
222+45:1 NEWLINE
223+45:1 glyph ++
224+45:4 name turn
225+45:9 glyph |=
226+45:12 name args
227+45:16 tight glyph =
228+45:17 tight glyph [
229+45:18 tight glyph (
230+45:19 tight name list
231+45:24 tvar A
232+45:25 tight glyph )
233+45:27 glyph $-(
234+45:30 tight tvar A
235+45:32 tvar B
236+45:33 tight glyph )
237+45:34 tight glyph ]
238+46:3 INDENT
239+46:3 glyph ?-
240+46:6 name args
241+47:5 INDENT
242+47:5 glyph [
243+47:6 tight name xs
244+47:9 name f
245+47:10 tight glyph ]
246+48:7 INDENT
247+48:7 glyph ?-
248+48:10 name xs
249+49:9 INDENT
250+49:9 lit ~
251+49:11 lit ~
252+50:9 NEWLINE
253+50:9 glyph [
254+50:10 tight name item
255+50:15 name rest
256+50:19 tight glyph ]
257+50:21 glyph [
258+50:22 tight glyph (
259+50:23 tight name f
260+50:25 name item
261+50:29 tight glyph )
262+50:31 glyph (
263+50:32 tight name turn
264+50:37 name rest
265+50:42 name f
266+50:43 tight glyph )
267+50:44 tight glyph ]
268+52:1 DEDENT
269+52:1 DEDENT
270+52:1 DEDENT
271+52:1 DEDENT
272+52:1 NEWLINE
273+52:1 glyph +$
274+52:4 name dime
275+52:9 glyph [
276+52:10 tight name p
277+52:11 tight glyph =
278+52:12 tight aura @ta
279+52:16 name q
280+52:17 tight glyph =
281+52:18 tight aura @
282+52:19 tight glyph ]
283+54:1 NEWLINE
284+54:1 glyph +$
285+54:4 name hair
286+54:9 glyph [
287+54:10 tight name p
288+54:11 tight glyph =
289+54:12 tight aura @ud
290+54:16 name q
291+54:17 tight glyph =
292+54:18 tight aura @ud
293+54:21 tight glyph ]
294+56:1 NEWLINE
295+56:1 glyph +$
296+56:4 name pint
297+56:9 glyph [
298+56:10 tight name p
299+56:11 tight glyph =
300+56:12 tight glyph [
301+56:13 tight name p
302+56:14 tight glyph =
303+56:15 tight aura @
304+56:17 name q
305+56:18 tight glyph =
306+56:19 tight aura @
307+56:20 tight glyph ]
308+56:22 name q
309+56:23 tight glyph =
310+56:24 tight glyph [
311+56:25 tight name p
312+56:26 tight glyph =
313+56:27 tight aura @
314+56:29 name q
315+56:30 tight glyph =
316+56:31 tight aura @
317+56:32 tight glyph ]
318+56:33 tight glyph ]
319+58:1 NEWLINE
320+58:1 glyph +$
321+58:4 name coin
322+59:3 INDENT
32332359:3 glyph [
324−59:4 tight lit %blob
325−59:10 name p
326−59:11 tight glyph =
327−59:12 tight glyph *
324+59:4 tight lit %$
325+59:7 name p
326+59:8 tight glyph =
327+59:9 tight name dime
32832859:13 tight glyph ]
32932960:3 NEWLINE
33033060:3 glyph [
331−60:4 tight lit %many
331+60:4 tight lit %blob
33233260:10 name p
33333360:11 tight glyph =
334−60:12 tight glyph (
335−60:13 tight name list
336−60:18 name coin
337−60:22 tight glyph )
338−60:23 tight glyph ]
339−62:1 DEDENT
340−62:1 NEWLINE
341−62:1 glyph +$
342−62:4 name pair
343−62:9 glyph |$
344−62:12 glyph [
345−62:13 tight tvar A
346−62:15 tvar B
347−62:16 tight glyph ]
348−62:18 glyph [
349−62:19 tight name p
350−62:20 tight glyph =
351−62:21 tight tvar A
352−62:23 name q
353−62:24 tight glyph =
354−62:25 tight tvar B
355−62:26 tight glyph ]
356−64:1 NEWLINE
357−64:1 glyph +$
358−64:4 name trel
359−64:9 glyph |$
360−64:12 glyph [
361−64:13 tight tvar A
362−64:15 tvar B
363−64:17 tvar C
364−64:18 tight glyph ]
365−64:20 glyph [
366−64:21 tight name p
367−64:22 tight glyph =
368−64:23 tight tvar A
369−64:25 name q
370−64:26 tight glyph =
371−64:27 tight tvar B
372−64:29 name r
373−64:30 tight glyph =
374−64:31 tight tvar C
375−64:32 tight glyph ]
376−66:1 NEWLINE
377−66:1 glyph +$
378−66:4 name qual
379−66:9 glyph |$
380−66:12 glyph [
381−66:13 tight tvar A
382−66:15 tvar B
383−66:17 tvar C
384−66:19 tvar D
385−66:20 tight glyph ]
386−66:22 glyph [
387−66:23 tight name p
388−66:24 tight glyph =
389−66:25 tight tvar A
390−66:27 name q
391−66:28 tight glyph =
392−66:29 tight tvar B
393−66:31 name r
394−66:32 tight glyph =
395−66:33 tight tvar C
396−66:35 name s
397−66:36 tight glyph =
398−66:37 tight tvar D
399−66:38 tight glyph ]
400−68:1 NEWLINE
401−68:1 glyph +$
402−68:4 name cord
403−68:9 aura @t
404−70:1 NEWLINE
405−70:1 glyph +$
406−70:4 name knot
407−70:9 aura @ta
408−72:1 NEWLINE
409−72:1 glyph +$
410−72:4 name tape
411−72:9 glyph (
412−72:10 tight name list
413−72:15 aura @tD
414−72:18 tight glyph )
415−74:1 NEWLINE
416−74:1 glyph +$
417−74:4 name path
418−74:9 glyph (
419−74:10 tight name list
420−74:15 name knot
421−74:19 tight glyph )
422−76:1 NEWLINE
423−76:1 glyph +$
424−76:4 name tank
425−77: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
431−78:11 tight glyph =
432−78:12 tight name tape
433−78:16 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 (
342+61:13 tight name list
343+61:18 name coin
344+61:22 tight glyph )
345+61:23 tight glyph ]
346+63:1 DEDENT
347+63:1 NEWLINE
348+63:1 glyph +$
349+63:4 name pair
350+63:9 glyph |$
351+63:12 glyph [
352+63:13 tight tvar A
353+63:15 tvar B
354+63:16 tight glyph ]
355+63:18 glyph [
356+63:19 tight name p
357+63:20 tight glyph =
358+63:21 tight tvar A
359+63:23 name q
360+63:24 tight glyph =
361+63:25 tight tvar B
362+63:26 tight glyph ]
363+65:1 NEWLINE
364+65:1 glyph +$
365+65:4 name trel
366+65:9 glyph |$
367+65:12 glyph [
368+65:13 tight tvar A
369+65:15 tvar B
370+65:17 tvar C
371+65:18 tight glyph ]
372+65:20 glyph [
373+65:21 tight name p
374+65:22 tight glyph =
375+65:23 tight tvar A
376+65:25 name q
377+65:26 tight glyph =
378+65:27 tight tvar B
379+65:29 name r
380+65:30 tight glyph =
381+65:31 tight tvar C
382+65:32 tight glyph ]
383+67:1 NEWLINE
384+67:1 glyph +$
385+67:4 name qual
386+67:9 glyph |$
387+67:12 glyph [
388+67:13 tight tvar A
389+67:15 tvar B
390+67:17 tvar C
391+67:19 tvar D
392+67:20 tight glyph ]
393+67:22 glyph [
394+67:23 tight name p
395+67:24 tight glyph =
396+67:25 tight tvar A
397+67:27 name q
398+67:28 tight glyph =
399+67:29 tight tvar B
400+67:31 name r
401+67:32 tight glyph =
402+67:33 tight tvar C
403+67:35 name s
404+67:36 tight glyph =
405+67:37 tight tvar D
406+67:38 tight glyph ]
407+69:1 NEWLINE
408+69:1 glyph +$
409+69:4 name cord
410+69:9 aura @t
411+71:1 NEWLINE
412+71:1 glyph +$
413+71:4 name knot
414+71:9 aura @ta
415+73:1 NEWLINE
416+73:1 glyph +$
417+73:4 name tape
418+73:9 glyph (
419+73:10 tight name list
420+73:15 aura @tD
421+73:18 tight glyph )
422+75:1 NEWLINE
423+75:1 glyph +$
424+75:4 name path
425+75:9 glyph (
426+75:10 tight name list
427+75:15 name knot
428+75:19 tight glyph )
429+77:1 NEWLINE
430+77:1 glyph +$
431+77:4 name tank
432+78:3 INDENT
433+78:3 name cord
43443479:3 NEWLINE
43543579:3 glyph [
436−79:4 tight lit %palm
436+79:4 tight lit %leaf
43743779:10 name p
43843879:11 tight glyph =
439−79:12 tight glyph (
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 ]
439+79:12 tight name tape
440+79:16 tight glyph ]
45344180:3 NEWLINE
45444280:3 glyph [
455−80:4 tight lit %rose
443+80:4 tight lit %palm
45644480:10 name p
45744580:11 tight glyph =
45844680:12 tight glyph (
459−80:13 tight name trel
447+80:13 tight name qual
46044880:18 name tape
46144980:23 name tape
46245080:28 name tape
463−80:32 tight glyph )
464−80:34 name q
465−80:35 tight glyph =
466−80:36 tight glyph (
467−80:37 tight name list
468−80:42 name tank
469−80:46 tight glyph )
470−80:47 tight glyph ]
471−82:1 DEDENT
472−82:1 NEWLINE
473−82:1 glyph +$
474−82:4 name nail
475−82:9 glyph [
476−82:10 tight name p
477−82:11 tight glyph =
478−82:12 tight name hair
479−82:17 name q
480−82:18 tight glyph =
481−82:19 tight name tape
482−82:23 tight glyph ]
483−84:1 NEWLINE
484−84:1 glyph +$
485−84:4 name edge
486−84:9 glyph [
487−84:10 tight name p
488−84:11 tight glyph =
489−84:12 tight name hair
490−84:17 name q
491−84:18 tight glyph =
492−84:19 tight glyph (
493−84:20 tight name unit
494−84:25 glyph [
495−84:26 tight name p
496−84:27 tight glyph =
497−84:28 tight glyph *
498−84:30 name q
499−84:31 tight glyph =
500−84:32 tight name nail
501−84:36 tight glyph ]
502−84:37 tight glyph )
503−84:38 tight glyph ]
504−86:1 NEWLINE
505−86:1 glyph +$
506−86:4 name rule
507−86:9 glyph $-(
508−86:12 tight name nail
509−86:17 name edge
510−86:21 tight glyph )
511−88:1 NEWLINE
512−88:1 glyph +$
513−88:4 name spot
514−88:9 glyph [
515−88:10 tight name p
516−88:11 tight glyph =
517−88:12 tight name path
518−88:17 name q
519−88:18 tight glyph =
520−88:19 tight name pint
521−88:23 tight glyph ]
522−90:1 NEWLINE
523−90:1 glyph +$
524−90:4 name toon
525−91: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
451+80:33 name tape
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 )
471+81:34 name q
472+81:35 tight glyph =
473+81:36 tight glyph (
474+81:37 tight name list
475+81:42 name tank
476+81:46 tight glyph )
477+81:47 tight glyph ]
478+83:1 DEDENT
479+83:1 NEWLINE
480+83:1 glyph +$
481+83:4 name nail
482+83:9 glyph [
483+83:10 tight name p
484+83:11 tight glyph =
485+83:12 tight name hair
486+83:17 name q
487+83:18 tight glyph =
488+83:19 tight name tape
489+83:23 tight glyph ]
490+85:1 NEWLINE
491+85:1 glyph +$
492+85:4 name edge
493+85:9 glyph [
494+85:10 tight name p
495+85:11 tight glyph =
496+85:12 tight name hair
497+85:17 name q
498+85:18 tight glyph =
499+85:19 tight glyph (
500+85:20 tight name unit
501+85:25 glyph [
502+85:26 tight name p
503+85:27 tight glyph =
504+85:28 tight glyph *
505+85:30 name q
506+85:31 tight glyph =
507+85:32 tight name nail
508+85:36 tight glyph ]
509+85:37 tight glyph )
510+85:38 tight glyph ]
511+87:1 NEWLINE
512+87:1 glyph +$
513+87:4 name rule
514+87:9 glyph $-(
515+87:12 tight name nail
516+87:17 name edge
517+87:21 tight glyph )
518+89:1 NEWLINE
519+89:1 glyph +$
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
53353392:3 glyph [
534−92:4 tight lit %1
534+92:4 tight lit %0
53553592:7 name p
53653692:8 tight glyph =
53753792:9 tight glyph *
53853892:10 tight glyph ]
53953993:3 NEWLINE
54054093:3 glyph [
541−93:4 tight lit %2
541+93:4 tight lit %1
54254293:7 name p
54354393:8 tight glyph =
544−93:9 tight glyph (
545−93:10 tight name list
546−93:15 name tank
547−93:19 tight glyph )
548−93:20 tight glyph ]
549−95:1 DEDENT
550−95:1 NEWLINE
551−95:1 glyph +$
552−95:4 name like
553−95:9 glyph |$
554−95:12 glyph [
555−95:13 tight tvar A
556−95:14 tight glyph ]
557−95:16 glyph [
558−95:17 tight name p
559−95:18 tight glyph =
560−95:19 tight name hair
561−95:24 name q
562−95:25 tight glyph =
563−95:26 tight glyph (
564−95:27 tight name unit
565−95:32 glyph [
566−95:33 tight name p
567−95:34 tight glyph =
568−95:35 tight tvar A
569−95:37 name q
570−95:38 tight glyph =
571−95:39 tight name nail
572−95:43 tight glyph ]
573−95:44 tight glyph )
574−95:45 tight glyph ]
575−97:1 NEWLINE
576−97:1 glyph ++
577−97:4 name wonk
578−97:9 glyph |=
579−97:12 name veq
580−97:15 tight glyph =
581−97:16 tight glyph (
582−97:17 tight name like
583−97:22 tvar A
584−97:23 tight glyph )
585−98:3 INDENT
586−98:3 glyph ?-
587−98:6 wing q.veq
588−99:5 INDENT
589−99:5 lit ~
590−99:7 glyph !!
591−100:5 NEWLINE
592−100:5 glyph [
593−100:6 tight lit ~
594−100:8 name product
595−100:15 tight glyph ]
596−100:17 wing p.product
597−102:1 DEDENT
598−102:1 DEDENT
599−102:1 NEWLINE
600−102:1 glyph +$
601−102:4 name lone
602−102:9 glyph |$
603−102:12 glyph [
604−102:13 tight tvar A
605−102:14 tight glyph ]
606−102:16 glyph [
607−102:17 tight name p
608−102:18 tight glyph =
609−102:19 tight tvar A
610−102:20 tight glyph ]
611−104:1 NEWLINE
612−104:1 glyph +$
613−104:4 name lest
614−104:9 glyph |$
615−104:12 glyph [
616−104:13 tight tvar A
617−104:14 tight glyph ]
618−104:16 glyph [
619−104:17 tight name i
620−104:18 tight glyph =
621−104:19 tight tvar A
622−104:21 name t
623−104:22 tight glyph =
624−104:23 tight glyph (
625−104:24 tight name list
626−104:29 tvar A
627−104:30 tight glyph )
628−104:31 tight glyph ]
629−106:1 NEWLINE
630−106:1 glyph +$
631−106:4 name pole
632−106:9 glyph |$
633−106:12 glyph [
634−106:13 tight tvar A
635−106:14 tight glyph ]
636−107:3 INDENT
637−107:3 lit ~
638−108:3 NEWLINE
639−108:3 glyph [
640−108:4 tight tvar A
641−108:6 glyph (
642−108:7 tight name pole
643−108:12 tvar A
644−108:13 tight glyph )
645−108:14 tight glyph ]
646−110:1 DEDENT
647−110:1 NEWLINE
648−110:1 glyph +$
649−110:4 name quip
650−110:9 glyph |$
651−110:12 glyph [
652−110:13 tight tvar A
653−110:15 tvar B
654−110:16 tight glyph ]
655−110:18 glyph [
656−110:19 tight glyph (
657−110:20 tight name list
658−110:25 tvar A
659−110:26 tight glyph )
660−110:28 tvar B
661−110:29 tight glyph ]
662−112:1 NEWLINE
663−112:1 glyph +$
664−112:4 name tree
665−112:9 glyph |$
666−112:12 glyph [
667−112:13 tight tvar A
668−112:14 tight glyph ]
669−113:3 INDENT
670−113:3 lit ~
671−114:3 NEWLINE
672−114:3 glyph [
673−114:4 tight name n
674−114:5 tight glyph =
675−114:6 tight tvar A
676−114:8 name l
677−114:9 tight glyph =
678−114:10 tight glyph (
679−114:11 tight name tree
680−114:16 tvar A
681−114:17 tight glyph )
682−114:19 name r
683−114:20 tight glyph =
684−114:21 tight glyph (
685−114:22 tight name tree
686−114:27 tvar A
687−114:28 tight glyph )
688−114:29 tight glyph ]
689−116:1 DEDENT
690−116:1 NEWLINE
691−116:1 glyph +$
692−116:4 name each
693−116:9 glyph |$
694−116:12 glyph [
695−116:13 tight tvar A
696−116: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 ]
705−118:3 NEWLINE
544+93:9 tight glyph *
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
553+94:15 name tank
554+94:19 tight glyph )
555+94:20 tight glyph ]
556+96:1 DEDENT
557+96:1 NEWLINE
558+96:1 glyph +$
559+96:4 name like
560+96:9 glyph |$
561+96:12 glyph [
562+96:13 tight tvar A
563+96:14 tight glyph ]
564+96:16 glyph [
565+96:17 tight name p
566+96:18 tight glyph =
567+96:19 tight name hair
568+96:24 name q
569+96:25 tight glyph =
570+96:26 tight glyph (
571+96:27 tight name unit
572+96:32 glyph [
573+96:33 tight name p
574+96:34 tight glyph =
575+96:35 tight tvar A
576+96:37 name q
577+96:38 tight glyph =
578+96:39 tight name nail
579+96:43 tight glyph ]
580+96:44 tight glyph )
581+96:45 tight glyph ]
582+98:1 NEWLINE
583+98:1 glyph ++
584+98:4 name wonk
585+98:9 glyph |=
586+98:12 name veq
587+98:15 tight glyph =
588+98:16 tight glyph (
589+98:17 tight name like
590+98:22 tvar A
591+98:23 tight glyph )
592+99:3 INDENT
593+99:3 glyph ?-
594+99:6 wing q.veq
595+100:5 INDENT
596+100:5 lit ~
597+100:7 glyph !!
598+101:5 NEWLINE
599+101:5 glyph [
600+101:6 tight lit ~
601+101:8 name product
602+101:15 tight glyph ]
603+101:17 wing p.product
604+103:1 DEDENT
605+103:1 DEDENT
606+103:1 NEWLINE
607+103:1 glyph +$
608+103:4 name lone
609+103:9 glyph |$
610+103:12 glyph [
611+103:13 tight tvar A
612+103:14 tight glyph ]
613+103:16 glyph [
614+103:17 tight name p
615+103:18 tight glyph =
616+103:19 tight tvar A
617+103:20 tight glyph ]
618+105:1 NEWLINE
619+105:1 glyph +$
620+105:4 name lest
621+105:9 glyph |$
622+105:12 glyph [
623+105:13 tight tvar A
624+105:14 tight glyph ]
625+105:16 glyph [
626+105:17 tight name i
627+105:18 tight glyph =
628+105:19 tight tvar A
629+105:21 name t
630+105:22 tight glyph =
631+105:23 tight glyph (
632+105:24 tight name list
633+105:29 tvar A
634+105:30 tight glyph )
635+105:31 tight glyph ]
636+107:1 NEWLINE
637+107:1 glyph +$
638+107:4 name pole
639+107:9 glyph |$
640+107:12 glyph [
641+107:13 tight tvar A
642+107:14 tight glyph ]
643+108:3 INDENT
644+108:3 lit ~
645+109:3 NEWLINE
646+109:3 glyph [
647+109:4 tight tvar A
648+109:6 glyph (
649+109:7 tight name pole
650+109:12 tvar A
651+109:13 tight glyph )
652+109:14 tight glyph ]
653+111:1 DEDENT
654+111:1 NEWLINE
655+111:1 glyph +$
656+111:4 name quip
657+111:9 glyph |$
658+111:12 glyph [
659+111:13 tight tvar A
660+111:15 tvar B
661+111:16 tight glyph ]
662+111:18 glyph [
663+111:19 tight glyph (
664+111:20 tight name list
665+111:25 tvar A
666+111:26 tight glyph )
667+111:28 tvar B
668+111:29 tight glyph ]
669+113:1 NEWLINE
670+113:1 glyph +$
671+113:4 name tree
672+113:9 glyph |$
673+113:12 glyph [
674+113:13 tight tvar A
675+113:14 tight glyph ]
676+114:3 INDENT
677+114:3 lit ~
678+115:3 NEWLINE
679+115:3 glyph [
680+115:4 tight name n
681+115:5 tight glyph =
682+115:6 tight tvar A
683+115:8 name l
684+115:9 tight glyph =
685+115:10 tight glyph (
686+115:11 tight name tree
687+115:16 tvar A
688+115:17 tight glyph )
689+115:19 name r
690+115:20 tight glyph =
691+115:21 tight glyph (
692+115:22 tight name tree
693+115:27 tvar A
694+115:28 tight glyph )
695+115:29 tight glyph ]
696+117:1 DEDENT
697+117:1 NEWLINE
698+117:1 glyph +$
699+117:4 name each
700+117:9 glyph |$
701+117:12 glyph [
702+117:13 tight tvar A
703+117:15 tvar B
704+117:16 tight glyph ]
705+118:3 INDENT
706706118:3 glyph [
707−118:4 tight lit %&
707+118:4 tight lit %|
708708118:7 name p
709709118:8 tight glyph =
710−118:9 tight tvar A
710+118:9 tight tvar B
711711118:10 tight glyph ]
712−120:1 DEDENT
713−120:1 NEWLINE
714−120:1 glyph +$
715−120:4 name bloq
716−120:9 aura @
717−122:1 NEWLINE
718−122:1 glyph ++
719−122:4 name some
720−122:9 glyph |=
721−122:12 name item
722−122:16 tight glyph =
723−122:17 tight tvar A
724−122:19 glyph `
725−122:20 tight name item
726−124:1 NEWLINE
727−124:1 glyph ++
728−124:4 name lure
729−124:9 glyph |=
730−124:12 name item
731−124:16 tight glyph =
732−124:17 tight tvar A
733−125:3 INDENT
734−125:3 glyph ^-
735−125:6 glyph (
736−125:7 tight name list
737−125:12 tvar A
738−125:13 tight glyph )
739−125:15 glyph [
740−125:16 tight name item
741−125:21 lit ~
742−125:22 tight glyph ]
743−127:1 DEDENT
744−127:1 NEWLINE
745−127:1 glyph ++
746−127:4 name snoc
747−127:9 glyph |=
748−127:12 name args
749−127:16 tight glyph =
750−127:17 tight glyph [
751−127:18 tight glyph (
752−127:19 tight name list
753−127:24 tvar A
754−127:25 tight glyph )
755−127:27 tvar A
756−127:28 tight glyph ]
757−128:3 INDENT
758−128:3 glyph ?-
759−128:6 name args
760−129:5 INDENT
761−129:5 glyph [
762−129:6 tight name xs
763−129:9 name item
764−129:13 tight glyph ]
765−129:15 glyph (
766−129:16 tight name weld
767−129:21 name xs
768−129:24 glyph [
769−129:25 tight name item
770−129:30 lit ~
771−129:31 tight glyph ]
772−129:32 tight glyph )
773−131:1 DEDENT
774−131:1 DEDENT
775−131:1 NEWLINE
776−131:1 glyph ++
777−131:4 name flop
778−131:9 glyph |=
779−131:12 name xs
780−131:14 tight glyph =
781−131:15 tight glyph (
782−131:16 tight name list
783−131:21 tvar A
784−131:22 tight glyph )
785−132:3 INDENT
786−132:3 glyph ++
787−132:6 name reverse-into
788−132:19 glyph |=
789−132:22 name args
790−132:26 tight glyph =
791−132:27 tight glyph [
792−132:28 tight glyph (
793−132:29 tight name list
794−132:34 tvar A
795−132:35 tight glyph )
796−132:37 glyph (
797−132:38 tight name list
798−132:43 tvar A
799−132:44 tight glyph )
800−132:45 tight glyph ]
801−133:5 INDENT
802−133:5 glyph ?-
803−133:8 name args
804−134:7 INDENT
805−134:7 glyph [
806−134:8 tight name rest
807−134:13 name acc
808−134:16 tight glyph ]
809−135:9 INDENT
810−135:9 glyph ?-
811−135:12 name rest
812−136:11 INDENT
813−136:11 lit ~
814−136:13 name acc
815−137:11 NEWLINE
816−137:11 glyph [
817−137:12 tight name item
818−137:17 name more
819−137:21 tight glyph ]
820−137:23 glyph (
821−137:24 tight name reverse-into
822−137:37 name more
823−137:42 glyph [
824−137:43 tight name item
825−137:48 name acc
826−137:51 tight glyph ]
827−137:52 tight glyph )
828−138:3 DEDENT
829−138:3 DEDENT
830−138:3 DEDENT
831−138:3 DEDENT
832−138:3 NEWLINE
833−138:3 glyph (
834−138:4 tight name reverse-into
835−138:17 name xs
836−138:20 lit ~
837−138:21 tight glyph )
838−138:22 DEDENT
839−138:22 NEWLINE
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 ]
719+121:1 DEDENT
720+121:1 NEWLINE
721+121:1 glyph +$
722+121:4 name bloq
723+121:9 aura @
724+123:1 NEWLINE
725+123:1 glyph ++
726+123:4 name some
727+123:9 glyph |=
728+123:12 name item
729+123:16 tight glyph =
730+123:17 tight tvar A
731+123:19 glyph `
732+123:20 tight name item
733+125:1 NEWLINE
734+125:1 glyph ++
735+125:4 name lure
736+125:9 glyph |=
737+125:12 name item
738+125:16 tight glyph =
739+125:17 tight tvar A
740+126:3 INDENT
741+126:3 glyph ^-
742+126:6 glyph (
743+126:7 tight name list
744+126:12 tvar A
745+126:13 tight glyph )
746+126:15 glyph [
747+126:16 tight name item
748+126:21 lit ~
749+126:22 tight glyph ]
750+128:1 DEDENT
751+128:1 NEWLINE
752+128:1 glyph ++
753+128:4 name snoc
754+128:9 glyph |=
755+128:12 name args
756+128:16 tight glyph =
757+128:17 tight glyph [
758+128:18 tight glyph (
759+128:19 tight name list
760+128:24 tvar A
761+128:25 tight glyph )
762+128:27 tvar A
763+128:28 tight glyph ]
764+129:3 INDENT
765+129:3 glyph ?-
766+129:6 name args
767+130:5 INDENT
768+130:5 glyph [
769+130:6 tight name xs
770+130:9 name item
771+130:13 tight glyph ]
772+130:15 glyph (
773+130:16 tight name weld
774+130:21 name xs
775+130:24 glyph [
776+130:25 tight name item
777+130:30 lit ~
778+130:31 tight glyph ]
779+130:32 tight glyph )
780+132:1 DEDENT
781+132:1 DEDENT
782+132:1 NEWLINE
783+132:1 glyph ++
784+132:4 name flop
785+132:9 glyph |=
786+132:12 name xs
787+132:14 tight glyph =
788+132:15 tight glyph (
789+132:16 tight name list
790+132:21 tvar A
791+132:22 tight glyph )
792+133:3 INDENT
793+133:3 glyph ++
794+133:6 name reverse-into
795+133:19 glyph |=
796+133:22 name args
797+133:26 tight glyph =
798+133:27 tight glyph [
799+133:28 tight glyph (
800+133:29 tight name list
801+133:34 tvar A
802+133:35 tight glyph )
803+133:37 glyph (
804+133:38 tight name list
805+133:43 tvar A
806+133:44 tight glyph )
807+133:45 tight glyph ]
808+134:5 INDENT
809+134:5 glyph ?-
810+134:8 name args
811+135:7 INDENT
812+135:7 glyph [
813+135:8 tight name rest
814+135:13 name acc
815+135:16 tight glyph ]
816+136:9 INDENT
817+136:9 glyph ?-
818+136:12 name rest
819+137:11 INDENT
820+137:11 lit ~
821+137:13 name acc
822+138:11 NEWLINE
823+138:11 glyph [
824+138:12 tight name item
825+138:17 name more
826+138:21 tight glyph ]
827+138:23 glyph (
828+138:24 tight name reverse-into
829+138:37 name more
830+138:42 glyph [
831+138:43 tight name item
832+138:48 name acc
833+138:51 tight glyph ]
834+138:52 tight glyph )
835+139:3 DEDENT
836+139:3 DEDENT
837+139:3 DEDENT
838+139:3 DEDENT
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 @@
8787 (arm 39:5
8888 (cell 39:5 (bind 39:6 xs) (bind 39:9 ys))
8989 (body 40:7
90− (branch 40:7
91− (wing 40:10 xs)
92− (arm 41:9 (lit 41:9 ~) (wing 41:11 ys))
93− (arm 42:9
94− (cell 42:9 (bind 42:10 item) (bind 42:15 rest))
95− (tuple 42:21
96− (wing 42:22 item)
97− (group 42:27
98− (call 42:28 (wing 42:28 weld) (wing 42:33 rest) (wing 42:38 ys))))))))))))
99− (value 44:1 turn
100− (gate 44:9
101− (face 44:12 args
102− (cell 44:17
103− (apply 44:18 list (tvar 44:24 A))
104− (fn 44:27 (tvar 44:30 A) (tvar 44:32 B))))
105− (body 45:3
106− (branch 45:3
107− (wing 45:6 args)
108− (arm 46:5
109− (cell 46:5 (bind 46:6 xs) (bind 46:9 f))
110− (body 47:7
111− (branch 47:7
112− (wing 47:10 xs)
113− (arm 48:9 (lit 48:9 ~) (lit 48:11 ~))
114− (arm 49:9
115− (cell 49:9 (bind 49:10 item) (bind 49:15 rest))
116− (tuple 49:21
117− (group 49:22
118− (call 49:23 (wing 49:23 f) (wing 49:25 item)))
119− (group 49:31
120− (call 49:32 (wing 49:32 turn) (wing 49:37 rest) (wing 49:42 f))))))))))))
121− (mold 51:1 dime
122− (cell 51:9
123− (face 51:10 p (aura 51:12 @ta))
124− (face 51:16 q (aura 51:18 @))))
125− (mold 53:1 hair
126− (cell 53:9
127− (face 53:10 p (aura 53:12 @ud))
128− (face 53:16 q (aura 53:18 @ud))))
129− (mold 55:1 pint
130− (cell 55:9
131− (face 55:10 p
132− (cell 55:12
133− (face 55:13 p (aura 55:15 @))
134− (face 55:17 q (aura 55:19 @))))
135− (face 55:22 q
136− (cell 55:24
137− (face 55:25 p (aura 55:27 @))
138− (face 55:29 q (aura 55:31 @))))))
139− (mold 57:1 coin
140− (union 58:3
141− (cell 58:3
142− (const 58:4 %$)
143− (face 58:7 p (ref 58:9 dime)))
90+ (cast 40:7
91+ (apply 40:10 list (tvar 40:16 A))
92+ (body 41:9
93+ (branch 41:9
94+ (wing 41:12 xs)
95+ (arm 42:11 (lit 42:11 ~) (wing 42:13 ys))
96+ (arm 43:11
97+ (cell 43:11 (bind 43:12 item) (bind 43:17 rest))
98+ (tuple 43:23
99+ (wing 43:24 item)
100+ (group 43:29
101+ (call 43:30 (wing 43:30 weld) (wing 43:35 rest) (wing 43:40 ys))))))))))))))
102+ (value 45:1 turn
103+ (gate 45:9
104+ (face 45:12 args
105+ (cell 45:17
106+ (apply 45:18 list (tvar 45:24 A))
107+ (fn 45:27 (tvar 45:30 A) (tvar 45:32 B))))
108+ (body 46:3
109+ (branch 46:3
110+ (wing 46:6 args)
111+ (arm 47:5
112+ (cell 47:5 (bind 47:6 xs) (bind 47:9 f))
113+ (body 48:7
114+ (branch 48:7
115+ (wing 48:10 xs)
116+ (arm 49:9 (lit 49:9 ~) (lit 49:11 ~))
117+ (arm 50:9
118+ (cell 50:9 (bind 50:10 item) (bind 50:15 rest))
119+ (tuple 50:21
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))))))))))))
124+ (mold 52:1 dime
125+ (cell 52:9
126+ (face 52:10 p (aura 52:12 @ta))
127+ (face 52:16 q (aura 52:18 @))))
128+ (mold 54:1 hair
129+ (cell 54:9
130+ (face 54:10 p (aura 54:12 @ud))
131+ (face 54:16 q (aura 54:18 @ud))))
132+ (mold 56:1 pint
133+ (cell 56:9
134+ (face 56:10 p
135+ (cell 56:12
136+ (face 56:13 p (aura 56:15 @))
137+ (face 56:17 q (aura 56:19 @))))
138+ (face 56:22 q
139+ (cell 56:24
140+ (face 56:25 p (aura 56:27 @))
141+ (face 56:29 q (aura 56:31 @))))))
142+ (mold 58:1 coin
143+ (union 59:3
144144 (cell 59:3
145− (const 59:4 %blob)
146− (face 59:10 p (noun 59:12)))
145+ (const 59:4 %$)
146+ (face 59:7 p (ref 59:9 dime)))
147147 (cell 60:3
148− (const 60:4 %many)
149− (face 60:10 p
150− (apply 60:12 list (ref 60:18 coin))))))
151− (mold 62:1 pair
152− (generic 62:9 A B
153− (cell 62:18
154− (face 62:19 p (tvar 62:21 A))
155− (face 62:23 q (tvar 62:25 B)))))
156− (mold 64:1 trel
157− (generic 64:9 A B C
158− (cell 64:20
159− (face 64:21 p (tvar 64:23 A))
160− (face 64:25 q (tvar 64:27 B))
161− (face 64:29 r (tvar 64:31 C)))))
162− (mold 66:1 qual
163− (generic 66:9 A B C D
164− (cell 66:22
165− (face 66:23 p (tvar 66:25 A))
166− (face 66:27 q (tvar 66:29 B))
167− (face 66:31 r (tvar 66:33 C))
168− (face 66:35 s (tvar 66:37 D)))))
169− (mold 68:1 cord (aura 68:9 @t))
170− (mold 70:1 knot (aura 70:9 @ta))
171− (mold 72:1 tape
172− (apply 72:9 list (aura 72:15 @tD)))
173− (mold 74:1 path
174− (apply 74:9 list (ref 74:15 knot)))
175− (mold 76:1 tank
176− (union 77:3
177− (ref 77:3 cord)
178− (cell 78:3
179− (const 78:4 %leaf)
180− (face 78:10 p (ref 78:12 tape)))
148+ (const 60:4 %blob)
149+ (face 60:10 p (noun 60:12)))
150+ (cell 61:3
151+ (const 61:4 %many)
152+ (face 61:10 p
153+ (apply 61:12 list (ref 61:18 coin))))))
154+ (mold 63:1 pair
155+ (generic 63:9 A B
156+ (cell 63:18
157+ (face 63:19 p (tvar 63:21 A))
158+ (face 63:23 q (tvar 63:25 B)))))
159+ (mold 65:1 trel
160+ (generic 65:9 A B C
161+ (cell 65:20
162+ (face 65:21 p (tvar 65:23 A))
163+ (face 65:25 q (tvar 65:27 B))
164+ (face 65:29 r (tvar 65:31 C)))))
165+ (mold 67:1 qual
166+ (generic 67:9 A B C D
167+ (cell 67:22
168+ (face 67:23 p (tvar 67:25 A))
169+ (face 67:27 q (tvar 67:29 B))
170+ (face 67:31 r (tvar 67:33 C))
171+ (face 67:35 s (tvar 67:37 D)))))
172+ (mold 69:1 cord (aura 69:9 @t))
173+ (mold 71:1 knot (aura 71:9 @ta))
174+ (mold 73:1 tape
175+ (apply 73:9 list (aura 73:15 @tD)))
176+ (mold 75:1 path
177+ (apply 75:9 list (ref 75:15 knot)))
178+ (mold 77:1 tank
179+ (union 78:3
180+ (ref 78:3 cord)
181181 (cell 79:3
182− (const 79:4 %palm)
183− (face 79:10 p
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))))
182+ (const 79:4 %leaf)
183+ (face 79:10 p (ref 79:12 tape)))
187184 (cell 80:3
188− (const 80:4 %rose)
185+ (const 80:4 %palm)
189186 (face 80:10 p
190− (apply 80:12 trel (ref 80:18 tape) (ref 80:23 tape) (ref 80:28 tape)))
191− (face 80:34 q
192− (apply 80:36 list (ref 80:42 tank))))))
193− (mold 82:1 nail
194− (cell 82:9
195− (face 82:10 p (ref 82:12 hair))
196− (face 82:17 q (ref 82:19 tape))))
197− (mold 84:1 edge
198− (cell 84:9
199− (face 84:10 p (ref 84:12 hair))
200− (face 84:17 q
201− (apply 84:19 unit
202− (cell 84:25
203− (face 84:26 p (noun 84:28))
204− (face 84:30 q (ref 84:32 nail)))))))
205− (mold 86:1 rule
206− (fn 86:9 (ref 86:12 nail) (ref 86:17 edge)))
207− (mold 88:1 spot
208− (cell 88:9
209− (face 88:10 p (ref 88:12 path))
210− (face 88:17 q (ref 88:19 pint))))
211− (mold 90:1 toon
212− (union 91:3
213− (cell 91:3
214− (const 91:4 %0)
215− (face 91:7 p (noun 91:9)))
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
193+ (apply 81:12 trel (ref 81:18 tape) (ref 81:23 tape) (ref 81:28 tape)))
194+ (face 81:34 q
195+ (apply 81:36 list (ref 81:42 tank))))))
196+ (mold 83:1 nail
197+ (cell 83:9
198+ (face 83:10 p (ref 83:12 hair))
199+ (face 83:17 q (ref 83:19 tape))))
200+ (mold 85:1 edge
201+ (cell 85:9
202+ (face 85:10 p (ref 85:12 hair))
203+ (face 85:17 q
204+ (apply 85:19 unit
205+ (cell 85:25
206+ (face 85:26 p (noun 85:28))
207+ (face 85:30 q (ref 85:32 nail)))))))
208+ (mold 87:1 rule
209+ (fn 87:9 (ref 87:12 nail) (ref 87:17 edge)))
210+ (mold 89:1 spot
211+ (cell 89: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
216216 (cell 92:3
217− (const 92:4 %1)
217+ (const 92:4 %0)
218218 (face 92:7 p (noun 92:9)))
219219 (cell 93:3
220− (const 93:4 %2)
221− (face 93:7 p
222− (apply 93:9 list (ref 93:15 tank))))))
223− (mold 95:1 like
224− (generic 95:9 A
225− (cell 95:16
226− (face 95:17 p (ref 95:19 hair))
227− (face 95:24 q
228− (apply 95:26 unit
229− (cell 95:32
230− (face 95:33 p (tvar 95:35 A))
231− (face 95:37 q (ref 95:39 nail))))))))
232− (value 97:1 wonk
233− (gate 97:9
234− (face 97:12 veq
235− (apply 97:16 like (tvar 97:22 A)))
236− (body 98:3
237− (branch 98:3
238− (wing 98:6 q.veq)
239− (arm 99:5 (lit 99:5 ~) (crash 99:7))
240− (arm 100:5
241− (cell 100:5 (lit 100:6 ~) (bind 100:8 product))
242− (wing 100:17 p.product))))))
243− (mold 102:1 lone
244− (generic 102:9 A
245− (cell 102:16
246− (face 102:17 p (tvar 102:19 A)))))
247− (mold 104:1 lest
248− (generic 104:9 A
249− (cell 104:16
250− (face 104:17 i (tvar 104:19 A))
251− (face 104:21 t
252− (apply 104:23 list (tvar 104:29 A))))))
253− (mold 106:1 pole
254− (generic 106:9 A
255− (union 107:3
256− (const 107:3 ~)
257− (cell 108:3
258− (tvar 108:4 A)
259− (apply 108:6 pole (tvar 108:12 A))))))
260− (mold 110:1 quip
261− (generic 110:9 A B
262− (cell 110:18
263− (apply 110:19 list (tvar 110:25 A))
264− (tvar 110:28 B))))
265− (mold 112:1 tree
266− (generic 112:9 A
267− (union 113:3
268− (const 113:3 ~)
269− (cell 114:3
270− (face 114:4 n (tvar 114:6 A))
271− (face 114:8 l
272− (apply 114:10 tree (tvar 114:16 A)))
273− (face 114:19 r
274− (apply 114:21 tree (tvar 114:27 A)))))))
275− (mold 116:1 each
276− (generic 116:9 A B
277− (union 117:3
278− (cell 117:3
279− (const 117:4 %|)
280− (face 117:7 p (tvar 117:9 B)))
220+ (const 93:4 %1)
221+ (face 93:7 p (noun 93:9)))
222+ (cell 94:3
223+ (const 94:4 %2)
224+ (face 94:7 p
225+ (apply 94:9 list (ref 94:15 tank))))))
226+ (mold 96:1 like
227+ (generic 96:9 A
228+ (cell 96:16
229+ (face 96:17 p (ref 96:19 hair))
230+ (face 96:24 q
231+ (apply 96:26 unit
232+ (cell 96:32
233+ (face 96:33 p (tvar 96:35 A))
234+ (face 96:37 q (ref 96:39 nail))))))))
235+ (value 98:1 wonk
236+ (gate 98:9
237+ (face 98:12 veq
238+ (apply 98:16 like (tvar 98:22 A)))
239+ (body 99:3
240+ (branch 99:3
241+ (wing 99:6 q.veq)
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))))))
246+ (mold 103:1 lone
247+ (generic 103:9 A
248+ (cell 103:16
249+ (face 103:17 p (tvar 103:19 A)))))
250+ (mold 105:1 lest
251+ (generic 105:9 A
252+ (cell 105:16
253+ (face 105:17 i (tvar 105:19 A))
254+ (face 105:21 t
255+ (apply 105:23 list (tvar 105:29 A))))))
256+ (mold 107:1 pole
257+ (generic 107:9 A
258+ (union 108:3
259+ (const 108:3 ~)
260+ (cell 109:3
261+ (tvar 109:4 A)
262+ (apply 109:6 pole (tvar 109:12 A))))))
263+ (mold 111:1 quip
264+ (generic 111:9 A B
265+ (cell 111:18
266+ (apply 111:19 list (tvar 111:25 A))
267+ (tvar 111:28 B))))
268+ (mold 113:1 tree
269+ (generic 113:9 A
270+ (union 114:3
271+ (const 114:3 ~)
272+ (cell 115:3
273+ (face 115:4 n (tvar 115:6 A))
274+ (face 115:8 l
275+ (apply 115:10 tree (tvar 115:16 A)))
276+ (face 115:19 r
277+ (apply 115:21 tree (tvar 115:27 A)))))))
278+ (mold 117:1 each
279+ (generic 117:9 A B
280+ (union 118:3
281281 (cell 118:3
282− (const 118:4 %&)
283− (face 118:7 p (tvar 118:9 A))))))
284− (mold 120:1 bloq (aura 120:9 @))
285− (value 122:1 some
286− (gate 122:9
287− (face 122:12 item (tvar 122:17 A))
288− (unit 122:19 (wing 122:20 item))))
289− (value 124:1 lure
290− (gate 124:9
291− (face 124:12 item (tvar 124:17 A))
292− (body 125:3
293− (cast 125:3
294− (apply 125:6 list (tvar 125:12 A))
295− (tuple 125:15 (wing 125:16 item) (lit 125:21 ~))))))
296− (value 127:1 snoc
297− (gate 127:9
298− (face 127:12 args
299− (cell 127:17
300− (apply 127:18 list (tvar 127:24 A))
301− (tvar 127:27 A)))
302− (body 128:3
303− (branch 128:3
304− (wing 128:6 args)
305− (arm 129:5
306− (cell 129:5 (bind 129:6 xs) (bind 129:9 item))
307− (group 129:15
308− (call 129:16
309− (wing 129:16 weld)
310− (wing 129:21 xs)
311− (tuple 129:24 (wing 129:25 item) (lit 129:30 ~)))))))))
312− (value 131:1 flop
313− (gate 131:9
314− (face 131:12 xs
315− (apply 131:15 list (tvar 131:21 A)))
316− (body 132:3
317− (value 132:3 reverse-into
318− (gate 132:19
319− (face 132:22 args
320− (cell 132:27
321− (apply 132:28 list (tvar 132:34 A))
322− (apply 132:37 list (tvar 132:43 A))))
323− (body 133:5
324− (branch 133:5
325− (wing 133:8 args)
326− (arm 134:7
327− (cell 134:7 (bind 134:8 rest) (bind 134:13 acc))
328− (body 135:9
329− (branch 135:9
330− (wing 135:12 rest)
331− (arm 136:11 (lit 136:11 ~) (wing 136:13 acc))
332− (arm 137:11
333− (cell 137:11 (bind 137:12 item) (bind 137:17 more))
334− (group 137:23
335− (call 137:24
336− (wing 137:24 reverse-into)
337− (wing 137:37 more)
338− (tuple 137:42 (wing 137:43 item) (wing 137:48 acc))))))))))))
339− (group 138:3
340− (call 138:4 (wing 138:4 reverse-into) (wing 138:17 xs) (lit 138:20 ~)))))))
282+ (const 118:4 %|)
283+ (face 118:7 p (tvar 118:9 B)))
284+ (cell 119:3
285+ (const 119:4 %&)
286+ (face 119:7 p (tvar 119:9 A))))))
287+ (mold 121:1 bloq (aura 121:9 @))
288+ (value 123:1 some
289+ (gate 123:9
290+ (face 123:12 item (tvar 123:17 A))
291+ (unit 123:19 (wing 123:20 item))))
292+ (value 125:1 lure
293+ (gate 125:9
294+ (face 125:12 item (tvar 125:17 A))
295+ (body 126:3
296+ (cast 126:3
297+ (apply 126:6 list (tvar 126:12 A))
298+ (tuple 126:15 (wing 126:16 item) (lit 126:21 ~))))))
299+ (value 128:1 snoc
300+ (gate 128:9
301+ (face 128:12 args
302+ (cell 128:17
303+ (apply 128:18 list (tvar 128:24 A))
304+ (tvar 128:27 A)))
305+ (body 129:3
306+ (branch 129:3
307+ (wing 129:6 args)
308+ (arm 130:5
309+ (cell 130:5 (bind 130:6 xs) (bind 130:9 item))
310+ (group 130:15
311+ (call 130:16
312+ (wing 130:16 weld)
313+ (wing 130:21 xs)
314+ (tuple 130:24 (wing 130:25 item) (lit 130:30 ~)))))))))
315+ (value 132:1 flop
316+ (gate 132:9
317+ (face 132:12 xs
318+ (apply 132:15 list (tvar 132:21 A)))
319+ (body 133:3
320+ (value 133:3 reverse-into
321+ (gate 133:19
322+ (face 133:22 args
323+ (cell 133:27
324+ (apply 133:28 list (tvar 133:34 A))
325+ (apply 133:37 list (tvar 133:43 A))))
326+ (body 134:5
327+ (branch 134:5
328+ (wing 134:8 args)
329+ (arm 135:7
330+ (cell 135:7 (bind 135:8 rest) (bind 135:13 acc))
331+ (body 136:9
332+ (branch 136:9
333+ (wing 136:12 rest)
334+ (arm 137:11 (lit 137:11 ~) (wing 137:13 acc))
335+ (arm 138:11
336+ (cell 138:11 (bind 138:12 item) (bind 138:17 more))
337+ (group 138:23
338+ (call 138:24
339+ (wing 138:24 reverse-into)
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 @@
3737++ weld |= args=[(list A) (list A)]
3838 ?- args
3939 [xs ys]
40− ?- xs
41− ~ ys
42− [item rest] [item (weld rest ys)]
40+ ^- (list A)
41+ ?- xs
42+ ~ ys
43+ [item rest] [item (weld rest ys)]
4344
4445++ turn |= args=[(list A) $-(A B)]
4546 ?- args
tests/golden/prelude-list-unit/tokens.txt+79−72
@@ -190,76 +190,83 @@
19019039:9 name ys
19119139:11 tight glyph ]
19219240:7 INDENT
193−40:7 glyph ?-
194−40:10 name xs
193+40:7 glyph ^-
194+40:10 glyph (
195+40:11 tight name list
196+40:16 tvar A
197+40:17 tight glyph )
19519841:9 INDENT
196−41:9 lit ~
197−41:11 name ys
198−42:9 NEWLINE
199−42:9 glyph [
200−42:10 tight name item
201−42:15 name rest
202−42:19 tight glyph ]
203−42:21 glyph [
204−42:22 tight name item
205−42:27 glyph (
206−42:28 tight name weld
207−42:33 name rest
208−42:38 name ys
209−42:40 tight glyph )
210−42:41 tight glyph ]
211−44:1 DEDENT
212−44:1 DEDENT
213−44:1 DEDENT
214−44:1 DEDENT
215−44:1 NEWLINE
216−44:1 glyph ++
217−44:4 name turn
218−44:9 glyph |=
219−44:12 name args
220−44:16 tight glyph =
221−44:17 tight glyph [
222−44:18 tight glyph (
223−44:19 tight name list
224−44:24 tvar A
225−44:25 tight glyph )
226−44:27 glyph $-(
227−44:30 tight tvar A
228−44:32 tvar B
229−44:33 tight glyph )
230−44:34 tight glyph ]
231−45:3 INDENT
232−45:3 glyph ?-
233−45:6 name args
234−46:5 INDENT
235−46:5 glyph [
236−46:6 tight name xs
237−46:9 name f
238−46:10 tight glyph ]
239−47:7 INDENT
240−47:7 glyph ?-
241−47:10 name xs
242−48:9 INDENT
243−48:9 lit ~
244−48:11 lit ~
245−49:9 NEWLINE
246−49:9 glyph [
247−49:10 tight name item
248−49:15 name rest
249−49:19 tight glyph ]
250−49:21 glyph [
251−49:22 tight glyph (
252−49:23 tight name f
253−49:25 name item
254−49:29 tight glyph )
255−49:31 glyph (
256−49:32 tight name turn
257−49:37 name rest
258−49:42 name f
259−49:43 tight glyph )
260−49:44 tight glyph ]
261−49:45 DEDENT
262−49:45 DEDENT
263−49:45 DEDENT
264−49:45 DEDENT
265−49:45 NEWLINE
199+41:9 glyph ?-
200+41:12 name xs
201+42:11 INDENT
202+42:11 lit ~
203+42:13 name ys
204+43:11 NEWLINE
205+43:11 glyph [
206+43:12 tight name item
207+43:17 name rest
208+43:21 tight glyph ]
209+43:23 glyph [
210+43:24 tight name item
211+43:29 glyph (
212+43:30 tight name weld
213+43:35 name rest
214+43:40 name ys
215+43:42 tight glyph )
216+43:43 tight glyph ]
217+45:1 DEDENT
218+45:1 DEDENT
219+45:1 DEDENT
220+45:1 DEDENT
221+45:1 DEDENT
222+45:1 NEWLINE
223+45:1 glyph ++
224+45:4 name turn
225+45:9 glyph |=
226+45:12 name args
227+45:16 tight glyph =
228+45:17 tight glyph [
229+45:18 tight glyph (
230+45:19 tight name list
231+45:24 tvar A
232+45:25 tight glyph )
233+45:27 glyph $-(
234+45:30 tight tvar A
235+45:32 tvar B
236+45:33 tight glyph )
237+45:34 tight glyph ]
238+46:3 INDENT
239+46:3 glyph ?-
240+46:6 name args
241+47:5 INDENT
242+47:5 glyph [
243+47:6 tight name xs
244+47:9 name f
245+47:10 tight glyph ]
246+48:7 INDENT
247+48:7 glyph ?-
248+48:10 name xs
249+49:9 INDENT
250+49:9 lit ~
251+49:11 lit ~
252+50:9 NEWLINE
253+50:9 glyph [
254+50:10 tight name item
255+50:15 name rest
256+50:19 tight glyph ]
257+50:21 glyph [
258+50:22 tight glyph (
259+50:23 tight name f
260+50:25 name item
261+50:29 tight glyph )
262+50:31 glyph (
263+50:32 tight name turn
264+50:37 name rest
265+50:42 name f
266+50:43 tight glyph )
267+50:44 tight glyph ]
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 @@
8787 (arm 39:5
8888 (cell 39:5 (bind 39:6 xs) (bind 39:9 ys))
8989 (body 40:7
90− (branch 40:7
91− (wing 40:10 xs)
92− (arm 41:9 (lit 41:9 ~) (wing 41:11 ys))
93− (arm 42:9
94− (cell 42:9 (bind 42:10 item) (bind 42:15 rest))
95− (tuple 42:21
96− (wing 42:22 item)
97− (group 42:27
98− (call 42:28 (wing 42:28 weld) (wing 42:33 rest) (wing 42:38 ys))))))))))))
99− (value 44:1 turn
100− (gate 44:9
101− (face 44:12 args
102− (cell 44:17
103− (apply 44:18 list (tvar 44:24 A))
104− (fn 44:27 (tvar 44:30 A) (tvar 44:32 B))))
105− (body 45:3
106− (branch 45:3
107− (wing 45:6 args)
108− (arm 46:5
109− (cell 46:5 (bind 46:6 xs) (bind 46:9 f))
110− (body 47:7
111− (branch 47:7
112− (wing 47:10 xs)
113− (arm 48:9 (lit 48:9 ~) (lit 48:11 ~))
114− (arm 49:9
115− (cell 49:9 (bind 49:10 item) (bind 49:15 rest))
116− (tuple 49:21
117− (group 49:22
118− (call 49:23 (wing 49:23 f) (wing 49:25 item)))
119− (group 49:31
120− (call 49:32 (wing 49:32 turn) (wing 49:37 rest) (wing 49:42 f)))))))))))))
90+ (cast 40:7
91+ (apply 40:10 list (tvar 40:16 A))
92+ (body 41:9
93+ (branch 41:9
94+ (wing 41:12 xs)
95+ (arm 42:11 (lit 42:11 ~) (wing 42:13 ys))
96+ (arm 43:11
97+ (cell 43:11 (bind 43:12 item) (bind 43:17 rest))
98+ (tuple 43:23
99+ (wing 43:24 item)
100+ (group 43:29
101+ (call 43:30 (wing 43:30 weld) (wing 43:35 rest) (wing 43:40 ys))))))))))))))
102+ (value 45:1 turn
103+ (gate 45:9
104+ (face 45:12 args
105+ (cell 45:17
106+ (apply 45:18 list (tvar 45:24 A))
107+ (fn 45:27 (tvar 45:30 A) (tvar 45:32 B))))
108+ (body 46:3
109+ (branch 46:3
110+ (wing 46:6 args)
111+ (arm 47:5
112+ (cell 47:5 (bind 47:6 xs) (bind 47:9 f))
113+ (body 48:7
114+ (branch 48:7
115+ (wing 48:10 xs)
116+ (arm 49:9 (lit 49:9 ~) (lit 49:11 ~))
117+ (arm 50:9
118+ (cell 50:9 (bind 50:10 item) (bind 50:15 rest))
119+ (tuple 50:21
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 @@
3737++ weld |= args=[(list A) (list A)]
3838 ?- args
3939 [xs ys]
40− ?- xs
41− ~ ys
42− [item rest] [item (weld rest ys)]
40+ ^- (list A)
41+ ?- xs
42+ ~ ys
43+ [item rest] [item (weld rest ys)]
4344
4445++ turn |= args=[(list A) $-(A B)]
4546 ?- args
tests/golden/prelude-unit-list-transforms/tokens.txt+1527−1520
@@ -190,1555 +190,1562 @@
19019039:9 name ys
19119139:11 tight glyph ]
19219240:7 INDENT
193−40:7 glyph ?-
194−40:10 name xs
193+40:7 glyph ^-
194+40:10 glyph (
195+40:11 tight name list
196+40:16 tvar A
197+40:17 tight glyph )
19519841:9 INDENT
196−41:9 lit ~
197−41:11 name ys
198−42:9 NEWLINE
199−42:9 glyph [
200−42:10 tight name item
201−42:15 name rest
202−42:19 tight glyph ]
203−42:21 glyph [
204−42:22 tight name item
205−42:27 glyph (
206−42:28 tight name weld
207−42:33 name rest
208−42:38 name ys
209−42:40 tight glyph )
210−42:41 tight glyph ]
211−44:1 DEDENT
212−44:1 DEDENT
213−44:1 DEDENT
214−44:1 DEDENT
215−44:1 NEWLINE
216−44:1 glyph ++
217−44:4 name turn
218−44:9 glyph |=
219−44:12 name args
220−44:16 tight glyph =
221−44:17 tight glyph [
222−44:18 tight glyph (
223−44:19 tight name list
224−44:24 tvar A
225−44:25 tight glyph )
226−44:27 glyph $-(
227−44:30 tight tvar A
228−44:32 tvar B
229−44:33 tight glyph )
230−44:34 tight glyph ]
231−45:3 INDENT
232−45:3 glyph ?-
233−45:6 name args
234−46:5 INDENT
235−46:5 glyph [
236−46:6 tight name xs
237−46:9 name f
238−46:10 tight glyph ]
239−47:7 INDENT
240−47:7 glyph ?-
241−47:10 name xs
242−48:9 INDENT
243−48:9 lit ~
244−48:11 lit ~
245−49:9 NEWLINE
246−49:9 glyph [
247−49:10 tight name item
248−49:15 name rest
249−49:19 tight glyph ]
250−49:21 glyph [
251−49:22 tight glyph (
252−49:23 tight name f
253−49:25 name item
254−49:29 tight glyph )
255−49:31 glyph (
256−49:32 tight name turn
257−49:37 name rest
258−49:42 name f
259−49:43 tight glyph )
260−49:44 tight glyph ]
261−51:1 DEDENT
262−51:1 DEDENT
263−51:1 DEDENT
264−51:1 DEDENT
265−51:1 NEWLINE
266−51:1 glyph +$
267−51:4 name dime
268−51:9 glyph [
269−51:10 tight name p
270−51:11 tight glyph =
271−51:12 tight aura @ta
272−51:16 name q
273−51:17 tight glyph =
274−51:18 tight aura @
275−51:19 tight glyph ]
276−53:1 NEWLINE
277−53:1 glyph +$
278−53:4 name hair
279−53:9 glyph [
280−53:10 tight name p
281−53:11 tight glyph =
282−53:12 tight aura @ud
283−53:16 name q
284−53:17 tight glyph =
285−53:18 tight aura @ud
286−53:21 tight glyph ]
287−55:1 NEWLINE
288−55:1 glyph +$
289−55:4 name pint
290−55:9 glyph [
291−55:10 tight name p
292−55:11 tight glyph =
293−55:12 tight glyph [
294−55:13 tight name p
295−55:14 tight glyph =
296−55:15 tight aura @
297−55:17 name q
298−55:18 tight glyph =
299−55:19 tight aura @
300−55:20 tight glyph ]
301−55:22 name q
302−55:23 tight glyph =
303−55:24 tight glyph [
304−55:25 tight name p
305−55:26 tight glyph =
306−55:27 tight aura @
307−55:29 name q
308−55:30 tight glyph =
309−55:31 tight aura @
310−55:32 tight glyph ]
311−55:33 tight glyph ]
312−57:1 NEWLINE
313−57:1 glyph +$
314−57:4 name coin
315−58: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
199+41:9 glyph ?-
200+41:12 name xs
201+42:11 INDENT
202+42:11 lit ~
203+42:13 name ys
204+43:11 NEWLINE
205+43:11 glyph [
206+43:12 tight name item
207+43:17 name rest
208+43:21 tight glyph ]
209+43:23 glyph [
210+43:24 tight name item
211+43:29 glyph (
212+43:30 tight name weld
213+43:35 name rest
214+43:40 name ys
215+43:42 tight glyph )
216+43:43 tight glyph ]
217+45:1 DEDENT
218+45:1 DEDENT
219+45:1 DEDENT
220+45:1 DEDENT
221+45:1 DEDENT
222+45:1 NEWLINE
223+45:1 glyph ++
224+45:4 name turn
225+45:9 glyph |=
226+45:12 name args
227+45:16 tight glyph =
228+45:17 tight glyph [
229+45:18 tight glyph (
230+45:19 tight name list
231+45:24 tvar A
232+45:25 tight glyph )
233+45:27 glyph $-(
234+45:30 tight tvar A
235+45:32 tvar B
236+45:33 tight glyph )
237+45:34 tight glyph ]
238+46:3 INDENT
239+46:3 glyph ?-
240+46:6 name args
241+47:5 INDENT
242+47:5 glyph [
243+47:6 tight name xs
244+47:9 name f
245+47:10 tight glyph ]
246+48:7 INDENT
247+48:7 glyph ?-
248+48:10 name xs
249+49:9 INDENT
250+49:9 lit ~
251+49:11 lit ~
252+50:9 NEWLINE
253+50:9 glyph [
254+50:10 tight name item
255+50:15 name rest
256+50:19 tight glyph ]
257+50:21 glyph [
258+50:22 tight glyph (
259+50:23 tight name f
260+50:25 name item
261+50:29 tight glyph )
262+50:31 glyph (
263+50:32 tight name turn
264+50:37 name rest
265+50:42 name f
266+50:43 tight glyph )
267+50:44 tight glyph ]
268+52:1 DEDENT
269+52:1 DEDENT
270+52:1 DEDENT
271+52:1 DEDENT
272+52:1 NEWLINE
273+52:1 glyph +$
274+52:4 name dime
275+52:9 glyph [
276+52:10 tight name p
277+52:11 tight glyph =
278+52:12 tight aura @ta
279+52:16 name q
280+52:17 tight glyph =
281+52:18 tight aura @
282+52:19 tight glyph ]
283+54:1 NEWLINE
284+54:1 glyph +$
285+54:4 name hair
286+54:9 glyph [
287+54:10 tight name p
288+54:11 tight glyph =
289+54:12 tight aura @ud
290+54:16 name q
291+54:17 tight glyph =
292+54:18 tight aura @ud
293+54:21 tight glyph ]
294+56:1 NEWLINE
295+56:1 glyph +$
296+56:4 name pint
297+56:9 glyph [
298+56:10 tight name p
299+56:11 tight glyph =
300+56:12 tight glyph [
301+56:13 tight name p
302+56:14 tight glyph =
303+56:15 tight aura @
304+56:17 name q
305+56:18 tight glyph =
306+56:19 tight aura @
307+56:20 tight glyph ]
308+56:22 name q
309+56:23 tight glyph =
310+56:24 tight glyph [
311+56:25 tight name p
312+56:26 tight glyph =
313+56:27 tight aura @
314+56:29 name q
315+56:30 tight glyph =
316+56:31 tight aura @
317+56:32 tight glyph ]
318+56:33 tight glyph ]
319+58:1 NEWLINE
320+58:1 glyph +$
321+58:4 name coin
322+59:3 INDENT
32332359:3 glyph [
324−59:4 tight lit %blob
325−59:10 name p
326−59:11 tight glyph =
327−59:12 tight glyph *
324+59:4 tight lit %$
325+59:7 name p
326+59:8 tight glyph =
327+59:9 tight name dime
32832859:13 tight glyph ]
32932960:3 NEWLINE
33033060:3 glyph [
331−60:4 tight lit %many
331+60:4 tight lit %blob
33233260:10 name p
33333360:11 tight glyph =
334−60:12 tight glyph (
335−60:13 tight name list
336−60:18 name coin
337−60:22 tight glyph )
338−60:23 tight glyph ]
339−62:1 DEDENT
340−62:1 NEWLINE
341−62:1 glyph +$
342−62:4 name pair
343−62:9 glyph |$
344−62:12 glyph [
345−62:13 tight tvar A
346−62:15 tvar B
347−62:16 tight glyph ]
348−62:18 glyph [
349−62:19 tight name p
350−62:20 tight glyph =
351−62:21 tight tvar A
352−62:23 name q
353−62:24 tight glyph =
354−62:25 tight tvar B
355−62:26 tight glyph ]
356−64:1 NEWLINE
357−64:1 glyph +$
358−64:4 name trel
359−64:9 glyph |$
360−64:12 glyph [
361−64:13 tight tvar A
362−64:15 tvar B
363−64:17 tvar C
364−64:18 tight glyph ]
365−64:20 glyph [
366−64:21 tight name p
367−64:22 tight glyph =
368−64:23 tight tvar A
369−64:25 name q
370−64:26 tight glyph =
371−64:27 tight tvar B
372−64:29 name r
373−64:30 tight glyph =
374−64:31 tight tvar C
375−64:32 tight glyph ]
376−66:1 NEWLINE
377−66:1 glyph +$
378−66:4 name qual
379−66:9 glyph |$
380−66:12 glyph [
381−66:13 tight tvar A
382−66:15 tvar B
383−66:17 tvar C
384−66:19 tvar D
385−66:20 tight glyph ]
386−66:22 glyph [
387−66:23 tight name p
388−66:24 tight glyph =
389−66:25 tight tvar A
390−66:27 name q
391−66:28 tight glyph =
392−66:29 tight tvar B
393−66:31 name r
394−66:32 tight glyph =
395−66:33 tight tvar C
396−66:35 name s
397−66:36 tight glyph =
398−66:37 tight tvar D
399−66:38 tight glyph ]
400−68:1 NEWLINE
401−68:1 glyph +$
402−68:4 name cord
403−68:9 aura @t
404−70:1 NEWLINE
405−70:1 glyph +$
406−70:4 name knot
407−70:9 aura @ta
408−72:1 NEWLINE
409−72:1 glyph +$
410−72:4 name tape
411−72:9 glyph (
412−72:10 tight name list
413−72:15 aura @tD
414−72:18 tight glyph )
415−74:1 NEWLINE
416−74:1 glyph +$
417−74:4 name path
418−74:9 glyph (
419−74:10 tight name list
420−74:15 name knot
421−74:19 tight glyph )
422−76:1 NEWLINE
423−76:1 glyph +$
424−76:4 name tank
425−77: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
431−78:11 tight glyph =
432−78:12 tight name tape
433−78:16 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 (
342+61:13 tight name list
343+61:18 name coin
344+61:22 tight glyph )
345+61:23 tight glyph ]
346+63:1 DEDENT
347+63:1 NEWLINE
348+63:1 glyph +$
349+63:4 name pair
350+63:9 glyph |$
351+63:12 glyph [
352+63:13 tight tvar A
353+63:15 tvar B
354+63:16 tight glyph ]
355+63:18 glyph [
356+63:19 tight name p
357+63:20 tight glyph =
358+63:21 tight tvar A
359+63:23 name q
360+63:24 tight glyph =
361+63:25 tight tvar B
362+63:26 tight glyph ]
363+65:1 NEWLINE
364+65:1 glyph +$
365+65:4 name trel
366+65:9 glyph |$
367+65:12 glyph [
368+65:13 tight tvar A
369+65:15 tvar B
370+65:17 tvar C
371+65:18 tight glyph ]
372+65:20 glyph [
373+65:21 tight name p
374+65:22 tight glyph =
375+65:23 tight tvar A
376+65:25 name q
377+65:26 tight glyph =
378+65:27 tight tvar B
379+65:29 name r
380+65:30 tight glyph =
381+65:31 tight tvar C
382+65:32 tight glyph ]
383+67:1 NEWLINE
384+67:1 glyph +$
385+67:4 name qual
386+67:9 glyph |$
387+67:12 glyph [
388+67:13 tight tvar A
389+67:15 tvar B
390+67:17 tvar C
391+67:19 tvar D
392+67:20 tight glyph ]
393+67:22 glyph [
394+67:23 tight name p
395+67:24 tight glyph =
396+67:25 tight tvar A
397+67:27 name q
398+67:28 tight glyph =
399+67:29 tight tvar B
400+67:31 name r
401+67:32 tight glyph =
402+67:33 tight tvar C
403+67:35 name s
404+67:36 tight glyph =
405+67:37 tight tvar D
406+67:38 tight glyph ]
407+69:1 NEWLINE
408+69:1 glyph +$
409+69:4 name cord
410+69:9 aura @t
411+71:1 NEWLINE
412+71:1 glyph +$
413+71:4 name knot
414+71:9 aura @ta
415+73:1 NEWLINE
416+73:1 glyph +$
417+73:4 name tape
418+73:9 glyph (
419+73:10 tight name list
420+73:15 aura @tD
421+73:18 tight glyph )
422+75:1 NEWLINE
423+75:1 glyph +$
424+75:4 name path
425+75:9 glyph (
426+75:10 tight name list
427+75:15 name knot
428+75:19 tight glyph )
429+77:1 NEWLINE
430+77:1 glyph +$
431+77:4 name tank
432+78:3 INDENT
433+78:3 name cord
43443479:3 NEWLINE
43543579:3 glyph [
436−79:4 tight lit %palm
436+79:4 tight lit %leaf
43743779:10 name p
43843879:11 tight glyph =
439−79:12 tight glyph (
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 ]
439+79:12 tight name tape
440+79:16 tight glyph ]
45344180:3 NEWLINE
45444280:3 glyph [
455−80:4 tight lit %rose
443+80:4 tight lit %palm
45644480:10 name p
45744580:11 tight glyph =
45844680:12 tight glyph (
459−80:13 tight name trel
447+80:13 tight name qual
46044880:18 name tape
46144980:23 name tape
46245080:28 name tape
463−80:32 tight glyph )
464−80:34 name q
465−80:35 tight glyph =
466−80:36 tight glyph (
467−80:37 tight name list
468−80:42 name tank
469−80:46 tight glyph )
470−80:47 tight glyph ]
471−82:1 DEDENT
472−82:1 NEWLINE
473−82:1 glyph +$
474−82:4 name nail
475−82:9 glyph [
476−82:10 tight name p
477−82:11 tight glyph =
478−82:12 tight name hair
479−82:17 name q
480−82:18 tight glyph =
481−82:19 tight name tape
482−82:23 tight glyph ]
483−84:1 NEWLINE
484−84:1 glyph +$
485−84:4 name edge
486−84:9 glyph [
487−84:10 tight name p
488−84:11 tight glyph =
489−84:12 tight name hair
490−84:17 name q
491−84:18 tight glyph =
492−84:19 tight glyph (
493−84:20 tight name unit
494−84:25 glyph [
495−84:26 tight name p
496−84:27 tight glyph =
497−84:28 tight glyph *
498−84:30 name q
499−84:31 tight glyph =
500−84:32 tight name nail
501−84:36 tight glyph ]
502−84:37 tight glyph )
503−84:38 tight glyph ]
504−86:1 NEWLINE
505−86:1 glyph +$
506−86:4 name rule
507−86:9 glyph $-(
508−86:12 tight name nail
509−86:17 name edge
510−86:21 tight glyph )
511−88:1 NEWLINE
512−88:1 glyph +$
513−88:4 name spot
514−88:9 glyph [
515−88:10 tight name p
516−88:11 tight glyph =
517−88:12 tight name path
518−88:17 name q
519−88:18 tight glyph =
520−88:19 tight name pint
521−88:23 tight glyph ]
522−90:1 NEWLINE
523−90:1 glyph +$
524−90:4 name toon
525−91: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
451+80:33 name tape
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 )
471+81:34 name q
472+81:35 tight glyph =
473+81:36 tight glyph (
474+81:37 tight name list
475+81:42 name tank
476+81:46 tight glyph )
477+81:47 tight glyph ]
478+83:1 DEDENT
479+83:1 NEWLINE
480+83:1 glyph +$
481+83:4 name nail
482+83:9 glyph [
483+83:10 tight name p
484+83:11 tight glyph =
485+83:12 tight name hair
486+83:17 name q
487+83:18 tight glyph =
488+83:19 tight name tape
489+83:23 tight glyph ]
490+85:1 NEWLINE
491+85:1 glyph +$
492+85:4 name edge
493+85:9 glyph [
494+85:10 tight name p
495+85:11 tight glyph =
496+85:12 tight name hair
497+85:17 name q
498+85:18 tight glyph =
499+85:19 tight glyph (
500+85:20 tight name unit
501+85:25 glyph [
502+85:26 tight name p
503+85:27 tight glyph =
504+85:28 tight glyph *
505+85:30 name q
506+85:31 tight glyph =
507+85:32 tight name nail
508+85:36 tight glyph ]
509+85:37 tight glyph )
510+85:38 tight glyph ]
511+87:1 NEWLINE
512+87:1 glyph +$
513+87:4 name rule
514+87:9 glyph $-(
515+87:12 tight name nail
516+87:17 name edge
517+87:21 tight glyph )
518+89:1 NEWLINE
519+89:1 glyph +$
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
53353392:3 glyph [
534−92:4 tight lit %1
534+92:4 tight lit %0
53553592:7 name p
53653692:8 tight glyph =
53753792:9 tight glyph *
53853892:10 tight glyph ]
53953993:3 NEWLINE
54054093:3 glyph [
541−93:4 tight lit %2
541+93:4 tight lit %1
54254293:7 name p
54354393:8 tight glyph =
544−93:9 tight glyph (
545−93:10 tight name list
546−93:15 name tank
547−93:19 tight glyph )
548−93:20 tight glyph ]
549−95:1 DEDENT
550−95:1 NEWLINE
551−95:1 glyph +$
552−95:4 name like
553−95:9 glyph |$
554−95:12 glyph [
555−95:13 tight tvar A
556−95:14 tight glyph ]
557−95:16 glyph [
558−95:17 tight name p
559−95:18 tight glyph =
560−95:19 tight name hair
561−95:24 name q
562−95:25 tight glyph =
563−95:26 tight glyph (
564−95:27 tight name unit
565−95:32 glyph [
566−95:33 tight name p
567−95:34 tight glyph =
568−95:35 tight tvar A
569−95:37 name q
570−95:38 tight glyph =
571−95:39 tight name nail
572−95:43 tight glyph ]
573−95:44 tight glyph )
574−95:45 tight glyph ]
575−97:1 NEWLINE
576−97:1 glyph ++
577−97:4 name wonk
578−97:9 glyph |=
579−97:12 name veq
580−97:15 tight glyph =
581−97:16 tight glyph (
582−97:17 tight name like
583−97:22 tvar A
584−97:23 tight glyph )
585−98:3 INDENT
586−98:3 glyph ?-
587−98:6 wing q.veq
588−99:5 INDENT
589−99:5 lit ~
590−99:7 glyph !!
591−100:5 NEWLINE
592−100:5 glyph [
593−100:6 tight lit ~
594−100:8 name product
595−100:15 tight glyph ]
596−100:17 wing p.product
597−102:1 DEDENT
598−102:1 DEDENT
599−102:1 NEWLINE
600−102:1 glyph +$
601−102:4 name lone
602−102:9 glyph |$
603−102:12 glyph [
604−102:13 tight tvar A
605−102:14 tight glyph ]
606−102:16 glyph [
607−102:17 tight name p
608−102:18 tight glyph =
609−102:19 tight tvar A
610−102:20 tight glyph ]
611−104:1 NEWLINE
612−104:1 glyph +$
613−104:4 name lest
614−104:9 glyph |$
615−104:12 glyph [
616−104:13 tight tvar A
617−104:14 tight glyph ]
618−104:16 glyph [
619−104:17 tight name i
620−104:18 tight glyph =
621−104:19 tight tvar A
622−104:21 name t
623−104:22 tight glyph =
624−104:23 tight glyph (
625−104:24 tight name list
626−104:29 tvar A
627−104:30 tight glyph )
628−104:31 tight glyph ]
629−106:1 NEWLINE
630−106:1 glyph +$
631−106:4 name pole
632−106:9 glyph |$
633−106:12 glyph [
634−106:13 tight tvar A
635−106:14 tight glyph ]
636−107:3 INDENT
637−107:3 lit ~
638−108:3 NEWLINE
639−108:3 glyph [
640−108:4 tight tvar A
641−108:6 glyph (
642−108:7 tight name pole
643−108:12 tvar A
644−108:13 tight glyph )
645−108:14 tight glyph ]
646−110:1 DEDENT
647−110:1 NEWLINE
648−110:1 glyph +$
649−110:4 name quip
650−110:9 glyph |$
651−110:12 glyph [
652−110:13 tight tvar A
653−110:15 tvar B
654−110:16 tight glyph ]
655−110:18 glyph [
656−110:19 tight glyph (
657−110:20 tight name list
658−110:25 tvar A
659−110:26 tight glyph )
660−110:28 tvar B
661−110:29 tight glyph ]
662−112:1 NEWLINE
663−112:1 glyph +$
664−112:4 name tree
665−112:9 glyph |$
666−112:12 glyph [
667−112:13 tight tvar A
668−112:14 tight glyph ]
669−113:3 INDENT
670−113:3 lit ~
671−114:3 NEWLINE
672−114:3 glyph [
673−114:4 tight name n
674−114:5 tight glyph =
675−114:6 tight tvar A
676−114:8 name l
677−114:9 tight glyph =
678−114:10 tight glyph (
679−114:11 tight name tree
680−114:16 tvar A
681−114:17 tight glyph )
682−114:19 name r
683−114:20 tight glyph =
684−114:21 tight glyph (
685−114:22 tight name tree
686−114:27 tvar A
687−114:28 tight glyph )
688−114:29 tight glyph ]
689−116:1 DEDENT
690−116:1 NEWLINE
691−116:1 glyph +$
692−116:4 name each
693−116:9 glyph |$
694−116:12 glyph [
695−116:13 tight tvar A
696−116: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 ]
705−118:3 NEWLINE
544+93:9 tight glyph *
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
553+94:15 name tank
554+94:19 tight glyph )
555+94:20 tight glyph ]
556+96:1 DEDENT
557+96:1 NEWLINE
558+96:1 glyph +$
559+96:4 name like
560+96:9 glyph |$
561+96:12 glyph [
562+96:13 tight tvar A
563+96:14 tight glyph ]
564+96:16 glyph [
565+96:17 tight name p
566+96:18 tight glyph =
567+96:19 tight name hair
568+96:24 name q
569+96:25 tight glyph =
570+96:26 tight glyph (
571+96:27 tight name unit
572+96:32 glyph [
573+96:33 tight name p
574+96:34 tight glyph =
575+96:35 tight tvar A
576+96:37 name q
577+96:38 tight glyph =
578+96:39 tight name nail
579+96:43 tight glyph ]
580+96:44 tight glyph )
581+96:45 tight glyph ]
582+98:1 NEWLINE
583+98:1 glyph ++
584+98:4 name wonk
585+98:9 glyph |=
586+98:12 name veq
587+98:15 tight glyph =
588+98:16 tight glyph (
589+98:17 tight name like
590+98:22 tvar A
591+98:23 tight glyph )
592+99:3 INDENT
593+99:3 glyph ?-
594+99:6 wing q.veq
595+100:5 INDENT
596+100:5 lit ~
597+100:7 glyph !!
598+101:5 NEWLINE
599+101:5 glyph [
600+101:6 tight lit ~
601+101:8 name product
602+101:15 tight glyph ]
603+101:17 wing p.product
604+103:1 DEDENT
605+103:1 DEDENT
606+103:1 NEWLINE
607+103:1 glyph +$
608+103:4 name lone
609+103:9 glyph |$
610+103:12 glyph [
611+103:13 tight tvar A
612+103:14 tight glyph ]
613+103:16 glyph [
614+103:17 tight name p
615+103:18 tight glyph =
616+103:19 tight tvar A
617+103:20 tight glyph ]
618+105:1 NEWLINE
619+105:1 glyph +$
620+105:4 name lest
621+105:9 glyph |$
622+105:12 glyph [
623+105:13 tight tvar A
624+105:14 tight glyph ]
625+105:16 glyph [
626+105:17 tight name i
627+105:18 tight glyph =
628+105:19 tight tvar A
629+105:21 name t
630+105:22 tight glyph =
631+105:23 tight glyph (
632+105:24 tight name list
633+105:29 tvar A
634+105:30 tight glyph )
635+105:31 tight glyph ]
636+107:1 NEWLINE
637+107:1 glyph +$
638+107:4 name pole
639+107:9 glyph |$
640+107:12 glyph [
641+107:13 tight tvar A
642+107:14 tight glyph ]
643+108:3 INDENT
644+108:3 lit ~
645+109:3 NEWLINE
646+109:3 glyph [
647+109:4 tight tvar A
648+109:6 glyph (
649+109:7 tight name pole
650+109:12 tvar A
651+109:13 tight glyph )
652+109:14 tight glyph ]
653+111:1 DEDENT
654+111:1 NEWLINE
655+111:1 glyph +$
656+111:4 name quip
657+111:9 glyph |$
658+111:12 glyph [
659+111:13 tight tvar A
660+111:15 tvar B
661+111:16 tight glyph ]
662+111:18 glyph [
663+111:19 tight glyph (
664+111:20 tight name list
665+111:25 tvar A
666+111:26 tight glyph )
667+111:28 tvar B
668+111:29 tight glyph ]
669+113:1 NEWLINE
670+113:1 glyph +$
671+113:4 name tree
672+113:9 glyph |$
673+113:12 glyph [
674+113:13 tight tvar A
675+113:14 tight glyph ]
676+114:3 INDENT
677+114:3 lit ~
678+115:3 NEWLINE
679+115:3 glyph [
680+115:4 tight name n
681+115:5 tight glyph =
682+115:6 tight tvar A
683+115:8 name l
684+115:9 tight glyph =
685+115:10 tight glyph (
686+115:11 tight name tree
687+115:16 tvar A
688+115:17 tight glyph )
689+115:19 name r
690+115:20 tight glyph =
691+115:21 tight glyph (
692+115:22 tight name tree
693+115:27 tvar A
694+115:28 tight glyph )
695+115:29 tight glyph ]
696+117:1 DEDENT
697+117:1 NEWLINE
698+117:1 glyph +$
699+117:4 name each
700+117:9 glyph |$
701+117:12 glyph [
702+117:13 tight tvar A
703+117:15 tvar B
704+117:16 tight glyph ]
705+118:3 INDENT
706706118:3 glyph [
707−118:4 tight lit %&
707+118:4 tight lit %|
708708118:7 name p
709709118:8 tight glyph =
710−118:9 tight tvar A
710+118:9 tight tvar B
711711118:10 tight glyph ]
712−120:1 DEDENT
713−120:1 NEWLINE
714−120:1 glyph +$
715−120:4 name bloq
716−120:9 aura @
717−122:1 NEWLINE
718−122:1 glyph ++
719−122:4 name some
720−122:9 glyph |=
721−122:12 name item
722−122:16 tight glyph =
723−122:17 tight tvar A
724−122:19 glyph `
725−122:20 tight name item
726−124:1 NEWLINE
727−124:1 glyph ++
728−124:4 name lure
729−124:9 glyph |=
730−124:12 name item
731−124:16 tight glyph =
732−124:17 tight tvar A
733−125:3 INDENT
734−125:3 glyph ^-
735−125:6 glyph (
736−125:7 tight name list
737−125:12 tvar A
738−125:13 tight glyph )
739−125:15 glyph [
740−125:16 tight name item
741−125:21 lit ~
742−125:22 tight glyph ]
743−127:1 DEDENT
744−127:1 NEWLINE
745−127:1 glyph ++
746−127:4 name snoc
747−127:9 glyph |=
748−127:12 name args
749−127:16 tight glyph =
750−127:17 tight glyph [
751−127:18 tight glyph (
752−127:19 tight name list
753−127:24 tvar A
754−127:25 tight glyph )
755−127:27 tvar A
756−127:28 tight glyph ]
757−128:3 INDENT
758−128:3 glyph ?-
759−128:6 name args
760−129:5 INDENT
761−129:5 glyph [
762−129:6 tight name xs
763−129:9 name item
764−129:13 tight glyph ]
765−129:15 glyph (
766−129:16 tight name weld
767−129:21 name xs
768−129:24 glyph [
769−129:25 tight name item
770−129:30 lit ~
771−129:31 tight glyph ]
772−129:32 tight glyph )
773−131:1 DEDENT
774−131:1 DEDENT
775−131:1 NEWLINE
776−131:1 glyph ++
777−131:4 name flop
778−131:9 glyph |=
779−131:12 name xs
780−131:14 tight glyph =
781−131:15 tight glyph (
782−131:16 tight name list
783−131:21 tvar A
784−131:22 tight glyph )
785−132:3 INDENT
786−132:3 glyph ++
787−132:6 name reverse-into
788−132:19 glyph |=
789−132:22 name args
790−132:26 tight glyph =
791−132:27 tight glyph [
792−132:28 tight glyph (
793−132:29 tight name list
794−132:34 tvar A
795−132:35 tight glyph )
796−132:37 glyph (
797−132:38 tight name list
798−132:43 tvar A
799−132:44 tight glyph )
800−132:45 tight glyph ]
801−133:5 INDENT
802−133:5 glyph ?-
803−133:8 name args
804−134:7 INDENT
805−134:7 glyph [
806−134:8 tight name rest
807−134:13 name acc
808−134:16 tight glyph ]
809−135:9 INDENT
810−135:9 glyph ?-
811−135:12 name rest
812−136:11 INDENT
813−136:11 lit ~
814−136:13 name acc
815−137:11 NEWLINE
816−137:11 glyph [
817−137:12 tight name item
818−137:17 name more
819−137:21 tight glyph ]
820−137:23 glyph (
821−137:24 tight name reverse-into
822−137:37 name more
823−137:42 glyph [
824−137:43 tight name item
825−137:48 name acc
826−137:51 tight glyph ]
827−137:52 tight glyph )
828−138:3 DEDENT
829−138:3 DEDENT
830−138:3 DEDENT
831−138:3 DEDENT
832−138:3 NEWLINE
833−138:3 glyph (
834−138:4 tight name reverse-into
835−138:17 name xs
836−138:20 lit ~
837−138:21 tight glyph )
838−140:1 DEDENT
839−140:1 NEWLINE
840−140:1 glyph ++
841−140:4 name drop
842−140:9 glyph |=
843−140:12 name maybe
844−140:17 tight glyph =
845−140:18 tight glyph (
846−140:19 tight name unit
847−140:24 tvar A
848−140:25 tight glyph )
849−141:3 INDENT
850−141:3 glyph ?-
851−141:6 name maybe
852−142:5 INDENT
853−142:5 lit ~
854−142:7 lit ~
855−143:5 NEWLINE
856−143:5 glyph [
857−143:6 tight lit ~
858−143:8 name value
859−143:13 tight glyph ]
860−143:15 glyph [
861−143:16 tight name value
862−143:22 lit ~
863−143:23 tight glyph ]
864−145:1 DEDENT
865−145:1 DEDENT
866−145:1 NEWLINE
867−145:1 glyph ++
868−145:4 name bind
869−145:9 glyph |=
870−145:12 name args
871−145:16 tight glyph =
872−145:17 tight glyph [
873−145:18 tight glyph (
874−145:19 tight name unit
875−145:24 tvar A
876−145:25 tight glyph )
877−145:27 glyph $-(
878−145:30 tight tvar A
879−145:32 tvar B
880−145:33 tight glyph )
881−145:34 tight glyph ]
882−146:3 INDENT
883−146:3 glyph ?-
884−146:6 name args
885−147:5 INDENT
886−147:5 glyph [
887−147:6 tight name maybe
888−147:12 name f
889−147:13 tight glyph ]
890−148:7 INDENT
891−148:7 glyph ?-
892−148:10 name maybe
893−149:9 INDENT
894−149:9 lit ~
895−149:11 lit ~
896−150:9 NEWLINE
897−150:9 glyph [
898−150:10 tight lit ~
899−150:12 name value
900−150:17 tight glyph ]
901−150:19 glyph `
902−150:20 tight glyph (
903−150:21 tight name f
904−150:23 name value
905−150:28 tight glyph )
906−152:1 DEDENT
907−152:1 DEDENT
908−152:1 DEDENT
909−152:1 DEDENT
910−152:1 NEWLINE
911−152:1 glyph ++
912−152:4 name biff
913−152:9 glyph |=
914−152:12 name args
915−152:16 tight glyph =
916−152:17 tight glyph [
917−152:18 tight glyph (
918−152:19 tight name unit
919−152:24 tvar A
920−152:25 tight glyph )
921−152:27 glyph $-(
922−152:30 tight tvar A
923−152:32 glyph (
924−152:33 tight name unit
925−152:38 tvar B
926−152:39 tight glyph )
927−152:40 tight glyph )
928−152:41 tight glyph ]
929−153:3 INDENT
930−153:3 glyph ?-
931−153:6 name args
932−154:5 INDENT
933−154:5 glyph [
934−154:6 tight name maybe
935−154:12 name f
936−154:13 tight glyph ]
937−155:7 INDENT
938−155:7 glyph ?-
939−155:10 name maybe
940−156:9 INDENT
941−156:9 lit ~
942−156:11 lit ~
943−157:9 NEWLINE
944−157:9 glyph [
945−157:10 tight lit ~
946−157:12 name value
947−157:17 tight glyph ]
948−157:19 glyph (
949−157:20 tight name f
950−157:22 name value
951−157:27 tight glyph )
952−159:1 DEDENT
953−159:1 DEDENT
954−159:1 DEDENT
955−159:1 DEDENT
956−159:1 NEWLINE
957−159:1 glyph ++
958−159:4 name both
959−159:9 glyph |=
960−159:12 name args
961−159:16 tight glyph =
962−159:17 tight glyph [
963−159:18 tight glyph (
964−159:19 tight name unit
965−159:24 tvar A
966−159:25 tight glyph )
967−159:27 glyph (
968−159:28 tight name unit
969−159:33 tvar B
970−159:34 tight glyph )
971−159:35 tight glyph ]
972−160:3 INDENT
973−160:3 glyph ?-
974−160:6 name args
975−161:5 INDENT
976−161:5 glyph [
977−161:6 tight name first
978−161:12 name second
979−161:18 tight glyph ]
980−162:7 INDENT
981−162:7 glyph ?-
982−162:10 name first
983−163:9 INDENT
984−163:9 lit ~
985−163:11 lit ~
986−164:9 NEWLINE
987−164:9 glyph [
988−164:10 tight lit ~
989−164:12 name a
990−164:13 tight glyph ]
991−165:11 INDENT
992−165:11 glyph ?-
993−165:14 name second
994−166:13 INDENT
995−166:13 lit ~
996−166:15 lit ~
997−167:13 NEWLINE
998−167:13 glyph [
999−167:14 tight lit ~
1000−167:16 name b
1001−167:17 tight glyph ]
1002−167:19 glyph `
1003−167:20 tight glyph [
1004−167:21 tight name a
1005−167:23 name b
1006−167:24 tight glyph ]
1007−169:1 DEDENT
1008−169:1 DEDENT
1009−169:1 DEDENT
1010−169:1 DEDENT
1011−169:1 DEDENT
1012−169:1 DEDENT
1013−169:1 NEWLINE
1014−169:1 glyph ++
1015−169:4 name clap
1016−169:9 glyph |=
1017−169:12 name args
1018−169:16 tight glyph =
1019−169:17 tight glyph [
1020−169:18 tight glyph (
1021−169:19 tight name unit
1022−169:24 tvar A
1023−169:25 tight glyph )
1024−169:27 glyph (
1025−169:28 tight name unit
1026−169:33 tvar A
1027−169:34 tight glyph )
1028−169:36 glyph $-(
1029−169:39 tight glyph [
1030−169:40 tight tvar A
1031−169:42 tvar A
1032−169:43 tight glyph ]
1033−169:45 tvar A
1034−169:46 tight glyph )
1035−169:47 tight glyph ]
1036−170:3 INDENT
1037−170:3 glyph ?-
1038−170:6 name args
1039−171:5 INDENT
1040−171:5 glyph [
1041−171:6 tight name first
1042−171:12 name second
1043−171:19 name combine
1044−171:26 tight glyph ]
1045−172:7 INDENT
1046−172:7 glyph ?-
1047−172:10 name first
1048−173:9 INDENT
1049−173:9 lit ~
1050−173:11 name second
1051−174:9 NEWLINE
1052−174:9 glyph [
1053−174:10 tight lit ~
1054−174:12 name a
1055−174:13 tight glyph ]
1056−175:11 INDENT
1057−175:11 glyph ?-
1058−175:14 name second
1059−176:13 INDENT
1060−176:13 lit ~
1061−176:15 name first
1062−177:13 NEWLINE
1063−177:13 glyph [
1064−177:14 tight lit ~
1065−177:16 name b
1066−177:17 tight glyph ]
1067−177:19 glyph `
1068−177:20 tight glyph (
1069−177:21 tight name combine
1070−177:29 name a
1071−177:31 name b
1072−177:32 tight glyph )
1073−179:1 DEDENT
1074−179:1 DEDENT
1075−179:1 DEDENT
1076−179:1 DEDENT
1077−179:1 DEDENT
1078−179:1 DEDENT
1079−179:1 NEWLINE
1080−179:1 glyph ++
1081−179:4 name clef
1082−179:9 glyph |=
1083−179:12 name args
1084−179:16 tight glyph =
1085−179:17 tight glyph [
1086−179:18 tight glyph (
1087−179:19 tight name unit
1088−179:24 tvar A
1089−179:25 tight glyph )
1090−179:27 glyph (
1091−179:28 tight name unit
1092−179:33 tvar B
1093−179:34 tight glyph )
1094−179:36 glyph $-(
1095−179:39 tight glyph [
1096−179:40 tight tvar A
1097−179:42 tvar B
1098−179:43 tight glyph ]
1099−179:45 glyph (
1100−179:46 tight name unit
1101−179:51 tvar C
1102−179:52 tight glyph )
1103−179:53 tight glyph )
1104−179:54 tight glyph ]
1105−180:3 INDENT
1106−180:3 glyph ?-
1107−180:6 name args
1108−181:5 INDENT
1109−181:5 glyph [
1110−181:6 tight name first
1111−181:12 name second
1112−181:19 name combine
1113−181:26 tight glyph ]
1114−182:7 INDENT
1115−182:7 glyph ?-
1116−182:10 name first
1117−183:9 INDENT
1118−183:9 lit ~
1119−183:11 lit ~
1120−184:9 NEWLINE
1121−184:9 glyph [
1122−184:10 tight lit ~
1123−184:12 name a
1124−184:13 tight glyph ]
1125−185:11 INDENT
1126−185:11 glyph ?-
1127−185:14 name second
1128−186:13 INDENT
1129−186:13 lit ~
1130−186:15 lit ~
1131−187:13 NEWLINE
1132−187:13 glyph [
1133−187:14 tight lit ~
1134−187:16 name b
1135−187:17 tight glyph ]
1136−187:19 glyph (
1137−187:20 tight name combine
1138−187:28 name a
1139−187:30 name b
1140−187:31 tight glyph )
1141−189:1 DEDENT
1142−189:1 DEDENT
1143−189:1 DEDENT
1144−189:1 DEDENT
1145−189:1 DEDENT
1146−189:1 DEDENT
1147−189:1 NEWLINE
1148−189:1 glyph ++
1149−189:4 name skim
1150−189:9 glyph |=
1151−189:12 name args
1152−189:16 tight glyph =
1153−189:17 tight glyph [
1154−189:18 tight glyph (
1155−189:19 tight name list
1156−189:24 tvar A
1157−189:25 tight glyph )
1158−189:27 glyph $-(
1159−189:30 tight tvar A
1160−189:32 glyph ?
1161−189:33 tight glyph )
1162−189:34 tight glyph ]
1163−190:3 INDENT
1164−190:3 glyph ?-
1165−190:6 name args
1166−191:5 INDENT
1167−191:5 glyph [
1168−191:6 tight name xs
1169−191:9 name predicate
1170−191:18 tight glyph ]
1171−192:7 INDENT
1172−192:7 glyph ?-
1173−192:10 name xs
1174−193:9 INDENT
1175−193:9 lit ~
1176−193:11 lit ~
1177−194:9 NEWLINE
1178−194:9 glyph [
1179−194:10 tight name item
1180−194:15 name rest
1181−194:19 tight glyph ]
1182−195:11 INDENT
1183−195:11 glyph ?-
1184−195:14 glyph (
1185−195:15 tight name predicate
1186−195:25 name item
1187−195:29 tight glyph )
1188−196:13 INDENT
1189−196:13 lit %.y
1190−196:17 glyph [
1191−196:18 tight name item
1192−196:23 glyph (
1193−196:24 tight name skim
1194−196:29 name rest
1195−196:34 name predicate
1196−196:43 tight glyph )
1197−196:44 tight glyph ]
1198−197:13 NEWLINE
1199−197:13 lit %.n
1200−197:17 glyph (
1201−197:18 tight name skim
1202−197:23 name rest
1203−197:28 name predicate
1204−197:37 tight glyph )
1205−199:1 DEDENT
1206−199:1 DEDENT
1207−199:1 DEDENT
1208−199:1 DEDENT
1209−199:1 DEDENT
1210−199:1 DEDENT
1211−199:1 NEWLINE
1212−199:1 glyph ++
1213−199:4 name skip
1214−199:9 glyph |=
1215−199:12 name args
1216−199:16 tight glyph =
1217−199:17 tight glyph [
1218−199:18 tight glyph (
1219−199:19 tight name list
1220−199:24 tvar A
1221−199:25 tight glyph )
1222−199:27 glyph $-(
1223−199:30 tight tvar A
1224−199:32 glyph ?
1225−199:33 tight glyph )
1226−199:34 tight glyph ]
1227−200:3 INDENT
1228−200:3 glyph ?-
1229−200:6 name args
1230−201:5 INDENT
1231−201:5 glyph [
1232−201:6 tight name xs
1233−201:9 name predicate
1234−201:18 tight glyph ]
1235−202:7 INDENT
1236−202:7 glyph ?-
1237−202:10 name xs
1238−203:9 INDENT
1239−203:9 lit ~
1240−203:11 lit ~
1241−204:9 NEWLINE
1242−204:9 glyph [
1243−204:10 tight name item
1244−204:15 name rest
1245−204:19 tight glyph ]
1246−205:11 INDENT
1247−205:11 glyph ?-
1248−205:14 glyph (
1249−205:15 tight name predicate
1250−205:25 name item
1251−205:29 tight glyph )
1252−206:13 INDENT
1253−206:13 lit %.y
1254−206:17 glyph (
1255−206:18 tight name skip
1256−206:23 name rest
1257−206:28 name predicate
1258−206:37 tight glyph )
1259−207:13 NEWLINE
1260−207:13 lit %.n
1261−207:17 glyph [
1262−207:18 tight name item
1263−207:23 glyph (
1264−207:24 tight name skip
1265−207:29 name rest
1266−207:34 name predicate
1267−207:43 tight glyph )
1268−207:44 tight glyph ]
1269−209:1 DEDENT
1270−209:1 DEDENT
1271−209:1 DEDENT
1272−209:1 DEDENT
1273−209:1 DEDENT
1274−209:1 DEDENT
1275−209:1 NEWLINE
1276−209:1 glyph ++
1277−209:4 name levy
1278−209:9 glyph |=
1279−209:12 name args
1280−209:16 tight glyph =
1281−209:17 tight glyph [
1282−209:18 tight glyph (
1283−209:19 tight name list
1284−209:24 tvar A
1285−209:25 tight glyph )
1286−209:27 glyph $-(
1287−209:30 tight tvar A
1288−209:32 glyph ?
1289−209:33 tight glyph )
1290−209:34 tight glyph ]
1291−210:3 INDENT
1292−210:3 glyph ?-
1293−210:6 name args
1294−211:5 INDENT
1295−211:5 glyph [
1296−211:6 tight name xs
1297−211:9 name predicate
1298−211:18 tight glyph ]
1299−212:7 INDENT
1300−212:7 glyph ?-
1301−212:10 name xs
1302−213:9 INDENT
1303−213:9 lit ~
1304−213:11 lit %.y
1305−214:9 NEWLINE
1306−214:9 glyph [
1307−214:10 tight name item
1308−214:15 name rest
1309−214:19 tight glyph ]
1310−215:11 INDENT
1311−215:11 glyph ?-
1312−215:14 glyph (
1313−215:15 tight name predicate
1314−215:25 name item
1315−215:29 tight glyph )
1316−216:13 INDENT
1317−216:13 lit %.y
1318−216:17 glyph (
1319−216:18 tight name levy
1320−216:23 name rest
1321−216:28 name predicate
1322−216:37 tight glyph )
1323−217:13 NEWLINE
1324−217:13 lit %.n
1325−217:17 lit %.n
1326−219:1 DEDENT
1327−219:1 DEDENT
1328−219:1 DEDENT
1329−219:1 DEDENT
1330−219:1 DEDENT
1331−219:1 DEDENT
1332−219:1 NEWLINE
1333−219:1 glyph ++
1334−219:4 name lien
1335−219:9 glyph |=
1336−219:12 name args
1337−219:16 tight glyph =
1338−219:17 tight glyph [
1339−219:18 tight glyph (
1340−219:19 tight name list
1341−219:24 tvar A
1342−219:25 tight glyph )
1343−219:27 glyph $-(
1344−219:30 tight tvar A
1345−219:32 glyph ?
1346−219:33 tight glyph )
1347−219:34 tight glyph ]
1348−220:3 INDENT
1349−220:3 glyph ?-
1350−220:6 name args
1351−221:5 INDENT
1352−221:5 glyph [
1353−221:6 tight name xs
1354−221:9 name predicate
1355−221:18 tight glyph ]
1356−222:7 INDENT
1357−222:7 glyph ?-
1358−222:10 name xs
1359−223:9 INDENT
1360−223:9 lit ~
1361−223:11 lit %.n
1362−224:9 NEWLINE
1363−224:9 glyph [
1364−224:10 tight name item
1365−224:15 name rest
1366−224:19 tight glyph ]
1367−225:11 INDENT
1368−225:11 glyph ?-
1369−225:14 glyph (
1370−225:15 tight name predicate
1371−225:25 name item
1372−225:29 tight glyph )
1373−226:13 INDENT
1374−226:13 lit %.y
1375−226:17 lit %.y
1376−227:13 NEWLINE
1377−227:13 lit %.n
1378−227:17 glyph (
1379−227:18 tight name lien
1380−227:23 name rest
1381−227:28 name predicate
1382−227:37 tight glyph )
1383−229:1 DEDENT
1384−229:1 DEDENT
1385−229:1 DEDENT
1386−229:1 DEDENT
1387−229:1 DEDENT
1388−229:1 DEDENT
1389−229:1 NEWLINE
1390−229:1 glyph ++
1391−229:4 name roll
1392−229:9 glyph |=
1393−229:12 name args
1394−229:16 tight glyph =
1395−229:17 tight glyph [
1396−229:18 tight glyph (
1397−229:19 tight name list
1398−229:24 tvar A
1399−229:25 tight glyph )
1400−229:27 tvar B
1401−229:29 glyph $-(
1402−229:32 tight glyph [
1403−229:33 tight tvar A
1404−229:35 tvar B
1405−229:36 tight glyph ]
1406−229:38 tvar B
1407−229:39 tight glyph )
1408−229:40 tight glyph ]
1409−230:3 INDENT
1410−230:3 glyph ?-
1411−230:6 name args
1412−231:5 INDENT
1413−231:5 glyph [
1414−231:6 tight name xs
1415−231:9 name start
1416−231:15 name combine
1417−231:22 tight glyph ]
1418−232:7 INDENT
1419−232:7 glyph ?-
1420−232:10 name xs
1421−233:9 INDENT
1422−233:9 lit ~
1423−233:11 name start
1424−234:9 NEWLINE
1425−234:9 glyph [
1426−234:10 tight name item
1427−234:15 name rest
1428−234:19 tight glyph ]
1429−234:21 glyph (
1430−234:22 tight name roll
1431−234:27 name rest
1432−234:32 glyph (
1433−234:33 tight name combine
1434−234:41 name item
1435−234:46 name start
1436−234:51 tight glyph )
1437−234:53 name combine
1438−234:60 tight glyph )
1439−236:1 DEDENT
1440−236:1 DEDENT
1441−236:1 DEDENT
1442−236:1 DEDENT
1443−236:1 NEWLINE
1444−236:1 glyph ++
1445−236:4 name reel
1446−236:9 glyph |=
1447−236:12 name args
1448−236:16 tight glyph =
1449−236:17 tight glyph [
1450−236:18 tight glyph (
1451−236:19 tight name list
1452−236:24 tvar A
1453−236:25 tight glyph )
1454−236:27 tvar B
1455−236:29 glyph $-(
1456−236:32 tight glyph [
1457−236:33 tight tvar A
1458−236:35 tvar B
1459−236:36 tight glyph ]
1460−236:38 tvar B
1461−236:39 tight glyph )
1462−236:40 tight glyph ]
1463−237:3 INDENT
1464−237:3 glyph ?-
1465−237:6 name args
1466−238:5 INDENT
1467−238:5 glyph [
1468−238:6 tight name xs
1469−238:9 name start
1470−238:15 name combine
1471−238:22 tight glyph ]
1472−239:7 INDENT
1473−239:7 glyph ?-
1474−239:10 name xs
1475−240:9 INDENT
1476−240:9 lit ~
1477−240:11 name start
1478−241:9 NEWLINE
1479−241:9 glyph [
1480−241:10 tight name item
1481−241:15 name rest
1482−241:19 tight glyph ]
1483−241:21 glyph (
1484−241:22 tight name combine
1485−241:30 name item
1486−241:35 glyph (
1487−241:36 tight name reel
1488−241:41 name rest
1489−241:46 name start
1490−241:52 name combine
1491−241:59 tight glyph )
1492−241:60 tight glyph )
1493−243:1 DEDENT
1494−243:1 DEDENT
1495−243:1 DEDENT
1496−243:1 DEDENT
1497−243:1 NEWLINE
1498−243:1 glyph ++
1499−243:4 name flit
1500−243:9 glyph |=
1501−243:12 name predicate
1502−243:21 tight glyph =
1503−243:22 tight glyph $-(
1504−243:25 tight tvar A
1505−243:27 glyph ?
1506−243:28 tight glyph )
1507−244:3 INDENT
1508−244:3 glyph |=
1509−244:6 name value
1510−244:11 tight glyph =
1511−244:12 tight tvar A
1512−245:5 INDENT
1513−245:5 glyph ?-
1514−245:8 glyph (
1515−245:9 tight name predicate
1516−245:19 name value
1517−245:24 tight glyph )
1518−246:7 INDENT
1519−246:7 lit %.y
1520−246:11 glyph `
1521−246:12 tight name value
1522−247:7 NEWLINE
1523−247:7 lit %.n
1524−247:11 lit ~
1525−249:1 DEDENT
1526−249:1 DEDENT
1527−249:1 DEDENT
1528−249:1 NEWLINE
1529−249:1 glyph ++
1530−249:4 name murn
1531−249:9 glyph |=
1532−249:12 name args
1533−249:16 tight glyph =
1534−249:17 tight glyph [
1535−249:18 tight glyph (
1536−249:19 tight name list
1537−249:24 tvar A
1538−249:25 tight glyph )
1539−249:27 glyph $-(
1540−249:30 tight tvar A
1541−249:32 glyph (
1542−249:33 tight name unit
1543−249:38 tvar B
1544−249:39 tight glyph )
1545−249:40 tight glyph )
1546−249:41 tight glyph ]
1547−250:3 INDENT
1548−250:3 glyph ?-
1549−250:6 name args
1550−251:5 INDENT
1551−251:5 glyph [
1552−251:6 tight name xs
1553−251:9 name f
1554−251:10 tight glyph ]
1555−252:7 INDENT
1556−252:7 glyph ?-
1557−252:10 name xs
1558−253:9 INDENT
1559−253:9 lit ~
1560−253:11 lit ~
1561−254:9 NEWLINE
1562−254:9 glyph [
1563−254:10 tight name item
1564−254:15 name rest
1565−254:19 tight glyph ]
1566−255:11 INDENT
1567−255:11 glyph ?-
1568−255:14 glyph (
1569−255:15 tight name f
1570−255:17 name item
1571−255:21 tight glyph )
1572−256:13 INDENT
1573−256:13 lit ~
1574−256:15 glyph (
1575−256:16 tight name murn
1576−256:21 name rest
1577−256:26 name f
1578−256:27 tight glyph )
1579−257:13 NEWLINE
1580−257:13 glyph [
1581−257:14 tight lit ~
1582−257:16 name value
1583−257:21 tight glyph ]
1584−257:23 glyph [
1585−257:24 tight name value
1586−257:30 glyph (
1587−257:31 tight name murn
1588−257:36 name rest
1589−257:41 name f
1590−257:42 tight glyph )
1591−257:43 tight glyph ]
1592−259:1 DEDENT
1593−259:1 DEDENT
1594−259:1 DEDENT
1595−259:1 DEDENT
1596−259:1 DEDENT
1597−259:1 DEDENT
1598−259:1 NEWLINE
1599−259:1 glyph ++
1600−259:4 name join
1601−259:9 glyph |=
1602−259:12 name args
1603−259:16 tight glyph =
1604−259:17 tight glyph [
1605−259:18 tight tvar A
1606−259:20 glyph (
1607−259:21 tight name list
1608−259:26 tvar A
1609−259:27 tight glyph )
1610−259:28 tight glyph ]
1611−260:3 INDENT
1612−260:3 glyph ?-
1613−260:6 name args
1614−261:5 INDENT
1615−261:5 glyph [
1616−261:6 tight name separator
1617−261:16 name xs
1618−261:18 tight glyph ]
1619−262:7 INDENT
1620−262:7 glyph ?-
1621−262:10 name xs
1622−263:9 INDENT
1623−263:9 lit ~
1624−263:11 lit ~
1625−264:9 NEWLINE
1626−264:9 glyph [
1627−264:10 tight name item
1628−264:15 name rest
1629−264:19 tight glyph ]
1630−265:11 INDENT
1631−265:11 glyph ?-
1632−265:14 name rest
1633−266:13 INDENT
1634−266:13 lit ~
1635−266:15 glyph [
1636−266:16 tight name item
1637−266:21 lit ~
1638−266:22 tight glyph ]
1639−267:13 NEWLINE
1640−267:13 glyph [
1641−267:14 tight name next
1642−267:19 name more
1643−267:23 tight glyph ]
1644−267:25 glyph [
1645−267:26 tight name item
1646−267:31 glyph [
1647−267:32 tight name separator
1648−267:42 glyph (
1649−267:43 tight name join
1650−267:48 name separator
1651−267:58 name rest
1652−267:62 tight glyph )
1653−267:63 tight glyph ]
1654−267:64 tight glyph ]
1655−269:1 DEDENT
1656−269:1 DEDENT
1657−269:1 DEDENT
1658−269:1 DEDENT
1659−269:1 DEDENT
1660−269:1 DEDENT
1661−269:1 NEWLINE
1662−269:1 glyph ++
1663−269:4 name snip
1664−269:9 glyph |=
1665−269:12 name xs
1666−269:14 tight glyph =
1667−269:15 tight glyph (
1668−269:16 tight name list
1669−269:21 tvar A
1670−269:22 tight glyph )
1671−270:3 INDENT
1672−270:3 glyph ?-
1673−270:6 name xs
1674−271:5 INDENT
1675−271:5 lit ~
1676−271:7 lit ~
1677−272:5 NEWLINE
1678−272:5 glyph [
1679−272:6 tight name item
1680−272:11 name rest
1681−272:15 tight glyph ]
1682−273:7 INDENT
1683−273:7 glyph ?-
1684−273:10 name rest
1685−274:9 INDENT
1686−274:9 lit ~
1687−274:11 lit ~
1688−275:9 NEWLINE
1689−275:9 glyph [
1690−275:10 tight name next
1691−275:15 name more
1692−275:19 tight glyph ]
1693−275:21 glyph [
1694−275:22 tight name item
1695−275:27 glyph (
1696−275:28 tight name snip
1697−275:33 name rest
1698−275:37 tight glyph )
1699−275:38 tight glyph ]
1700−277:1 DEDENT
1701−277:1 DEDENT
1702−277:1 DEDENT
1703−277:1 DEDENT
1704−277:1 NEWLINE
1705−277:1 glyph ++
1706−277:4 name rear
1707−277:9 glyph |=
1708−277:12 name xs
1709−277:14 tight glyph =
1710−277:15 tight glyph (
1711−277:16 tight name list
1712−277:21 tvar A
1713−277:22 tight glyph )
1714−278:3 INDENT
1715−278:3 glyph ?-
1716−278:6 name xs
1717−279:5 INDENT
1718−279:5 lit ~
1719−279:7 glyph !!
1720−280:5 NEWLINE
1721−280:5 glyph [
1722−280:6 tight name item
1723−280:11 name rest
1724−280:15 tight glyph ]
1725−281:7 INDENT
1726−281:7 glyph ?-
1727−281:10 name rest
1728−282:9 INDENT
1729−282:9 lit ~
1730−282:11 name item
1731−283:9 NEWLINE
1732−283:9 glyph [
1733−283:10 tight name next
1734−283:15 name more
1735−283:19 tight glyph ]
1736−283:21 glyph (
1737−283:22 tight name rear
1738−283:27 name rest
1739−283:31 tight glyph )
1740−283:32 DEDENT
1741−283:32 DEDENT
1742−283:32 DEDENT
1743−283:32 DEDENT
1744−283:32 NEWLINE
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 ]
719+121:1 DEDENT
720+121:1 NEWLINE
721+121:1 glyph +$
722+121:4 name bloq
723+121:9 aura @
724+123:1 NEWLINE
725+123:1 glyph ++
726+123:4 name some
727+123:9 glyph |=
728+123:12 name item
729+123:16 tight glyph =
730+123:17 tight tvar A
731+123:19 glyph `
732+123:20 tight name item
733+125:1 NEWLINE
734+125:1 glyph ++
735+125:4 name lure
736+125:9 glyph |=
737+125:12 name item
738+125:16 tight glyph =
739+125:17 tight tvar A
740+126:3 INDENT
741+126:3 glyph ^-
742+126:6 glyph (
743+126:7 tight name list
744+126:12 tvar A
745+126:13 tight glyph )
746+126:15 glyph [
747+126:16 tight name item
748+126:21 lit ~
749+126:22 tight glyph ]
750+128:1 DEDENT
751+128:1 NEWLINE
752+128:1 glyph ++
753+128:4 name snoc
754+128:9 glyph |=
755+128:12 name args
756+128:16 tight glyph =
757+128:17 tight glyph [
758+128:18 tight glyph (
759+128:19 tight name list
760+128:24 tvar A
761+128:25 tight glyph )
762+128:27 tvar A
763+128:28 tight glyph ]
764+129:3 INDENT
765+129:3 glyph ?-
766+129:6 name args
767+130:5 INDENT
768+130:5 glyph [
769+130:6 tight name xs
770+130:9 name item
771+130:13 tight glyph ]
772+130:15 glyph (
773+130:16 tight name weld
774+130:21 name xs
775+130:24 glyph [
776+130:25 tight name item
777+130:30 lit ~
778+130:31 tight glyph ]
779+130:32 tight glyph )
780+132:1 DEDENT
781+132:1 DEDENT
782+132:1 NEWLINE
783+132:1 glyph ++
784+132:4 name flop
785+132:9 glyph |=
786+132:12 name xs
787+132:14 tight glyph =
788+132:15 tight glyph (
789+132:16 tight name list
790+132:21 tvar A
791+132:22 tight glyph )
792+133:3 INDENT
793+133:3 glyph ++
794+133:6 name reverse-into
795+133:19 glyph |=
796+133:22 name args
797+133:26 tight glyph =
798+133:27 tight glyph [
799+133:28 tight glyph (
800+133:29 tight name list
801+133:34 tvar A
802+133:35 tight glyph )
803+133:37 glyph (
804+133:38 tight name list
805+133:43 tvar A
806+133:44 tight glyph )
807+133:45 tight glyph ]
808+134:5 INDENT
809+134:5 glyph ?-
810+134:8 name args
811+135:7 INDENT
812+135:7 glyph [
813+135:8 tight name rest
814+135:13 name acc
815+135:16 tight glyph ]
816+136:9 INDENT
817+136:9 glyph ?-
818+136:12 name rest
819+137:11 INDENT
820+137:11 lit ~
821+137:13 name acc
822+138:11 NEWLINE
823+138:11 glyph [
824+138:12 tight name item
825+138:17 name more
826+138:21 tight glyph ]
827+138:23 glyph (
828+138:24 tight name reverse-into
829+138:37 name more
830+138:42 glyph [
831+138:43 tight name item
832+138:48 name acc
833+138:51 tight glyph ]
834+138:52 tight glyph )
835+139:3 DEDENT
836+139:3 DEDENT
837+139:3 DEDENT
838+139:3 DEDENT
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+141:1 DEDENT
846+141:1 NEWLINE
847+141:1 glyph ++
848+141:4 name drop
849+141:9 glyph |=
850+141:12 name maybe
851+141:17 tight glyph =
852+141:18 tight glyph (
853+141:19 tight name unit
854+141:24 tvar A
855+141:25 tight glyph )
856+142:3 INDENT
857+142:3 glyph ?-
858+142:6 name maybe
859+143:5 INDENT
860+143:5 lit ~
861+143:7 lit ~
862+144:5 NEWLINE
863+144:5 glyph [
864+144:6 tight lit ~
865+144:8 name value
866+144:13 tight glyph ]
867+144:15 glyph [
868+144:16 tight name value
869+144:22 lit ~
870+144:23 tight glyph ]
871+146:1 DEDENT
872+146:1 DEDENT
873+146:1 NEWLINE
874+146:1 glyph ++
875+146:4 name bind
876+146:9 glyph |=
877+146:12 name args
878+146:16 tight glyph =
879+146:17 tight glyph [
880+146:18 tight glyph (
881+146:19 tight name unit
882+146:24 tvar A
883+146:25 tight glyph )
884+146:27 glyph $-(
885+146:30 tight tvar A
886+146:32 tvar B
887+146:33 tight glyph )
888+146:34 tight glyph ]
889+147:3 INDENT
890+147:3 glyph ?-
891+147:6 name args
892+148:5 INDENT
893+148:5 glyph [
894+148:6 tight name maybe
895+148:12 name f
896+148:13 tight glyph ]
897+149:7 INDENT
898+149:7 glyph ?-
899+149:10 name maybe
900+150:9 INDENT
901+150:9 lit ~
902+150:11 lit ~
903+151:9 NEWLINE
904+151:9 glyph [
905+151:10 tight lit ~
906+151:12 name value
907+151:17 tight glyph ]
908+151:19 glyph `
909+151:20 tight glyph (
910+151:21 tight name f
911+151:23 name value
912+151:28 tight glyph )
913+153:1 DEDENT
914+153:1 DEDENT
915+153:1 DEDENT
916+153:1 DEDENT
917+153:1 NEWLINE
918+153:1 glyph ++
919+153:4 name biff
920+153:9 glyph |=
921+153:12 name args
922+153:16 tight glyph =
923+153:17 tight glyph [
924+153:18 tight glyph (
925+153:19 tight name unit
926+153:24 tvar A
927+153:25 tight glyph )
928+153:27 glyph $-(
929+153:30 tight tvar A
930+153:32 glyph (
931+153:33 tight name unit
932+153:38 tvar B
933+153:39 tight glyph )
934+153:40 tight glyph )
935+153:41 tight glyph ]
936+154:3 INDENT
937+154:3 glyph ?-
938+154:6 name args
939+155:5 INDENT
940+155:5 glyph [
941+155:6 tight name maybe
942+155:12 name f
943+155:13 tight glyph ]
944+156:7 INDENT
945+156:7 glyph ?-
946+156:10 name maybe
947+157:9 INDENT
948+157:9 lit ~
949+157:11 lit ~
950+158:9 NEWLINE
951+158:9 glyph [
952+158:10 tight lit ~
953+158:12 name value
954+158:17 tight glyph ]
955+158:19 glyph (
956+158:20 tight name f
957+158:22 name value
958+158:27 tight glyph )
959+160:1 DEDENT
960+160:1 DEDENT
961+160:1 DEDENT
962+160:1 DEDENT
963+160:1 NEWLINE
964+160:1 glyph ++
965+160:4 name both
966+160:9 glyph |=
967+160:12 name args
968+160:16 tight glyph =
969+160:17 tight glyph [
970+160:18 tight glyph (
971+160:19 tight name unit
972+160:24 tvar A
973+160:25 tight glyph )
974+160:27 glyph (
975+160:28 tight name unit
976+160:33 tvar B
977+160:34 tight glyph )
978+160:35 tight glyph ]
979+161:3 INDENT
980+161:3 glyph ?-
981+161:6 name args
982+162:5 INDENT
983+162:5 glyph [
984+162:6 tight name first
985+162:12 name second
986+162:18 tight glyph ]
987+163:7 INDENT
988+163:7 glyph ?-
989+163:10 name first
990+164:9 INDENT
991+164:9 lit ~
992+164:11 lit ~
993+165:9 NEWLINE
994+165:9 glyph [
995+165:10 tight lit ~
996+165:12 name a
997+165:13 tight glyph ]
998+166:11 INDENT
999+166:11 glyph ?-
1000+166:14 name second
1001+167:13 INDENT
1002+167:13 lit ~
1003+167:15 lit ~
1004+168:13 NEWLINE
1005+168:13 glyph [
1006+168:14 tight lit ~
1007+168:16 name b
1008+168:17 tight glyph ]
1009+168:19 glyph `
1010+168:20 tight glyph [
1011+168:21 tight name a
1012+168:23 name b
1013+168:24 tight glyph ]
1014+170:1 DEDENT
1015+170:1 DEDENT
1016+170:1 DEDENT
1017+170:1 DEDENT
1018+170:1 DEDENT
1019+170:1 DEDENT
1020+170:1 NEWLINE
1021+170:1 glyph ++
1022+170:4 name clap
1023+170:9 glyph |=
1024+170:12 name args
1025+170:16 tight glyph =
1026+170:17 tight glyph [
1027+170:18 tight glyph (
1028+170:19 tight name unit
1029+170:24 tvar A
1030+170:25 tight glyph )
1031+170:27 glyph (
1032+170:28 tight name unit
1033+170:33 tvar A
1034+170:34 tight glyph )
1035+170:36 glyph $-(
1036+170:39 tight glyph [
1037+170:40 tight tvar A
1038+170:42 tvar A
1039+170:43 tight glyph ]
1040+170:45 tvar A
1041+170:46 tight glyph )
1042+170:47 tight glyph ]
1043+171:3 INDENT
1044+171:3 glyph ?-
1045+171:6 name args
1046+172:5 INDENT
1047+172:5 glyph [
1048+172:6 tight name first
1049+172:12 name second
1050+172:19 name combine
1051+172:26 tight glyph ]
1052+173:7 INDENT
1053+173:7 glyph ?-
1054+173:10 name first
1055+174:9 INDENT
1056+174:9 lit ~
1057+174:11 name second
1058+175:9 NEWLINE
1059+175:9 glyph [
1060+175:10 tight lit ~
1061+175:12 name a
1062+175:13 tight glyph ]
1063+176:11 INDENT
1064+176:11 glyph ?-
1065+176:14 name second
1066+177:13 INDENT
1067+177:13 lit ~
1068+177:15 name first
1069+178:13 NEWLINE
1070+178:13 glyph [
1071+178:14 tight lit ~
1072+178:16 name b
1073+178:17 tight glyph ]
1074+178:19 glyph `
1075+178:20 tight glyph (
1076+178:21 tight name combine
1077+178:29 name a
1078+178:31 name b
1079+178:32 tight glyph )
1080+180:1 DEDENT
1081+180:1 DEDENT
1082+180:1 DEDENT
1083+180:1 DEDENT
1084+180:1 DEDENT
1085+180:1 DEDENT
1086+180:1 NEWLINE
1087+180:1 glyph ++
1088+180:4 name clef
1089+180:9 glyph |=
1090+180:12 name args
1091+180:16 tight glyph =
1092+180:17 tight glyph [
1093+180:18 tight glyph (
1094+180:19 tight name unit
1095+180:24 tvar A
1096+180:25 tight glyph )
1097+180:27 glyph (
1098+180:28 tight name unit
1099+180:33 tvar B
1100+180:34 tight glyph )
1101+180:36 glyph $-(
1102+180:39 tight glyph [
1103+180:40 tight tvar A
1104+180:42 tvar B
1105+180:43 tight glyph ]
1106+180:45 glyph (
1107+180:46 tight name unit
1108+180:51 tvar C
1109+180:52 tight glyph )
1110+180:53 tight glyph )
1111+180:54 tight glyph ]
1112+181:3 INDENT
1113+181:3 glyph ?-
1114+181:6 name args
1115+182:5 INDENT
1116+182:5 glyph [
1117+182:6 tight name first
1118+182:12 name second
1119+182:19 name combine
1120+182:26 tight glyph ]
1121+183:7 INDENT
1122+183:7 glyph ?-
1123+183:10 name first
1124+184:9 INDENT
1125+184:9 lit ~
1126+184:11 lit ~
1127+185:9 NEWLINE
1128+185:9 glyph [
1129+185:10 tight lit ~
1130+185:12 name a
1131+185:13 tight glyph ]
1132+186:11 INDENT
1133+186:11 glyph ?-
1134+186:14 name second
1135+187:13 INDENT
1136+187:13 lit ~
1137+187:15 lit ~
1138+188:13 NEWLINE
1139+188:13 glyph [
1140+188:14 tight lit ~
1141+188:16 name b
1142+188:17 tight glyph ]
1143+188:19 glyph (
1144+188:20 tight name combine
1145+188:28 name a
1146+188:30 name b
1147+188:31 tight glyph )
1148+190:1 DEDENT
1149+190:1 DEDENT
1150+190:1 DEDENT
1151+190:1 DEDENT
1152+190:1 DEDENT
1153+190:1 DEDENT
1154+190:1 NEWLINE
1155+190:1 glyph ++
1156+190:4 name skim
1157+190:9 glyph |=
1158+190:12 name args
1159+190:16 tight glyph =
1160+190:17 tight glyph [
1161+190:18 tight glyph (
1162+190:19 tight name list
1163+190:24 tvar A
1164+190:25 tight glyph )
1165+190:27 glyph $-(
1166+190:30 tight tvar A
1167+190:32 glyph ?
1168+190:33 tight glyph )
1169+190:34 tight glyph ]
1170+191:3 INDENT
1171+191:3 glyph ?-
1172+191:6 name args
1173+192:5 INDENT
1174+192:5 glyph [
1175+192:6 tight name xs
1176+192:9 name predicate
1177+192:18 tight glyph ]
1178+193:7 INDENT
1179+193:7 glyph ?-
1180+193:10 name xs
1181+194:9 INDENT
1182+194:9 lit ~
1183+194:11 lit ~
1184+195:9 NEWLINE
1185+195:9 glyph [
1186+195:10 tight name item
1187+195:15 name rest
1188+195:19 tight glyph ]
1189+196:11 INDENT
1190+196:11 glyph ?-
1191+196:14 glyph (
1192+196:15 tight name predicate
1193+196:25 name item
1194+196:29 tight glyph )
1195+197:13 INDENT
1196+197:13 lit %.y
1197+197:17 glyph [
1198+197:18 tight name item
1199+197:23 glyph (
1200+197:24 tight name skim
1201+197:29 name rest
1202+197:34 name predicate
1203+197:43 tight glyph )
1204+197:44 tight glyph ]
1205+198:13 NEWLINE
1206+198:13 lit %.n
1207+198:17 glyph (
1208+198:18 tight name skim
1209+198:23 name rest
1210+198:28 name predicate
1211+198:37 tight glyph )
1212+200:1 DEDENT
1213+200:1 DEDENT
1214+200:1 DEDENT
1215+200:1 DEDENT
1216+200:1 DEDENT
1217+200:1 DEDENT
1218+200:1 NEWLINE
1219+200:1 glyph ++
1220+200:4 name skip
1221+200:9 glyph |=
1222+200:12 name args
1223+200:16 tight glyph =
1224+200:17 tight glyph [
1225+200:18 tight glyph (
1226+200:19 tight name list
1227+200:24 tvar A
1228+200:25 tight glyph )
1229+200:27 glyph $-(
1230+200:30 tight tvar A
1231+200:32 glyph ?
1232+200:33 tight glyph )
1233+200:34 tight glyph ]
1234+201:3 INDENT
1235+201:3 glyph ?-
1236+201:6 name args
1237+202:5 INDENT
1238+202:5 glyph [
1239+202:6 tight name xs
1240+202:9 name predicate
1241+202:18 tight glyph ]
1242+203:7 INDENT
1243+203:7 glyph ?-
1244+203:10 name xs
1245+204:9 INDENT
1246+204:9 lit ~
1247+204:11 lit ~
1248+205:9 NEWLINE
1249+205:9 glyph [
1250+205:10 tight name item
1251+205:15 name rest
1252+205:19 tight glyph ]
1253+206:11 INDENT
1254+206:11 glyph ?-
1255+206:14 glyph (
1256+206:15 tight name predicate
1257+206:25 name item
1258+206:29 tight glyph )
1259+207:13 INDENT
1260+207:13 lit %.y
1261+207:17 glyph (
1262+207:18 tight name skip
1263+207:23 name rest
1264+207:28 name predicate
1265+207:37 tight glyph )
1266+208:13 NEWLINE
1267+208:13 lit %.n
1268+208:17 glyph [
1269+208:18 tight name item
1270+208:23 glyph (
1271+208:24 tight name skip
1272+208:29 name rest
1273+208:34 name predicate
1274+208:43 tight glyph )
1275+208:44 tight glyph ]
1276+210:1 DEDENT
1277+210:1 DEDENT
1278+210:1 DEDENT
1279+210:1 DEDENT
1280+210:1 DEDENT
1281+210:1 DEDENT
1282+210:1 NEWLINE
1283+210:1 glyph ++
1284+210:4 name levy
1285+210:9 glyph |=
1286+210:12 name args
1287+210:16 tight glyph =
1288+210:17 tight glyph [
1289+210:18 tight glyph (
1290+210:19 tight name list
1291+210:24 tvar A
1292+210:25 tight glyph )
1293+210:27 glyph $-(
1294+210:30 tight tvar A
1295+210:32 glyph ?
1296+210:33 tight glyph )
1297+210:34 tight glyph ]
1298+211:3 INDENT
1299+211:3 glyph ?-
1300+211:6 name args
1301+212:5 INDENT
1302+212:5 glyph [
1303+212:6 tight name xs
1304+212:9 name predicate
1305+212:18 tight glyph ]
1306+213:7 INDENT
1307+213:7 glyph ?-
1308+213:10 name xs
1309+214:9 INDENT
1310+214:9 lit ~
1311+214:11 lit %.y
1312+215:9 NEWLINE
1313+215:9 glyph [
1314+215:10 tight name item
1315+215:15 name rest
1316+215:19 tight glyph ]
1317+216:11 INDENT
1318+216:11 glyph ?-
1319+216:14 glyph (
1320+216:15 tight name predicate
1321+216:25 name item
1322+216:29 tight glyph )
1323+217:13 INDENT
1324+217:13 lit %.y
1325+217:17 glyph (
1326+217:18 tight name levy
1327+217:23 name rest
1328+217:28 name predicate
1329+217:37 tight glyph )
1330+218:13 NEWLINE
1331+218:13 lit %.n
1332+218:17 lit %.n
1333+220:1 DEDENT
1334+220:1 DEDENT
1335+220:1 DEDENT
1336+220:1 DEDENT
1337+220:1 DEDENT
1338+220:1 DEDENT
1339+220:1 NEWLINE
1340+220:1 glyph ++
1341+220:4 name lien
1342+220:9 glyph |=
1343+220:12 name args
1344+220:16 tight glyph =
1345+220:17 tight glyph [
1346+220:18 tight glyph (
1347+220:19 tight name list
1348+220:24 tvar A
1349+220:25 tight glyph )
1350+220:27 glyph $-(
1351+220:30 tight tvar A
1352+220:32 glyph ?
1353+220:33 tight glyph )
1354+220:34 tight glyph ]
1355+221:3 INDENT
1356+221:3 glyph ?-
1357+221:6 name args
1358+222:5 INDENT
1359+222:5 glyph [
1360+222:6 tight name xs
1361+222:9 name predicate
1362+222:18 tight glyph ]
1363+223:7 INDENT
1364+223:7 glyph ?-
1365+223:10 name xs
1366+224:9 INDENT
1367+224:9 lit ~
1368+224:11 lit %.n
1369+225:9 NEWLINE
1370+225:9 glyph [
1371+225:10 tight name item
1372+225:15 name rest
1373+225:19 tight glyph ]
1374+226:11 INDENT
1375+226:11 glyph ?-
1376+226:14 glyph (
1377+226:15 tight name predicate
1378+226:25 name item
1379+226:29 tight glyph )
1380+227:13 INDENT
1381+227:13 lit %.y
1382+227:17 lit %.y
1383+228:13 NEWLINE
1384+228:13 lit %.n
1385+228:17 glyph (
1386+228:18 tight name lien
1387+228:23 name rest
1388+228:28 name predicate
1389+228:37 tight glyph )
1390+230:1 DEDENT
1391+230:1 DEDENT
1392+230:1 DEDENT
1393+230:1 DEDENT
1394+230:1 DEDENT
1395+230:1 DEDENT
1396+230:1 NEWLINE
1397+230:1 glyph ++
1398+230:4 name roll
1399+230:9 glyph |=
1400+230:12 name args
1401+230:16 tight glyph =
1402+230:17 tight glyph [
1403+230:18 tight glyph (
1404+230:19 tight name list
1405+230:24 tvar A
1406+230:25 tight glyph )
1407+230:27 tvar B
1408+230:29 glyph $-(
1409+230:32 tight glyph [
1410+230:33 tight tvar A
1411+230:35 tvar B
1412+230:36 tight glyph ]
1413+230:38 tvar B
1414+230:39 tight glyph )
1415+230:40 tight glyph ]
1416+231:3 INDENT
1417+231:3 glyph ?-
1418+231:6 name args
1419+232:5 INDENT
1420+232:5 glyph [
1421+232:6 tight name xs
1422+232:9 name start
1423+232:15 name combine
1424+232:22 tight glyph ]
1425+233:7 INDENT
1426+233:7 glyph ?-
1427+233:10 name xs
1428+234:9 INDENT
1429+234:9 lit ~
1430+234:11 name start
1431+235:9 NEWLINE
1432+235:9 glyph [
1433+235:10 tight name item
1434+235:15 name rest
1435+235:19 tight glyph ]
1436+235:21 glyph (
1437+235:22 tight name roll
1438+235:27 name rest
1439+235:32 glyph (
1440+235:33 tight name combine
1441+235:41 name item
1442+235:46 name start
1443+235:51 tight glyph )
1444+235:53 name combine
1445+235:60 tight glyph )
1446+237:1 DEDENT
1447+237:1 DEDENT
1448+237:1 DEDENT
1449+237:1 DEDENT
1450+237:1 NEWLINE
1451+237:1 glyph ++
1452+237:4 name reel
1453+237:9 glyph |=
1454+237:12 name args
1455+237:16 tight glyph =
1456+237:17 tight glyph [
1457+237:18 tight glyph (
1458+237:19 tight name list
1459+237:24 tvar A
1460+237:25 tight glyph )
1461+237:27 tvar B
1462+237:29 glyph $-(
1463+237:32 tight glyph [
1464+237:33 tight tvar A
1465+237:35 tvar B
1466+237:36 tight glyph ]
1467+237:38 tvar B
1468+237:39 tight glyph )
1469+237:40 tight glyph ]
1470+238:3 INDENT
1471+238:3 glyph ?-
1472+238:6 name args
1473+239:5 INDENT
1474+239:5 glyph [
1475+239:6 tight name xs
1476+239:9 name start
1477+239:15 name combine
1478+239:22 tight glyph ]
1479+240:7 INDENT
1480+240:7 glyph ?-
1481+240:10 name xs
1482+241:9 INDENT
1483+241:9 lit ~
1484+241:11 name start
1485+242:9 NEWLINE
1486+242:9 glyph [
1487+242:10 tight name item
1488+242:15 name rest
1489+242:19 tight glyph ]
1490+242:21 glyph (
1491+242:22 tight name combine
1492+242:30 name item
1493+242:35 glyph (
1494+242:36 tight name reel
1495+242:41 name rest
1496+242:46 name start
1497+242:52 name combine
1498+242:59 tight glyph )
1499+242:60 tight glyph )
1500+244:1 DEDENT
1501+244:1 DEDENT
1502+244:1 DEDENT
1503+244:1 DEDENT
1504+244:1 NEWLINE
1505+244:1 glyph ++
1506+244:4 name flit
1507+244:9 glyph |=
1508+244:12 name predicate
1509+244:21 tight glyph =
1510+244:22 tight glyph $-(
1511+244:25 tight tvar A
1512+244:27 glyph ?
1513+244:28 tight glyph )
1514+245:3 INDENT
1515+245:3 glyph |=
1516+245:6 name value
1517+245:11 tight glyph =
1518+245:12 tight tvar A
1519+246:5 INDENT
1520+246:5 glyph ?-
1521+246:8 glyph (
1522+246:9 tight name predicate
1523+246:19 name value
1524+246:24 tight glyph )
1525+247:7 INDENT
1526+247:7 lit %.y
1527+247:11 glyph `
1528+247:12 tight name value
1529+248:7 NEWLINE
1530+248:7 lit %.n
1531+248:11 lit ~
1532+250:1 DEDENT
1533+250:1 DEDENT
1534+250:1 DEDENT
1535+250:1 NEWLINE
1536+250:1 glyph ++
1537+250:4 name murn
1538+250:9 glyph |=
1539+250:12 name args
1540+250:16 tight glyph =
1541+250:17 tight glyph [
1542+250:18 tight glyph (
1543+250:19 tight name list
1544+250:24 tvar A
1545+250:25 tight glyph )
1546+250:27 glyph $-(
1547+250:30 tight tvar A
1548+250:32 glyph (
1549+250:33 tight name unit
1550+250:38 tvar B
1551+250:39 tight glyph )
1552+250:40 tight glyph )
1553+250:41 tight glyph ]
1554+251:3 INDENT
1555+251:3 glyph ?-
1556+251:6 name args
1557+252:5 INDENT
1558+252:5 glyph [
1559+252:6 tight name xs
1560+252:9 name f
1561+252:10 tight glyph ]
1562+253:7 INDENT
1563+253:7 glyph ?-
1564+253:10 name xs
1565+254:9 INDENT
1566+254:9 lit ~
1567+254:11 lit ~
1568+255:9 NEWLINE
1569+255:9 glyph [
1570+255:10 tight name item
1571+255:15 name rest
1572+255:19 tight glyph ]
1573+256:11 INDENT
1574+256:11 glyph ?-
1575+256:14 glyph (
1576+256:15 tight name f
1577+256:17 name item
1578+256:21 tight glyph )
1579+257:13 INDENT
1580+257:13 lit ~
1581+257:15 glyph (
1582+257:16 tight name murn
1583+257:21 name rest
1584+257:26 name f
1585+257:27 tight glyph )
1586+258:13 NEWLINE
1587+258:13 glyph [
1588+258:14 tight lit ~
1589+258:16 name value
1590+258:21 tight glyph ]
1591+258:23 glyph [
1592+258:24 tight name value
1593+258:30 glyph (
1594+258:31 tight name murn
1595+258:36 name rest
1596+258:41 name f
1597+258:42 tight glyph )
1598+258:43 tight glyph ]
1599+260:1 DEDENT
1600+260:1 DEDENT
1601+260:1 DEDENT
1602+260:1 DEDENT
1603+260:1 DEDENT
1604+260:1 DEDENT
1605+260:1 NEWLINE
1606+260:1 glyph ++
1607+260:4 name join
1608+260:9 glyph |=
1609+260:12 name args
1610+260:16 tight glyph =
1611+260:17 tight glyph [
1612+260:18 tight tvar A
1613+260:20 glyph (
1614+260:21 tight name list
1615+260:26 tvar A
1616+260:27 tight glyph )
1617+260:28 tight glyph ]
1618+261:3 INDENT
1619+261:3 glyph ?-
1620+261:6 name args
1621+262:5 INDENT
1622+262:5 glyph [
1623+262:6 tight name separator
1624+262:16 name xs
1625+262:18 tight glyph ]
1626+263:7 INDENT
1627+263:7 glyph ?-
1628+263:10 name xs
1629+264:9 INDENT
1630+264:9 lit ~
1631+264:11 lit ~
1632+265:9 NEWLINE
1633+265:9 glyph [
1634+265:10 tight name item
1635+265:15 name rest
1636+265:19 tight glyph ]
1637+266:11 INDENT
1638+266:11 glyph ?-
1639+266:14 name rest
1640+267:13 INDENT
1641+267:13 lit ~
1642+267:15 glyph [
1643+267:16 tight name item
1644+267:21 lit ~
1645+267:22 tight glyph ]
1646+268:13 NEWLINE
1647+268:13 glyph [
1648+268:14 tight name next
1649+268:19 name more
1650+268:23 tight glyph ]
1651+268:25 glyph [
1652+268:26 tight name item
1653+268:31 glyph [
1654+268:32 tight name separator
1655+268:42 glyph (
1656+268:43 tight name join
1657+268:48 name separator
1658+268:58 name rest
1659+268:62 tight glyph )
1660+268:63 tight glyph ]
1661+268:64 tight glyph ]
1662+270:1 DEDENT
1663+270:1 DEDENT
1664+270:1 DEDENT
1665+270:1 DEDENT
1666+270:1 DEDENT
1667+270:1 DEDENT
1668+270:1 NEWLINE
1669+270:1 glyph ++
1670+270:4 name snip
1671+270:9 glyph |=
1672+270:12 name xs
1673+270:14 tight glyph =
1674+270:15 tight glyph (
1675+270:16 tight name list
1676+270:21 tvar A
1677+270:22 tight glyph )
1678+271:3 INDENT
1679+271:3 glyph ?-
1680+271:6 name xs
1681+272:5 INDENT
1682+272:5 lit ~
1683+272:7 lit ~
1684+273:5 NEWLINE
1685+273:5 glyph [
1686+273:6 tight name item
1687+273:11 name rest
1688+273:15 tight glyph ]
1689+274:7 INDENT
1690+274:7 glyph ?-
1691+274:10 name rest
1692+275:9 INDENT
1693+275:9 lit ~
1694+275:11 lit ~
1695+276:9 NEWLINE
1696+276:9 glyph [
1697+276:10 tight name next
1698+276:15 name more
1699+276:19 tight glyph ]
1700+276:21 glyph [
1701+276:22 tight name item
1702+276:27 glyph (
1703+276:28 tight name snip
1704+276:33 name rest
1705+276:37 tight glyph )
1706+276:38 tight glyph ]
1707+278:1 DEDENT
1708+278:1 DEDENT
1709+278:1 DEDENT
1710+278:1 DEDENT
1711+278:1 NEWLINE
1712+278:1 glyph ++
1713+278:4 name rear
1714+278:9 glyph |=
1715+278:12 name xs
1716+278:14 tight glyph =
1717+278:15 tight glyph (
1718+278:16 tight name list
1719+278:21 tvar A
1720+278:22 tight glyph )
1721+279:3 INDENT
1722+279:3 glyph ?-
1723+279:6 name xs
1724+280:5 INDENT
1725+280:5 lit ~
1726+280:7 glyph !!
1727+281:5 NEWLINE
1728+281:5 glyph [
1729+281:6 tight name item
1730+281:11 name rest
1731+281:15 tight glyph ]
1732+282:7 INDENT
1733+282:7 glyph ?-
1734+282:10 name rest
1735+283:9 INDENT
1736+283:9 lit ~
1737+283:11 name item
1738+284:9 NEWLINE
1739+284:9 glyph [
1740+284:10 tight name next
1741+284:15 name more
1742+284:19 tight glyph ]
1743+284:21 glyph (
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 @@
8787 (arm 39:5
8888 (cell 39:5 (bind 39:6 xs) (bind 39:9 ys))
8989 (body 40:7
90− (branch 40:7
91− (wing 40:10 xs)
92− (arm 41:9 (lit 41:9 ~) (wing 41:11 ys))
93− (arm 42:9
94− (cell 42:9 (bind 42:10 item) (bind 42:15 rest))
95− (tuple 42:21
96− (wing 42:22 item)
97− (group 42:27
98− (call 42:28 (wing 42:28 weld) (wing 42:33 rest) (wing 42:38 ys))))))))))))
99− (value 44:1 turn
100− (gate 44:9
101− (face 44:12 args
102− (cell 44:17
103− (apply 44:18 list (tvar 44:24 A))
104− (fn 44:27 (tvar 44:30 A) (tvar 44:32 B))))
105− (body 45:3
106− (branch 45:3
107− (wing 45:6 args)
108− (arm 46:5
109− (cell 46:5 (bind 46:6 xs) (bind 46:9 f))
110− (body 47:7
111− (branch 47:7
112− (wing 47:10 xs)
113− (arm 48:9 (lit 48:9 ~) (lit 48:11 ~))
114− (arm 49:9
115− (cell 49:9 (bind 49:10 item) (bind 49:15 rest))
116− (tuple 49:21
117− (group 49:22
118− (call 49:23 (wing 49:23 f) (wing 49:25 item)))
119− (group 49:31
120− (call 49:32 (wing 49:32 turn) (wing 49:37 rest) (wing 49:42 f))))))))))))
121− (mold 51:1 dime
122− (cell 51:9
123− (face 51:10 p (aura 51:12 @ta))
124− (face 51:16 q (aura 51:18 @))))
125− (mold 53:1 hair
126− (cell 53:9
127− (face 53:10 p (aura 53:12 @ud))
128− (face 53:16 q (aura 53:18 @ud))))
129− (mold 55:1 pint
130− (cell 55:9
131− (face 55:10 p
132− (cell 55:12
133− (face 55:13 p (aura 55:15 @))
134− (face 55:17 q (aura 55:19 @))))
135− (face 55:22 q
136− (cell 55:24
137− (face 55:25 p (aura 55:27 @))
138− (face 55:29 q (aura 55:31 @))))))
139− (mold 57:1 coin
140− (union 58:3
141− (cell 58:3
142− (const 58:4 %$)
143− (face 58:7 p (ref 58:9 dime)))
90+ (cast 40:7
91+ (apply 40:10 list (tvar 40:16 A))
92+ (body 41:9
93+ (branch 41:9
94+ (wing 41:12 xs)
95+ (arm 42:11 (lit 42:11 ~) (wing 42:13 ys))
96+ (arm 43:11
97+ (cell 43:11 (bind 43:12 item) (bind 43:17 rest))
98+ (tuple 43:23
99+ (wing 43:24 item)
100+ (group 43:29
101+ (call 43:30 (wing 43:30 weld) (wing 43:35 rest) (wing 43:40 ys))))))))))))))
102+ (value 45:1 turn
103+ (gate 45:9
104+ (face 45:12 args
105+ (cell 45:17
106+ (apply 45:18 list (tvar 45:24 A))
107+ (fn 45:27 (tvar 45:30 A) (tvar 45:32 B))))
108+ (body 46:3
109+ (branch 46:3
110+ (wing 46:6 args)
111+ (arm 47:5
112+ (cell 47:5 (bind 47:6 xs) (bind 47:9 f))
113+ (body 48:7
114+ (branch 48:7
115+ (wing 48:10 xs)
116+ (arm 49:9 (lit 49:9 ~) (lit 49:11 ~))
117+ (arm 50:9
118+ (cell 50:9 (bind 50:10 item) (bind 50:15 rest))
119+ (tuple 50:21
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))))))))))))
124+ (mold 52:1 dime
125+ (cell 52:9
126+ (face 52:10 p (aura 52:12 @ta))
127+ (face 52:16 q (aura 52:18 @))))
128+ (mold 54:1 hair
129+ (cell 54:9
130+ (face 54:10 p (aura 54:12 @ud))
131+ (face 54:16 q (aura 54:18 @ud))))
132+ (mold 56:1 pint
133+ (cell 56:9
134+ (face 56:10 p
135+ (cell 56:12
136+ (face 56:13 p (aura 56:15 @))
137+ (face 56:17 q (aura 56:19 @))))
138+ (face 56:22 q
139+ (cell 56:24
140+ (face 56:25 p (aura 56:27 @))
141+ (face 56:29 q (aura 56:31 @))))))
142+ (mold 58:1 coin
143+ (union 59:3
144144 (cell 59:3
145− (const 59:4 %blob)
146− (face 59:10 p (noun 59:12)))
145+ (const 59:4 %$)
146+ (face 59:7 p (ref 59:9 dime)))
147147 (cell 60:3
148− (const 60:4 %many)
149− (face 60:10 p
150− (apply 60:12 list (ref 60:18 coin))))))
151− (mold 62:1 pair
152− (generic 62:9 A B
153− (cell 62:18
154− (face 62:19 p (tvar 62:21 A))
155− (face 62:23 q (tvar 62:25 B)))))
156− (mold 64:1 trel
157− (generic 64:9 A B C
158− (cell 64:20
159− (face 64:21 p (tvar 64:23 A))
160− (face 64:25 q (tvar 64:27 B))
161− (face 64:29 r (tvar 64:31 C)))))
162− (mold 66:1 qual
163− (generic 66:9 A B C D
164− (cell 66:22
165− (face 66:23 p (tvar 66:25 A))
166− (face 66:27 q (tvar 66:29 B))
167− (face 66:31 r (tvar 66:33 C))
168− (face 66:35 s (tvar 66:37 D)))))
169− (mold 68:1 cord (aura 68:9 @t))
170− (mold 70:1 knot (aura 70:9 @ta))
171− (mold 72:1 tape
172− (apply 72:9 list (aura 72:15 @tD)))
173− (mold 74:1 path
174− (apply 74:9 list (ref 74:15 knot)))
175− (mold 76:1 tank
176− (union 77:3
177− (ref 77:3 cord)
178− (cell 78:3
179− (const 78:4 %leaf)
180− (face 78:10 p (ref 78:12 tape)))
148+ (const 60:4 %blob)
149+ (face 60:10 p (noun 60:12)))
150+ (cell 61:3
151+ (const 61:4 %many)
152+ (face 61:10 p
153+ (apply 61:12 list (ref 61:18 coin))))))
154+ (mold 63:1 pair
155+ (generic 63:9 A B
156+ (cell 63:18
157+ (face 63:19 p (tvar 63:21 A))
158+ (face 63:23 q (tvar 63:25 B)))))
159+ (mold 65:1 trel
160+ (generic 65:9 A B C
161+ (cell 65:20
162+ (face 65:21 p (tvar 65:23 A))
163+ (face 65:25 q (tvar 65:27 B))
164+ (face 65:29 r (tvar 65:31 C)))))
165+ (mold 67:1 qual
166+ (generic 67:9 A B C D
167+ (cell 67:22
168+ (face 67:23 p (tvar 67:25 A))
169+ (face 67:27 q (tvar 67:29 B))
170+ (face 67:31 r (tvar 67:33 C))
171+ (face 67:35 s (tvar 67:37 D)))))
172+ (mold 69:1 cord (aura 69:9 @t))
173+ (mold 71:1 knot (aura 71:9 @ta))
174+ (mold 73:1 tape
175+ (apply 73:9 list (aura 73:15 @tD)))
176+ (mold 75:1 path
177+ (apply 75:9 list (ref 75:15 knot)))
178+ (mold 77:1 tank
179+ (union 78:3
180+ (ref 78:3 cord)
181181 (cell 79:3
182− (const 79:4 %palm)
183− (face 79:10 p
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))))
182+ (const 79:4 %leaf)
183+ (face 79:10 p (ref 79:12 tape)))
187184 (cell 80:3
188− (const 80:4 %rose)
185+ (const 80:4 %palm)
189186 (face 80:10 p
190− (apply 80:12 trel (ref 80:18 tape) (ref 80:23 tape) (ref 80:28 tape)))
191− (face 80:34 q
192− (apply 80:36 list (ref 80:42 tank))))))
193− (mold 82:1 nail
194− (cell 82:9
195− (face 82:10 p (ref 82:12 hair))
196− (face 82:17 q (ref 82:19 tape))))
197− (mold 84:1 edge
198− (cell 84:9
199− (face 84:10 p (ref 84:12 hair))
200− (face 84:17 q
201− (apply 84:19 unit
202− (cell 84:25
203− (face 84:26 p (noun 84:28))
204− (face 84:30 q (ref 84:32 nail)))))))
205− (mold 86:1 rule
206− (fn 86:9 (ref 86:12 nail) (ref 86:17 edge)))
207− (mold 88:1 spot
208− (cell 88:9
209− (face 88:10 p (ref 88:12 path))
210− (face 88:17 q (ref 88:19 pint))))
211− (mold 90:1 toon
212− (union 91:3
213− (cell 91:3
214− (const 91:4 %0)
215− (face 91:7 p (noun 91:9)))
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
193+ (apply 81:12 trel (ref 81:18 tape) (ref 81:23 tape) (ref 81:28 tape)))
194+ (face 81:34 q
195+ (apply 81:36 list (ref 81:42 tank))))))
196+ (mold 83:1 nail
197+ (cell 83:9
198+ (face 83:10 p (ref 83:12 hair))
199+ (face 83:17 q (ref 83:19 tape))))
200+ (mold 85:1 edge
201+ (cell 85:9
202+ (face 85:10 p (ref 85:12 hair))
203+ (face 85:17 q
204+ (apply 85:19 unit
205+ (cell 85:25
206+ (face 85:26 p (noun 85:28))
207+ (face 85:30 q (ref 85:32 nail)))))))
208+ (mold 87:1 rule
209+ (fn 87:9 (ref 87:12 nail) (ref 87:17 edge)))
210+ (mold 89:1 spot
211+ (cell 89: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
216216 (cell 92:3
217− (const 92:4 %1)
217+ (const 92:4 %0)
218218 (face 92:7 p (noun 92:9)))
219219 (cell 93:3
220− (const 93:4 %2)
221− (face 93:7 p
222− (apply 93:9 list (ref 93:15 tank))))))
223− (mold 95:1 like
224− (generic 95:9 A
225− (cell 95:16
226− (face 95:17 p (ref 95:19 hair))
227− (face 95:24 q
228− (apply 95:26 unit
229− (cell 95:32
230− (face 95:33 p (tvar 95:35 A))
231− (face 95:37 q (ref 95:39 nail))))))))
232− (value 97:1 wonk
233− (gate 97:9
234− (face 97:12 veq
235− (apply 97:16 like (tvar 97:22 A)))
236− (body 98:3
237− (branch 98:3
238− (wing 98:6 q.veq)
239− (arm 99:5 (lit 99:5 ~) (crash 99:7))
240− (arm 100:5
241− (cell 100:5 (lit 100:6 ~) (bind 100:8 product))
242− (wing 100:17 p.product))))))
243− (mold 102:1 lone
244− (generic 102:9 A
245− (cell 102:16
246− (face 102:17 p (tvar 102:19 A)))))
247− (mold 104:1 lest
248− (generic 104:9 A
249− (cell 104:16
250− (face 104:17 i (tvar 104:19 A))
251− (face 104:21 t
252− (apply 104:23 list (tvar 104:29 A))))))
253− (mold 106:1 pole
254− (generic 106:9 A
255− (union 107:3
256− (const 107:3 ~)
257− (cell 108:3
258− (tvar 108:4 A)
259− (apply 108:6 pole (tvar 108:12 A))))))
260− (mold 110:1 quip
261− (generic 110:9 A B
262− (cell 110:18
263− (apply 110:19 list (tvar 110:25 A))
264− (tvar 110:28 B))))
265− (mold 112:1 tree
266− (generic 112:9 A
267− (union 113:3
268− (const 113:3 ~)
269− (cell 114:3
270− (face 114:4 n (tvar 114:6 A))
271− (face 114:8 l
272− (apply 114:10 tree (tvar 114:16 A)))
273− (face 114:19 r
274− (apply 114:21 tree (tvar 114:27 A)))))))
275− (mold 116:1 each
276− (generic 116:9 A B
277− (union 117:3
278− (cell 117:3
279− (const 117:4 %|)
280− (face 117:7 p (tvar 117:9 B)))
220+ (const 93:4 %1)
221+ (face 93:7 p (noun 93:9)))
222+ (cell 94:3
223+ (const 94:4 %2)
224+ (face 94:7 p
225+ (apply 94:9 list (ref 94:15 tank))))))
226+ (mold 96:1 like
227+ (generic 96:9 A
228+ (cell 96:16
229+ (face 96:17 p (ref 96:19 hair))
230+ (face 96:24 q
231+ (apply 96:26 unit
232+ (cell 96:32
233+ (face 96:33 p (tvar 96:35 A))
234+ (face 96:37 q (ref 96:39 nail))))))))
235+ (value 98:1 wonk
236+ (gate 98:9
237+ (face 98:12 veq
238+ (apply 98:16 like (tvar 98:22 A)))
239+ (body 99:3
240+ (branch 99:3
241+ (wing 99:6 q.veq)
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))))))
246+ (mold 103:1 lone
247+ (generic 103:9 A
248+ (cell 103:16
249+ (face 103:17 p (tvar 103:19 A)))))
250+ (mold 105:1 lest
251+ (generic 105:9 A
252+ (cell 105:16
253+ (face 105:17 i (tvar 105:19 A))
254+ (face 105:21 t
255+ (apply 105:23 list (tvar 105:29 A))))))
256+ (mold 107:1 pole
257+ (generic 107:9 A
258+ (union 108:3
259+ (const 108:3 ~)
260+ (cell 109:3
261+ (tvar 109:4 A)
262+ (apply 109:6 pole (tvar 109:12 A))))))
263+ (mold 111:1 quip
264+ (generic 111:9 A B
265+ (cell 111:18
266+ (apply 111:19 list (tvar 111:25 A))
267+ (tvar 111:28 B))))
268+ (mold 113:1 tree
269+ (generic 113:9 A
270+ (union 114:3
271+ (const 114:3 ~)
272+ (cell 115:3
273+ (face 115:4 n (tvar 115:6 A))
274+ (face 115:8 l
275+ (apply 115:10 tree (tvar 115:16 A)))
276+ (face 115:19 r
277+ (apply 115:21 tree (tvar 115:27 A)))))))
278+ (mold 117:1 each
279+ (generic 117:9 A B
280+ (union 118:3
281281 (cell 118:3
282− (const 118:4 %&)
283− (face 118:7 p (tvar 118:9 A))))))
284− (mold 120:1 bloq (aura 120:9 @))
285− (value 122:1 some
286− (gate 122:9
287− (face 122:12 item (tvar 122:17 A))
288− (unit 122:19 (wing 122:20 item))))
289− (value 124:1 lure
290− (gate 124:9
291− (face 124:12 item (tvar 124:17 A))
292− (body 125:3
293− (cast 125:3
294− (apply 125:6 list (tvar 125:12 A))
295− (tuple 125:15 (wing 125:16 item) (lit 125:21 ~))))))
296− (value 127:1 snoc
297− (gate 127:9
298− (face 127:12 args
299− (cell 127:17
300− (apply 127:18 list (tvar 127:24 A))
301− (tvar 127:27 A)))
302− (body 128:3
303− (branch 128:3
304− (wing 128:6 args)
305− (arm 129:5
306− (cell 129:5 (bind 129:6 xs) (bind 129:9 item))
307− (group 129:15
308− (call 129:16
309− (wing 129:16 weld)
310− (wing 129:21 xs)
311− (tuple 129:24 (wing 129:25 item) (lit 129:30 ~)))))))))
312− (value 131:1 flop
313− (gate 131:9
314− (face 131:12 xs
315− (apply 131:15 list (tvar 131:21 A)))
316− (body 132:3
317− (value 132:3 reverse-into
318− (gate 132:19
319− (face 132:22 args
320− (cell 132:27
321− (apply 132:28 list (tvar 132:34 A))
322− (apply 132:37 list (tvar 132:43 A))))
323− (body 133:5
324− (branch 133:5
325− (wing 133:8 args)
326− (arm 134:7
327− (cell 134:7 (bind 134:8 rest) (bind 134:13 acc))
328− (body 135:9
329− (branch 135:9
330− (wing 135:12 rest)
331− (arm 136:11 (lit 136:11 ~) (wing 136:13 acc))
332− (arm 137:11
333− (cell 137:11 (bind 137:12 item) (bind 137:17 more))
334− (group 137:23
335− (call 137:24
336− (wing 137:24 reverse-into)
337− (wing 137:37 more)
338− (tuple 137:42 (wing 137:43 item) (wing 137:48 acc))))))))))))
339− (group 138:3
340− (call 138:4 (wing 138:4 reverse-into) (wing 138:17 xs) (lit 138:20 ~))))))
341− (value 140:1 drop
342− (gate 140:9
343− (face 140:12 maybe
344− (apply 140:18 unit (tvar 140:24 A)))
345− (body 141:3
346− (branch 141:3
347− (wing 141:6 maybe)
348− (arm 142:5 (lit 142:5 ~) (lit 142:7 ~))
349− (arm 143:5
350− (cell 143:5 (lit 143:6 ~) (bind 143:8 value))
351− (tuple 143:15 (wing 143:16 value) (lit 143:22 ~)))))))
352− (value 145:1 bind
353− (gate 145:9
354− (face 145:12 args
355− (cell 145:17
356− (apply 145:18 unit (tvar 145:24 A))
357− (fn 145:27 (tvar 145:30 A) (tvar 145:32 B))))
358− (body 146:3
359− (branch 146:3
360− (wing 146:6 args)
361− (arm 147:5
362− (cell 147:5 (bind 147:6 maybe) (bind 147:12 f))
363− (body 148:7
364− (branch 148:7
365− (wing 148:10 maybe)
366− (arm 149:9 (lit 149:9 ~) (lit 149:11 ~))
367− (arm 150:9
368− (cell 150:9 (lit 150:10 ~) (bind 150:12 value))
369− (unit 150:19
370− (group 150:20
371− (call 150:21 (wing 150:21 f) (wing 150:23 value))))))))))))
372− (value 152:1 biff
373− (gate 152:9
374− (face 152:12 args
375− (cell 152:17
376− (apply 152:18 unit (tvar 152:24 A))
377− (fn 152:27
378− (tvar 152:30 A)
379− (apply 152:32 unit (tvar 152:38 B)))))
380− (body 153:3
381− (branch 153:3
382− (wing 153:6 args)
383− (arm 154:5
384− (cell 154:5 (bind 154:6 maybe) (bind 154:12 f))
385− (body 155:7
386− (branch 155:7
387− (wing 155:10 maybe)
388− (arm 156:9 (lit 156:9 ~) (lit 156:11 ~))
389− (arm 157:9
390− (cell 157:9 (lit 157:10 ~) (bind 157:12 value))
391− (group 157:19
392− (call 157:20 (wing 157:20 f) (wing 157:22 value)))))))))))
393− (value 159:1 both
394− (gate 159:9
395− (face 159:12 args
396− (cell 159:17
397− (apply 159:18 unit (tvar 159:24 A))
398− (apply 159:27 unit (tvar 159:33 B))))
399− (body 160:3
400− (branch 160:3
401− (wing 160:6 args)
402− (arm 161:5
403− (cell 161:5 (bind 161:6 first) (bind 161:12 second))
404− (body 162:7
405− (branch 162:7
406− (wing 162:10 first)
407− (arm 163:9 (lit 163:9 ~) (lit 163:11 ~))
408− (arm 164:9
409− (cell 164:9 (lit 164:10 ~) (bind 164:12 a))
410− (body 165:11
411− (branch 165:11
412− (wing 165:14 second)
413− (arm 166:13 (lit 166:13 ~) (lit 166:15 ~))
414− (arm 167:13
415− (cell 167:13 (lit 167:14 ~) (bind 167:16 b))
416− (unit 167:19
417− (tuple 167:20 (wing 167:21 a) (wing 167:23 b))))))))))))))
418− (value 169:1 clap
419− (gate 169:9
420− (face 169:12 args
421− (cell 169:17
422− (apply 169:18 unit (tvar 169:24 A))
423− (apply 169:27 unit (tvar 169:33 A))
424− (fn 169:36
425− (cell 169:39 (tvar 169:40 A) (tvar 169:42 A))
426− (tvar 169:45 A))))
427− (body 170:3
428− (branch 170:3
429− (wing 170:6 args)
430− (arm 171:5
431− (cell 171:5 (bind 171:6 first) (bind 171:12 second) (bind 171:19 combine))
432− (body 172:7
433− (branch 172:7
434− (wing 172:10 first)
435− (arm 173:9 (lit 173:9 ~) (wing 173:11 second))
436− (arm 174:9
437− (cell 174:9 (lit 174:10 ~) (bind 174:12 a))
438− (body 175:11
439− (branch 175:11
440− (wing 175:14 second)
441− (arm 176:13 (lit 176:13 ~) (wing 176:15 first))
442− (arm 177:13
443− (cell 177:13 (lit 177:14 ~) (bind 177:16 b))
444− (unit 177:19
445− (group 177:20
446− (call 177:21 (wing 177:21 combine) (wing 177:29 a) (wing 177:31 b)))))))))))))))
447− (value 179:1 clef
448− (gate 179:9
449− (face 179:12 args
450− (cell 179:17
451− (apply 179:18 unit (tvar 179:24 A))
452− (apply 179:27 unit (tvar 179:33 B))
453− (fn 179:36
454− (cell 179:39 (tvar 179:40 A) (tvar 179:42 B))
455− (apply 179:45 unit (tvar 179:51 C)))))
456− (body 180:3
457− (branch 180:3
458− (wing 180:6 args)
459− (arm 181:5
460− (cell 181:5 (bind 181:6 first) (bind 181:12 second) (bind 181:19 combine))
461− (body 182:7
462− (branch 182:7
463− (wing 182:10 first)
464− (arm 183:9 (lit 183:9 ~) (lit 183:11 ~))
465− (arm 184:9
466− (cell 184:9 (lit 184:10 ~) (bind 184:12 a))
467− (body 185:11
468− (branch 185:11
469− (wing 185:14 second)
470− (arm 186:13 (lit 186:13 ~) (lit 186:15 ~))
471− (arm 187:13
472− (cell 187:13 (lit 187:14 ~) (bind 187:16 b))
473− (group 187:19
474− (call 187:20 (wing 187:20 combine) (wing 187:28 a) (wing 187:30 b))))))))))))))
475− (value 189:1 skim
476− (gate 189:9
477− (face 189:12 args
478− (cell 189:17
479− (apply 189:18 list (tvar 189:24 A))
480− (fn 189:27 (tvar 189:30 A) (flag 189:32))))
481− (body 190:3
482− (branch 190:3
483− (wing 190:6 args)
484− (arm 191:5
485− (cell 191:5 (bind 191:6 xs) (bind 191:9 predicate))
486− (body 192:7
487− (branch 192:7
488− (wing 192:10 xs)
489− (arm 193:9 (lit 193:9 ~) (lit 193:11 ~))
490− (arm 194:9
491− (cell 194:9 (bind 194:10 item) (bind 194:15 rest))
492− (body 195:11
493− (branch 195:11
494− (group 195:14
495− (call 195:15 (wing 195:15 predicate) (wing 195:25 item)))
496− (arm 196:13
497− (lit 196:13 %.y)
498− (tuple 196:17
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)))))
282+ (const 118:4 %|)
283+ (face 118:7 p (tvar 118:9 B)))
284+ (cell 119:3
285+ (const 119:4 %&)
286+ (face 119:7 p (tvar 119:9 A))))))
287+ (mold 121:1 bloq (aura 121:9 @))
288+ (value 123:1 some
289+ (gate 123:9
290+ (face 123:12 item (tvar 123:17 A))
291+ (unit 123:19 (wing 123:20 item))))
292+ (value 125:1 lure
293+ (gate 125:9
294+ (face 125:12 item (tvar 125:17 A))
295+ (body 126:3
296+ (cast 126:3
297+ (apply 126:6 list (tvar 126:12 A))
298+ (tuple 126:15 (wing 126:16 item) (lit 126:21 ~))))))
299+ (value 128:1 snoc
300+ (gate 128:9
301+ (face 128:12 args
302+ (cell 128:17
303+ (apply 128:18 list (tvar 128:24 A))
304+ (tvar 128:27 A)))
305+ (body 129:3
306+ (branch 129:3
307+ (wing 129:6 args)
308+ (arm 130:5
309+ (cell 130:5 (bind 130:6 xs) (bind 130:9 item))
310+ (group 130:15
311+ (call 130:16
312+ (wing 130:16 weld)
313+ (wing 130:21 xs)
314+ (tuple 130:24 (wing 130:25 item) (lit 130:30 ~)))))))))
315+ (value 132:1 flop
316+ (gate 132:9
317+ (face 132:12 xs
318+ (apply 132:15 list (tvar 132:21 A)))
319+ (body 133:3
320+ (value 133:3 reverse-into
321+ (gate 133:19
322+ (face 133:22 args
323+ (cell 133:27
324+ (apply 133:28 list (tvar 133:34 A))
325+ (apply 133:37 list (tvar 133:43 A))))
326+ (body 134:5
327+ (branch 134:5
328+ (wing 134:8 args)
329+ (arm 135:7
330+ (cell 135:7 (bind 135:8 rest) (bind 135:13 acc))
331+ (body 136:9
332+ (branch 136:9
333+ (wing 136:12 rest)
334+ (arm 137:11 (lit 137:11 ~) (wing 137:13 acc))
335+ (arm 138:11
336+ (cell 138:11 (bind 138:12 item) (bind 138:17 more))
337+ (group 138:23
338+ (call 138:24
339+ (wing 138:24 reverse-into)
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 ~))))))
344+ (value 141:1 drop
345+ (gate 141:9
346+ (face 141:12 maybe
347+ (apply 141:18 unit (tvar 141:24 A)))
348+ (body 142:3
349+ (branch 142:3
350+ (wing 142:6 maybe)
351+ (arm 143:5 (lit 143:5 ~) (lit 143:7 ~))
352+ (arm 144:5
353+ (cell 144:5 (lit 144:6 ~) (bind 144:8 value))
354+ (tuple 144:15 (wing 144:16 value) (lit 144:22 ~)))))))
355+ (value 146:1 bind
356+ (gate 146:9
357+ (face 146:12 args
358+ (cell 146:17
359+ (apply 146:18 unit (tvar 146:24 A))
360+ (fn 146:27 (tvar 146:30 A) (tvar 146:32 B))))
361+ (body 147:3
362+ (branch 147:3
363+ (wing 147:6 args)
364+ (arm 148:5
365+ (cell 148:5 (bind 148:6 maybe) (bind 148:12 f))
366+ (body 149:7
367+ (branch 149:7
368+ (wing 149:10 maybe)
369+ (arm 150:9 (lit 150:9 ~) (lit 150:11 ~))
370+ (arm 151:9
371+ (cell 151:9 (lit 151:10 ~) (bind 151:12 value))
372+ (unit 151:19
373+ (group 151:20
374+ (call 151:21 (wing 151:21 f) (wing 151:23 value))))))))))))
375+ (value 153:1 biff
376+ (gate 153:9
377+ (face 153:12 args
378+ (cell 153:17
379+ (apply 153:18 unit (tvar 153:24 A))
380+ (fn 153:27
381+ (tvar 153:30 A)
382+ (apply 153:32 unit (tvar 153:38 B)))))
383+ (body 154:3
384+ (branch 154:3
385+ (wing 154:6 args)
386+ (arm 155:5
387+ (cell 155:5 (bind 155:6 maybe) (bind 155:12 f))
388+ (body 156:7
389+ (branch 156:7
390+ (wing 156:10 maybe)
391+ (arm 157:9 (lit 157:9 ~) (lit 157:11 ~))
392+ (arm 158:9
393+ (cell 158:9 (lit 158:10 ~) (bind 158:12 value))
394+ (group 158:19
395+ (call 158:20 (wing 158:20 f) (wing 158:22 value)))))))))))
396+ (value 160:1 both
397+ (gate 160:9
398+ (face 160:12 args
399+ (cell 160:17
400+ (apply 160:18 unit (tvar 160:24 A))
401+ (apply 160:27 unit (tvar 160:33 B))))
402+ (body 161:3
403+ (branch 161:3
404+ (wing 161:6 args)
405+ (arm 162:5
406+ (cell 162:5 (bind 162:6 first) (bind 162:12 second))
407+ (body 163:7
408+ (branch 163:7
409+ (wing 163:10 first)
410+ (arm 164:9 (lit 164:9 ~) (lit 164:11 ~))
411+ (arm 165:9
412+ (cell 165:9 (lit 165:10 ~) (bind 165:12 a))
413+ (body 166:11
414+ (branch 166:11
415+ (wing 166:14 second)
416+ (arm 167:13 (lit 167:13 ~) (lit 167:15 ~))
417+ (arm 168:13
418+ (cell 168:13 (lit 168:14 ~) (bind 168:16 b))
419+ (unit 168:19
420+ (tuple 168:20 (wing 168:21 a) (wing 168:23 b))))))))))))))
421+ (value 170:1 clap
422+ (gate 170:9
423+ (face 170:12 args
424+ (cell 170:17
425+ (apply 170:18 unit (tvar 170:24 A))
426+ (apply 170:27 unit (tvar 170:33 A))
427+ (fn 170:36
428+ (cell 170:39 (tvar 170:40 A) (tvar 170:42 A))
429+ (tvar 170:45 A))))
430+ (body 171:3
431+ (branch 171:3
432+ (wing 171:6 args)
433+ (arm 172:5
434+ (cell 172:5 (bind 172:6 first) (bind 172:12 second) (bind 172:19 combine))
435+ (body 173:7
436+ (branch 173:7
437+ (wing 173:10 first)
438+ (arm 174:9 (lit 174:9 ~) (wing 174:11 second))
439+ (arm 175:9
440+ (cell 175:9 (lit 175:10 ~) (bind 175:12 a))
441+ (body 176:11
442+ (branch 176:11
443+ (wing 176:14 second)
444+ (arm 177:13 (lit 177:13 ~) (wing 177:15 first))
445+ (arm 178:13
446+ (cell 178:13 (lit 178:14 ~) (bind 178:16 b))
447+ (unit 178:19
448+ (group 178:20
449+ (call 178:21 (wing 178:21 combine) (wing 178:29 a) (wing 178:31 b)))))))))))))))
450+ (value 180:1 clef
451+ (gate 180:9
452+ (face 180:12 args
453+ (cell 180:17
454+ (apply 180:18 unit (tvar 180:24 A))
455+ (apply 180:27 unit (tvar 180:33 B))
456+ (fn 180:36
457+ (cell 180:39 (tvar 180:40 A) (tvar 180:42 B))
458+ (apply 180:45 unit (tvar 180:51 C)))))
459+ (body 181:3
460+ (branch 181:3
461+ (wing 181:6 args)
462+ (arm 182:5
463+ (cell 182:5 (bind 182:6 first) (bind 182:12 second) (bind 182:19 combine))
464+ (body 183:7
465+ (branch 183:7
466+ (wing 183:10 first)
467+ (arm 184:9 (lit 184:9 ~) (lit 184:11 ~))
468+ (arm 185:9
469+ (cell 185:9 (lit 185:10 ~) (bind 185:12 a))
470+ (body 186:11
471+ (branch 186:11
472+ (wing 186:14 second)
473+ (arm 187:13 (lit 187:13 ~) (lit 187:15 ~))
474+ (arm 188:13
475+ (cell 188:13 (lit 188:14 ~) (bind 188:16 b))
476+ (group 188:19
477+ (call 188:20 (wing 188:20 combine) (wing 188:28 a) (wing 188:30 b))))))))))))))
478+ (value 190:1 skim
479+ (gate 190:9
480+ (face 190:12 args
481+ (cell 190:17
482+ (apply 190:18 list (tvar 190:24 A))
483+ (fn 190:27 (tvar 190:30 A) (flag 190:32))))
484+ (body 191:3
485+ (branch 191:3
486+ (wing 191:6 args)
487+ (arm 192:5
488+ (cell 192:5 (bind 192:6 xs) (bind 192:9 predicate))
489+ (body 193:7
490+ (branch 193:7
491+ (wing 193:10 xs)
492+ (arm 194:9 (lit 194:9 ~) (lit 194:11 ~))
493+ (arm 195:9
494+ (cell 195:9 (bind 195:10 item) (bind 195:15 rest))
495+ (body 196:11
496+ (branch 196:11
497+ (group 196:14
498+ (call 196:15 (wing 196:15 predicate) (wing 196:25 item)))
502499 (arm 197:13
503− (lit 197:13 %.n)
504− (group 197:17
505− (call 197:18 (wing 197:18 skim) (wing 197:23 rest) (wing 197:28 predicate))))))))))))))
506− (value 199:1 skip
507− (gate 199:9
508− (face 199:12 args
509− (cell 199:17
510− (apply 199:18 list (tvar 199:24 A))
511− (fn 199:27 (tvar 199:30 A) (flag 199:32))))
512− (body 200:3
513− (branch 200:3
514− (wing 200:6 args)
515− (arm 201:5
516− (cell 201:5 (bind 201:6 xs) (bind 201:9 predicate))
517− (body 202:7
518− (branch 202:7
519− (wing 202:10 xs)
520− (arm 203:9 (lit 203:9 ~) (lit 203:11 ~))
521− (arm 204:9
522− (cell 204:9 (bind 204:10 item) (bind 204:15 rest))
523− (body 205:11
524− (branch 205:11
525− (group 205:14
526− (call 205:15 (wing 205:15 predicate) (wing 205:25 item)))
527− (arm 206:13
528− (lit 206:13 %.y)
529− (group 206:17
530− (call 206:18 (wing 206:18 skip) (wing 206:23 rest) (wing 206:28 predicate))))
500+ (lit 197:13 %.y)
501+ (tuple 197:17
502+ (wing 197:18 item)
503+ (group 197:23
504+ (call 197:24 (wing 197:24 skim) (wing 197:29 rest) (wing 197:34 predicate)))))
505+ (arm 198:13
506+ (lit 198:13 %.n)
507+ (group 198:17
508+ (call 198:18 (wing 198:18 skim) (wing 198:23 rest) (wing 198:28 predicate))))))))))))))
509+ (value 200:1 skip
510+ (gate 200:9
511+ (face 200:12 args
512+ (cell 200:17
513+ (apply 200:18 list (tvar 200:24 A))
514+ (fn 200:27 (tvar 200:30 A) (flag 200:32))))
515+ (body 201:3
516+ (branch 201:3
517+ (wing 201:6 args)
518+ (arm 202:5
519+ (cell 202:5 (bind 202:6 xs) (bind 202:9 predicate))
520+ (body 203:7
521+ (branch 203:7
522+ (wing 203:10 xs)
523+ (arm 204:9 (lit 204:9 ~) (lit 204:11 ~))
524+ (arm 205:9
525+ (cell 205:9 (bind 205:10 item) (bind 205:15 rest))
526+ (body 206:11
527+ (branch 206:11
528+ (group 206:14
529+ (call 206:15 (wing 206:15 predicate) (wing 206:25 item)))
531530 (arm 207:13
532− (lit 207:13 %.n)
533− (tuple 207:17
534− (wing 207:18 item)
535− (group 207:23
536− (call 207:24 (wing 207:24 skip) (wing 207:29 rest) (wing 207:34 predicate)))))))))))))))
537− (value 209:1 levy
538− (gate 209:9
539− (face 209:12 args
540− (cell 209:17
541− (apply 209:18 list (tvar 209:24 A))
542− (fn 209:27 (tvar 209:30 A) (flag 209:32))))
543− (body 210:3
544− (branch 210:3
545− (wing 210:6 args)
546− (arm 211:5
547− (cell 211:5 (bind 211:6 xs) (bind 211:9 predicate))
548− (body 212:7
549− (branch 212:7
550− (wing 212:10 xs)
551− (arm 213:9 (lit 213:9 ~) (lit 213:11 %.y))
552− (arm 214:9
553− (cell 214:9 (bind 214:10 item) (bind 214:15 rest))
554− (body 215:11
555− (branch 215:11
556− (group 215:14
557− (call 215:15 (wing 215:15 predicate) (wing 215:25 item)))
558− (arm 216:13
559− (lit 216:13 %.y)
560− (group 216:17
561− (call 216:18 (wing 216:18 levy) (wing 216:23 rest) (wing 216:28 predicate))))
562− (arm 217:13 (lit 217:13 %.n) (lit 217:17 %.n))))))))))))
563− (value 219:1 lien
564− (gate 219:9
565− (face 219:12 args
566− (cell 219:17
567− (apply 219:18 list (tvar 219:24 A))
568− (fn 219:27 (tvar 219:30 A) (flag 219:32))))
569− (body 220:3
570− (branch 220:3
571− (wing 220:6 args)
572− (arm 221:5
573− (cell 221:5 (bind 221:6 xs) (bind 221:9 predicate))
574− (body 222:7
575− (branch 222:7
576− (wing 222:10 xs)
577− (arm 223:9 (lit 223:9 ~) (lit 223:11 %.n))
578− (arm 224:9
579− (cell 224:9 (bind 224:10 item) (bind 224:15 rest))
580− (body 225:11
581− (branch 225:11
582− (group 225:14
583− (call 225:15 (wing 225:15 predicate) (wing 225:25 item)))
584− (arm 226:13 (lit 226:13 %.y) (lit 226:17 %.y))
585− (arm 227:13
586− (lit 227:13 %.n)
587− (group 227:17
588− (call 227:18 (wing 227:18 lien) (wing 227:23 rest) (wing 227:28 predicate))))))))))))))
589− (value 229:1 roll
590− (gate 229:9
591− (face 229:12 args
592− (cell 229:17
593− (apply 229:18 list (tvar 229:24 A))
594− (tvar 229:27 B)
595− (fn 229:29
596− (cell 229:32 (tvar 229:33 A) (tvar 229:35 B))
597− (tvar 229:38 B))))
598− (body 230:3
599− (branch 230:3
600− (wing 230:6 args)
601− (arm 231:5
602− (cell 231:5 (bind 231:6 xs) (bind 231:9 start) (bind 231:15 combine))
603− (body 232:7
604− (branch 232:7
605− (wing 232:10 xs)
606− (arm 233:9 (lit 233:9 ~) (wing 233:11 start))
607− (arm 234:9
608− (cell 234:9 (bind 234:10 item) (bind 234:15 rest))
609− (group 234:21
610− (call 234:22
611− (wing 234:22 roll)
612− (wing 234:27 rest)
613− (group 234:32
614− (call 234:33 (wing 234:33 combine) (wing 234:41 item) (wing 234:46 start)))
615− (wing 234:53 combine)))))))))))
616− (value 236:1 reel
617− (gate 236:9
618− (face 236:12 args
619− (cell 236:17
620− (apply 236:18 list (tvar 236:24 A))
621− (tvar 236:27 B)
622− (fn 236:29
623− (cell 236:32 (tvar 236:33 A) (tvar 236:35 B))
624− (tvar 236:38 B))))
625− (body 237:3
626− (branch 237:3
627− (wing 237:6 args)
628− (arm 238:5
629− (cell 238:5 (bind 238:6 xs) (bind 238:9 start) (bind 238:15 combine))
630− (body 239:7
631− (branch 239:7
632− (wing 239:10 xs)
633− (arm 240:9 (lit 240:9 ~) (wing 240:11 start))
634− (arm 241:9
635− (cell 241:9 (bind 241:10 item) (bind 241:15 rest))
636− (group 241:21
637− (call 241:22
638− (wing 241:22 combine)
639− (wing 241:30 item)
640− (group 241:35
641− (call 241:36 (wing 241:36 reel) (wing 241:41 rest) (wing 241:46 start) (wing 241:52 combine)))))))))))))
642− (value 243:1 flit
643− (gate 243:9
644− (face 243:12 predicate
645− (fn 243:22 (tvar 243:25 A) (flag 243:27)))
646− (body 244:3
647− (gate 244:3
648− (face 244:6 value (tvar 244:12 A))
649− (body 245:5
650− (branch 245:5
651− (group 245:8
652− (call 245:9 (wing 245:9 predicate) (wing 245:19 value)))
653− (arm 246:7
654− (lit 246:7 %.y)
655− (unit 246:11 (wing 246:12 value)))
656− (arm 247:7 (lit 247:7 %.n) (lit 247:11 ~))))))))
657− (value 249:1 murn
658− (gate 249:9
659− (face 249:12 args
660− (cell 249:17
661− (apply 249:18 list (tvar 249:24 A))
662− (fn 249:27
663− (tvar 249:30 A)
664− (apply 249:32 unit (tvar 249:38 B)))))
665− (body 250:3
666− (branch 250:3
667− (wing 250:6 args)
668− (arm 251:5
669− (cell 251:5 (bind 251:6 xs) (bind 251:9 f))
670− (body 252:7
671− (branch 252:7
672− (wing 252:10 xs)
673− (arm 253:9 (lit 253:9 ~) (lit 253:11 ~))
674− (arm 254:9
675− (cell 254:9 (bind 254:10 item) (bind 254:15 rest))
676− (body 255:11
677− (branch 255:11
678− (group 255:14
679− (call 255:15 (wing 255:15 f) (wing 255:17 item)))
680− (arm 256:13
681− (lit 256:13 ~)
682− (group 256:15
683− (call 256:16 (wing 256:16 murn) (wing 256:21 rest) (wing 256:26 f))))
531+ (lit 207:13 %.y)
532+ (group 207:17
533+ (call 207:18 (wing 207:18 skip) (wing 207:23 rest) (wing 207:28 predicate))))
534+ (arm 208:13
535+ (lit 208:13 %.n)
536+ (tuple 208:17
537+ (wing 208:18 item)
538+ (group 208:23
539+ (call 208:24 (wing 208:24 skip) (wing 208:29 rest) (wing 208:34 predicate)))))))))))))))
540+ (value 210:1 levy
541+ (gate 210:9
542+ (face 210:12 args
543+ (cell 210:17
544+ (apply 210:18 list (tvar 210:24 A))
545+ (fn 210:27 (tvar 210:30 A) (flag 210:32))))
546+ (body 211:3
547+ (branch 211:3
548+ (wing 211:6 args)
549+ (arm 212:5
550+ (cell 212:5 (bind 212:6 xs) (bind 212:9 predicate))
551+ (body 213:7
552+ (branch 213:7
553+ (wing 213:10 xs)
554+ (arm 214:9 (lit 214:9 ~) (lit 214:11 %.y))
555+ (arm 215:9
556+ (cell 215:9 (bind 215:10 item) (bind 215:15 rest))
557+ (body 216:11
558+ (branch 216:11
559+ (group 216:14
560+ (call 216:15 (wing 216:15 predicate) (wing 216:25 item)))
561+ (arm 217:13
562+ (lit 217:13 %.y)
563+ (group 217:17
564+ (call 217:18 (wing 217:18 levy) (wing 217:23 rest) (wing 217:28 predicate))))
565+ (arm 218:13 (lit 218:13 %.n) (lit 218:17 %.n))))))))))))
566+ (value 220:1 lien
567+ (gate 220:9
568+ (face 220:12 args
569+ (cell 220:17
570+ (apply 220:18 list (tvar 220:24 A))
571+ (fn 220:27 (tvar 220:30 A) (flag 220:32))))
572+ (body 221:3
573+ (branch 221:3
574+ (wing 221:6 args)
575+ (arm 222:5
576+ (cell 222:5 (bind 222:6 xs) (bind 222:9 predicate))
577+ (body 223:7
578+ (branch 223:7
579+ (wing 223:10 xs)
580+ (arm 224:9 (lit 224:9 ~) (lit 224:11 %.n))
581+ (arm 225:9
582+ (cell 225:9 (bind 225:10 item) (bind 225:15 rest))
583+ (body 226:11
584+ (branch 226:11
585+ (group 226:14
586+ (call 226:15 (wing 226:15 predicate) (wing 226:25 item)))
587+ (arm 227:13 (lit 227:13 %.y) (lit 227:17 %.y))
588+ (arm 228:13
589+ (lit 228:13 %.n)
590+ (group 228:17
591+ (call 228:18 (wing 228:18 lien) (wing 228:23 rest) (wing 228:28 predicate))))))))))))))
592+ (value 230:1 roll
593+ (gate 230:9
594+ (face 230:12 args
595+ (cell 230:17
596+ (apply 230:18 list (tvar 230:24 A))
597+ (tvar 230:27 B)
598+ (fn 230:29
599+ (cell 230:32 (tvar 230:33 A) (tvar 230:35 B))
600+ (tvar 230:38 B))))
601+ (body 231:3
602+ (branch 231:3
603+ (wing 231:6 args)
604+ (arm 232:5
605+ (cell 232:5 (bind 232:6 xs) (bind 232:9 start) (bind 232:15 combine))
606+ (body 233:7
607+ (branch 233:7
608+ (wing 233:10 xs)
609+ (arm 234:9 (lit 234:9 ~) (wing 234:11 start))
610+ (arm 235:9
611+ (cell 235:9 (bind 235:10 item) (bind 235:15 rest))
612+ (group 235:21
613+ (call 235:22
614+ (wing 235:22 roll)
615+ (wing 235:27 rest)
616+ (group 235:32
617+ (call 235:33 (wing 235:33 combine) (wing 235:41 item) (wing 235:46 start)))
618+ (wing 235:53 combine)))))))))))
619+ (value 237:1 reel
620+ (gate 237:9
621+ (face 237:12 args
622+ (cell 237:17
623+ (apply 237:18 list (tvar 237:24 A))
624+ (tvar 237:27 B)
625+ (fn 237:29
626+ (cell 237:32 (tvar 237:33 A) (tvar 237:35 B))
627+ (tvar 237:38 B))))
628+ (body 238:3
629+ (branch 238:3
630+ (wing 238:6 args)
631+ (arm 239:5
632+ (cell 239:5 (bind 239:6 xs) (bind 239:9 start) (bind 239:15 combine))
633+ (body 240:7
634+ (branch 240:7
635+ (wing 240:10 xs)
636+ (arm 241:9 (lit 241:9 ~) (wing 241:11 start))
637+ (arm 242:9
638+ (cell 242:9 (bind 242:10 item) (bind 242:15 rest))
639+ (group 242:21
640+ (call 242:22
641+ (wing 242:22 combine)
642+ (wing 242:30 item)
643+ (group 242:35
644+ (call 242:36 (wing 242:36 reel) (wing 242:41 rest) (wing 242:46 start) (wing 242:52 combine)))))))))))))
645+ (value 244:1 flit
646+ (gate 244:9
647+ (face 244:12 predicate
648+ (fn 244:22 (tvar 244:25 A) (flag 244:27)))
649+ (body 245:3
650+ (gate 245:3
651+ (face 245:6 value (tvar 245:12 A))
652+ (body 246:5
653+ (branch 246:5
654+ (group 246:8
655+ (call 246:9 (wing 246:9 predicate) (wing 246:19 value)))
656+ (arm 247:7
657+ (lit 247:7 %.y)
658+ (unit 247:11 (wing 247:12 value)))
659+ (arm 248:7 (lit 248:7 %.n) (lit 248:11 ~))))))))
660+ (value 250:1 murn
661+ (gate 250:9
662+ (face 250:12 args
663+ (cell 250:17
664+ (apply 250:18 list (tvar 250:24 A))
665+ (fn 250:27
666+ (tvar 250:30 A)
667+ (apply 250:32 unit (tvar 250:38 B)))))
668+ (body 251:3
669+ (branch 251:3
670+ (wing 251:6 args)
671+ (arm 252:5
672+ (cell 252:5 (bind 252:6 xs) (bind 252:9 f))
673+ (body 253:7
674+ (branch 253:7
675+ (wing 253:10 xs)
676+ (arm 254:9 (lit 254:9 ~) (lit 254:11 ~))
677+ (arm 255:9
678+ (cell 255:9 (bind 255:10 item) (bind 255:15 rest))
679+ (body 256:11
680+ (branch 256:11
681+ (group 256:14
682+ (call 256:15 (wing 256:15 f) (wing 256:17 item)))
684683 (arm 257:13
685− (cell 257:13 (lit 257:14 ~) (bind 257:16 value))
686− (tuple 257:23
687− (wing 257:24 value)
688− (group 257:30
689− (call 257:31 (wing 257:31 murn) (wing 257:36 rest) (wing 257:41 f)))))))))))))))
690− (value 259:1 join
691− (gate 259:9
692− (face 259:12 args
693− (cell 259:17
694− (tvar 259:18 A)
695− (apply 259:20 list (tvar 259:26 A))))
696− (body 260:3
697− (branch 260:3
698− (wing 260:6 args)
699− (arm 261:5
700− (cell 261:5 (bind 261:6 separator) (bind 261:16 xs))
701− (body 262:7
702− (branch 262:7
703− (wing 262:10 xs)
704− (arm 263:9 (lit 263:9 ~) (lit 263:11 ~))
705− (arm 264:9
706− (cell 264:9 (bind 264:10 item) (bind 264:15 rest))
707− (body 265:11
708− (branch 265:11
709− (wing 265:14 rest)
710− (arm 266:13
711− (lit 266:13 ~)
712− (tuple 266:15 (wing 266:16 item) (lit 266:21 ~)))
684+ (lit 257:13 ~)
685+ (group 257:15
686+ (call 257:16 (wing 257:16 murn) (wing 257:21 rest) (wing 257:26 f))))
687+ (arm 258:13
688+ (cell 258:13 (lit 258:14 ~) (bind 258:16 value))
689+ (tuple 258:23
690+ (wing 258:24 value)
691+ (group 258:30
692+ (call 258:31 (wing 258:31 murn) (wing 258:36 rest) (wing 258:41 f)))))))))))))))
693+ (value 260:1 join
694+ (gate 260:9
695+ (face 260:12 args
696+ (cell 260:17
697+ (tvar 260:18 A)
698+ (apply 260:20 list (tvar 260:26 A))))
699+ (body 261:3
700+ (branch 261:3
701+ (wing 261:6 args)
702+ (arm 262:5
703+ (cell 262:5 (bind 262:6 separator) (bind 262:16 xs))
704+ (body 263:7
705+ (branch 263:7
706+ (wing 263:10 xs)
707+ (arm 264:9 (lit 264:9 ~) (lit 264:11 ~))
708+ (arm 265:9
709+ (cell 265:9 (bind 265:10 item) (bind 265:15 rest))
710+ (body 266:11
711+ (branch 266:11
712+ (wing 266:14 rest)
713713 (arm 267:13
714− (cell 267:13 (bind 267:14 next) (bind 267:19 more))
715− (tuple 267:25
716− (wing 267:26 item)
717− (tuple 267:31
718− (wing 267:32 separator)
719− (group 267:42
720− (call 267:43 (wing 267:43 join) (wing 267:48 separator) (wing 267:58 rest))))))))))))))))
721− (value 269:1 snip
722− (gate 269:9
723− (face 269:12 xs
724− (apply 269:15 list (tvar 269:21 A)))
725− (body 270:3
726− (branch 270:3
727− (wing 270:6 xs)
728− (arm 271:5 (lit 271:5 ~) (lit 271:7 ~))
729− (arm 272:5
730− (cell 272:5 (bind 272:6 item) (bind 272:11 rest))
731− (body 273:7
732− (branch 273:7
733− (wing 273:10 rest)
734− (arm 274:9 (lit 274:9 ~) (lit 274:11 ~))
735− (arm 275:9
736− (cell 275:9 (bind 275:10 next) (bind 275:15 more))
737− (tuple 275:21
738− (wing 275:22 item)
739− (group 275:27
740− (call 275:28 (wing 275:28 snip) (wing 275:33 rest))))))))))))
741− (value 277:1 rear
742− (gate 277:9
743− (face 277:12 xs
744− (apply 277:15 list (tvar 277:21 A)))
745− (body 278:3
746− (branch 278:3
747− (wing 278:6 xs)
748− (arm 279:5 (lit 279:5 ~) (crash 279:7))
749− (arm 280:5
750− (cell 280:5 (bind 280:6 item) (bind 280:11 rest))
751− (body 281:7
752− (branch 281:7
753− (wing 281:10 rest)
754− (arm 282:9 (lit 282:9 ~) (wing 282:11 item))
755− (arm 283:9
756− (cell 283:9 (bind 283:10 next) (bind 283:15 more))
757− (group 283:21
758− (call 283:22 (wing 283:22 rear) (wing 283:27 rest))))))))))))
714+ (lit 267:13 ~)
715+ (tuple 267:15 (wing 267:16 item) (lit 267:21 ~)))
716+ (arm 268:13
717+ (cell 268:13 (bind 268:14 next) (bind 268:19 more))
718+ (tuple 268:25
719+ (wing 268:26 item)
720+ (tuple 268:31
721+ (wing 268:32 separator)
722+ (group 268:42
723+ (call 268:43 (wing 268:43 join) (wing 268:48 separator) (wing 268:58 rest))))))))))))))))
724+ (value 270:1 snip
725+ (gate 270:9
726+ (face 270:12 xs
727+ (apply 270:15 list (tvar 270:21 A)))
728+ (body 271:3
729+ (branch 271:3
730+ (wing 271:6 xs)
731+ (arm 272:5 (lit 272:5 ~) (lit 272:7 ~))
732+ (arm 273:5
733+ (cell 273:5 (bind 273:6 item) (bind 273:11 rest))
734+ (body 274:7
735+ (branch 274:7
736+ (wing 274:10 rest)
737+ (arm 275:9 (lit 275:9 ~) (lit 275:11 ~))
738+ (arm 276:9
739+ (cell 276:9 (bind 276:10 next) (bind 276:15 more))
740+ (tuple 276:21
741+ (wing 276:22 item)
742+ (group 276:27
743+ (call 276:28 (wing 276:28 snip) (wing 276:33 rest))))))))))))
744+ (value 278:1 rear
745+ (gate 278:9
746+ (face 278:12 xs
747+ (apply 278:15 list (tvar 278:21 A)))
748+ (body 279:3
749+ (branch 279:3
750+ (wing 279:6 xs)
751+ (arm 280:5 (lit 280:5 ~) (crash 280:7))
752+ (arm 281:5
753+ (cell 281:5 (bind 281:6 item) (bind 281:11 rest))
754+ (body 282:7
755+ (branch 282:7
756+ (wing 282:10 rest)
757+ (arm 283:9 (lit 283:9 ~) (wing 283:11 item))
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 @@
3838 =/ after-fixtures=(list [at=path source=@t])
3939 [[~[%ui %safe %jibb] library] duplicates]
4040 =/ 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])
4242::
4343++ real-parity
4444 ^- @t
@@ -64,4 +64,20 @@
6464 =/ b (golden-types-with-prelude:jibb /ui/main/jibb source ext ~ ~ changed)
6565 =/ c (golden-types-with-prelude:jibb /ui/main/jibb source ext ~ ~ malformed)
6666 (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])
6783--
tests/lib/jibb.hoon+188−180
@@ -1660,153 +1660,159 @@
16601660/* mod-478-2 %jibb /tests/golden/types-prelude-interface/modules/ui/right/jibb
16611661/* typ-478 %txt /tests/golden/types-prelude-interface/types/txt
16621662/* mtre-478 %txt /tests/golden/types-prelude-interface/module-trees/txt
1663−/* src-479 %jibb /tests/golden/types-record-bound-variable/source/jibb
1664−/* tok-479 %txt /tests/golden/types-record-bound-variable/tokens/txt
1665−/* tre-479 %txt /tests/golden/types-record-bound-variable/tree/txt
1666−/* typ-479 %txt /tests/golden/types-record-bound-variable/types/txt
1667−/* src-480 %jibb /tests/golden/types-record-faces/source/jibb
1668−/* tok-480 %txt /tests/golden/types-record-faces/tokens/txt
1669−/* tre-480 %txt /tests/golden/types-record-faces/tree/txt
1670−/* typ-480 %txt /tests/golden/types-record-faces/types/txt
1671−/* src-481 %jibb /tests/golden/types-record-import/source/jibb
1672−/* tok-481 %txt /tests/golden/types-record-import/tokens/txt
1673−/* tre-481 %txt /tests/golden/types-record-import/tree/txt
1674−/* mod-481-1 %jibb /tests/golden/types-record-import/modules/ui/lib/jibb
1675−/* typ-481 %txt /tests/golden/types-record-import/types/txt
1676−/* mtre-481 %txt /tests/golden/types-record-import/module-trees/txt
1677−/* src-482 %jibb /tests/golden/types-record-local-scheme/source/jibb
1678−/* tok-482 %txt /tests/golden/types-record-local-scheme/tokens/txt
1679−/* tre-482 %txt /tests/golden/types-record-local-scheme/tree/txt
1680−/* typ-482 %txt /tests/golden/types-record-local-scheme/types/txt
1681−/* src-483 %jibb /tests/golden/types-record-nested/source/jibb
1682−/* tok-483 %txt /tests/golden/types-record-nested/tokens/txt
1683−/* tre-483 %txt /tests/golden/types-record-nested/tree/txt
1684−/* typ-483 %txt /tests/golden/types-record-nested/types/txt
1685−/* src-484 %jibb /tests/golden/types-record-to-tuple/source/jibb
1686−/* tok-484 %txt /tests/golden/types-record-to-tuple/tokens/txt
1687−/* tre-484 %txt /tests/golden/types-record-to-tuple/tree/txt
1688−/* typ-484 %txt /tests/golden/types-record-to-tuple/types/txt
1689−/* src-485 %jibb /tests/golden/types-recursive-branch/source/jibb
1690−/* tok-485 %txt /tests/golden/types-recursive-branch/tokens/txt
1691−/* tre-485 %txt /tests/golden/types-recursive-branch/tree/txt
1692−/* typ-485 %txt /tests/golden/types-recursive-branch/types/txt
1693−/* src-486 %jibb /tests/golden/types-recursive-gate/source/jibb
1694−/* tok-486 %txt /tests/golden/types-recursive-gate/tokens/txt
1695−/* tre-486 %txt /tests/golden/types-recursive-gate/tree/txt
1696−/* typ-486 %txt /tests/golden/types-recursive-gate/types/txt
1697−/* src-487 %jibb /tests/golden/types-recursive-sample/source/jibb
1698−/* tok-487 %txt /tests/golden/types-recursive-sample/tokens/txt
1699−/* tre-487 %txt /tests/golden/types-recursive-sample/tree/txt
1700−/* typ-487 %txt /tests/golden/types-recursive-sample/types/txt
1701−/* src-488 %jibb /tests/golden/types-union-alias/source/jibb
1702−/* tok-488 %txt /tests/golden/types-union-alias/tokens/txt
1703−/* tre-488 %txt /tests/golden/types-union-alias/tree/txt
1704−/* typ-488 %txt /tests/golden/types-union-alias/types/txt
1705−/* src-489 %jibb /tests/golden/types-union-branch-context/source/jibb
1706−/* tok-489 %txt /tests/golden/types-union-branch-context/tokens/txt
1707−/* tre-489 %txt /tests/golden/types-union-branch-context/tree/txt
1708−/* typ-489 %txt /tests/golden/types-union-branch-context/types/txt
1709−/* src-490 %jibb /tests/golden/types-union-branch-pending/source/jibb
1710−/* tok-490 %txt /tests/golden/types-union-branch-pending/tokens/txt
1711−/* tre-490 %txt /tests/golden/types-union-branch-pending/tree/txt
1712−/* typ-490 %txt /tests/golden/types-union-branch-pending/types/txt
1713−/* src-491 %jibb /tests/golden/types-union-constructor-shape/source/jibb
1714−/* tok-491 %txt /tests/golden/types-union-constructor-shape/tokens/txt
1715−/* tre-491 %txt /tests/golden/types-union-constructor-shape/tree/txt
1716−/* typ-491 %txt /tests/golden/types-union-constructor-shape/types/txt
1717−/* src-492 %jibb /tests/golden/types-union-context-flow/source/jibb
1718−/* tok-492 %txt /tests/golden/types-union-context-flow/tokens/txt
1719−/* tre-492 %txt /tests/golden/types-union-context-flow/tree/txt
1720−/* typ-492 %txt /tests/golden/types-union-context-flow/types/txt
1721−/* src-493 %jibb /tests/golden/types-union-import/source/jibb
1722−/* tok-493 %txt /tests/golden/types-union-import/tokens/txt
1723−/* tre-493 %txt /tests/golden/types-union-import/tree/txt
1724−/* mod-493-1 %jibb /tests/golden/types-union-import/modules/ui/lib/jibb
1725−/* typ-493 %txt /tests/golden/types-union-import/types/txt
1726−/* mtre-493 %txt /tests/golden/types-union-import/module-trees/txt
1727−/* src-494 %jibb /tests/golden/types-union-local-pending/source/jibb
1728−/* tok-494 %txt /tests/golden/types-union-local-pending/tokens/txt
1729−/* tre-494 %txt /tests/golden/types-union-local-pending/tree/txt
1730−/* typ-494 %txt /tests/golden/types-union-local-pending/types/txt
1731−/* src-495 %jibb /tests/golden/types-union-overlap/source/jibb
1732−/* tok-495 %txt /tests/golden/types-union-overlap/tokens/txt
1733−/* tre-495 %txt /tests/golden/types-union-overlap/tree/txt
1734−/* typ-495 %txt /tests/golden/types-union-overlap/types/txt
1735−/* src-496 %jibb /tests/golden/types-union-overlap-nested/source/jibb
1736−/* tok-496 %txt /tests/golden/types-union-overlap-nested/tokens/txt
1737−/* tre-496 %txt /tests/golden/types-union-overlap-nested/tree/txt
1738−/* typ-496 %txt /tests/golden/types-union-overlap-nested/types/txt
1739−/* src-497 %jibb /tests/golden/types-union-phantom-generic/source/jibb
1740−/* tok-497 %txt /tests/golden/types-union-phantom-generic/tokens/txt
1741−/* tre-497 %txt /tests/golden/types-union-phantom-generic/tree/txt
1742−/* typ-497 %txt /tests/golden/types-union-phantom-generic/types/txt
1743−/* src-498 %jibb /tests/golden/types-union-print-cross-namespace/source/jibb
1744−/* tok-498 %txt /tests/golden/types-union-print-cross-namespace/tokens/txt
1745−/* tre-498 %txt /tests/golden/types-union-print-cross-namespace/tree/txt
1746−/* mod-498-1 %jibb /tests/golden/types-union-print-cross-namespace/modules/ui/lib/jibb
1747−/* typ-498 %txt /tests/golden/types-union-print-cross-namespace/types/txt
1748−/* mtre-498 %txt /tests/golden/types-union-print-cross-namespace/module-trees/txt
1749−/* src-499 %jibb /tests/golden/types-union-print-distinct/source/jibb
1750−/* tok-499 %txt /tests/golden/types-union-print-distinct/tokens/txt
1751−/* tre-499 %txt /tests/golden/types-union-print-distinct/tree/txt
1752−/* mod-499-1 %jibb /tests/golden/types-union-print-distinct/modules/ui/left/jibb
1753−/* mod-499-2 %jibb /tests/golden/types-union-print-distinct/modules/ui/right/jibb
1754−/* mod-499-3 %jibb /tests/golden/types-union-print-distinct/modules/ui/twin/jibb
1755−/* typ-499 %txt /tests/golden/types-union-print-distinct/types/txt
1756−/* mtre-499 %txt /tests/golden/types-union-print-distinct/module-trees/txt
1757−/* src-500 %jibb /tests/golden/types-union-print-escape/source/jibb
1758−/* tok-500 %txt /tests/golden/types-union-print-escape/tokens/txt
1759−/* tre-500 %txt /tests/golden/types-union-print-escape/tree/txt
1760−/* typ-500 %txt /tests/golden/types-union-print-escape/types/txt
1761−/* src-501 %jibb /tests/golden/types-union-print-local/source/jibb
1762−/* tok-501 %txt /tests/golden/types-union-print-local/tokens/txt
1763−/* tre-501 %txt /tests/golden/types-union-print-local/tree/txt
1764−/* typ-501 %txt /tests/golden/types-union-print-local/types/txt
1765−/* src-502 %jibb /tests/golden/types-union-print-nested/source/jibb
1766−/* tok-502 %txt /tests/golden/types-union-print-nested/tokens/txt
1767−/* tre-502 %txt /tests/golden/types-union-print-nested/tree/txt
1768−/* typ-502 %txt /tests/golden/types-union-print-nested/types/txt
1769−/* src-503 %jibb /tests/golden/types-union-print-same-origin/source/jibb
1770−/* tok-503 %txt /tests/golden/types-union-print-same-origin/tokens/txt
1771−/* tre-503 %txt /tests/golden/types-union-print-same-origin/tree/txt
1772−/* mod-503-1 %jibb /tests/golden/types-union-print-same-origin/modules/ui/shared/jibb
1773−/* typ-503 %txt /tests/golden/types-union-print-same-origin/types/txt
1774−/* mtre-503 %txt /tests/golden/types-union-print-same-origin/module-trees/txt
1775−/* src-504 %jibb /tests/golden/types-union-print-transitive/source/jibb
1776−/* tok-504 %txt /tests/golden/types-union-print-transitive/tokens/txt
1777−/* tre-504 %txt /tests/golden/types-union-print-transitive/tree/txt
1778−/* mod-504-1 %jibb /tests/golden/types-union-print-transitive/modules/ui/mid/jibb
1779−/* mod-504-2 %jibb /tests/golden/types-union-print-transitive/modules/ui/base/jibb
1780−/* typ-504 %txt /tests/golden/types-union-print-transitive/types/txt
1781−/* mtre-504 %txt /tests/golden/types-union-print-transitive/module-trees/txt
1782−/* src-505 %jibb /tests/golden/types-union-singleton/source/jibb
1783−/* tok-505 %txt /tests/golden/types-union-singleton/tokens/txt
1784−/* tre-505 %txt /tests/golden/types-union-singleton/tree/txt
1785−/* typ-505 %txt /tests/golden/types-union-singleton/types/txt
1786−/* src-506 %jibb /tests/golden/types-union-tag-atoms/source/jibb
1787−/* tok-506 %txt /tests/golden/types-union-tag-atoms/tokens/txt
1788−/* tre-506 %txt /tests/golden/types-union-tag-atoms/tree/txt
1789−/* typ-506 %txt /tests/golden/types-union-tag-atoms/types/txt
1790−/* src-507 %jibb /tests/golden/types-union-tags/source/jibb
1791−/* tok-507 %txt /tests/golden/types-union-tags/tokens/txt
1792−/* tre-507 %txt /tests/golden/types-union-tags/tree/txt
1793−/* typ-507 %txt /tests/golden/types-union-tags/types/txt
1794−/* src-508 %jibb /tests/golden/types-union-unresolved/source/jibb
1795−/* tok-508 %txt /tests/golden/types-union-unresolved/tokens/txt
1796−/* tre-508 %txt /tests/golden/types-union-unresolved/tree/txt
1797−/* typ-508 %txt /tests/golden/types-union-unresolved/types/txt
1798−/* src-509 %jibb /tests/golden/types-union-unresolved-flow/source/jibb
1799−/* tok-509 %txt /tests/golden/types-union-unresolved-flow/tokens/txt
1800−/* tre-509 %txt /tests/golden/types-union-unresolved-flow/tree/txt
1801−/* typ-509 %txt /tests/golden/types-union-unresolved-flow/types/txt
1802−/* src-510 %jibb /tests/golden/types-unit-context/source/jibb
1803−/* tok-510 %txt /tests/golden/types-unit-context/tokens/txt
1804−/* tre-510 %txt /tests/golden/types-unit-context/tree/txt
1805−/* typ-510 %txt /tests/golden/types-unit-context/types/txt
1806−/* src-511 %jibb /tests/golden/types-unit-patterns/source/jibb
1807−/* tok-511 %txt /tests/golden/types-unit-patterns/tokens/txt
1808−/* tre-511 %txt /tests/golden/types-unit-patterns/tree/txt
1809−/* typ-511 %txt /tests/golden/types-unit-patterns/types/txt
1663+/* src-479 %jibb /tests/golden/types-prelude-list-functions/source/jibb
1664+/* tok-479 %txt /tests/golden/types-prelude-list-functions/tokens/txt
1665+/* tre-479 %txt /tests/golden/types-prelude-list-functions/tree/txt
1666+/* mod-479-1 %jibb /tests/golden/types-prelude-list-functions/modules/ui/lib/jibb
1667+/* typ-479 %txt /tests/golden/types-prelude-list-functions/types/txt
1668+/* mtre-479 %txt /tests/golden/types-prelude-list-functions/module-trees/txt
1669+/* src-480 %jibb /tests/golden/types-record-bound-variable/source/jibb
1670+/* tok-480 %txt /tests/golden/types-record-bound-variable/tokens/txt
1671+/* tre-480 %txt /tests/golden/types-record-bound-variable/tree/txt
1672+/* typ-480 %txt /tests/golden/types-record-bound-variable/types/txt
1673+/* src-481 %jibb /tests/golden/types-record-faces/source/jibb
1674+/* tok-481 %txt /tests/golden/types-record-faces/tokens/txt
1675+/* tre-481 %txt /tests/golden/types-record-faces/tree/txt
1676+/* typ-481 %txt /tests/golden/types-record-faces/types/txt
1677+/* src-482 %jibb /tests/golden/types-record-import/source/jibb
1678+/* tok-482 %txt /tests/golden/types-record-import/tokens/txt
1679+/* tre-482 %txt /tests/golden/types-record-import/tree/txt
1680+/* mod-482-1 %jibb /tests/golden/types-record-import/modules/ui/lib/jibb
1681+/* typ-482 %txt /tests/golden/types-record-import/types/txt
1682+/* mtre-482 %txt /tests/golden/types-record-import/module-trees/txt
1683+/* src-483 %jibb /tests/golden/types-record-local-scheme/source/jibb
1684+/* tok-483 %txt /tests/golden/types-record-local-scheme/tokens/txt
1685+/* tre-483 %txt /tests/golden/types-record-local-scheme/tree/txt
1686+/* typ-483 %txt /tests/golden/types-record-local-scheme/types/txt
1687+/* src-484 %jibb /tests/golden/types-record-nested/source/jibb
1688+/* tok-484 %txt /tests/golden/types-record-nested/tokens/txt
1689+/* tre-484 %txt /tests/golden/types-record-nested/tree/txt
1690+/* typ-484 %txt /tests/golden/types-record-nested/types/txt
1691+/* src-485 %jibb /tests/golden/types-record-to-tuple/source/jibb
1692+/* tok-485 %txt /tests/golden/types-record-to-tuple/tokens/txt
1693+/* tre-485 %txt /tests/golden/types-record-to-tuple/tree/txt
1694+/* typ-485 %txt /tests/golden/types-record-to-tuple/types/txt
1695+/* src-486 %jibb /tests/golden/types-recursive-branch/source/jibb
1696+/* tok-486 %txt /tests/golden/types-recursive-branch/tokens/txt
1697+/* tre-486 %txt /tests/golden/types-recursive-branch/tree/txt
1698+/* typ-486 %txt /tests/golden/types-recursive-branch/types/txt
1699+/* src-487 %jibb /tests/golden/types-recursive-gate/source/jibb
1700+/* tok-487 %txt /tests/golden/types-recursive-gate/tokens/txt
1701+/* tre-487 %txt /tests/golden/types-recursive-gate/tree/txt
1702+/* typ-487 %txt /tests/golden/types-recursive-gate/types/txt
1703+/* src-488 %jibb /tests/golden/types-recursive-sample/source/jibb
1704+/* tok-488 %txt /tests/golden/types-recursive-sample/tokens/txt
1705+/* tre-488 %txt /tests/golden/types-recursive-sample/tree/txt
1706+/* typ-488 %txt /tests/golden/types-recursive-sample/types/txt
1707+/* src-489 %jibb /tests/golden/types-union-alias/source/jibb
1708+/* tok-489 %txt /tests/golden/types-union-alias/tokens/txt
1709+/* tre-489 %txt /tests/golden/types-union-alias/tree/txt
1710+/* typ-489 %txt /tests/golden/types-union-alias/types/txt
1711+/* src-490 %jibb /tests/golden/types-union-branch-context/source/jibb
1712+/* tok-490 %txt /tests/golden/types-union-branch-context/tokens/txt
1713+/* tre-490 %txt /tests/golden/types-union-branch-context/tree/txt
1714+/* typ-490 %txt /tests/golden/types-union-branch-context/types/txt
1715+/* src-491 %jibb /tests/golden/types-union-branch-pending/source/jibb
1716+/* tok-491 %txt /tests/golden/types-union-branch-pending/tokens/txt
1717+/* tre-491 %txt /tests/golden/types-union-branch-pending/tree/txt
1718+/* typ-491 %txt /tests/golden/types-union-branch-pending/types/txt
1719+/* src-492 %jibb /tests/golden/types-union-constructor-shape/source/jibb
1720+/* tok-492 %txt /tests/golden/types-union-constructor-shape/tokens/txt
1721+/* tre-492 %txt /tests/golden/types-union-constructor-shape/tree/txt
1722+/* typ-492 %txt /tests/golden/types-union-constructor-shape/types/txt
1723+/* src-493 %jibb /tests/golden/types-union-context-flow/source/jibb
1724+/* tok-493 %txt /tests/golden/types-union-context-flow/tokens/txt
1725+/* tre-493 %txt /tests/golden/types-union-context-flow/tree/txt
1726+/* typ-493 %txt /tests/golden/types-union-context-flow/types/txt
1727+/* src-494 %jibb /tests/golden/types-union-import/source/jibb
1728+/* tok-494 %txt /tests/golden/types-union-import/tokens/txt
1729+/* tre-494 %txt /tests/golden/types-union-import/tree/txt
1730+/* mod-494-1 %jibb /tests/golden/types-union-import/modules/ui/lib/jibb
1731+/* typ-494 %txt /tests/golden/types-union-import/types/txt
1732+/* mtre-494 %txt /tests/golden/types-union-import/module-trees/txt
1733+/* src-495 %jibb /tests/golden/types-union-local-pending/source/jibb
1734+/* tok-495 %txt /tests/golden/types-union-local-pending/tokens/txt
1735+/* tre-495 %txt /tests/golden/types-union-local-pending/tree/txt
1736+/* typ-495 %txt /tests/golden/types-union-local-pending/types/txt
1737+/* src-496 %jibb /tests/golden/types-union-overlap/source/jibb
1738+/* tok-496 %txt /tests/golden/types-union-overlap/tokens/txt
1739+/* tre-496 %txt /tests/golden/types-union-overlap/tree/txt
1740+/* typ-496 %txt /tests/golden/types-union-overlap/types/txt
1741+/* src-497 %jibb /tests/golden/types-union-overlap-nested/source/jibb
1742+/* tok-497 %txt /tests/golden/types-union-overlap-nested/tokens/txt
1743+/* tre-497 %txt /tests/golden/types-union-overlap-nested/tree/txt
1744+/* typ-497 %txt /tests/golden/types-union-overlap-nested/types/txt
1745+/* src-498 %jibb /tests/golden/types-union-phantom-generic/source/jibb
1746+/* tok-498 %txt /tests/golden/types-union-phantom-generic/tokens/txt
1747+/* tre-498 %txt /tests/golden/types-union-phantom-generic/tree/txt
1748+/* typ-498 %txt /tests/golden/types-union-phantom-generic/types/txt
1749+/* src-499 %jibb /tests/golden/types-union-print-cross-namespace/source/jibb
1750+/* tok-499 %txt /tests/golden/types-union-print-cross-namespace/tokens/txt
1751+/* tre-499 %txt /tests/golden/types-union-print-cross-namespace/tree/txt
1752+/* mod-499-1 %jibb /tests/golden/types-union-print-cross-namespace/modules/ui/lib/jibb
1753+/* typ-499 %txt /tests/golden/types-union-print-cross-namespace/types/txt
1754+/* mtre-499 %txt /tests/golden/types-union-print-cross-namespace/module-trees/txt
1755+/* src-500 %jibb /tests/golden/types-union-print-distinct/source/jibb
1756+/* tok-500 %txt /tests/golden/types-union-print-distinct/tokens/txt
1757+/* tre-500 %txt /tests/golden/types-union-print-distinct/tree/txt
1758+/* mod-500-1 %jibb /tests/golden/types-union-print-distinct/modules/ui/left/jibb
1759+/* mod-500-2 %jibb /tests/golden/types-union-print-distinct/modules/ui/right/jibb
1760+/* mod-500-3 %jibb /tests/golden/types-union-print-distinct/modules/ui/twin/jibb
1761+/* typ-500 %txt /tests/golden/types-union-print-distinct/types/txt
1762+/* mtre-500 %txt /tests/golden/types-union-print-distinct/module-trees/txt
1763+/* src-501 %jibb /tests/golden/types-union-print-escape/source/jibb
1764+/* tok-501 %txt /tests/golden/types-union-print-escape/tokens/txt
1765+/* tre-501 %txt /tests/golden/types-union-print-escape/tree/txt
1766+/* typ-501 %txt /tests/golden/types-union-print-escape/types/txt
1767+/* src-502 %jibb /tests/golden/types-union-print-local/source/jibb
1768+/* tok-502 %txt /tests/golden/types-union-print-local/tokens/txt
1769+/* tre-502 %txt /tests/golden/types-union-print-local/tree/txt
1770+/* typ-502 %txt /tests/golden/types-union-print-local/types/txt
1771+/* src-503 %jibb /tests/golden/types-union-print-nested/source/jibb
1772+/* tok-503 %txt /tests/golden/types-union-print-nested/tokens/txt
1773+/* tre-503 %txt /tests/golden/types-union-print-nested/tree/txt
1774+/* typ-503 %txt /tests/golden/types-union-print-nested/types/txt
1775+/* src-504 %jibb /tests/golden/types-union-print-same-origin/source/jibb
1776+/* tok-504 %txt /tests/golden/types-union-print-same-origin/tokens/txt
1777+/* tre-504 %txt /tests/golden/types-union-print-same-origin/tree/txt
1778+/* mod-504-1 %jibb /tests/golden/types-union-print-same-origin/modules/ui/shared/jibb
1779+/* typ-504 %txt /tests/golden/types-union-print-same-origin/types/txt
1780+/* mtre-504 %txt /tests/golden/types-union-print-same-origin/module-trees/txt
1781+/* src-505 %jibb /tests/golden/types-union-print-transitive/source/jibb
1782+/* tok-505 %txt /tests/golden/types-union-print-transitive/tokens/txt
1783+/* tre-505 %txt /tests/golden/types-union-print-transitive/tree/txt
1784+/* mod-505-1 %jibb /tests/golden/types-union-print-transitive/modules/ui/mid/jibb
1785+/* mod-505-2 %jibb /tests/golden/types-union-print-transitive/modules/ui/base/jibb
1786+/* typ-505 %txt /tests/golden/types-union-print-transitive/types/txt
1787+/* mtre-505 %txt /tests/golden/types-union-print-transitive/module-trees/txt
1788+/* src-506 %jibb /tests/golden/types-union-singleton/source/jibb
1789+/* tok-506 %txt /tests/golden/types-union-singleton/tokens/txt
1790+/* tre-506 %txt /tests/golden/types-union-singleton/tree/txt
1791+/* typ-506 %txt /tests/golden/types-union-singleton/types/txt
1792+/* src-507 %jibb /tests/golden/types-union-tag-atoms/source/jibb
1793+/* tok-507 %txt /tests/golden/types-union-tag-atoms/tokens/txt
1794+/* tre-507 %txt /tests/golden/types-union-tag-atoms/tree/txt
1795+/* typ-507 %txt /tests/golden/types-union-tag-atoms/types/txt
1796+/* src-508 %jibb /tests/golden/types-union-tags/source/jibb
1797+/* tok-508 %txt /tests/golden/types-union-tags/tokens/txt
1798+/* tre-508 %txt /tests/golden/types-union-tags/tree/txt
1799+/* typ-508 %txt /tests/golden/types-union-tags/types/txt
1800+/* src-509 %jibb /tests/golden/types-union-unresolved/source/jibb
1801+/* tok-509 %txt /tests/golden/types-union-unresolved/tokens/txt
1802+/* tre-509 %txt /tests/golden/types-union-unresolved/tree/txt
1803+/* typ-509 %txt /tests/golden/types-union-unresolved/types/txt
1804+/* src-510 %jibb /tests/golden/types-union-unresolved-flow/source/jibb
1805+/* tok-510 %txt /tests/golden/types-union-unresolved-flow/tokens/txt
1806+/* tre-510 %txt /tests/golden/types-union-unresolved-flow/tree/txt
1807+/* typ-510 %txt /tests/golden/types-union-unresolved-flow/types/txt
1808+/* src-511 %jibb /tests/golden/types-unit-context/source/jibb
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
18101816=/ prepared-prelude (prepare-prelude:jibb prelude-source)
18111817|%
18121818:: one arm per case
@@ -2767,72 +2773,74 @@
27672773 (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 ~ ~ ~))
27682774++ test-types-prelude-interface
27692775 (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]]))
27702778++ 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))
27722780++ 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))
27742782++ 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]]))
27762784++ 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))
27782786++ 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))
27802788++ 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))
27822790++ 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 ~ ~ ~))
27842792++ 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))
27862794++ 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))
27882796++ 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))
27902798++ 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))
27922800++ 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))
27942802++ 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))
27962804++ 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))
27982806++ 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]]))
28002808++ 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))
28022810++ 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))
28042812++ 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))
28062814++ 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))
28082816++ 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]]))
28102818++ 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]]))
28122820++ 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))
28142822++ 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))
28162824++ 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))
28182826++ 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]]))
28202828++ 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]]))
28222830++ 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))
28242832++ 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))
28262834++ 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))
28282836++ 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))
28302838++ 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))
28322840++ 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))
28342842++ 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))
28362844::
28372845:: +check: run golden:jibb on a case and compare both outputs
28382846::
tests/type-module-scope/about.txt+3
@@ -11,3 +11,6 @@ that source-wrapper and prepared-interface outputs agree with each other and
1111with the golden report under eval and on the ship.
1212An imported list stays representable with an omitted or altered prelude
1313list, 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
3636++ bridge: cast mold is not supported by partial inference
3737partial inference; module not checked
3838prelude 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