on master help sign in
Infer whole-case union patterns and prelude turn
commit9f1517e8918286d4d3ac3ebd1684d9edeba6e479 authoriko <mail@iko.soy> dateFri 30 Oct 2026, 23:53 (2 hours ago) parentddba633
74 files changed+6868−5059
docs/compiler.md+4−2 docs/prelude-inventory.md+1−1 docs/status.md+9−7 jibb-dev/lib/jibb.hoon+130−4 jibb-dev/lib/jibb/prelude.jibb+4−3 tests/golden/doc-grammar-04-step/about.txt+1 tests/golden/doc-grammar-04-step/modules.txt+1 tests/golden/doc-grammar-04-step/types.txt+3 tests/golden/prelude-1c-structural/source.jibb+4−3 tests/golden/prelude-1c-structural/tokens.txt+453−446 tests/golden/prelude-1c-structural/tree.txt+168−165 tests/golden/prelude-3g-basic/source.jibb+4−3 tests/golden/prelude-3g-basic/tokens.txt+101−94 tests/golden/prelude-3g-basic/tree.txt+41−38 tests/golden/prelude-3g-like/source.jibb+4−3 tests/golden/prelude-3g-like/tokens.txt+339−332 tests/golden/prelude-3g-like/tree.txt+127−124 tests/golden/prelude-3g-structural/source.jibb+4−3 tests/golden/prelude-3g-structural/tokens.txt+290−283 tests/golden/prelude-3g-structural/tree.txt+107−104 tests/golden/prelude-list-helpers/source.jibb+4−3 tests/golden/prelude-list-helpers/tokens.txt+575−568 tests/golden/prelude-list-helpers/tree.txt+224−221 tests/golden/prelude-list-unit/source.jibb+4−3 tests/golden/prelude-list-unit/tokens.txt+32−25 tests/golden/prelude-list-unit/tree.txt+13−10 tests/golden/prelude-unit-list-transforms/source.jibb+4−3 tests/golden/prelude-unit-list-transforms/tokens.txt+1480−1473 tests/golden/prelude-unit-list-transforms/tree.txt+638−635 tests/golden/types-list-zero-fit/about.txt+4 tests/golden/types-list-zero-fit/modules.txt+1 tests/golden/types-list-zero-fit/source.jibb+8 tests/golden/types-list-zero-fit/tokens.txt+181 tests/golden/types-list-zero-fit/tree.txt+91 tests/golden/types-list-zero-fit/types.txt+27 tests/golden/types-prelude-direct/about.txt+1−1 tests/golden/types-prelude-direct/source.jibb+1−1 tests/golden/types-prelude-direct/tokens.txt+11−11 tests/golden/types-prelude-direct/tree.txt+7−7 tests/golden/types-prelude-direct/types.txt+1−1 tests/golden/types-prelude-interface/about.txt+1−1 tests/golden/types-prelude-interface/source.jibb+1−1 tests/golden/types-prelude-interface/tokens.txt+11−11 tests/golden/types-prelude-interface/tree.txt+7−7 tests/golden/types-prelude-interface/types.txt+1−1 tests/golden/types-prelude-list-functions/about.txt+1−1 tests/golden/types-prelude-list-functions/module-trees.txt+7−1 tests/golden/types-prelude-list-functions/modules/ui/lib.jibb+1 tests/golden/types-prelude-list-functions/source.jibb+7 tests/golden/types-prelude-list-functions/tokens.txt+102−3 tests/golden/types-prelude-list-functions/tree.txt+48−1 tests/golden/types-prelude-list-functions/types.txt+13 tests/golden/types-union-patterns-generic/about.txt+4 tests/golden/types-union-patterns-generic/modules.txt+1 tests/golden/types-union-patterns-generic/source.jibb+36 tests/golden/types-union-patterns-generic/tokens.txt+255 tests/golden/types-union-patterns-generic/tree.txt+117 tests/golden/types-union-patterns-generic/types.txt+13 tests/golden/types-union-patterns-import/about.txt+4 tests/golden/types-union-patterns-import/module-trees.txt+8 tests/golden/types-union-patterns-import/modules.txt+1 tests/golden/types-union-patterns-import/modules/ui/lib.jibb+3 tests/golden/types-union-patterns-import/source.jibb+5 tests/golden/types-union-patterns-import/tokens.txt+28 tests/golden/types-union-patterns-import/tree.txt+12 tests/golden/types-union-patterns-import/types.txt+2 tests/golden/types-union-patterns/about.txt+4 tests/golden/types-union-patterns/modules.txt+1 tests/golden/types-union-patterns/source.jibb+74 tests/golden/types-union-patterns/tokens.txt+336 tests/golden/types-union-patterns/tree.txt+152 tests/golden/types-union-patterns/types.txt+25 tests/golden/types-unit-patterns/types.txt+4−1 tests/lib/jibb.hoon+481−454
docs/compiler.md+4−2
@@ -64,10 +64,12 @@ For supported closed unions, the type printer keeps the union’s origin separat
6464
6565Multi-argument calls form one right-nested sample: `f a b c` supplies `[a [b c]]`, with the last argument able to be a cell itself. The fragment fits the complete sample, preserving known faces and shared variables. Known sample positions can provide list or union context to arguments; unknown sample shapes use ordinary inference and some contextual forms remain unsupported. For a definite mismatch, the diagnostic points to a specific argument when it can establish which one failed; otherwise it reports the combined sample.
6666
67−A list literal can be inferred when a cast or known gate sample supplies a list type and the supplied prelude has the validated standard list definition. Empty, nonempty and nested literals work, including contextual union tags in elements; mismatched elements report the item and expected type. Imported Hoon lists share this representation. Under the same known context, `~` and zero-valued term literals fit an empty list, and a two-item unfaced cell `[head tail]` is a cons; cons cells and list literals can be nested. Mismatched heads or tails report both sites. A known list result also supplies context through complete loobean, unit-shaped and list-shaped branches, including recursive and nested branches. Faced or longer cells, uncontextualized construction, and a missing or altered prelude list remain unsupported. For a known standard list with a supported element type, it also infers a complete two-arm branch using `~` and `[item rest]`, in either order. The binders have the element and list types and cannot shadow or duplicate names. Unknown subjects, unsupported element types, other patterns and incomplete arms remain unsupported.
67+A list literal can be inferred when a cast or known gate sample supplies a list type and the supplied prelude has the validated standard list definition. Empty, nonempty and nested literals work, including contextual union tags in elements; mismatched elements report the item and expected type. Imported Hoon lists share this representation. Under the same known context, `~` and zero-valued term literals fit an empty list, and a two-item unfaced cell `[head tail]` is a cons; cons cells and list literals can be nested. Mismatched heads or tails report both sites. A known list result also supplies context through complete loobean, unit-shaped and list-shaped branches, including recursive and nested branches. A zero nested inside a single tuple argument where a list is expected also remains unsupported, rather than a definite mismatch; separate call arguments can receive list context. Faced or longer cells, uncontextualized construction, and a missing or altered prelude list remain unsupported. For a known standard list with a supported element type, it also infers a complete two-arm branch using `~` and `[item rest]`, in either order. The binders have the element and list types and cannot shadow or duplicate names. Unknown subjects, unsupported element types, other patterns and incomplete arms remain unsupported.
6868
6969A known union of `~` and a null-headed cell can be matched by `~` and `[~ value]` arms in either order. The payload binder is checked for shadowing. Unknown subjects, missing or duplicate arms, and unresolved branch results remain unsupported; this fragment infers the prelude’s `fall` and `need` signatures.
7070
71+A known closed union with two or more arms can be matched when each arm provably covers or excludes each remaining case in full. The checker binds payloads for an arm matching one case, accepts a binder-free catch-all, and reports missing cases and arms already covered. It checks tags by noun value, including loobean and null spellings, and supports imported and generic union cases. A pattern that might cover only part of a case, a binder spanning multiple cases, differing arm result types and some complex two-arm subjects remain unsupported; contextual union-pattern branches also remain unsupported. The Grammar’s `step` block infers in this fragment, but its module is not yet checked.
72+
7173A 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.
7274
7375The 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.
@@ -78,7 +80,7 @@ Callers that have a `/sur` core and a name can use `+read-named`: it checks for
7880
7981`+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.
8082
81−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.
83+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`, `snoc` and `turn`; unsupported entries, such as most list helpers, remain unavailable. The validated `list` is injected while the prelude’s gates are inferred; `weld` and `turn` use ordinary explicit result casts. 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.
8284
8385`+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.
8486
docs/prelude-inventory.md+1−1
@@ -43,7 +43,7 @@ The following is an audit of the Hoon 135 bodies, not a completed Jibb interface
4343
4444`snoc`, `lure`, `fand`, `find`, `flop`, `gulf`, `homo`, `join`, `bake`, `lent`, `levy`, `lien`, `limo`, `murn`, `oust`, `reap`, `rear`, `reel`, `roll`, `scag`, `skid`, `skim`, `skip`, `slag`, `snag`, `snip`, `sort`, `spin`, `spun`, `swag`, `turn`, `weld`, `snap`, `into`, `welp`, `zing`.
4545
46−The current prelude writes `snoc`, `lure`, `flop`, `join`, `levy`, `lien`, `murn`, `rear`, `reel`, `roll`, `skim`, `skip`, `snip`, `turn` and `weld`. `murn` keeps the present products of its gate in order; `join` inserts a separator between items; `snip` drops the last item, and `rear` returns it or crashes on an empty list. The folds take an explicit initial value as the Prelude table specifies. The partial checker infers `snoc`, `lure` and `weld` using the validated prelude `list` mold; most other list helpers remain unsupported by that fragment. Backend validation remains outstanding for all of them.
46+The current prelude writes `snoc`, `lure`, `flop`, `join`, `levy`, `lien`, `murn`, `rear`, `reel`, `roll`, `skim`, `skip`, `snip`, `turn` and `weld`. `murn` keeps the present products of its gate in order; `join` inserts a separator between items; `snip` drops the last item, and `rear` returns it or crashes on an empty list. The folds take an explicit initial value as the Prelude table specifies. The partial checker infers `snoc`, `lure`, `weld` and `turn` using the validated prelude `list` mold; most other list helpers remain unsupported by that fragment. Backend validation remains outstanding for all of them.
4747
4848## 2c
4949
docs/status.md+9−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 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. Opt-in structured reader APIs preserve successful graphs and distinguish definite unsupported-aura and core evidence from failures the reader cannot prove; unverified union disjointness and name-only vase recognition remain unsupported. They revalidate and re-walk failed types. An opt-in partial checker entry point consumes unchanged reader results and reports definite aura or core errors at imported mold use sites when their inputs are unique. Ordered replay covers nested cell samples, record and function casts, and non-generic same-module aliases; unsupported prefixes, cycles and shadowing stop it. Union molds, generic applications, transitive modules and unsupported reader outcomes remain generic. Replay repeats inference and may add work. 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 and local 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. A supported single local recursive gate also uses a monomorphic self reference and generalizes variables free of the enclosing environment after checking its body; captured variables remain shared. The checker collects written capitals per `++` before inference, excluding nested definitions: a capital used in an enclosing definition is shared with its locals even when written later, while a capital introduced only in a local definition is generalized there. Sibling locals can introduce independent capitals with the same spelling; generic mold parameters keep their own scope. Top-level groups of syntactic gates are inferred together with monomorphic placeholders and shared substitutions, then generalized only after the whole group checks; downstream uses and library interfaces instantiate those schemes independently. A dependency graph identifies groups with two iterative depth-first passes; its conservative local-reference edges can reject otherwise valid programs. Local mutual groups, polymorphic recursion, value cycles, unresolved literal constraints and unresolved branch joins remain unsupported. Reporting repeats inference for a single recursive gate outside a group; grouped reports use the stored schemes. Its performance cost remains unmeasured. String interpolation accepts known atom auras, unrestricted `@`, tapes and isolated decimal literals; a known cell asks for a printer, and an explicitly generic atom asks for an aura. Loobeans, term singletons, non-tape collections, open types and a type fixed only later remain unsupported. 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; mutually recursive local groups and recursive 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. Opt-in structured reader APIs preserve successful graphs and distinguish definite unsupported-aura and core evidence from failures the reader cannot prove; unverified union disjointness and name-only vase recognition remain unsupported. They revalidate and re-walk failed types. An opt-in partial checker entry point consumes unchanged reader results and reports definite aura or core errors at imported mold use sites when their inputs are unique. Ordered replay covers nested cell samples, record and function casts, and non-generic same-module aliases; unsupported prefixes, cycles and shadowing stop it. Union molds, generic applications, transitive modules and unsupported reader outcomes remain generic. Replay repeats inference and may add work. 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 and local 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. A supported single local recursive gate also uses a monomorphic self reference and generalizes variables free of the enclosing environment after checking its body; captured variables remain shared. The checker collects written capitals per `++` before inference, excluding nested definitions: a capital used in an enclosing definition is shared with its locals even when written later, while a capital introduced only in a local definition is generalized there. Sibling locals can introduce independent capitals with the same spelling; generic mold parameters keep their own scope. Top-level groups of syntactic gates are inferred together with monomorphic placeholders and shared substitutions, then generalized only after the whole group checks; downstream uses and library interfaces instantiate those schemes independently. A dependency graph identifies groups with two iterative depth-first passes; its conservative local-reference edges can reject otherwise valid programs. Local mutual groups, polymorphic recursion, value cycles, unresolved literal constraints and unresolved branch joins remain unsupported. Reporting repeats inference for a single recursive gate outside a group; grouped reports use the stored schemes. Its performance cost remains unmeasured. String interpolation accepts known atom auras, unrestricted `@`, tapes and isolated decimal literals; a known cell asks for a printer, and an explicitly generic atom asks for an aura. Loobeans, term singletons, non-tape collections, open types and a type fixed only later remain unsupported. A known closed union with two or more arms supports patterns that provably cover or exclude each remaining case in full, including payload binders, imported and generic cases, and binder-free catch-alls. Missing cases and covered arms are reported; partial-case patterns, multi-case binders, differing arm result types, some complex two-arm subjects and contextual union-pattern branches remain unsupported. The Grammar’s `step` block infers in this fragment, but its module is not yet checked. 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. A zero nested inside a single tuple argument where a list is expected remains unsupported rather than a definite mismatch. 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; mutually recursive local groups and recursive 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`, `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.
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`, `snoc` and `turn`. The validated standard `list` mold is injected when the prelude’s own gates are inferred; `weld` and `turn` have ordinary explicit result casts. 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−- 522 golden cases: 306 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 522-case corpus passed under `urbit eval` in 62.7 s. The fake ship passed all 528 tests, including the importer, importer/checker and mark/checker bridges, module scope and unification checks, with 31.4 s for sync and 37.8 s for tests. The importer golden compares 149 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+- 526 golden cases: 310 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 526-case corpus passed under `urbit eval` in 63.5 s. The fake ship passed all 532 tests, including the importer, importer/checker and mark/checker bridges, module scope and unification checks, with 32.6 s for sync and 38.9 s for tests. The importer golden compares 149 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).
@@ -92,14 +92,16 @@ Besides the plan's list:
9292| 10cbf9c | 2026-10-30 | Infer selected local recursive gates and distinguish reader diagnostics |
9393| 45afb13 | 2026-10-30 | Infer local capital scopes and report direct reader diagnostics |
9494| 054e651 | 2026-10-30 | Report nested reader diagnostics |
95−| This change | 2026-10-30 | Infer known-aura string interpolation |
95+| 98c19cd | 2026-10-30 | Infer known-aura string interpolation |
96+| ddba633 | 2026-10-30 | Infer top-level mutually recursive gates |
97+| This change | 2026-10-30 | Infer whole-case union patterns and prelude `turn` |
9698
9799## Checking it
98100
99101On a machine set up as [development.md](development.md) says:
100102
101103```
102−tools/golden # 522 cases under urbit eval
104+tools/golden # 526 cases under urbit eval
103105tools/importer-test # the Hoon importer fixture projection
104106tools/type-import-test # the importer/checker bridge fixture
105107tools/type-mark-test # the mark/checker bridge fixture
@@ -109,7 +111,7 @@ tools/testdata/selftest # the tools themselves
109111tools/doc-blocks docs/spec # the doc's examples are golden cases
110112tools/ship start
111113tools/ship gen-tests --check # tests/lib/jibb.hoon is up to date
112−tools/ship test # the same 522 cases as -test arms on the ship
114+tools/ship test # the same 526 cases as -test arms on the ship
113115tools/testdata/ship-selftest
114116tools/ship check-commit # |commit stores .jibb files
115117tools/clay-fixtures # example /sur files and marks build through Clay
jibb-dev/lib/jibb.hoon+130−4
@@ -5084,6 +5084,10 @@
50845084 =/ trial=ifit (itype-fit-ctor-cases literal.actual sample.expected cases sub next)
50855085 ?. ?=(%ok -.trial) trial
50865086 [%ok [[id.actual expected] sub.trial] next.trial]
5087+ :: Zero may be the empty list. A nested cell fit lacks the context
5088+ :: needed to resolve it here, so do not report a definite mismatch.
5089+ ?: &(?=(%collection -.expected) =(%list name.expected) =(0 val.literal.actual))
5090+ [%unknown ~]
50875091 ?: ?=(%const -.expected)
50885092 ?:(=(val.literal.actual val.literal.expected) [%ok [[id.actual expected] sub] next] [%bad ~])
50895093 ?: ?=(%atom -.expected)
@@ -5101,6 +5105,8 @@
51015105 [%ok u.u next]
51025106 ?: |(?=(%avar -.expected) ?=(%nvar -.expected)) [%unknown ~]
51035107 ?: ?=(%face -.expected) $(expected body.expected)
5108+ ?: &(?=(%collection -.expected) =(%list name.expected) =(0 val.literal.actual))
5109+ [%unknown ~]
51045110 ?: ?=(%const -.expected)
51055111 ?:(=(val.literal.actual val.literal.expected) [%ok sub next] [%bad ~])
51065112 ?: ?=(%atom -.expected)
@@ -6426,6 +6432,9 @@
64266432 [%| ["branch does not cover both loobeans" ~]]
64276433 =/ subject=iresult (infer-fragment subject.e env state)
64286434 ?: ?=(%| -.subject) subject
6435+ =/ subject-type=itype (itype-normalize typ.p.subject sub.state.p.subject)
6436+ ?: ?=(%union -.subject-type)
6437+ [%| ["contextual union-pattern branch is not supported by partial inference" ~]]
64296438 =/ su=(unit isub) (itype-unify typ.p.subject [%flag ~] sub.state.p.subject)
64306439 ?~ su [%| ["loobean branch subject does not unify with ?" ~]]
64316440 =/ left=iresult $(e val.x, state state.p.subject(sub u.su))
@@ -6695,6 +6704,116 @@
66956704 [%| ["a cell in interpolation needs a printer" ~[[(span-of p.i.ps) "cell without a printer"]]]]
66966705 [%| ["interpolation type needs unsupported inference" ~]]
66976706::
6707+:: Whole-case coverage for a known union. A pattern that might cover
6708+:: only part of a case stays unsupported until the general pattern matrix.
6709++$ imatch ?(%full %none %unknown)
6710+++ union-pattern-items
6711+ |= [ps=(list pattern) t=itype]
6712+ ^- imatch
6713+ ?~ ps %unknown
6714+ ?~ t.ps (union-pattern i.ps t)
6715+ =. t ?:(?=(%face -.t) body.t t)
6716+ ?. ?=(%cell -.t)
6717+ ?: |(?=(%atom -.t) ?=(%any-atom -.t) ?=(%flag -.t) ?=(%const -.t)) %none
6718+ %unknown
6719+ =/ a=imatch (union-pattern i.ps hed.t)
6720+ =/ b=imatch $(ps t.ps, t tal.t)
6721+ ?: |(=(%none a) =(%none b)) %none
6722+ ?:(&(=(%full a) =(%full b)) %full %unknown)
6723+::
6724+++ union-pattern
6725+ |= [p=pattern t=itype]
6726+ ^- imatch
6727+ =. t ?:(?=(%face -.t) body.t t)
6728+ ?- -.p
6729+ %any %full
6730+ %bind %full
6731+ %lit
6732+ ?: ?=(%const -.t) ?:(=(val.literal.t val.lit.p) %full %none)
6733+ ?: ?=(%cell -.t) %none
6734+ ?: ?=(%flag -.t)
6735+ ?:(|(=(0 val.lit.p) =(1 val.lit.p)) %unknown %none)
6736+ %unknown
6737+ %str ?:(?=(%cell -.t) %none %unknown)
6738+ %cell (union-pattern-items items.p t)
6739+ ==
6740+::
6741+++ union-pattern-has-bind
6742+ |= p=pattern
6743+ ^- ?
6744+ ?: ?=(%bind -.p) &
6745+ ?. ?=(%cell -.p) |
6746+ (lien items.p union-pattern-has-bind)
6747+::
6748+++ union-pattern-bind-items
6749+ |= [ps=(list pattern) t=itype env=ienv globals=(list term)]
6750+ ^- (unit ienv)
6751+ ?~ ps ~
6752+ ?~ t.ps (union-pattern-bind i.ps t env globals)
6753+ =. t ?:(?=(%face -.t) body.t t)
6754+ ?. ?=(%cell -.t) ~
6755+ =/ first=(unit ienv) (union-pattern-bind i.ps hed.t env globals)
6756+ ?~ first ~
6757+ $(ps t.ps, t tal.t, env u.first)
6758+::
6759+++ union-pattern-bind
6760+ |= [p=pattern t=itype env=ienv globals=(list term)]
6761+ ^- (unit ienv)
6762+ =. t ?:(?=(%face -.t) body.t t)
6763+ ?: ?=(%bind -.p)
6764+ ?: |(?=(^ (ienv-lookup name.p env)) (lien globals |=(n=term =(n name.p)))) ~
6765+ `[[name.p [t ~]] env]
6766+ ?: ?=(%cell -.p) (union-pattern-bind-items items.p t env globals)
6767+ `env
6768+::
6769+++ infer-known-union-branch
6770+ |= [e=expr env=ienv state=istate]
6771+ ^- iresult
6772+ ?> ?=(%branch -.e)
6773+ =/ subject=iresult (infer-fragment subject.e env state)
6774+ ?: ?=(%| -.subject) subject
6775+ =/ typ=itype (itype-normalize typ.p.subject sub.state.p.subject)
6776+ ?. ?=(%union -.typ) [%| ["branch is not supported by partial inference" ~]]
6777+ =/ cases=(list itype) cases.typ
6778+ =/ remaining=(list itype) cases
6779+ =/ arms=(list arm) arms.e
6780+ =/ st=istate state.p.subject
6781+ =/ answer=(unit itype) ~
6782+ |-
6783+ ?~ arms
6784+ ?^ remaining
6785+ [%| ["missing union case {(show-itype i.remaining sub.st)}" ~]]
6786+ ?~ answer [%| ["empty union branch is not supported by partial inference" ~]]
6787+ [%& u.answer st]
6788+ =/ a=arm i.arms
6789+ ?: (lien remaining |=(c=itype =(%unknown (union-pattern pat.a c))))
6790+ [%| ["partial union pattern is not supported by partial inference" ~]]
6791+ =/ matching=(list itype) (skim remaining |=(c=itype =(%full (union-pattern pat.a c))))
6792+ ?~ matching
6793+ ?: (lien cases |=(c=itype =(%full (union-pattern pat.a c))))
6794+ [%| ["branch arm is covered by earlier arms" ~[[at.pat.a "covered arm"]]]]
6795+ [%| ["union pattern is not supported by partial inference" ~]]
6796+ ?: &(?=(^ t.matching) (union-pattern-has-bind pat.a))
6797+ [%| ["a union pattern binding several cases is not supported by partial inference" ~]]
6798+ =/ bound=(unit ienv) (union-pattern-bind pat.a i.matching env globals.st)
6799+ ?~ bound [%| ["pattern binder shadows a name" ~]]
6800+ =/ body=iresult (infer-fragment val.a u.bound st)
6801+ ?: ?=(%| -.body) body
6802+ =/ result=itype (itype-normalize typ.p.body sub.state.p.body)
6803+ =/ mismatch=? ?~(answer | !=((itype-normalize u.answer sub.state.p.body) result))
6804+ ?: mismatch [%| ["union branch result matching needs unsupported inference" ~]]
6805+ $(arms t.arms, remaining (skim remaining |=(c=itype !=(%full (union-pattern pat.a c)))), st state.p.body, answer `result)
6806+::
6807+++ known-union-subject
6808+ |= [e=expr env=ienv state=istate]
6809+ ^- (unit itype)
6810+ ?. ?=(%wing -.e) ~
6811+ =/ subject=iresult (infer-fragment e env state)
6812+ ?: ?=(%| -.subject) ~
6813+ =/ typ=itype (itype-normalize typ.p.subject sub.state.p.subject)
6814+ ?. ?=(%union -.typ) ~
6815+ `typ
6816+::
66986817++ infer-fragment
66996818 |= [e=expr env=ienv state=istate]
67006819 ^- iresult
@@ -6761,19 +6880,26 @@
67616880 %branch
67626881 ?~ arms.e [%| ["branch is not supported by partial inference" ~]]
67636882 ?~ t.arms.e (infer-cell-branch e env state)
6764− ?^ t.t.arms.e [%| ["branch is not supported by partial inference" ~]]
6883+ ?^ t.t.arms.e (infer-known-union-branch e env state)
6884+ =/ known=(unit itype) (known-union-subject subject.e env state)
6885+ ?: &(?=(^ known) ?=(~ (unit-union-payload u.known)))
6886+ (infer-known-union-branch e env state)
67656887 =/ x=arm i.arms.e
67666888 =/ y=arm i.t.arms.e
67676889 ?: |((unit-empty-pattern pat.x) (unit-empty-pattern pat.y))
67686890 (infer-unit-branch e env state ~)
6769− ?. ?=(%lit -.pat.x) [%| ["branch pattern is not supported by partial inference" ~]]
6770− ?. ?=(%lit -.pat.y) [%| ["branch pattern is not supported by partial inference" ~]]
6891+ ?. ?=(%lit -.pat.x) (infer-known-union-branch e env state)
6892+ ?. ?=(%lit -.pat.y) (infer-known-union-branch e env state)
67716893 ?. &(=(%loobean form.lit.pat.x) =(%loobean form.lit.pat.y))
6772− [%| ["branch pattern is not supported by partial inference" ~]]
6894+ (infer-known-union-branch e env state)
6895+ ?^ known (infer-known-union-branch e env state)
67736896 ?: =(val.lit.pat.x val.lit.pat.y)
67746897 [%| ["branch does not cover both loobeans" ~]]
67756898 =/ subject=iresult $(e subject.e)
67766899 ?: ?=(%| -.subject) subject
6900+ =/ subject-type=itype (itype-normalize typ.p.subject sub.state.p.subject)
6901+ ?: ?=(%union -.subject-type)
6902+ [%| ["union-pattern branch subject is not supported by partial inference" ~]]
67776903 =/ su=(unit isub) (itype-unify typ.p.subject [%flag ~] sub.state.p.subject)
67786904 ?~ su [%| ["loobean branch subject does not unify with ?" ~]]
67796905 =/ left=iresult $(e val.x, state state.p.subject(sub u.su))
jibb-dev/lib/jibb/prelude.jibb+4−3
@@ -45,9 +45,10 @@
4545++ turn |= args=[(list A) $-(A B)]
4646 ?- args
4747 [xs f]
48− ?- xs
49− ~ ~
50− [item rest] [(f item) (turn rest f)]
48+ ^- (list B)
49+ ?- xs
50+ ~ ~
51+ [item rest] [(f item) (turn rest f)]
5152
5253+$ dime [p=@ta q=@]
5354
tests/golden/doc-grammar-04-step/about.txt+1
@@ -1,3 +1,4 @@
11source: Grammar tab, section "Patterns", code block 4 of the tab
22tests: a union `+$ step` with one case per deeper line: cells with tags at the head, in the middle and at the end, faced fields, and a bare term; a blank line between definitions; a `?-` whose arms are cell patterns mixing tags and binding names, and a bare term, with their expressions aligned by extra spaces; interpolated strings and a name as arm expressions
33expect: parses
4+expect-types: a partial inference report
tests/golden/doc-grammar-04-step/modules.txtnew file+1
@@ -0,0 +1 @@
1+# no module fixtures
tests/golden/doc-grammar-04-step/types.txtnew file+3
@@ -0,0 +1,3 @@
1+partial inference; module not checked
2++$ step: cases proven disjoint; mold not checked
3+++ describe: $-(step @t)
tests/golden/prelude-1c-structural/source.jibb+4−3
@@ -45,9 +45,10 @@
4545++ turn |= args=[(list A) $-(A B)]
4646 ?- args
4747 [xs f]
48− ?- xs
49− ~ ~
50− [item rest] [(f item) (turn rest f)]
48+ ^- (list B)
49+ ?- xs
50+ ~ ~
51+ [item rest] [(f item) (turn rest f)]
5152
5253+$ dime [p=@ta q=@]
5354
tests/golden/prelude-1c-structural/tokens.txt+453−446
@@ -244,481 +244,488 @@
24424447:9 name f
24524547:10 tight glyph ]
24624648:7 INDENT
247−48:7 glyph ?-
248−48:10 name xs
247+48:7 glyph ^-
248+48:10 glyph (
249+48:11 tight name list
250+48:16 tvar B
251+48:17 tight glyph )
24925249: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
323−59:3 glyph [
324−59:4 tight lit %$
325−59:7 name p
326−59:8 tight glyph =
327−59:9 tight name dime
328−59:13 tight glyph ]
329−60:3 NEWLINE
253+49:9 glyph ?-
254+49:12 name xs
255+50:11 INDENT
256+50:11 lit ~
257+50:13 lit ~
258+51:11 NEWLINE
259+51:11 glyph [
260+51:12 tight name item
261+51:17 name rest
262+51:21 tight glyph ]
263+51:23 glyph [
264+51:24 tight glyph (
265+51:25 tight name f
266+51:27 name item
267+51:31 tight glyph )
268+51:33 glyph (
269+51:34 tight name turn
270+51:39 name rest
271+51:44 name f
272+51:45 tight glyph )
273+51:46 tight glyph ]
274+53:1 DEDENT
275+53:1 DEDENT
276+53:1 DEDENT
277+53:1 DEDENT
278+53:1 DEDENT
279+53:1 NEWLINE
280+53:1 glyph +$
281+53:4 name dime
282+53:9 glyph [
283+53:10 tight name p
284+53:11 tight glyph =
285+53:12 tight aura @ta
286+53:16 name q
287+53:17 tight glyph =
288+53:18 tight aura @
289+53:19 tight glyph ]
290+55:1 NEWLINE
291+55:1 glyph +$
292+55:4 name hair
293+55:9 glyph [
294+55:10 tight name p
295+55:11 tight glyph =
296+55:12 tight aura @ud
297+55:16 name q
298+55:17 tight glyph =
299+55:18 tight aura @ud
300+55:21 tight glyph ]
301+57:1 NEWLINE
302+57:1 glyph +$
303+57:4 name pint
304+57:9 glyph [
305+57:10 tight name p
306+57:11 tight glyph =
307+57:12 tight glyph [
308+57:13 tight name p
309+57:14 tight glyph =
310+57:15 tight aura @
311+57:17 name q
312+57:18 tight glyph =
313+57:19 tight aura @
314+57:20 tight glyph ]
315+57:22 name q
316+57:23 tight glyph =
317+57:24 tight glyph [
318+57:25 tight name p
319+57:26 tight glyph =
320+57:27 tight aura @
321+57:29 name q
322+57:30 tight glyph =
323+57:31 tight aura @
324+57:32 tight glyph ]
325+57:33 tight glyph ]
326+59:1 NEWLINE
327+59:1 glyph +$
328+59:4 name coin
329+60:3 INDENT
33033060:3 glyph [
331−60:4 tight lit %blob
332−60:10 name p
333−60:11 tight glyph =
334−60:12 tight glyph *
331+60:4 tight lit %$
332+60:7 name p
333+60:8 tight glyph =
334+60:9 tight name dime
33533560:13 tight glyph ]
33633661:3 NEWLINE
33733761:3 glyph [
338−61:4 tight lit %many
338+61:4 tight lit %blob
33933961:10 name p
34034061: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
434−79:3 NEWLINE
435−79:3 glyph [
436−79:4 tight lit %leaf
437−79:10 name p
438−79:11 tight glyph =
439−79:12 tight name tape
440−79:16 tight glyph ]
341+61:12 tight glyph *
342+61:13 tight glyph ]
343+62:3 NEWLINE
344+62:3 glyph [
345+62:4 tight lit %many
346+62:10 name p
347+62:11 tight glyph =
348+62:12 tight glyph (
349+62:13 tight name list
350+62:18 name coin
351+62:22 tight glyph )
352+62:23 tight glyph ]
353+64:1 DEDENT
354+64:1 NEWLINE
355+64:1 glyph +$
356+64:4 name pair
357+64:9 glyph |$
358+64:12 glyph [
359+64:13 tight tvar A
360+64:15 tvar B
361+64:16 tight glyph ]
362+64:18 glyph [
363+64:19 tight name p
364+64:20 tight glyph =
365+64:21 tight tvar A
366+64:23 name q
367+64:24 tight glyph =
368+64:25 tight tvar B
369+64:26 tight glyph ]
370+66:1 NEWLINE
371+66:1 glyph +$
372+66:4 name trel
373+66:9 glyph |$
374+66:12 glyph [
375+66:13 tight tvar A
376+66:15 tvar B
377+66:17 tvar C
378+66:18 tight glyph ]
379+66:20 glyph [
380+66:21 tight name p
381+66:22 tight glyph =
382+66:23 tight tvar A
383+66:25 name q
384+66:26 tight glyph =
385+66:27 tight tvar B
386+66:29 name r
387+66:30 tight glyph =
388+66:31 tight tvar C
389+66:32 tight glyph ]
390+68:1 NEWLINE
391+68:1 glyph +$
392+68:4 name qual
393+68:9 glyph |$
394+68:12 glyph [
395+68:13 tight tvar A
396+68:15 tvar B
397+68:17 tvar C
398+68:19 tvar D
399+68:20 tight glyph ]
400+68:22 glyph [
401+68:23 tight name p
402+68:24 tight glyph =
403+68:25 tight tvar A
404+68:27 name q
405+68:28 tight glyph =
406+68:29 tight tvar B
407+68:31 name r
408+68:32 tight glyph =
409+68:33 tight tvar C
410+68:35 name s
411+68:36 tight glyph =
412+68:37 tight tvar D
413+68:38 tight glyph ]
414+70:1 NEWLINE
415+70:1 glyph +$
416+70:4 name cord
417+70:9 aura @t
418+72:1 NEWLINE
419+72:1 glyph +$
420+72:4 name knot
421+72:9 aura @ta
422+74:1 NEWLINE
423+74:1 glyph +$
424+74:4 name tape
425+74:9 glyph (
426+74:10 tight name list
427+74:15 aura @tD
428+74:18 tight glyph )
429+76:1 NEWLINE
430+76:1 glyph +$
431+76:4 name path
432+76:9 glyph (
433+76:10 tight name list
434+76:15 name knot
435+76:19 tight glyph )
436+78:1 NEWLINE
437+78:1 glyph +$
438+78:4 name tank
439+79:3 INDENT
440+79:3 name cord
44144180:3 NEWLINE
44244280:3 glyph [
443−80:4 tight lit %palm
443+80:4 tight lit %leaf
44444480:10 name p
44544580:11 tight glyph =
446−80:12 tight glyph (
447−80:13 tight name qual
448−80:18 name tape
449−80:23 name tape
450−80:28 name tape
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 ]
446+80:12 tight name tape
447+80:16 tight glyph ]
46044881:3 NEWLINE
46144981:3 glyph [
462−81:4 tight lit %rose
450+81:4 tight lit %palm
46345181:10 name p
46445281:11 tight glyph =
46545381:12 tight glyph (
466−81:13 tight name trel
454+81:13 tight name qual
46745581:18 name tape
46845681:23 name tape
46945781: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
533−92:3 glyph [
534−92:4 tight lit %0
535−92:7 name p
536−92:8 tight glyph =
537−92:9 tight glyph *
538−92:10 tight glyph ]
539−93:3 NEWLINE
458+81:33 name tape
459+81:37 tight glyph )
460+81:39 name q
461+81:40 tight glyph =
462+81:41 tight glyph (
463+81:42 tight name list
464+81:47 name tank
465+81:51 tight glyph )
466+81:52 tight glyph ]
467+82:3 NEWLINE
468+82:3 glyph [
469+82:4 tight lit %rose
470+82:10 name p
471+82:11 tight glyph =
472+82:12 tight glyph (
473+82:13 tight name trel
474+82:18 name tape
475+82:23 name tape
476+82:28 name tape
477+82:32 tight glyph )
478+82:34 name q
479+82:35 tight glyph =
480+82:36 tight glyph (
481+82:37 tight name list
482+82:42 name tank
483+82:46 tight glyph )
484+82:47 tight glyph ]
485+84:1 DEDENT
486+84:1 NEWLINE
487+84:1 glyph +$
488+84:4 name nail
489+84:9 glyph [
490+84:10 tight name p
491+84:11 tight glyph =
492+84:12 tight name hair
493+84:17 name q
494+84:18 tight glyph =
495+84:19 tight name tape
496+84:23 tight glyph ]
497+86:1 NEWLINE
498+86:1 glyph +$
499+86:4 name edge
500+86:9 glyph [
501+86:10 tight name p
502+86:11 tight glyph =
503+86:12 tight name hair
504+86:17 name q
505+86:18 tight glyph =
506+86:19 tight glyph (
507+86:20 tight name unit
508+86:25 glyph [
509+86:26 tight name p
510+86:27 tight glyph =
511+86:28 tight glyph *
512+86:30 name q
513+86:31 tight glyph =
514+86:32 tight name nail
515+86:36 tight glyph ]
516+86:37 tight glyph )
517+86:38 tight glyph ]
518+88:1 NEWLINE
519+88:1 glyph +$
520+88:4 name rule
521+88:9 glyph $-(
522+88:12 tight name nail
523+88:17 name edge
524+88:21 tight glyph )
525+90:1 NEWLINE
526+90:1 glyph +$
527+90:4 name spot
528+90:9 glyph [
529+90:10 tight name p
530+90:11 tight glyph =
531+90:12 tight name path
532+90:17 name q
533+90:18 tight glyph =
534+90:19 tight name pint
535+90:23 tight glyph ]
536+92:1 NEWLINE
537+92:1 glyph +$
538+92:4 name toon
539+93:3 INDENT
54054093:3 glyph [
541−93:4 tight lit %1
541+93:4 tight lit %0
54254293:7 name p
54354393:8 tight glyph =
54454493:9 tight glyph *
54554593:10 tight glyph ]
54654694:3 NEWLINE
54754794:3 glyph [
548−94:4 tight lit %2
548+94:4 tight lit %1
54954994:7 name p
55055094: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
706−118:3 glyph [
707−118:4 tight lit %|
708−118:7 name p
709−118:8 tight glyph =
710−118:9 tight tvar B
711−118:10 tight glyph ]
712−119:3 NEWLINE
551+94:9 tight glyph *
552+94:10 tight glyph ]
553+95:3 NEWLINE
554+95:3 glyph [
555+95:4 tight lit %2
556+95:7 name p
557+95:8 tight glyph =
558+95:9 tight glyph (
559+95:10 tight name list
560+95:15 name tank
561+95:19 tight glyph )
562+95:20 tight glyph ]
563+97:1 DEDENT
564+97:1 NEWLINE
565+97:1 glyph +$
566+97:4 name like
567+97:9 glyph |$
568+97:12 glyph [
569+97:13 tight tvar A
570+97:14 tight glyph ]
571+97:16 glyph [
572+97:17 tight name p
573+97:18 tight glyph =
574+97:19 tight name hair
575+97:24 name q
576+97:25 tight glyph =
577+97:26 tight glyph (
578+97:27 tight name unit
579+97:32 glyph [
580+97:33 tight name p
581+97:34 tight glyph =
582+97:35 tight tvar A
583+97:37 name q
584+97:38 tight glyph =
585+97:39 tight name nail
586+97:43 tight glyph ]
587+97:44 tight glyph )
588+97:45 tight glyph ]
589+99:1 NEWLINE
590+99:1 glyph ++
591+99:4 name wonk
592+99:9 glyph |=
593+99:12 name veq
594+99:15 tight glyph =
595+99:16 tight glyph (
596+99:17 tight name like
597+99:22 tvar A
598+99:23 tight glyph )
599+100:3 INDENT
600+100:3 glyph ?-
601+100:6 wing q.veq
602+101:5 INDENT
603+101:5 lit ~
604+101:7 glyph !!
605+102:5 NEWLINE
606+102:5 glyph [
607+102:6 tight lit ~
608+102:8 name product
609+102:15 tight glyph ]
610+102:17 wing p.product
611+104:1 DEDENT
612+104:1 DEDENT
613+104:1 NEWLINE
614+104:1 glyph +$
615+104:4 name lone
616+104:9 glyph |$
617+104:12 glyph [
618+104:13 tight tvar A
619+104:14 tight glyph ]
620+104:16 glyph [
621+104:17 tight name p
622+104:18 tight glyph =
623+104:19 tight tvar A
624+104:20 tight glyph ]
625+106:1 NEWLINE
626+106:1 glyph +$
627+106:4 name lest
628+106:9 glyph |$
629+106:12 glyph [
630+106:13 tight tvar A
631+106:14 tight glyph ]
632+106:16 glyph [
633+106:17 tight name i
634+106:18 tight glyph =
635+106:19 tight tvar A
636+106:21 name t
637+106:22 tight glyph =
638+106:23 tight glyph (
639+106:24 tight name list
640+106:29 tvar A
641+106:30 tight glyph )
642+106:31 tight glyph ]
643+108:1 NEWLINE
644+108:1 glyph +$
645+108:4 name pole
646+108:9 glyph |$
647+108:12 glyph [
648+108:13 tight tvar A
649+108:14 tight glyph ]
650+109:3 INDENT
651+109:3 lit ~
652+110:3 NEWLINE
653+110:3 glyph [
654+110:4 tight tvar A
655+110:6 glyph (
656+110:7 tight name pole
657+110:12 tvar A
658+110:13 tight glyph )
659+110:14 tight glyph ]
660+112:1 DEDENT
661+112:1 NEWLINE
662+112:1 glyph +$
663+112:4 name quip
664+112:9 glyph |$
665+112:12 glyph [
666+112:13 tight tvar A
667+112:15 tvar B
668+112:16 tight glyph ]
669+112:18 glyph [
670+112:19 tight glyph (
671+112:20 tight name list
672+112:25 tvar A
673+112:26 tight glyph )
674+112:28 tvar B
675+112:29 tight glyph ]
676+114:1 NEWLINE
677+114:1 glyph +$
678+114:4 name tree
679+114:9 glyph |$
680+114:12 glyph [
681+114:13 tight tvar A
682+114:14 tight glyph ]
683+115:3 INDENT
684+115:3 lit ~
685+116:3 NEWLINE
686+116:3 glyph [
687+116:4 tight name n
688+116:5 tight glyph =
689+116:6 tight tvar A
690+116:8 name l
691+116:9 tight glyph =
692+116:10 tight glyph (
693+116:11 tight name tree
694+116:16 tvar A
695+116:17 tight glyph )
696+116:19 name r
697+116:20 tight glyph =
698+116:21 tight glyph (
699+116:22 tight name tree
700+116:27 tvar A
701+116:28 tight glyph )
702+116:29 tight glyph ]
703+118:1 DEDENT
704+118:1 NEWLINE
705+118:1 glyph +$
706+118:4 name each
707+118:9 glyph |$
708+118:12 glyph [
709+118:13 tight tvar A
710+118:15 tvar B
711+118:16 tight glyph ]
712+119:3 INDENT
713713119:3 glyph [
714−119:4 tight lit %&
714+119:4 tight lit %|
715715119:7 name p
716716119:8 tight glyph =
717−119:9 tight tvar A
717+119:9 tight tvar B
718718119: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
719+120:3 NEWLINE
720+120:3 glyph [
721+120:4 tight lit %&
722+120:7 name p
723+120:8 tight glyph =
724+120:9 tight tvar A
725+120:10 tight glyph ]
726+122:1 DEDENT
727+122:1 NEWLINE
728+122:1 glyph +$
729+122:4 name bloq
730+122:9 aura @
731+122:10 NEWLINE
tests/golden/prelude-1c-structural/tree.txt+168−165
@@ -111,177 +111,180 @@
111111 (arm 47:5
112112 (cell 47:5 (bind 47:6 xs) (bind 47:9 f))
113113 (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
144− (cell 59:3
145− (const 59:4 %$)
146− (face 59:7 p (ref 59:9 dime)))
114+ (cast 48:7
115+ (apply 48:10 list (tvar 48:16 B))
116+ (body 49:9
117+ (branch 49:9
118+ (wing 49:12 xs)
119+ (arm 50:11 (lit 50:11 ~) (lit 50:13 ~))
120+ (arm 51:11
121+ (cell 51:11 (bind 51:12 item) (bind 51:17 rest))
122+ (tuple 51:23
123+ (group 51:24
124+ (call 51:25 (wing 51:25 f) (wing 51:27 item)))
125+ (group 51:33
126+ (call 51:34 (wing 51:34 turn) (wing 51:39 rest) (wing 51:44 f))))))))))))))
127+ (mold 53:1 dime
128+ (cell 53:9
129+ (face 53:10 p (aura 53:12 @ta))
130+ (face 53:16 q (aura 53:18 @))))
131+ (mold 55:1 hair
132+ (cell 55:9
133+ (face 55:10 p (aura 55:12 @ud))
134+ (face 55:16 q (aura 55:18 @ud))))
135+ (mold 57:1 pint
136+ (cell 57:9
137+ (face 57:10 p
138+ (cell 57:12
139+ (face 57:13 p (aura 57:15 @))
140+ (face 57:17 q (aura 57:19 @))))
141+ (face 57:22 q
142+ (cell 57:24
143+ (face 57:25 p (aura 57:27 @))
144+ (face 57:29 q (aura 57:31 @))))))
145+ (mold 59:1 coin
146+ (union 60:3
147147 (cell 60:3
148− (const 60:4 %blob)
149− (face 60:10 p (noun 60:12)))
148+ (const 60:4 %$)
149+ (face 60:7 p (ref 60:9 dime)))
150150 (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)
181− (cell 79:3
182− (const 79:4 %leaf)
183− (face 79:10 p (ref 79:12 tape)))
151+ (const 61:4 %blob)
152+ (face 61:10 p (noun 61:12)))
153+ (cell 62:3
154+ (const 62:4 %many)
155+ (face 62:10 p
156+ (apply 62:12 list (ref 62:18 coin))))))
157+ (mold 64:1 pair
158+ (generic 64:9 A B
159+ (cell 64:18
160+ (face 64:19 p (tvar 64:21 A))
161+ (face 64:23 q (tvar 64:25 B)))))
162+ (mold 66:1 trel
163+ (generic 66:9 A B C
164+ (cell 66:20
165+ (face 66:21 p (tvar 66:23 A))
166+ (face 66:25 q (tvar 66:27 B))
167+ (face 66:29 r (tvar 66:31 C)))))
168+ (mold 68:1 qual
169+ (generic 68:9 A B C D
170+ (cell 68:22
171+ (face 68:23 p (tvar 68:25 A))
172+ (face 68:27 q (tvar 68:29 B))
173+ (face 68:31 r (tvar 68:33 C))
174+ (face 68:35 s (tvar 68:37 D)))))
175+ (mold 70:1 cord (aura 70:9 @t))
176+ (mold 72:1 knot (aura 72:9 @ta))
177+ (mold 74:1 tape
178+ (apply 74:9 list (aura 74:15 @tD)))
179+ (mold 76:1 path
180+ (apply 76:9 list (ref 76:15 knot)))
181+ (mold 78:1 tank
182+ (union 79:3
183+ (ref 79:3 cord)
184184 (cell 80:3
185− (const 80:4 %palm)
186− (face 80:10 p
187− (apply 80:12 qual (ref 80:18 tape) (ref 80:23 tape) (ref 80:28 tape) (ref 80:33 tape)))
188− (face 80:39 q
189− (apply 80:41 list (ref 80:47 tank))))
185+ (const 80:4 %leaf)
186+ (face 80:10 p (ref 80:12 tape)))
190187 (cell 81:3
191− (const 81:4 %rose)
188+ (const 81:4 %palm)
192189 (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
216− (cell 92:3
217− (const 92:4 %0)
218− (face 92:7 p (noun 92:9)))
190+ (apply 81:12 qual (ref 81:18 tape) (ref 81:23 tape) (ref 81:28 tape) (ref 81:33 tape)))
191+ (face 81:39 q
192+ (apply 81:41 list (ref 81:47 tank))))
193+ (cell 82:3
194+ (const 82:4 %rose)
195+ (face 82:10 p
196+ (apply 82:12 trel (ref 82:18 tape) (ref 82:23 tape) (ref 82:28 tape)))
197+ (face 82:34 q
198+ (apply 82:36 list (ref 82:42 tank))))))
199+ (mold 84:1 nail
200+ (cell 84:9
201+ (face 84:10 p (ref 84:12 hair))
202+ (face 84:17 q (ref 84:19 tape))))
203+ (mold 86:1 edge
204+ (cell 86:9
205+ (face 86:10 p (ref 86:12 hair))
206+ (face 86:17 q
207+ (apply 86:19 unit
208+ (cell 86:25
209+ (face 86:26 p (noun 86:28))
210+ (face 86:30 q (ref 86:32 nail)))))))
211+ (mold 88:1 rule
212+ (fn 88:9 (ref 88:12 nail) (ref 88:17 edge)))
213+ (mold 90:1 spot
214+ (cell 90:9
215+ (face 90:10 p (ref 90:12 path))
216+ (face 90:17 q (ref 90:19 pint))))
217+ (mold 92:1 toon
218+ (union 93:3
219219 (cell 93:3
220− (const 93:4 %1)
220+ (const 93:4 %0)
221221 (face 93:7 p (noun 93:9)))
222222 (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
281− (cell 118:3
282− (const 118:4 %|)
283− (face 118:7 p (tvar 118:9 B)))
223+ (const 94:4 %1)
224+ (face 94:7 p (noun 94:9)))
225+ (cell 95:3
226+ (const 95:4 %2)
227+ (face 95:7 p
228+ (apply 95:9 list (ref 95:15 tank))))))
229+ (mold 97:1 like
230+ (generic 97:9 A
231+ (cell 97:16
232+ (face 97:17 p (ref 97:19 hair))
233+ (face 97:24 q
234+ (apply 97:26 unit
235+ (cell 97:32
236+ (face 97:33 p (tvar 97:35 A))
237+ (face 97:37 q (ref 97:39 nail))))))))
238+ (value 99:1 wonk
239+ (gate 99:9
240+ (face 99:12 veq
241+ (apply 99:16 like (tvar 99:22 A)))
242+ (body 100:3
243+ (branch 100:3
244+ (wing 100:6 q.veq)
245+ (arm 101:5 (lit 101:5 ~) (crash 101:7))
246+ (arm 102:5
247+ (cell 102:5 (lit 102:6 ~) (bind 102:8 product))
248+ (wing 102:17 p.product))))))
249+ (mold 104:1 lone
250+ (generic 104:9 A
251+ (cell 104:16
252+ (face 104:17 p (tvar 104:19 A)))))
253+ (mold 106:1 lest
254+ (generic 106:9 A
255+ (cell 106:16
256+ (face 106:17 i (tvar 106:19 A))
257+ (face 106:21 t
258+ (apply 106:23 list (tvar 106:29 A))))))
259+ (mold 108:1 pole
260+ (generic 108:9 A
261+ (union 109:3
262+ (const 109:3 ~)
263+ (cell 110:3
264+ (tvar 110:4 A)
265+ (apply 110:6 pole (tvar 110:12 A))))))
266+ (mold 112:1 quip
267+ (generic 112:9 A B
268+ (cell 112:18
269+ (apply 112:19 list (tvar 112:25 A))
270+ (tvar 112:28 B))))
271+ (mold 114:1 tree
272+ (generic 114:9 A
273+ (union 115:3
274+ (const 115:3 ~)
275+ (cell 116:3
276+ (face 116:4 n (tvar 116:6 A))
277+ (face 116:8 l
278+ (apply 116:10 tree (tvar 116:16 A)))
279+ (face 116:19 r
280+ (apply 116:21 tree (tvar 116:27 A)))))))
281+ (mold 118:1 each
282+ (generic 118:9 A B
283+ (union 119:3
284284 (cell 119:3
285− (const 119:4 %&)
286− (face 119:7 p (tvar 119:9 A))))))
287− (mold 121:1 bloq (aura 121:9 @)))
285+ (const 119:4 %|)
286+ (face 119:7 p (tvar 119:9 B)))
287+ (cell 120:3
288+ (const 120:4 %&)
289+ (face 120:7 p (tvar 120:9 A))))))
290+ (mold 122:1 bloq (aura 122:9 @)))
tests/golden/prelude-3g-basic/source.jibb+4−3
@@ -45,9 +45,10 @@
4545++ turn |= args=[(list A) $-(A B)]
4646 ?- args
4747 [xs f]
48− ?- xs
49− ~ ~
50− [item rest] [(f item) (turn rest f)]
48+ ^- (list B)
49+ ?- xs
50+ ~ ~
51+ [item rest] [(f item) (turn rest f)]
5152
5253+$ dime [p=@ta q=@]
5354
tests/golden/prelude-3g-basic/tokens.txt+101−94
@@ -244,104 +244,111 @@
24424447:9 name f
24524547:10 tight glyph ]
24624648:7 INDENT
247−48:7 glyph ?-
248−48:10 name xs
247+48:7 glyph ^-
248+48:10 glyph (
249+48:11 tight name list
250+48:16 tvar B
251+48:17 tight glyph )
24925249: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
323−59:3 glyph [
324−59:4 tight lit %$
325−59:7 name p
326−59:8 tight glyph =
327−59:9 tight name dime
328−59:13 tight glyph ]
329−60:3 NEWLINE
253+49:9 glyph ?-
254+49:12 name xs
255+50:11 INDENT
256+50:11 lit ~
257+50:13 lit ~
258+51:11 NEWLINE
259+51:11 glyph [
260+51:12 tight name item
261+51:17 name rest
262+51:21 tight glyph ]
263+51:23 glyph [
264+51:24 tight glyph (
265+51:25 tight name f
266+51:27 name item
267+51:31 tight glyph )
268+51:33 glyph (
269+51:34 tight name turn
270+51:39 name rest
271+51:44 name f
272+51:45 tight glyph )
273+51:46 tight glyph ]
274+53:1 DEDENT
275+53:1 DEDENT
276+53:1 DEDENT
277+53:1 DEDENT
278+53:1 DEDENT
279+53:1 NEWLINE
280+53:1 glyph +$
281+53:4 name dime
282+53:9 glyph [
283+53:10 tight name p
284+53:11 tight glyph =
285+53:12 tight aura @ta
286+53:16 name q
287+53:17 tight glyph =
288+53:18 tight aura @
289+53:19 tight glyph ]
290+55:1 NEWLINE
291+55:1 glyph +$
292+55:4 name hair
293+55:9 glyph [
294+55:10 tight name p
295+55:11 tight glyph =
296+55:12 tight aura @ud
297+55:16 name q
298+55:17 tight glyph =
299+55:18 tight aura @ud
300+55:21 tight glyph ]
301+57:1 NEWLINE
302+57:1 glyph +$
303+57:4 name pint
304+57:9 glyph [
305+57:10 tight name p
306+57:11 tight glyph =
307+57:12 tight glyph [
308+57:13 tight name p
309+57:14 tight glyph =
310+57:15 tight aura @
311+57:17 name q
312+57:18 tight glyph =
313+57:19 tight aura @
314+57:20 tight glyph ]
315+57:22 name q
316+57:23 tight glyph =
317+57:24 tight glyph [
318+57:25 tight name p
319+57:26 tight glyph =
320+57:27 tight aura @
321+57:29 name q
322+57:30 tight glyph =
323+57:31 tight aura @
324+57:32 tight glyph ]
325+57:33 tight glyph ]
326+59:1 NEWLINE
327+59:1 glyph +$
328+59:4 name coin
329+60:3 INDENT
33033060:3 glyph [
331−60:4 tight lit %blob
332−60:10 name p
333−60:11 tight glyph =
334−60:12 tight glyph *
331+60:4 tight lit %$
332+60:7 name p
333+60:8 tight glyph =
334+60:9 tight name dime
33533560:13 tight glyph ]
33633661:3 NEWLINE
33733761:3 glyph [
338−61:4 tight lit %many
338+61:4 tight lit %blob
33933961:10 name p
34034061: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
341+61:12 tight glyph *
342+61:13 tight glyph ]
343+62:3 NEWLINE
344+62:3 glyph [
345+62:4 tight lit %many
346+62:10 name p
347+62:11 tight glyph =
348+62:12 tight glyph (
349+62:13 tight name list
350+62:18 name coin
351+62:22 tight glyph )
352+62:23 tight glyph ]
353+62:24 DEDENT
354+62:24 NEWLINE
tests/golden/prelude-3g-basic/tree.txt+41−38
@@ -111,43 +111,46 @@
111111 (arm 47:5
112112 (cell 47:5 (bind 47:6 xs) (bind 47:9 f))
113113 (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
144− (cell 59:3
145− (const 59:4 %$)
146− (face 59:7 p (ref 59:9 dime)))
114+ (cast 48:7
115+ (apply 48:10 list (tvar 48:16 B))
116+ (body 49:9
117+ (branch 49:9
118+ (wing 49:12 xs)
119+ (arm 50:11 (lit 50:11 ~) (lit 50:13 ~))
120+ (arm 51:11
121+ (cell 51:11 (bind 51:12 item) (bind 51:17 rest))
122+ (tuple 51:23
123+ (group 51:24
124+ (call 51:25 (wing 51:25 f) (wing 51:27 item)))
125+ (group 51:33
126+ (call 51:34 (wing 51:34 turn) (wing 51:39 rest) (wing 51:44 f))))))))))))))
127+ (mold 53:1 dime
128+ (cell 53:9
129+ (face 53:10 p (aura 53:12 @ta))
130+ (face 53:16 q (aura 53:18 @))))
131+ (mold 55:1 hair
132+ (cell 55:9
133+ (face 55:10 p (aura 55:12 @ud))
134+ (face 55:16 q (aura 55:18 @ud))))
135+ (mold 57:1 pint
136+ (cell 57:9
137+ (face 57:10 p
138+ (cell 57:12
139+ (face 57:13 p (aura 57:15 @))
140+ (face 57:17 q (aura 57:19 @))))
141+ (face 57:22 q
142+ (cell 57:24
143+ (face 57:25 p (aura 57:27 @))
144+ (face 57:29 q (aura 57:31 @))))))
145+ (mold 59:1 coin
146+ (union 60:3
147147 (cell 60:3
148− (const 60:4 %blob)
149− (face 60:10 p (noun 60:12)))
148+ (const 60:4 %$)
149+ (face 60:7 p (ref 60:9 dime)))
150150 (cell 61:3
151− (const 61:4 %many)
152− (face 61:10 p
153− (apply 61:12 list (ref 61:18 coin)))))))
151+ (const 61:4 %blob)
152+ (face 61:10 p (noun 61:12)))
153+ (cell 62:3
154+ (const 62:4 %many)
155+ (face 62:10 p
156+ (apply 62:12 list (ref 62:18 coin)))))))
tests/golden/prelude-3g-like/source.jibb+4−3
@@ -45,9 +45,10 @@
4545++ turn |= args=[(list A) $-(A B)]
4646 ?- args
4747 [xs f]
48− ?- xs
49− ~ ~
50− [item rest] [(f item) (turn rest f)]
48+ ^- (list B)
49+ ?- xs
50+ ~ ~
51+ [item rest] [(f item) (turn rest f)]
5152
5253+$ dime [p=@ta q=@]
5354
tests/golden/prelude-3g-like/tokens.txt+339−332
@@ -244,363 +244,370 @@
24424447:9 name f
24524547:10 tight glyph ]
24624648:7 INDENT
247−48:7 glyph ?-
248−48:10 name xs
247+48:7 glyph ^-
248+48:10 glyph (
249+48:11 tight name list
250+48:16 tvar B
251+48:17 tight glyph )
24925249: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
323−59:3 glyph [
324−59:4 tight lit %$
325−59:7 name p
326−59:8 tight glyph =
327−59:9 tight name dime
328−59:13 tight glyph ]
329−60:3 NEWLINE
253+49:9 glyph ?-
254+49:12 name xs
255+50:11 INDENT
256+50:11 lit ~
257+50:13 lit ~
258+51:11 NEWLINE
259+51:11 glyph [
260+51:12 tight name item
261+51:17 name rest
262+51:21 tight glyph ]
263+51:23 glyph [
264+51:24 tight glyph (
265+51:25 tight name f
266+51:27 name item
267+51:31 tight glyph )
268+51:33 glyph (
269+51:34 tight name turn
270+51:39 name rest
271+51:44 name f
272+51:45 tight glyph )
273+51:46 tight glyph ]
274+53:1 DEDENT
275+53:1 DEDENT
276+53:1 DEDENT
277+53:1 DEDENT
278+53:1 DEDENT
279+53:1 NEWLINE
280+53:1 glyph +$
281+53:4 name dime
282+53:9 glyph [
283+53:10 tight name p
284+53:11 tight glyph =
285+53:12 tight aura @ta
286+53:16 name q
287+53:17 tight glyph =
288+53:18 tight aura @
289+53:19 tight glyph ]
290+55:1 NEWLINE
291+55:1 glyph +$
292+55:4 name hair
293+55:9 glyph [
294+55:10 tight name p
295+55:11 tight glyph =
296+55:12 tight aura @ud
297+55:16 name q
298+55:17 tight glyph =
299+55:18 tight aura @ud
300+55:21 tight glyph ]
301+57:1 NEWLINE
302+57:1 glyph +$
303+57:4 name pint
304+57:9 glyph [
305+57:10 tight name p
306+57:11 tight glyph =
307+57:12 tight glyph [
308+57:13 tight name p
309+57:14 tight glyph =
310+57:15 tight aura @
311+57:17 name q
312+57:18 tight glyph =
313+57:19 tight aura @
314+57:20 tight glyph ]
315+57:22 name q
316+57:23 tight glyph =
317+57:24 tight glyph [
318+57:25 tight name p
319+57:26 tight glyph =
320+57:27 tight aura @
321+57:29 name q
322+57:30 tight glyph =
323+57:31 tight aura @
324+57:32 tight glyph ]
325+57:33 tight glyph ]
326+59:1 NEWLINE
327+59:1 glyph +$
328+59:4 name coin
329+60:3 INDENT
33033060:3 glyph [
331−60:4 tight lit %blob
332−60:10 name p
333−60:11 tight glyph =
334−60:12 tight glyph *
331+60:4 tight lit %$
332+60:7 name p
333+60:8 tight glyph =
334+60:9 tight name dime
33533560:13 tight glyph ]
33633661:3 NEWLINE
33733761:3 glyph [
338−61:4 tight lit %many
338+61:4 tight lit %blob
33933961:10 name p
34034061: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
434−79:3 NEWLINE
435−79:3 glyph [
436−79:4 tight lit %leaf
437−79:10 name p
438−79:11 tight glyph =
439−79:12 tight name tape
440−79:16 tight glyph ]
341+61:12 tight glyph *
342+61:13 tight glyph ]
343+62:3 NEWLINE
344+62:3 glyph [
345+62:4 tight lit %many
346+62:10 name p
347+62:11 tight glyph =
348+62:12 tight glyph (
349+62:13 tight name list
350+62:18 name coin
351+62:22 tight glyph )
352+62:23 tight glyph ]
353+64:1 DEDENT
354+64:1 NEWLINE
355+64:1 glyph +$
356+64:4 name pair
357+64:9 glyph |$
358+64:12 glyph [
359+64:13 tight tvar A
360+64:15 tvar B
361+64:16 tight glyph ]
362+64:18 glyph [
363+64:19 tight name p
364+64:20 tight glyph =
365+64:21 tight tvar A
366+64:23 name q
367+64:24 tight glyph =
368+64:25 tight tvar B
369+64:26 tight glyph ]
370+66:1 NEWLINE
371+66:1 glyph +$
372+66:4 name trel
373+66:9 glyph |$
374+66:12 glyph [
375+66:13 tight tvar A
376+66:15 tvar B
377+66:17 tvar C
378+66:18 tight glyph ]
379+66:20 glyph [
380+66:21 tight name p
381+66:22 tight glyph =
382+66:23 tight tvar A
383+66:25 name q
384+66:26 tight glyph =
385+66:27 tight tvar B
386+66:29 name r
387+66:30 tight glyph =
388+66:31 tight tvar C
389+66:32 tight glyph ]
390+68:1 NEWLINE
391+68:1 glyph +$
392+68:4 name qual
393+68:9 glyph |$
394+68:12 glyph [
395+68:13 tight tvar A
396+68:15 tvar B
397+68:17 tvar C
398+68:19 tvar D
399+68:20 tight glyph ]
400+68:22 glyph [
401+68:23 tight name p
402+68:24 tight glyph =
403+68:25 tight tvar A
404+68:27 name q
405+68:28 tight glyph =
406+68:29 tight tvar B
407+68:31 name r
408+68:32 tight glyph =
409+68:33 tight tvar C
410+68:35 name s
411+68:36 tight glyph =
412+68:37 tight tvar D
413+68:38 tight glyph ]
414+70:1 NEWLINE
415+70:1 glyph +$
416+70:4 name cord
417+70:9 aura @t
418+72:1 NEWLINE
419+72:1 glyph +$
420+72:4 name knot
421+72:9 aura @ta
422+74:1 NEWLINE
423+74:1 glyph +$
424+74:4 name tape
425+74:9 glyph (
426+74:10 tight name list
427+74:15 aura @tD
428+74:18 tight glyph )
429+76:1 NEWLINE
430+76:1 glyph +$
431+76:4 name path
432+76:9 glyph (
433+76:10 tight name list
434+76:15 name knot
435+76:19 tight glyph )
436+78:1 NEWLINE
437+78:1 glyph +$
438+78:4 name tank
439+79:3 INDENT
440+79:3 name cord
44144180:3 NEWLINE
44244280:3 glyph [
443−80:4 tight lit %palm
443+80:4 tight lit %leaf
44444480:10 name p
44544580:11 tight glyph =
446−80:12 tight glyph (
447−80:13 tight name qual
448−80:18 name tape
449−80:23 name tape
450−80:28 name tape
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 ]
446+80:12 tight name tape
447+80:16 tight glyph ]
46044881:3 NEWLINE
46144981:3 glyph [
462−81:4 tight lit %rose
450+81:4 tight lit %palm
46345181:10 name p
46445281:11 tight glyph =
46545381:12 tight glyph (
466−81:13 tight name trel
454+81:13 tight name qual
46745581:18 name tape
46845681:23 name tape
46945781: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
533−92:3 glyph [
534−92:4 tight lit %0
535−92:7 name p
536−92:8 tight glyph =
537−92:9 tight glyph *
538−92:10 tight glyph ]
539−93:3 NEWLINE
458+81:33 name tape
459+81:37 tight glyph )
460+81:39 name q
461+81:40 tight glyph =
462+81:41 tight glyph (
463+81:42 tight name list
464+81:47 name tank
465+81:51 tight glyph )
466+81:52 tight glyph ]
467+82:3 NEWLINE
468+82:3 glyph [
469+82:4 tight lit %rose
470+82:10 name p
471+82:11 tight glyph =
472+82:12 tight glyph (
473+82:13 tight name trel
474+82:18 name tape
475+82:23 name tape
476+82:28 name tape
477+82:32 tight glyph )
478+82:34 name q
479+82:35 tight glyph =
480+82:36 tight glyph (
481+82:37 tight name list
482+82:42 name tank
483+82:46 tight glyph )
484+82:47 tight glyph ]
485+84:1 DEDENT
486+84:1 NEWLINE
487+84:1 glyph +$
488+84:4 name nail
489+84:9 glyph [
490+84:10 tight name p
491+84:11 tight glyph =
492+84:12 tight name hair
493+84:17 name q
494+84:18 tight glyph =
495+84:19 tight name tape
496+84:23 tight glyph ]
497+86:1 NEWLINE
498+86:1 glyph +$
499+86:4 name edge
500+86:9 glyph [
501+86:10 tight name p
502+86:11 tight glyph =
503+86:12 tight name hair
504+86:17 name q
505+86:18 tight glyph =
506+86:19 tight glyph (
507+86:20 tight name unit
508+86:25 glyph [
509+86:26 tight name p
510+86:27 tight glyph =
511+86:28 tight glyph *
512+86:30 name q
513+86:31 tight glyph =
514+86:32 tight name nail
515+86:36 tight glyph ]
516+86:37 tight glyph )
517+86:38 tight glyph ]
518+88:1 NEWLINE
519+88:1 glyph +$
520+88:4 name rule
521+88:9 glyph $-(
522+88:12 tight name nail
523+88:17 name edge
524+88:21 tight glyph )
525+90:1 NEWLINE
526+90:1 glyph +$
527+90:4 name spot
528+90:9 glyph [
529+90:10 tight name p
530+90:11 tight glyph =
531+90:12 tight name path
532+90:17 name q
533+90:18 tight glyph =
534+90:19 tight name pint
535+90:23 tight glyph ]
536+92:1 NEWLINE
537+92:1 glyph +$
538+92:4 name toon
539+93:3 INDENT
54054093:3 glyph [
541−93:4 tight lit %1
541+93:4 tight lit %0
54254293:7 name p
54354393:8 tight glyph =
54454493:9 tight glyph *
54554593:10 tight glyph ]
54654694:3 NEWLINE
54754794:3 glyph [
548−94:4 tight lit %2
548+94:4 tight lit %1
54954994:7 name p
55055094: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
551+94:9 tight glyph *
552+94:10 tight glyph ]
553+95:3 NEWLINE
554+95:3 glyph [
555+95:4 tight lit %2
556+95:7 name p
557+95:8 tight glyph =
558+95:9 tight glyph (
559+95:10 tight name list
560+95:15 name tank
561+95:19 tight glyph )
562+95:20 tight glyph ]
563+97:1 DEDENT
564+97:1 NEWLINE
565+97:1 glyph +$
566+97:4 name like
567+97:9 glyph |$
568+97:12 glyph [
569+97:13 tight tvar A
570+97:14 tight glyph ]
571+97:16 glyph [
572+97:17 tight name p
573+97:18 tight glyph =
574+97:19 tight name hair
575+97:24 name q
576+97:25 tight glyph =
577+97:26 tight glyph (
578+97:27 tight name unit
579+97:32 glyph [
580+97:33 tight name p
581+97:34 tight glyph =
582+97:35 tight tvar A
583+97:37 name q
584+97:38 tight glyph =
585+97:39 tight name nail
586+97:43 tight glyph ]
587+97:44 tight glyph )
588+97:45 tight glyph ]
589+99:1 NEWLINE
590+99:1 glyph ++
591+99:4 name wonk
592+99:9 glyph |=
593+99:12 name veq
594+99:15 tight glyph =
595+99:16 tight glyph (
596+99:17 tight name like
597+99:22 tvar A
598+99:23 tight glyph )
599+100:3 INDENT
600+100:3 glyph ?-
601+100:6 wing q.veq
602+101:5 INDENT
603+101:5 lit ~
604+101:7 glyph !!
605+102:5 NEWLINE
606+102:5 glyph [
607+102:6 tight lit ~
608+102:8 name product
609+102:15 tight glyph ]
610+102:17 wing p.product
611+102:26 DEDENT
612+102:26 DEDENT
613+102:26 NEWLINE
tests/golden/prelude-3g-like/tree.txt+127−124
@@ -111,135 +111,138 @@
111111 (arm 47:5
112112 (cell 47:5 (bind 47:6 xs) (bind 47:9 f))
113113 (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
144− (cell 59:3
145− (const 59:4 %$)
146− (face 59:7 p (ref 59:9 dime)))
114+ (cast 48:7
115+ (apply 48:10 list (tvar 48:16 B))
116+ (body 49:9
117+ (branch 49:9
118+ (wing 49:12 xs)
119+ (arm 50:11 (lit 50:11 ~) (lit 50:13 ~))
120+ (arm 51:11
121+ (cell 51:11 (bind 51:12 item) (bind 51:17 rest))
122+ (tuple 51:23
123+ (group 51:24
124+ (call 51:25 (wing 51:25 f) (wing 51:27 item)))
125+ (group 51:33
126+ (call 51:34 (wing 51:34 turn) (wing 51:39 rest) (wing 51:44 f))))))))))))))
127+ (mold 53:1 dime
128+ (cell 53:9
129+ (face 53:10 p (aura 53:12 @ta))
130+ (face 53:16 q (aura 53:18 @))))
131+ (mold 55:1 hair
132+ (cell 55:9
133+ (face 55:10 p (aura 55:12 @ud))
134+ (face 55:16 q (aura 55:18 @ud))))
135+ (mold 57:1 pint
136+ (cell 57:9
137+ (face 57:10 p
138+ (cell 57:12
139+ (face 57:13 p (aura 57:15 @))
140+ (face 57:17 q (aura 57:19 @))))
141+ (face 57:22 q
142+ (cell 57:24
143+ (face 57:25 p (aura 57:27 @))
144+ (face 57:29 q (aura 57:31 @))))))
145+ (mold 59:1 coin
146+ (union 60:3
147147 (cell 60:3
148− (const 60:4 %blob)
149− (face 60:10 p (noun 60:12)))
148+ (const 60:4 %$)
149+ (face 60:7 p (ref 60:9 dime)))
150150 (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)
181− (cell 79:3
182− (const 79:4 %leaf)
183− (face 79:10 p (ref 79:12 tape)))
151+ (const 61:4 %blob)
152+ (face 61:10 p (noun 61:12)))
153+ (cell 62:3
154+ (const 62:4 %many)
155+ (face 62:10 p
156+ (apply 62:12 list (ref 62:18 coin))))))
157+ (mold 64:1 pair
158+ (generic 64:9 A B
159+ (cell 64:18
160+ (face 64:19 p (tvar 64:21 A))
161+ (face 64:23 q (tvar 64:25 B)))))
162+ (mold 66:1 trel
163+ (generic 66:9 A B C
164+ (cell 66:20
165+ (face 66:21 p (tvar 66:23 A))
166+ (face 66:25 q (tvar 66:27 B))
167+ (face 66:29 r (tvar 66:31 C)))))
168+ (mold 68:1 qual
169+ (generic 68:9 A B C D
170+ (cell 68:22
171+ (face 68:23 p (tvar 68:25 A))
172+ (face 68:27 q (tvar 68:29 B))
173+ (face 68:31 r (tvar 68:33 C))
174+ (face 68:35 s (tvar 68:37 D)))))
175+ (mold 70:1 cord (aura 70:9 @t))
176+ (mold 72:1 knot (aura 72:9 @ta))
177+ (mold 74:1 tape
178+ (apply 74:9 list (aura 74:15 @tD)))
179+ (mold 76:1 path
180+ (apply 76:9 list (ref 76:15 knot)))
181+ (mold 78:1 tank
182+ (union 79:3
183+ (ref 79:3 cord)
184184 (cell 80:3
185− (const 80:4 %palm)
186− (face 80:10 p
187− (apply 80:12 qual (ref 80:18 tape) (ref 80:23 tape) (ref 80:28 tape) (ref 80:33 tape)))
188− (face 80:39 q
189− (apply 80:41 list (ref 80:47 tank))))
185+ (const 80:4 %leaf)
186+ (face 80:10 p (ref 80:12 tape)))
190187 (cell 81:3
191− (const 81:4 %rose)
188+ (const 81:4 %palm)
192189 (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
216− (cell 92:3
217− (const 92:4 %0)
218− (face 92:7 p (noun 92:9)))
190+ (apply 81:12 qual (ref 81:18 tape) (ref 81:23 tape) (ref 81:28 tape) (ref 81:33 tape)))
191+ (face 81:39 q
192+ (apply 81:41 list (ref 81:47 tank))))
193+ (cell 82:3
194+ (const 82:4 %rose)
195+ (face 82:10 p
196+ (apply 82:12 trel (ref 82:18 tape) (ref 82:23 tape) (ref 82:28 tape)))
197+ (face 82:34 q
198+ (apply 82:36 list (ref 82:42 tank))))))
199+ (mold 84:1 nail
200+ (cell 84:9
201+ (face 84:10 p (ref 84:12 hair))
202+ (face 84:17 q (ref 84:19 tape))))
203+ (mold 86:1 edge
204+ (cell 86:9
205+ (face 86:10 p (ref 86:12 hair))
206+ (face 86:17 q
207+ (apply 86:19 unit
208+ (cell 86:25
209+ (face 86:26 p (noun 86:28))
210+ (face 86:30 q (ref 86:32 nail)))))))
211+ (mold 88:1 rule
212+ (fn 88:9 (ref 88:12 nail) (ref 88:17 edge)))
213+ (mold 90:1 spot
214+ (cell 90:9
215+ (face 90:10 p (ref 90:12 path))
216+ (face 90:17 q (ref 90:19 pint))))
217+ (mold 92:1 toon
218+ (union 93:3
219219 (cell 93:3
220− (const 93:4 %1)
220+ (const 93:4 %0)
221221 (face 93:7 p (noun 93:9)))
222222 (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)))))))
223+ (const 94:4 %1)
224+ (face 94:7 p (noun 94:9)))
225+ (cell 95:3
226+ (const 95:4 %2)
227+ (face 95:7 p
228+ (apply 95:9 list (ref 95:15 tank))))))
229+ (mold 97:1 like
230+ (generic 97:9 A
231+ (cell 97:16
232+ (face 97:17 p (ref 97:19 hair))
233+ (face 97:24 q
234+ (apply 97:26 unit
235+ (cell 97:32
236+ (face 97:33 p (tvar 97:35 A))
237+ (face 97:37 q (ref 97:39 nail))))))))
238+ (value 99:1 wonk
239+ (gate 99:9
240+ (face 99:12 veq
241+ (apply 99:16 like (tvar 99:22 A)))
242+ (body 100:3
243+ (branch 100:3
244+ (wing 100:6 q.veq)
245+ (arm 101:5 (lit 101:5 ~) (crash 101:7))
246+ (arm 102:5
247+ (cell 102:5 (lit 102:6 ~) (bind 102:8 product))
248+ (wing 102:17 p.product)))))))
tests/golden/prelude-3g-structural/source.jibb+4−3
@@ -45,9 +45,10 @@
4545++ turn |= args=[(list A) $-(A B)]
4646 ?- args
4747 [xs f]
48− ?- xs
49− ~ ~
50− [item rest] [(f item) (turn rest f)]
48+ ^- (list B)
49+ ?- xs
50+ ~ ~
51+ [item rest] [(f item) (turn rest f)]
5152
5253+$ dime [p=@ta q=@]
5354
tests/golden/prelude-3g-structural/tokens.txt+290−283
@@ -244,314 +244,321 @@
24424447:9 name f
24524547:10 tight glyph ]
24624648:7 INDENT
247−48:7 glyph ?-
248−48:10 name xs
247+48:7 glyph ^-
248+48:10 glyph (
249+48:11 tight name list
250+48:16 tvar B
251+48:17 tight glyph )
24925249: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
323−59:3 glyph [
324−59:4 tight lit %$
325−59:7 name p
326−59:8 tight glyph =
327−59:9 tight name dime
328−59:13 tight glyph ]
329−60:3 NEWLINE
253+49:9 glyph ?-
254+49:12 name xs
255+50:11 INDENT
256+50:11 lit ~
257+50:13 lit ~
258+51:11 NEWLINE
259+51:11 glyph [
260+51:12 tight name item
261+51:17 name rest
262+51:21 tight glyph ]
263+51:23 glyph [
264+51:24 tight glyph (
265+51:25 tight name f
266+51:27 name item
267+51:31 tight glyph )
268+51:33 glyph (
269+51:34 tight name turn
270+51:39 name rest
271+51:44 name f
272+51:45 tight glyph )
273+51:46 tight glyph ]
274+53:1 DEDENT
275+53:1 DEDENT
276+53:1 DEDENT
277+53:1 DEDENT
278+53:1 DEDENT
279+53:1 NEWLINE
280+53:1 glyph +$
281+53:4 name dime
282+53:9 glyph [
283+53:10 tight name p
284+53:11 tight glyph =
285+53:12 tight aura @ta
286+53:16 name q
287+53:17 tight glyph =
288+53:18 tight aura @
289+53:19 tight glyph ]
290+55:1 NEWLINE
291+55:1 glyph +$
292+55:4 name hair
293+55:9 glyph [
294+55:10 tight name p
295+55:11 tight glyph =
296+55:12 tight aura @ud
297+55:16 name q
298+55:17 tight glyph =
299+55:18 tight aura @ud
300+55:21 tight glyph ]
301+57:1 NEWLINE
302+57:1 glyph +$
303+57:4 name pint
304+57:9 glyph [
305+57:10 tight name p
306+57:11 tight glyph =
307+57:12 tight glyph [
308+57:13 tight name p
309+57:14 tight glyph =
310+57:15 tight aura @
311+57:17 name q
312+57:18 tight glyph =
313+57:19 tight aura @
314+57:20 tight glyph ]
315+57:22 name q
316+57:23 tight glyph =
317+57:24 tight glyph [
318+57:25 tight name p
319+57:26 tight glyph =
320+57:27 tight aura @
321+57:29 name q
322+57:30 tight glyph =
323+57:31 tight aura @
324+57:32 tight glyph ]
325+57:33 tight glyph ]
326+59:1 NEWLINE
327+59:1 glyph +$
328+59:4 name coin
329+60:3 INDENT
33033060:3 glyph [
331−60:4 tight lit %blob
332−60:10 name p
333−60:11 tight glyph =
334−60:12 tight glyph *
331+60:4 tight lit %$
332+60:7 name p
333+60:8 tight glyph =
334+60:9 tight name dime
33533560:13 tight glyph ]
33633661:3 NEWLINE
33733761:3 glyph [
338−61:4 tight lit %many
338+61:4 tight lit %blob
33933961:10 name p
34034061: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
434−79:3 NEWLINE
435−79:3 glyph [
436−79:4 tight lit %leaf
437−79:10 name p
438−79:11 tight glyph =
439−79:12 tight name tape
440−79:16 tight glyph ]
341+61:12 tight glyph *
342+61:13 tight glyph ]
343+62:3 NEWLINE
344+62:3 glyph [
345+62:4 tight lit %many
346+62:10 name p
347+62:11 tight glyph =
348+62:12 tight glyph (
349+62:13 tight name list
350+62:18 name coin
351+62:22 tight glyph )
352+62:23 tight glyph ]
353+64:1 DEDENT
354+64:1 NEWLINE
355+64:1 glyph +$
356+64:4 name pair
357+64:9 glyph |$
358+64:12 glyph [
359+64:13 tight tvar A
360+64:15 tvar B
361+64:16 tight glyph ]
362+64:18 glyph [
363+64:19 tight name p
364+64:20 tight glyph =
365+64:21 tight tvar A
366+64:23 name q
367+64:24 tight glyph =
368+64:25 tight tvar B
369+64:26 tight glyph ]
370+66:1 NEWLINE
371+66:1 glyph +$
372+66:4 name trel
373+66:9 glyph |$
374+66:12 glyph [
375+66:13 tight tvar A
376+66:15 tvar B
377+66:17 tvar C
378+66:18 tight glyph ]
379+66:20 glyph [
380+66:21 tight name p
381+66:22 tight glyph =
382+66:23 tight tvar A
383+66:25 name q
384+66:26 tight glyph =
385+66:27 tight tvar B
386+66:29 name r
387+66:30 tight glyph =
388+66:31 tight tvar C
389+66:32 tight glyph ]
390+68:1 NEWLINE
391+68:1 glyph +$
392+68:4 name qual
393+68:9 glyph |$
394+68:12 glyph [
395+68:13 tight tvar A
396+68:15 tvar B
397+68:17 tvar C
398+68:19 tvar D
399+68:20 tight glyph ]
400+68:22 glyph [
401+68:23 tight name p
402+68:24 tight glyph =
403+68:25 tight tvar A
404+68:27 name q
405+68:28 tight glyph =
406+68:29 tight tvar B
407+68:31 name r
408+68:32 tight glyph =
409+68:33 tight tvar C
410+68:35 name s
411+68:36 tight glyph =
412+68:37 tight tvar D
413+68:38 tight glyph ]
414+70:1 NEWLINE
415+70:1 glyph +$
416+70:4 name cord
417+70:9 aura @t
418+72:1 NEWLINE
419+72:1 glyph +$
420+72:4 name knot
421+72:9 aura @ta
422+74:1 NEWLINE
423+74:1 glyph +$
424+74:4 name tape
425+74:9 glyph (
426+74:10 tight name list
427+74:15 aura @tD
428+74:18 tight glyph )
429+76:1 NEWLINE
430+76:1 glyph +$
431+76:4 name path
432+76:9 glyph (
433+76:10 tight name list
434+76:15 name knot
435+76:19 tight glyph )
436+78:1 NEWLINE
437+78:1 glyph +$
438+78:4 name tank
439+79:3 INDENT
440+79:3 name cord
44144180:3 NEWLINE
44244280:3 glyph [
443−80:4 tight lit %palm
443+80:4 tight lit %leaf
44444480:10 name p
44544580:11 tight glyph =
446−80:12 tight glyph (
447−80:13 tight name qual
448−80:18 name tape
449−80:23 name tape
450−80:28 name tape
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 ]
446+80:12 tight name tape
447+80:16 tight glyph ]
46044881:3 NEWLINE
46144981:3 glyph [
462−81:4 tight lit %rose
450+81:4 tight lit %palm
46345181:10 name p
46445281:11 tight glyph =
46545381:12 tight glyph (
466−81:13 tight name trel
454+81:13 tight name qual
46745581:18 name tape
46845681:23 name tape
46945781: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
533−92:3 glyph [
534−92:4 tight lit %0
535−92:7 name p
536−92:8 tight glyph =
537−92:9 tight glyph *
538−92:10 tight glyph ]
539−93:3 NEWLINE
458+81:33 name tape
459+81:37 tight glyph )
460+81:39 name q
461+81:40 tight glyph =
462+81:41 tight glyph (
463+81:42 tight name list
464+81:47 name tank
465+81:51 tight glyph )
466+81:52 tight glyph ]
467+82:3 NEWLINE
468+82:3 glyph [
469+82:4 tight lit %rose
470+82:10 name p
471+82:11 tight glyph =
472+82:12 tight glyph (
473+82:13 tight name trel
474+82:18 name tape
475+82:23 name tape
476+82:28 name tape
477+82:32 tight glyph )
478+82:34 name q
479+82:35 tight glyph =
480+82:36 tight glyph (
481+82:37 tight name list
482+82:42 name tank
483+82:46 tight glyph )
484+82:47 tight glyph ]
485+84:1 DEDENT
486+84:1 NEWLINE
487+84:1 glyph +$
488+84:4 name nail
489+84:9 glyph [
490+84:10 tight name p
491+84:11 tight glyph =
492+84:12 tight name hair
493+84:17 name q
494+84:18 tight glyph =
495+84:19 tight name tape
496+84:23 tight glyph ]
497+86:1 NEWLINE
498+86:1 glyph +$
499+86:4 name edge
500+86:9 glyph [
501+86:10 tight name p
502+86:11 tight glyph =
503+86:12 tight name hair
504+86:17 name q
505+86:18 tight glyph =
506+86:19 tight glyph (
507+86:20 tight name unit
508+86:25 glyph [
509+86:26 tight name p
510+86:27 tight glyph =
511+86:28 tight glyph *
512+86:30 name q
513+86:31 tight glyph =
514+86:32 tight name nail
515+86:36 tight glyph ]
516+86:37 tight glyph )
517+86:38 tight glyph ]
518+88:1 NEWLINE
519+88:1 glyph +$
520+88:4 name rule
521+88:9 glyph $-(
522+88:12 tight name nail
523+88:17 name edge
524+88:21 tight glyph )
525+90:1 NEWLINE
526+90:1 glyph +$
527+90:4 name spot
528+90:9 glyph [
529+90:10 tight name p
530+90:11 tight glyph =
531+90:12 tight name path
532+90:17 name q
533+90:18 tight glyph =
534+90:19 tight name pint
535+90:23 tight glyph ]
536+92:1 NEWLINE
537+92:1 glyph +$
538+92:4 name toon
539+93:3 INDENT
54054093:3 glyph [
541−93:4 tight lit %1
541+93:4 tight lit %0
54254293:7 name p
54354393:8 tight glyph =
54454493:9 tight glyph *
54554593:10 tight glyph ]
54654694:3 NEWLINE
54754794:3 glyph [
548−94:4 tight lit %2
548+94:4 tight lit %1
54954994:7 name p
55055094: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
551+94:9 tight glyph *
552+94:10 tight glyph ]
553+95:3 NEWLINE
554+95:3 glyph [
555+95:4 tight lit %2
556+95:7 name p
557+95:8 tight glyph =
558+95:9 tight glyph (
559+95:10 tight name list
560+95:15 name tank
561+95:19 tight glyph )
562+95:20 tight glyph ]
563+95:21 DEDENT
564+95:21 NEWLINE
tests/golden/prelude-3g-structural/tree.txt+107−104
@@ -111,115 +111,118 @@
111111 (arm 47:5
112112 (cell 47:5 (bind 47:6 xs) (bind 47:9 f))
113113 (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
144− (cell 59:3
145− (const 59:4 %$)
146− (face 59:7 p (ref 59:9 dime)))
114+ (cast 48:7
115+ (apply 48:10 list (tvar 48:16 B))
116+ (body 49:9
117+ (branch 49:9
118+ (wing 49:12 xs)
119+ (arm 50:11 (lit 50:11 ~) (lit 50:13 ~))
120+ (arm 51:11
121+ (cell 51:11 (bind 51:12 item) (bind 51:17 rest))
122+ (tuple 51:23
123+ (group 51:24
124+ (call 51:25 (wing 51:25 f) (wing 51:27 item)))
125+ (group 51:33
126+ (call 51:34 (wing 51:34 turn) (wing 51:39 rest) (wing 51:44 f))))))))))))))
127+ (mold 53:1 dime
128+ (cell 53:9
129+ (face 53:10 p (aura 53:12 @ta))
130+ (face 53:16 q (aura 53:18 @))))
131+ (mold 55:1 hair
132+ (cell 55:9
133+ (face 55:10 p (aura 55:12 @ud))
134+ (face 55:16 q (aura 55:18 @ud))))
135+ (mold 57:1 pint
136+ (cell 57:9
137+ (face 57:10 p
138+ (cell 57:12
139+ (face 57:13 p (aura 57:15 @))
140+ (face 57:17 q (aura 57:19 @))))
141+ (face 57:22 q
142+ (cell 57:24
143+ (face 57:25 p (aura 57:27 @))
144+ (face 57:29 q (aura 57:31 @))))))
145+ (mold 59:1 coin
146+ (union 60:3
147147 (cell 60:3
148− (const 60:4 %blob)
149− (face 60:10 p (noun 60:12)))
148+ (const 60:4 %$)
149+ (face 60:7 p (ref 60:9 dime)))
150150 (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)
181− (cell 79:3
182− (const 79:4 %leaf)
183− (face 79:10 p (ref 79:12 tape)))
151+ (const 61:4 %blob)
152+ (face 61:10 p (noun 61:12)))
153+ (cell 62:3
154+ (const 62:4 %many)
155+ (face 62:10 p
156+ (apply 62:12 list (ref 62:18 coin))))))
157+ (mold 64:1 pair
158+ (generic 64:9 A B
159+ (cell 64:18
160+ (face 64:19 p (tvar 64:21 A))
161+ (face 64:23 q (tvar 64:25 B)))))
162+ (mold 66:1 trel
163+ (generic 66:9 A B C
164+ (cell 66:20
165+ (face 66:21 p (tvar 66:23 A))
166+ (face 66:25 q (tvar 66:27 B))
167+ (face 66:29 r (tvar 66:31 C)))))
168+ (mold 68:1 qual
169+ (generic 68:9 A B C D
170+ (cell 68:22
171+ (face 68:23 p (tvar 68:25 A))
172+ (face 68:27 q (tvar 68:29 B))
173+ (face 68:31 r (tvar 68:33 C))
174+ (face 68:35 s (tvar 68:37 D)))))
175+ (mold 70:1 cord (aura 70:9 @t))
176+ (mold 72:1 knot (aura 72:9 @ta))
177+ (mold 74:1 tape
178+ (apply 74:9 list (aura 74:15 @tD)))
179+ (mold 76:1 path
180+ (apply 76:9 list (ref 76:15 knot)))
181+ (mold 78:1 tank
182+ (union 79:3
183+ (ref 79:3 cord)
184184 (cell 80:3
185− (const 80:4 %palm)
186− (face 80:10 p
187− (apply 80:12 qual (ref 80:18 tape) (ref 80:23 tape) (ref 80:28 tape) (ref 80:33 tape)))
188− (face 80:39 q
189− (apply 80:41 list (ref 80:47 tank))))
185+ (const 80:4 %leaf)
186+ (face 80:10 p (ref 80:12 tape)))
190187 (cell 81:3
191− (const 81:4 %rose)
188+ (const 81:4 %palm)
192189 (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
216− (cell 92:3
217− (const 92:4 %0)
218− (face 92:7 p (noun 92:9)))
190+ (apply 81:12 qual (ref 81:18 tape) (ref 81:23 tape) (ref 81:28 tape) (ref 81:33 tape)))
191+ (face 81:39 q
192+ (apply 81:41 list (ref 81:47 tank))))
193+ (cell 82:3
194+ (const 82:4 %rose)
195+ (face 82:10 p
196+ (apply 82:12 trel (ref 82:18 tape) (ref 82:23 tape) (ref 82:28 tape)))
197+ (face 82:34 q
198+ (apply 82:36 list (ref 82:42 tank))))))
199+ (mold 84:1 nail
200+ (cell 84:9
201+ (face 84:10 p (ref 84:12 hair))
202+ (face 84:17 q (ref 84:19 tape))))
203+ (mold 86:1 edge
204+ (cell 86:9
205+ (face 86:10 p (ref 86:12 hair))
206+ (face 86:17 q
207+ (apply 86:19 unit
208+ (cell 86:25
209+ (face 86:26 p (noun 86:28))
210+ (face 86:30 q (ref 86:32 nail)))))))
211+ (mold 88:1 rule
212+ (fn 88:9 (ref 88:12 nail) (ref 88:17 edge)))
213+ (mold 90:1 spot
214+ (cell 90:9
215+ (face 90:10 p (ref 90:12 path))
216+ (face 90:17 q (ref 90:19 pint))))
217+ (mold 92:1 toon
218+ (union 93:3
219219 (cell 93:3
220− (const 93:4 %1)
220+ (const 93:4 %0)
221221 (face 93:7 p (noun 93:9)))
222222 (cell 94:3
223− (const 94:4 %2)
224− (face 94:7 p
225− (apply 94:9 list (ref 94:15 tank)))))))
223+ (const 94:4 %1)
224+ (face 94:7 p (noun 94:9)))
225+ (cell 95:3
226+ (const 95:4 %2)
227+ (face 95:7 p
228+ (apply 95:9 list (ref 95:15 tank)))))))
tests/golden/prelude-list-helpers/source.jibb+4−3
@@ -45,9 +45,10 @@
4545++ turn |= args=[(list A) $-(A B)]
4646 ?- args
4747 [xs f]
48− ?- xs
49− ~ ~
50− [item rest] [(f item) (turn rest f)]
48+ ^- (list B)
49+ ?- xs
50+ ~ ~
51+ [item rest] [(f item) (turn rest f)]
5152
5253+$ dime [p=@ta q=@]
5354
tests/golden/prelude-list-helpers/tokens.txt+575−568
@@ -244,603 +244,610 @@
24424447:9 name f
24524547:10 tight glyph ]
24624648:7 INDENT
247−48:7 glyph ?-
248−48:10 name xs
247+48:7 glyph ^-
248+48:10 glyph (
249+48:11 tight name list
250+48:16 tvar B
251+48:17 tight glyph )
24925249: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
323−59:3 glyph [
324−59:4 tight lit %$
325−59:7 name p
326−59:8 tight glyph =
327−59:9 tight name dime
328−59:13 tight glyph ]
329−60:3 NEWLINE
253+49:9 glyph ?-
254+49:12 name xs
255+50:11 INDENT
256+50:11 lit ~
257+50:13 lit ~
258+51:11 NEWLINE
259+51:11 glyph [
260+51:12 tight name item
261+51:17 name rest
262+51:21 tight glyph ]
263+51:23 glyph [
264+51:24 tight glyph (
265+51:25 tight name f
266+51:27 name item
267+51:31 tight glyph )
268+51:33 glyph (
269+51:34 tight name turn
270+51:39 name rest
271+51:44 name f
272+51:45 tight glyph )
273+51:46 tight glyph ]
274+53:1 DEDENT
275+53:1 DEDENT
276+53:1 DEDENT
277+53:1 DEDENT
278+53:1 DEDENT
279+53:1 NEWLINE
280+53:1 glyph +$
281+53:4 name dime
282+53:9 glyph [
283+53:10 tight name p
284+53:11 tight glyph =
285+53:12 tight aura @ta
286+53:16 name q
287+53:17 tight glyph =
288+53:18 tight aura @
289+53:19 tight glyph ]
290+55:1 NEWLINE
291+55:1 glyph +$
292+55:4 name hair
293+55:9 glyph [
294+55:10 tight name p
295+55:11 tight glyph =
296+55:12 tight aura @ud
297+55:16 name q
298+55:17 tight glyph =
299+55:18 tight aura @ud
300+55:21 tight glyph ]
301+57:1 NEWLINE
302+57:1 glyph +$
303+57:4 name pint
304+57:9 glyph [
305+57:10 tight name p
306+57:11 tight glyph =
307+57:12 tight glyph [
308+57:13 tight name p
309+57:14 tight glyph =
310+57:15 tight aura @
311+57:17 name q
312+57:18 tight glyph =
313+57:19 tight aura @
314+57:20 tight glyph ]
315+57:22 name q
316+57:23 tight glyph =
317+57:24 tight glyph [
318+57:25 tight name p
319+57:26 tight glyph =
320+57:27 tight aura @
321+57:29 name q
322+57:30 tight glyph =
323+57:31 tight aura @
324+57:32 tight glyph ]
325+57:33 tight glyph ]
326+59:1 NEWLINE
327+59:1 glyph +$
328+59:4 name coin
329+60:3 INDENT
33033060:3 glyph [
331−60:4 tight lit %blob
332−60:10 name p
333−60:11 tight glyph =
334−60:12 tight glyph *
331+60:4 tight lit %$
332+60:7 name p
333+60:8 tight glyph =
334+60:9 tight name dime
33533560:13 tight glyph ]
33633661:3 NEWLINE
33733761:3 glyph [
338−61:4 tight lit %many
338+61:4 tight lit %blob
33933961:10 name p
34034061: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
434−79:3 NEWLINE
435−79:3 glyph [
436−79:4 tight lit %leaf
437−79:10 name p
438−79:11 tight glyph =
439−79:12 tight name tape
440−79:16 tight glyph ]
341+61:12 tight glyph *
342+61:13 tight glyph ]
343+62:3 NEWLINE
344+62:3 glyph [
345+62:4 tight lit %many
346+62:10 name p
347+62:11 tight glyph =
348+62:12 tight glyph (
349+62:13 tight name list
350+62:18 name coin
351+62:22 tight glyph )
352+62:23 tight glyph ]
353+64:1 DEDENT
354+64:1 NEWLINE
355+64:1 glyph +$
356+64:4 name pair
357+64:9 glyph |$
358+64:12 glyph [
359+64:13 tight tvar A
360+64:15 tvar B
361+64:16 tight glyph ]
362+64:18 glyph [
363+64:19 tight name p
364+64:20 tight glyph =
365+64:21 tight tvar A
366+64:23 name q
367+64:24 tight glyph =
368+64:25 tight tvar B
369+64:26 tight glyph ]
370+66:1 NEWLINE
371+66:1 glyph +$
372+66:4 name trel
373+66:9 glyph |$
374+66:12 glyph [
375+66:13 tight tvar A
376+66:15 tvar B
377+66:17 tvar C
378+66:18 tight glyph ]
379+66:20 glyph [
380+66:21 tight name p
381+66:22 tight glyph =
382+66:23 tight tvar A
383+66:25 name q
384+66:26 tight glyph =
385+66:27 tight tvar B
386+66:29 name r
387+66:30 tight glyph =
388+66:31 tight tvar C
389+66:32 tight glyph ]
390+68:1 NEWLINE
391+68:1 glyph +$
392+68:4 name qual
393+68:9 glyph |$
394+68:12 glyph [
395+68:13 tight tvar A
396+68:15 tvar B
397+68:17 tvar C
398+68:19 tvar D
399+68:20 tight glyph ]
400+68:22 glyph [
401+68:23 tight name p
402+68:24 tight glyph =
403+68:25 tight tvar A
404+68:27 name q
405+68:28 tight glyph =
406+68:29 tight tvar B
407+68:31 name r
408+68:32 tight glyph =
409+68:33 tight tvar C
410+68:35 name s
411+68:36 tight glyph =
412+68:37 tight tvar D
413+68:38 tight glyph ]
414+70:1 NEWLINE
415+70:1 glyph +$
416+70:4 name cord
417+70:9 aura @t
418+72:1 NEWLINE
419+72:1 glyph +$
420+72:4 name knot
421+72:9 aura @ta
422+74:1 NEWLINE
423+74:1 glyph +$
424+74:4 name tape
425+74:9 glyph (
426+74:10 tight name list
427+74:15 aura @tD
428+74:18 tight glyph )
429+76:1 NEWLINE
430+76:1 glyph +$
431+76:4 name path
432+76:9 glyph (
433+76:10 tight name list
434+76:15 name knot
435+76:19 tight glyph )
436+78:1 NEWLINE
437+78:1 glyph +$
438+78:4 name tank
439+79:3 INDENT
440+79:3 name cord
44144180:3 NEWLINE
44244280:3 glyph [
443−80:4 tight lit %palm
443+80:4 tight lit %leaf
44444480:10 name p
44544580:11 tight glyph =
446−80:12 tight glyph (
447−80:13 tight name qual
448−80:18 name tape
449−80:23 name tape
450−80:28 name tape
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 ]
446+80:12 tight name tape
447+80:16 tight glyph ]
46044881:3 NEWLINE
46144981:3 glyph [
462−81:4 tight lit %rose
450+81:4 tight lit %palm
46345181:10 name p
46445281:11 tight glyph =
46545381:12 tight glyph (
466−81:13 tight name trel
454+81:13 tight name qual
46745581:18 name tape
46845681:23 name tape
46945781: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
533−92:3 glyph [
534−92:4 tight lit %0
535−92:7 name p
536−92:8 tight glyph =
537−92:9 tight glyph *
538−92:10 tight glyph ]
539−93:3 NEWLINE
458+81:33 name tape
459+81:37 tight glyph )
460+81:39 name q
461+81:40 tight glyph =
462+81:41 tight glyph (
463+81:42 tight name list
464+81:47 name tank
465+81:51 tight glyph )
466+81:52 tight glyph ]
467+82:3 NEWLINE
468+82:3 glyph [
469+82:4 tight lit %rose
470+82:10 name p
471+82:11 tight glyph =
472+82:12 tight glyph (
473+82:13 tight name trel
474+82:18 name tape
475+82:23 name tape
476+82:28 name tape
477+82:32 tight glyph )
478+82:34 name q
479+82:35 tight glyph =
480+82:36 tight glyph (
481+82:37 tight name list
482+82:42 name tank
483+82:46 tight glyph )
484+82:47 tight glyph ]
485+84:1 DEDENT
486+84:1 NEWLINE
487+84:1 glyph +$
488+84:4 name nail
489+84:9 glyph [
490+84:10 tight name p
491+84:11 tight glyph =
492+84:12 tight name hair
493+84:17 name q
494+84:18 tight glyph =
495+84:19 tight name tape
496+84:23 tight glyph ]
497+86:1 NEWLINE
498+86:1 glyph +$
499+86:4 name edge
500+86:9 glyph [
501+86:10 tight name p
502+86:11 tight glyph =
503+86:12 tight name hair
504+86:17 name q
505+86:18 tight glyph =
506+86:19 tight glyph (
507+86:20 tight name unit
508+86:25 glyph [
509+86:26 tight name p
510+86:27 tight glyph =
511+86:28 tight glyph *
512+86:30 name q
513+86:31 tight glyph =
514+86:32 tight name nail
515+86:36 tight glyph ]
516+86:37 tight glyph )
517+86:38 tight glyph ]
518+88:1 NEWLINE
519+88:1 glyph +$
520+88:4 name rule
521+88:9 glyph $-(
522+88:12 tight name nail
523+88:17 name edge
524+88:21 tight glyph )
525+90:1 NEWLINE
526+90:1 glyph +$
527+90:4 name spot
528+90:9 glyph [
529+90:10 tight name p
530+90:11 tight glyph =
531+90:12 tight name path
532+90:17 name q
533+90:18 tight glyph =
534+90:19 tight name pint
535+90:23 tight glyph ]
536+92:1 NEWLINE
537+92:1 glyph +$
538+92:4 name toon
539+93:3 INDENT
54054093:3 glyph [
541−93:4 tight lit %1
541+93:4 tight lit %0
54254293:7 name p
54354393:8 tight glyph =
54454493:9 tight glyph *
54554593:10 tight glyph ]
54654694:3 NEWLINE
54754794:3 glyph [
548−94:4 tight lit %2
548+94:4 tight lit %1
54954994:7 name p
55055094: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
706−118:3 glyph [
707−118:4 tight lit %|
708−118:7 name p
709−118:8 tight glyph =
710−118:9 tight tvar B
711−118:10 tight glyph ]
712−119:3 NEWLINE
551+94:9 tight glyph *
552+94:10 tight glyph ]
553+95:3 NEWLINE
554+95:3 glyph [
555+95:4 tight lit %2
556+95:7 name p
557+95:8 tight glyph =
558+95:9 tight glyph (
559+95:10 tight name list
560+95:15 name tank
561+95:19 tight glyph )
562+95:20 tight glyph ]
563+97:1 DEDENT
564+97:1 NEWLINE
565+97:1 glyph +$
566+97:4 name like
567+97:9 glyph |$
568+97:12 glyph [
569+97:13 tight tvar A
570+97:14 tight glyph ]
571+97:16 glyph [
572+97:17 tight name p
573+97:18 tight glyph =
574+97:19 tight name hair
575+97:24 name q
576+97:25 tight glyph =
577+97:26 tight glyph (
578+97:27 tight name unit
579+97:32 glyph [
580+97:33 tight name p
581+97:34 tight glyph =
582+97:35 tight tvar A
583+97:37 name q
584+97:38 tight glyph =
585+97:39 tight name nail
586+97:43 tight glyph ]
587+97:44 tight glyph )
588+97:45 tight glyph ]
589+99:1 NEWLINE
590+99:1 glyph ++
591+99:4 name wonk
592+99:9 glyph |=
593+99:12 name veq
594+99:15 tight glyph =
595+99:16 tight glyph (
596+99:17 tight name like
597+99:22 tvar A
598+99:23 tight glyph )
599+100:3 INDENT
600+100:3 glyph ?-
601+100:6 wing q.veq
602+101:5 INDENT
603+101:5 lit ~
604+101:7 glyph !!
605+102:5 NEWLINE
606+102:5 glyph [
607+102:6 tight lit ~
608+102:8 name product
609+102:15 tight glyph ]
610+102:17 wing p.product
611+104:1 DEDENT
612+104:1 DEDENT
613+104:1 NEWLINE
614+104:1 glyph +$
615+104:4 name lone
616+104:9 glyph |$
617+104:12 glyph [
618+104:13 tight tvar A
619+104:14 tight glyph ]
620+104:16 glyph [
621+104:17 tight name p
622+104:18 tight glyph =
623+104:19 tight tvar A
624+104:20 tight glyph ]
625+106:1 NEWLINE
626+106:1 glyph +$
627+106:4 name lest
628+106:9 glyph |$
629+106:12 glyph [
630+106:13 tight tvar A
631+106:14 tight glyph ]
632+106:16 glyph [
633+106:17 tight name i
634+106:18 tight glyph =
635+106:19 tight tvar A
636+106:21 name t
637+106:22 tight glyph =
638+106:23 tight glyph (
639+106:24 tight name list
640+106:29 tvar A
641+106:30 tight glyph )
642+106:31 tight glyph ]
643+108:1 NEWLINE
644+108:1 glyph +$
645+108:4 name pole
646+108:9 glyph |$
647+108:12 glyph [
648+108:13 tight tvar A
649+108:14 tight glyph ]
650+109:3 INDENT
651+109:3 lit ~
652+110:3 NEWLINE
653+110:3 glyph [
654+110:4 tight tvar A
655+110:6 glyph (
656+110:7 tight name pole
657+110:12 tvar A
658+110:13 tight glyph )
659+110:14 tight glyph ]
660+112:1 DEDENT
661+112:1 NEWLINE
662+112:1 glyph +$
663+112:4 name quip
664+112:9 glyph |$
665+112:12 glyph [
666+112:13 tight tvar A
667+112:15 tvar B
668+112:16 tight glyph ]
669+112:18 glyph [
670+112:19 tight glyph (
671+112:20 tight name list
672+112:25 tvar A
673+112:26 tight glyph )
674+112:28 tvar B
675+112:29 tight glyph ]
676+114:1 NEWLINE
677+114:1 glyph +$
678+114:4 name tree
679+114:9 glyph |$
680+114:12 glyph [
681+114:13 tight tvar A
682+114:14 tight glyph ]
683+115:3 INDENT
684+115:3 lit ~
685+116:3 NEWLINE
686+116:3 glyph [
687+116:4 tight name n
688+116:5 tight glyph =
689+116:6 tight tvar A
690+116:8 name l
691+116:9 tight glyph =
692+116:10 tight glyph (
693+116:11 tight name tree
694+116:16 tvar A
695+116:17 tight glyph )
696+116:19 name r
697+116:20 tight glyph =
698+116:21 tight glyph (
699+116:22 tight name tree
700+116:27 tvar A
701+116:28 tight glyph )
702+116:29 tight glyph ]
703+118:1 DEDENT
704+118:1 NEWLINE
705+118:1 glyph +$
706+118:4 name each
707+118:9 glyph |$
708+118:12 glyph [
709+118:13 tight tvar A
710+118:15 tvar B
711+118:16 tight glyph ]
712+119:3 INDENT
713713119:3 glyph [
714−119:4 tight lit %&
714+119:4 tight lit %|
715715119:7 name p
716716119:8 tight glyph =
717−119:9 tight tvar A
717+119:9 tight tvar B
718718119: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
719+120:3 NEWLINE
720+120:3 glyph [
721+120:4 tight lit %&
722+120:7 name p
723+120:8 tight glyph =
724+120:9 tight tvar A
725+120:10 tight glyph ]
726+122:1 DEDENT
727+122:1 NEWLINE
728+122:1 glyph +$
729+122:4 name bloq
730+122:9 aura @
731+124:1 NEWLINE
732+124:1 glyph ++
733+124:4 name some
734+124:9 glyph |=
735+124:12 name item
736+124:16 tight glyph =
737+124:17 tight tvar A
738+124:19 glyph `
739+124:20 tight name item
740+126:1 NEWLINE
741+126:1 glyph ++
742+126:4 name lure
743+126:9 glyph |=
744+126:12 name item
745+126:16 tight glyph =
746+126:17 tight tvar A
747+127:3 INDENT
748+127:3 glyph ^-
749+127:6 glyph (
750+127:7 tight name list
751+127:12 tvar A
752+127:13 tight glyph )
753+127:15 glyph [
754+127:16 tight name item
755+127:21 lit ~
756+127:22 tight glyph ]
757+129:1 DEDENT
758+129:1 NEWLINE
759+129:1 glyph ++
760+129:4 name snoc
761+129:9 glyph |=
762+129:12 name args
763+129:16 tight glyph =
764+129:17 tight glyph [
765+129:18 tight glyph (
766+129:19 tight name list
767+129:24 tvar A
768+129:25 tight glyph )
769+129:27 tvar A
770+129:28 tight glyph ]
771+130:3 INDENT
772+130:3 glyph ?-
773+130:6 name args
774+131:5 INDENT
775+131:5 glyph [
776+131:6 tight name xs
777+131:9 name item
778+131:13 tight glyph ]
779+131:15 glyph (
780+131:16 tight name weld
781+131:21 name xs
782+131:24 glyph [
783+131:25 tight name item
784+131:30 lit ~
785+131:31 tight glyph ]
786+131:32 tight glyph )
787+133:1 DEDENT
788+133:1 DEDENT
789+133:1 NEWLINE
790+133:1 glyph ++
791+133:4 name flop
792+133:9 glyph |=
793+133:12 name xs
794+133:14 tight glyph =
795+133:15 tight glyph (
796+133:16 tight name list
797+133:21 tvar A
798+133:22 tight glyph )
799+134:3 INDENT
800+134:3 glyph ++
801+134:6 name reverse-into
802+134:19 glyph |=
803+134:22 name args
804+134:26 tight glyph =
805+134:27 tight glyph [
806+134:28 tight glyph (
807+134:29 tight name list
808+134:34 tvar A
809+134:35 tight glyph )
810+134:37 glyph (
811+134:38 tight name list
812+134:43 tvar A
813+134:44 tight glyph )
814+134:45 tight glyph ]
815+135:5 INDENT
816+135:5 glyph ?-
817+135:8 name args
818+136:7 INDENT
819+136:7 glyph [
820+136:8 tight name rest
821+136:13 name acc
822+136:16 tight glyph ]
823+137:9 INDENT
824+137:9 glyph ?-
825+137:12 name rest
826+138:11 INDENT
827+138:11 lit ~
828+138:13 name acc
829+139:11 NEWLINE
830+139:11 glyph [
831+139:12 tight name item
832+139:17 name more
833+139:21 tight glyph ]
834+139:23 glyph (
835+139:24 tight name reverse-into
836+139:37 name more
837+139:42 glyph [
838+139:43 tight name item
839+139:48 name acc
840+139:51 tight glyph ]
841+139:52 tight glyph )
842+140:3 DEDENT
843+140:3 DEDENT
844+140:3 DEDENT
845+140:3 DEDENT
846+140:3 NEWLINE
847+140:3 glyph (
848+140:4 tight name reverse-into
849+140:17 name xs
850+140:20 lit ~
851+140:21 tight glyph )
852+140:22 DEDENT
853+140:22 NEWLINE
tests/golden/prelude-list-helpers/tree.txt+224−221
@@ -111,233 +111,236 @@
111111 (arm 47:5
112112 (cell 47:5 (bind 47:6 xs) (bind 47:9 f))
113113 (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
144− (cell 59:3
145− (const 59:4 %$)
146− (face 59:7 p (ref 59:9 dime)))
114+ (cast 48:7
115+ (apply 48:10 list (tvar 48:16 B))
116+ (body 49:9
117+ (branch 49:9
118+ (wing 49:12 xs)
119+ (arm 50:11 (lit 50:11 ~) (lit 50:13 ~))
120+ (arm 51:11
121+ (cell 51:11 (bind 51:12 item) (bind 51:17 rest))
122+ (tuple 51:23
123+ (group 51:24
124+ (call 51:25 (wing 51:25 f) (wing 51:27 item)))
125+ (group 51:33
126+ (call 51:34 (wing 51:34 turn) (wing 51:39 rest) (wing 51:44 f))))))))))))))
127+ (mold 53:1 dime
128+ (cell 53:9
129+ (face 53:10 p (aura 53:12 @ta))
130+ (face 53:16 q (aura 53:18 @))))
131+ (mold 55:1 hair
132+ (cell 55:9
133+ (face 55:10 p (aura 55:12 @ud))
134+ (face 55:16 q (aura 55:18 @ud))))
135+ (mold 57:1 pint
136+ (cell 57:9
137+ (face 57:10 p
138+ (cell 57:12
139+ (face 57:13 p (aura 57:15 @))
140+ (face 57:17 q (aura 57:19 @))))
141+ (face 57:22 q
142+ (cell 57:24
143+ (face 57:25 p (aura 57:27 @))
144+ (face 57:29 q (aura 57:31 @))))))
145+ (mold 59:1 coin
146+ (union 60:3
147147 (cell 60:3
148− (const 60:4 %blob)
149− (face 60:10 p (noun 60:12)))
148+ (const 60:4 %$)
149+ (face 60:7 p (ref 60:9 dime)))
150150 (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)
181− (cell 79:3
182− (const 79:4 %leaf)
183− (face 79:10 p (ref 79:12 tape)))
151+ (const 61:4 %blob)
152+ (face 61:10 p (noun 61:12)))
153+ (cell 62:3
154+ (const 62:4 %many)
155+ (face 62:10 p
156+ (apply 62:12 list (ref 62:18 coin))))))
157+ (mold 64:1 pair
158+ (generic 64:9 A B
159+ (cell 64:18
160+ (face 64:19 p (tvar 64:21 A))
161+ (face 64:23 q (tvar 64:25 B)))))
162+ (mold 66:1 trel
163+ (generic 66:9 A B C
164+ (cell 66:20
165+ (face 66:21 p (tvar 66:23 A))
166+ (face 66:25 q (tvar 66:27 B))
167+ (face 66:29 r (tvar 66:31 C)))))
168+ (mold 68:1 qual
169+ (generic 68:9 A B C D
170+ (cell 68:22
171+ (face 68:23 p (tvar 68:25 A))
172+ (face 68:27 q (tvar 68:29 B))
173+ (face 68:31 r (tvar 68:33 C))
174+ (face 68:35 s (tvar 68:37 D)))))
175+ (mold 70:1 cord (aura 70:9 @t))
176+ (mold 72:1 knot (aura 72:9 @ta))
177+ (mold 74:1 tape
178+ (apply 74:9 list (aura 74:15 @tD)))
179+ (mold 76:1 path
180+ (apply 76:9 list (ref 76:15 knot)))
181+ (mold 78:1 tank
182+ (union 79:3
183+ (ref 79:3 cord)
184184 (cell 80:3
185− (const 80:4 %palm)
186− (face 80:10 p
187− (apply 80:12 qual (ref 80:18 tape) (ref 80:23 tape) (ref 80:28 tape) (ref 80:33 tape)))
188− (face 80:39 q
189− (apply 80:41 list (ref 80:47 tank))))
185+ (const 80:4 %leaf)
186+ (face 80:10 p (ref 80:12 tape)))
190187 (cell 81:3
191− (const 81:4 %rose)
188+ (const 81:4 %palm)
192189 (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
216− (cell 92:3
217− (const 92:4 %0)
218− (face 92:7 p (noun 92:9)))
190+ (apply 81:12 qual (ref 81:18 tape) (ref 81:23 tape) (ref 81:28 tape) (ref 81:33 tape)))
191+ (face 81:39 q
192+ (apply 81:41 list (ref 81:47 tank))))
193+ (cell 82:3
194+ (const 82:4 %rose)
195+ (face 82:10 p
196+ (apply 82:12 trel (ref 82:18 tape) (ref 82:23 tape) (ref 82:28 tape)))
197+ (face 82:34 q
198+ (apply 82:36 list (ref 82:42 tank))))))
199+ (mold 84:1 nail
200+ (cell 84:9
201+ (face 84:10 p (ref 84:12 hair))
202+ (face 84:17 q (ref 84:19 tape))))
203+ (mold 86:1 edge
204+ (cell 86:9
205+ (face 86:10 p (ref 86:12 hair))
206+ (face 86:17 q
207+ (apply 86:19 unit
208+ (cell 86:25
209+ (face 86:26 p (noun 86:28))
210+ (face 86:30 q (ref 86:32 nail)))))))
211+ (mold 88:1 rule
212+ (fn 88:9 (ref 88:12 nail) (ref 88:17 edge)))
213+ (mold 90:1 spot
214+ (cell 90:9
215+ (face 90:10 p (ref 90:12 path))
216+ (face 90:17 q (ref 90:19 pint))))
217+ (mold 92:1 toon
218+ (union 93:3
219219 (cell 93:3
220− (const 93:4 %1)
220+ (const 93:4 %0)
221221 (face 93:7 p (noun 93:9)))
222222 (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
281− (cell 118:3
282− (const 118:4 %|)
283− (face 118:7 p (tvar 118:9 B)))
223+ (const 94:4 %1)
224+ (face 94:7 p (noun 94:9)))
225+ (cell 95:3
226+ (const 95:4 %2)
227+ (face 95:7 p
228+ (apply 95:9 list (ref 95:15 tank))))))
229+ (mold 97:1 like
230+ (generic 97:9 A
231+ (cell 97:16
232+ (face 97:17 p (ref 97:19 hair))
233+ (face 97:24 q
234+ (apply 97:26 unit
235+ (cell 97:32
236+ (face 97:33 p (tvar 97:35 A))
237+ (face 97:37 q (ref 97:39 nail))))))))
238+ (value 99:1 wonk
239+ (gate 99:9
240+ (face 99:12 veq
241+ (apply 99:16 like (tvar 99:22 A)))
242+ (body 100:3
243+ (branch 100:3
244+ (wing 100:6 q.veq)
245+ (arm 101:5 (lit 101:5 ~) (crash 101:7))
246+ (arm 102:5
247+ (cell 102:5 (lit 102:6 ~) (bind 102:8 product))
248+ (wing 102:17 p.product))))))
249+ (mold 104:1 lone
250+ (generic 104:9 A
251+ (cell 104:16
252+ (face 104:17 p (tvar 104:19 A)))))
253+ (mold 106:1 lest
254+ (generic 106:9 A
255+ (cell 106:16
256+ (face 106:17 i (tvar 106:19 A))
257+ (face 106:21 t
258+ (apply 106:23 list (tvar 106:29 A))))))
259+ (mold 108:1 pole
260+ (generic 108:9 A
261+ (union 109:3
262+ (const 109:3 ~)
263+ (cell 110:3
264+ (tvar 110:4 A)
265+ (apply 110:6 pole (tvar 110:12 A))))))
266+ (mold 112:1 quip
267+ (generic 112:9 A B
268+ (cell 112:18
269+ (apply 112:19 list (tvar 112:25 A))
270+ (tvar 112:28 B))))
271+ (mold 114:1 tree
272+ (generic 114:9 A
273+ (union 115:3
274+ (const 115:3 ~)
275+ (cell 116:3
276+ (face 116:4 n (tvar 116:6 A))
277+ (face 116:8 l
278+ (apply 116:10 tree (tvar 116:16 A)))
279+ (face 116:19 r
280+ (apply 116:21 tree (tvar 116:27 A)))))))
281+ (mold 118:1 each
282+ (generic 118:9 A B
283+ (union 119:3
284284 (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 ~)))))))
285+ (const 119:4 %|)
286+ (face 119:7 p (tvar 119:9 B)))
287+ (cell 120:3
288+ (const 120:4 %&)
289+ (face 120:7 p (tvar 120:9 A))))))
290+ (mold 122:1 bloq (aura 122:9 @))
291+ (value 124:1 some
292+ (gate 124:9
293+ (face 124:12 item (tvar 124:17 A))
294+ (unit 124:19 (wing 124:20 item))))
295+ (value 126:1 lure
296+ (gate 126:9
297+ (face 126:12 item (tvar 126:17 A))
298+ (body 127:3
299+ (cast 127:3
300+ (apply 127:6 list (tvar 127:12 A))
301+ (tuple 127:15 (wing 127:16 item) (lit 127:21 ~))))))
302+ (value 129:1 snoc
303+ (gate 129:9
304+ (face 129:12 args
305+ (cell 129:17
306+ (apply 129:18 list (tvar 129:24 A))
307+ (tvar 129:27 A)))
308+ (body 130:3
309+ (branch 130:3
310+ (wing 130:6 args)
311+ (arm 131:5
312+ (cell 131:5 (bind 131:6 xs) (bind 131:9 item))
313+ (group 131:15
314+ (call 131:16
315+ (wing 131:16 weld)
316+ (wing 131:21 xs)
317+ (tuple 131:24 (wing 131:25 item) (lit 131:30 ~)))))))))
318+ (value 133:1 flop
319+ (gate 133:9
320+ (face 133:12 xs
321+ (apply 133:15 list (tvar 133:21 A)))
322+ (body 134:3
323+ (value 134:3 reverse-into
324+ (gate 134:19
325+ (face 134:22 args
326+ (cell 134:27
327+ (apply 134:28 list (tvar 134:34 A))
328+ (apply 134:37 list (tvar 134:43 A))))
329+ (body 135:5
330+ (branch 135:5
331+ (wing 135:8 args)
332+ (arm 136:7
333+ (cell 136:7 (bind 136:8 rest) (bind 136:13 acc))
334+ (body 137:9
335+ (branch 137:9
336+ (wing 137:12 rest)
337+ (arm 138:11 (lit 138:11 ~) (wing 138:13 acc))
338+ (arm 139:11
339+ (cell 139:11 (bind 139:12 item) (bind 139:17 more))
340+ (group 139:23
341+ (call 139:24
342+ (wing 139:24 reverse-into)
343+ (wing 139:37 more)
344+ (tuple 139:42 (wing 139:43 item) (wing 139:48 acc))))))))))))
345+ (group 140:3
346+ (call 140:4 (wing 140:4 reverse-into) (wing 140:17 xs) (lit 140:20 ~)))))))
tests/golden/prelude-list-unit/source.jibb+4−3
@@ -45,6 +45,7 @@
4545++ turn |= args=[(list A) $-(A B)]
4646 ?- args
4747 [xs f]
48− ?- xs
49− ~ ~
50− [item rest] [(f item) (turn rest f)]
48+ ^- (list B)
49+ ?- xs
50+ ~ ~
51+ [item rest] [(f item) (turn rest f)]
tests/golden/prelude-list-unit/tokens.txt+32−25
@@ -244,29 +244,36 @@
24424447:9 name f
24524547:10 tight glyph ]
24624648:7 INDENT
247−48:7 glyph ?-
248−48:10 name xs
247+48:7 glyph ^-
248+48:10 glyph (
249+48:11 tight name list
250+48:16 tvar B
251+48:17 tight glyph )
24925249: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
253+49:9 glyph ?-
254+49:12 name xs
255+50:11 INDENT
256+50:11 lit ~
257+50:13 lit ~
258+51:11 NEWLINE
259+51:11 glyph [
260+51:12 tight name item
261+51:17 name rest
262+51:21 tight glyph ]
263+51:23 glyph [
264+51:24 tight glyph (
265+51:25 tight name f
266+51:27 name item
267+51:31 tight glyph )
268+51:33 glyph (
269+51:34 tight name turn
270+51:39 name rest
271+51:44 name f
272+51:45 tight glyph )
273+51:46 tight glyph ]
274+51:47 DEDENT
275+51:47 DEDENT
276+51:47 DEDENT
277+51:47 DEDENT
278+51:47 DEDENT
279+51:47 NEWLINE
tests/golden/prelude-list-unit/tree.txt+13−10
@@ -111,13 +111,16 @@
111111 (arm 47:5
112112 (cell 47:5 (bind 47:6 xs) (bind 47:9 f))
113113 (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)))))))))))))
114+ (cast 48:7
115+ (apply 48:10 list (tvar 48:16 B))
116+ (body 49:9
117+ (branch 49:9
118+ (wing 49:12 xs)
119+ (arm 50:11 (lit 50:11 ~) (lit 50:13 ~))
120+ (arm 51:11
121+ (cell 51:11 (bind 51:12 item) (bind 51:17 rest))
122+ (tuple 51:23
123+ (group 51:24
124+ (call 51:25 (wing 51:25 f) (wing 51:27 item)))
125+ (group 51:33
126+ (call 51:34 (wing 51:34 turn) (wing 51:39 rest) (wing 51:44 f)))))))))))))))
tests/golden/prelude-unit-list-transforms/source.jibb+4−3
@@ -45,9 +45,10 @@
4545++ turn |= args=[(list A) $-(A B)]
4646 ?- args
4747 [xs f]
48− ?- xs
49− ~ ~
50− [item rest] [(f item) (turn rest f)]
48+ ^- (list B)
49+ ?- xs
50+ ~ ~
51+ [item rest] [(f item) (turn rest f)]
5152
5253+$ dime [p=@ta q=@]
5354
tests/golden/prelude-unit-list-transforms/tokens.txt+1480−1473
@@ -244,1508 +244,1515 @@
24424447:9 name f
24524547:10 tight glyph ]
24624648:7 INDENT
247−48:7 glyph ?-
248−48:10 name xs
247+48:7 glyph ^-
248+48:10 glyph (
249+48:11 tight name list
250+48:16 tvar B
251+48:17 tight glyph )
24925249: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
323−59:3 glyph [
324−59:4 tight lit %$
325−59:7 name p
326−59:8 tight glyph =
327−59:9 tight name dime
328−59:13 tight glyph ]
329−60:3 NEWLINE
253+49:9 glyph ?-
254+49:12 name xs
255+50:11 INDENT
256+50:11 lit ~
257+50:13 lit ~
258+51:11 NEWLINE
259+51:11 glyph [
260+51:12 tight name item
261+51:17 name rest
262+51:21 tight glyph ]
263+51:23 glyph [
264+51:24 tight glyph (
265+51:25 tight name f
266+51:27 name item
267+51:31 tight glyph )
268+51:33 glyph (
269+51:34 tight name turn
270+51:39 name rest
271+51:44 name f
272+51:45 tight glyph )
273+51:46 tight glyph ]
274+53:1 DEDENT
275+53:1 DEDENT
276+53:1 DEDENT
277+53:1 DEDENT
278+53:1 DEDENT
279+53:1 NEWLINE
280+53:1 glyph +$
281+53:4 name dime
282+53:9 glyph [
283+53:10 tight name p
284+53:11 tight glyph =
285+53:12 tight aura @ta
286+53:16 name q
287+53:17 tight glyph =
288+53:18 tight aura @
289+53:19 tight glyph ]
290+55:1 NEWLINE
291+55:1 glyph +$
292+55:4 name hair
293+55:9 glyph [
294+55:10 tight name p
295+55:11 tight glyph =
296+55:12 tight aura @ud
297+55:16 name q
298+55:17 tight glyph =
299+55:18 tight aura @ud
300+55:21 tight glyph ]
301+57:1 NEWLINE
302+57:1 glyph +$
303+57:4 name pint
304+57:9 glyph [
305+57:10 tight name p
306+57:11 tight glyph =
307+57:12 tight glyph [
308+57:13 tight name p
309+57:14 tight glyph =
310+57:15 tight aura @
311+57:17 name q
312+57:18 tight glyph =
313+57:19 tight aura @
314+57:20 tight glyph ]
315+57:22 name q
316+57:23 tight glyph =
317+57:24 tight glyph [
318+57:25 tight name p
319+57:26 tight glyph =
320+57:27 tight aura @
321+57:29 name q
322+57:30 tight glyph =
323+57:31 tight aura @
324+57:32 tight glyph ]
325+57:33 tight glyph ]
326+59:1 NEWLINE
327+59:1 glyph +$
328+59:4 name coin
329+60:3 INDENT
33033060:3 glyph [
331−60:4 tight lit %blob
332−60:10 name p
333−60:11 tight glyph =
334−60:12 tight glyph *
331+60:4 tight lit %$
332+60:7 name p
333+60:8 tight glyph =
334+60:9 tight name dime
33533560:13 tight glyph ]
33633661:3 NEWLINE
33733761:3 glyph [
338−61:4 tight lit %many
338+61:4 tight lit %blob
33933961:10 name p
34034061: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
434−79:3 NEWLINE
435−79:3 glyph [
436−79:4 tight lit %leaf
437−79:10 name p
438−79:11 tight glyph =
439−79:12 tight name tape
440−79:16 tight glyph ]
341+61:12 tight glyph *
342+61:13 tight glyph ]
343+62:3 NEWLINE
344+62:3 glyph [
345+62:4 tight lit %many
346+62:10 name p
347+62:11 tight glyph =
348+62:12 tight glyph (
349+62:13 tight name list
350+62:18 name coin
351+62:22 tight glyph )
352+62:23 tight glyph ]
353+64:1 DEDENT
354+64:1 NEWLINE
355+64:1 glyph +$
356+64:4 name pair
357+64:9 glyph |$
358+64:12 glyph [
359+64:13 tight tvar A
360+64:15 tvar B
361+64:16 tight glyph ]
362+64:18 glyph [
363+64:19 tight name p
364+64:20 tight glyph =
365+64:21 tight tvar A
366+64:23 name q
367+64:24 tight glyph =
368+64:25 tight tvar B
369+64:26 tight glyph ]
370+66:1 NEWLINE
371+66:1 glyph +$
372+66:4 name trel
373+66:9 glyph |$
374+66:12 glyph [
375+66:13 tight tvar A
376+66:15 tvar B
377+66:17 tvar C
378+66:18 tight glyph ]
379+66:20 glyph [
380+66:21 tight name p
381+66:22 tight glyph =
382+66:23 tight tvar A
383+66:25 name q
384+66:26 tight glyph =
385+66:27 tight tvar B
386+66:29 name r
387+66:30 tight glyph =
388+66:31 tight tvar C
389+66:32 tight glyph ]
390+68:1 NEWLINE
391+68:1 glyph +$
392+68:4 name qual
393+68:9 glyph |$
394+68:12 glyph [
395+68:13 tight tvar A
396+68:15 tvar B
397+68:17 tvar C
398+68:19 tvar D
399+68:20 tight glyph ]
400+68:22 glyph [
401+68:23 tight name p
402+68:24 tight glyph =
403+68:25 tight tvar A
404+68:27 name q
405+68:28 tight glyph =
406+68:29 tight tvar B
407+68:31 name r
408+68:32 tight glyph =
409+68:33 tight tvar C
410+68:35 name s
411+68:36 tight glyph =
412+68:37 tight tvar D
413+68:38 tight glyph ]
414+70:1 NEWLINE
415+70:1 glyph +$
416+70:4 name cord
417+70:9 aura @t
418+72:1 NEWLINE
419+72:1 glyph +$
420+72:4 name knot
421+72:9 aura @ta
422+74:1 NEWLINE
423+74:1 glyph +$
424+74:4 name tape
425+74:9 glyph (
426+74:10 tight name list
427+74:15 aura @tD
428+74:18 tight glyph )
429+76:1 NEWLINE
430+76:1 glyph +$
431+76:4 name path
432+76:9 glyph (
433+76:10 tight name list
434+76:15 name knot
435+76:19 tight glyph )
436+78:1 NEWLINE
437+78:1 glyph +$
438+78:4 name tank
439+79:3 INDENT
440+79:3 name cord
44144180:3 NEWLINE
44244280:3 glyph [
443−80:4 tight lit %palm
443+80:4 tight lit %leaf
44444480:10 name p
44544580:11 tight glyph =
446−80:12 tight glyph (
447−80:13 tight name qual
448−80:18 name tape
449−80:23 name tape
450−80:28 name tape
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 ]
446+80:12 tight name tape
447+80:16 tight glyph ]
46044881:3 NEWLINE
46144981:3 glyph [
462−81:4 tight lit %rose
450+81:4 tight lit %palm
46345181:10 name p
46445281:11 tight glyph =
46545381:12 tight glyph (
466−81:13 tight name trel
454+81:13 tight name qual
46745581:18 name tape
46845681:23 name tape
46945781: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
533−92:3 glyph [
534−92:4 tight lit %0
535−92:7 name p
536−92:8 tight glyph =
537−92:9 tight glyph *
538−92:10 tight glyph ]
539−93:3 NEWLINE
458+81:33 name tape
459+81:37 tight glyph )
460+81:39 name q
461+81:40 tight glyph =
462+81:41 tight glyph (
463+81:42 tight name list
464+81:47 name tank
465+81:51 tight glyph )
466+81:52 tight glyph ]
467+82:3 NEWLINE
468+82:3 glyph [
469+82:4 tight lit %rose
470+82:10 name p
471+82:11 tight glyph =
472+82:12 tight glyph (
473+82:13 tight name trel
474+82:18 name tape
475+82:23 name tape
476+82:28 name tape
477+82:32 tight glyph )
478+82:34 name q
479+82:35 tight glyph =
480+82:36 tight glyph (
481+82:37 tight name list
482+82:42 name tank
483+82:46 tight glyph )
484+82:47 tight glyph ]
485+84:1 DEDENT
486+84:1 NEWLINE
487+84:1 glyph +$
488+84:4 name nail
489+84:9 glyph [
490+84:10 tight name p
491+84:11 tight glyph =
492+84:12 tight name hair
493+84:17 name q
494+84:18 tight glyph =
495+84:19 tight name tape
496+84:23 tight glyph ]
497+86:1 NEWLINE
498+86:1 glyph +$
499+86:4 name edge
500+86:9 glyph [
501+86:10 tight name p
502+86:11 tight glyph =
503+86:12 tight name hair
504+86:17 name q
505+86:18 tight glyph =
506+86:19 tight glyph (
507+86:20 tight name unit
508+86:25 glyph [
509+86:26 tight name p
510+86:27 tight glyph =
511+86:28 tight glyph *
512+86:30 name q
513+86:31 tight glyph =
514+86:32 tight name nail
515+86:36 tight glyph ]
516+86:37 tight glyph )
517+86:38 tight glyph ]
518+88:1 NEWLINE
519+88:1 glyph +$
520+88:4 name rule
521+88:9 glyph $-(
522+88:12 tight name nail
523+88:17 name edge
524+88:21 tight glyph )
525+90:1 NEWLINE
526+90:1 glyph +$
527+90:4 name spot
528+90:9 glyph [
529+90:10 tight name p
530+90:11 tight glyph =
531+90:12 tight name path
532+90:17 name q
533+90:18 tight glyph =
534+90:19 tight name pint
535+90:23 tight glyph ]
536+92:1 NEWLINE
537+92:1 glyph +$
538+92:4 name toon
539+93:3 INDENT
54054093:3 glyph [
541−93:4 tight lit %1
541+93:4 tight lit %0
54254293:7 name p
54354393:8 tight glyph =
54454493:9 tight glyph *
54554593:10 tight glyph ]
54654694:3 NEWLINE
54754794:3 glyph [
548−94:4 tight lit %2
548+94:4 tight lit %1
54954994:7 name p
55055094: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
706−118:3 glyph [
707−118:4 tight lit %|
708−118:7 name p
709−118:8 tight glyph =
710−118:9 tight tvar B
711−118:10 tight glyph ]
712−119:3 NEWLINE
551+94:9 tight glyph *
552+94:10 tight glyph ]
553+95:3 NEWLINE
554+95:3 glyph [
555+95:4 tight lit %2
556+95:7 name p
557+95:8 tight glyph =
558+95:9 tight glyph (
559+95:10 tight name list
560+95:15 name tank
561+95:19 tight glyph )
562+95:20 tight glyph ]
563+97:1 DEDENT
564+97:1 NEWLINE
565+97:1 glyph +$
566+97:4 name like
567+97:9 glyph |$
568+97:12 glyph [
569+97:13 tight tvar A
570+97:14 tight glyph ]
571+97:16 glyph [
572+97:17 tight name p
573+97:18 tight glyph =
574+97:19 tight name hair
575+97:24 name q
576+97:25 tight glyph =
577+97:26 tight glyph (
578+97:27 tight name unit
579+97:32 glyph [
580+97:33 tight name p
581+97:34 tight glyph =
582+97:35 tight tvar A
583+97:37 name q
584+97:38 tight glyph =
585+97:39 tight name nail
586+97:43 tight glyph ]
587+97:44 tight glyph )
588+97:45 tight glyph ]
589+99:1 NEWLINE
590+99:1 glyph ++
591+99:4 name wonk
592+99:9 glyph |=
593+99:12 name veq
594+99:15 tight glyph =
595+99:16 tight glyph (
596+99:17 tight name like
597+99:22 tvar A
598+99:23 tight glyph )
599+100:3 INDENT
600+100:3 glyph ?-
601+100:6 wing q.veq
602+101:5 INDENT
603+101:5 lit ~
604+101:7 glyph !!
605+102:5 NEWLINE
606+102:5 glyph [
607+102:6 tight lit ~
608+102:8 name product
609+102:15 tight glyph ]
610+102:17 wing p.product
611+104:1 DEDENT
612+104:1 DEDENT
613+104:1 NEWLINE
614+104:1 glyph +$
615+104:4 name lone
616+104:9 glyph |$
617+104:12 glyph [
618+104:13 tight tvar A
619+104:14 tight glyph ]
620+104:16 glyph [
621+104:17 tight name p
622+104:18 tight glyph =
623+104:19 tight tvar A
624+104:20 tight glyph ]
625+106:1 NEWLINE
626+106:1 glyph +$
627+106:4 name lest
628+106:9 glyph |$
629+106:12 glyph [
630+106:13 tight tvar A
631+106:14 tight glyph ]
632+106:16 glyph [
633+106:17 tight name i
634+106:18 tight glyph =
635+106:19 tight tvar A
636+106:21 name t
637+106:22 tight glyph =
638+106:23 tight glyph (
639+106:24 tight name list
640+106:29 tvar A
641+106:30 tight glyph )
642+106:31 tight glyph ]
643+108:1 NEWLINE
644+108:1 glyph +$
645+108:4 name pole
646+108:9 glyph |$
647+108:12 glyph [
648+108:13 tight tvar A
649+108:14 tight glyph ]
650+109:3 INDENT
651+109:3 lit ~
652+110:3 NEWLINE
653+110:3 glyph [
654+110:4 tight tvar A
655+110:6 glyph (
656+110:7 tight name pole
657+110:12 tvar A
658+110:13 tight glyph )
659+110:14 tight glyph ]
660+112:1 DEDENT
661+112:1 NEWLINE
662+112:1 glyph +$
663+112:4 name quip
664+112:9 glyph |$
665+112:12 glyph [
666+112:13 tight tvar A
667+112:15 tvar B
668+112:16 tight glyph ]
669+112:18 glyph [
670+112:19 tight glyph (
671+112:20 tight name list
672+112:25 tvar A
673+112:26 tight glyph )
674+112:28 tvar B
675+112:29 tight glyph ]
676+114:1 NEWLINE
677+114:1 glyph +$
678+114:4 name tree
679+114:9 glyph |$
680+114:12 glyph [
681+114:13 tight tvar A
682+114:14 tight glyph ]
683+115:3 INDENT
684+115:3 lit ~
685+116:3 NEWLINE
686+116:3 glyph [
687+116:4 tight name n
688+116:5 tight glyph =
689+116:6 tight tvar A
690+116:8 name l
691+116:9 tight glyph =
692+116:10 tight glyph (
693+116:11 tight name tree
694+116:16 tvar A
695+116:17 tight glyph )
696+116:19 name r
697+116:20 tight glyph =
698+116:21 tight glyph (
699+116:22 tight name tree
700+116:27 tvar A
701+116:28 tight glyph )
702+116:29 tight glyph ]
703+118:1 DEDENT
704+118:1 NEWLINE
705+118:1 glyph +$
706+118:4 name each
707+118:9 glyph |$
708+118:12 glyph [
709+118:13 tight tvar A
710+118:15 tvar B
711+118:16 tight glyph ]
712+119:3 INDENT
713713119:3 glyph [
714−119:4 tight lit %&
714+119:4 tight lit %|
715715119:7 name p
716716119:8 tight glyph =
717−119:9 tight tvar A
717+119:9 tight tvar B
718718119: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
719+120:3 NEWLINE
720+120:3 glyph [
721+120:4 tight lit %&
722+120:7 name p
723+120:8 tight glyph =
724+120:9 tight tvar A
725+120:10 tight glyph ]
726+122:1 DEDENT
727+122:1 NEWLINE
728+122:1 glyph +$
729+122:4 name bloq
730+122:9 aura @
731+124:1 NEWLINE
732+124:1 glyph ++
733+124:4 name some
734+124:9 glyph |=
735+124:12 name item
736+124:16 tight glyph =
737+124:17 tight tvar A
738+124:19 glyph `
739+124:20 tight name item
740+126:1 NEWLINE
741+126:1 glyph ++
742+126:4 name lure
743+126:9 glyph |=
744+126:12 name item
745+126:16 tight glyph =
746+126:17 tight tvar A
747+127:3 INDENT
748+127:3 glyph ^-
749+127:6 glyph (
750+127:7 tight name list
751+127:12 tvar A
752+127:13 tight glyph )
753+127:15 glyph [
754+127:16 tight name item
755+127:21 lit ~
756+127:22 tight glyph ]
757+129:1 DEDENT
758+129:1 NEWLINE
759+129:1 glyph ++
760+129:4 name snoc
761+129:9 glyph |=
762+129:12 name args
763+129:16 tight glyph =
764+129:17 tight glyph [
765+129:18 tight glyph (
766+129:19 tight name list
767+129:24 tvar A
768+129:25 tight glyph )
769+129:27 tvar A
770+129:28 tight glyph ]
771+130:3 INDENT
772+130:3 glyph ?-
773+130:6 name args
774+131:5 INDENT
775+131:5 glyph [
776+131:6 tight name xs
777+131:9 name item
778+131:13 tight glyph ]
779+131:15 glyph (
780+131:16 tight name weld
781+131:21 name xs
782+131:24 glyph [
783+131:25 tight name item
784+131:30 lit ~
785+131:31 tight glyph ]
786+131:32 tight glyph )
787+133:1 DEDENT
788+133:1 DEDENT
789+133:1 NEWLINE
790+133:1 glyph ++
791+133:4 name flop
792+133:9 glyph |=
793+133:12 name xs
794+133:14 tight glyph =
795+133:15 tight glyph (
796+133:16 tight name list
797+133:21 tvar A
798+133:22 tight glyph )
799+134:3 INDENT
800+134:3 glyph ++
801+134:6 name reverse-into
802+134:19 glyph |=
803+134:22 name args
804+134:26 tight glyph =
805+134:27 tight glyph [
806+134:28 tight glyph (
807+134:29 tight name list
808+134:34 tvar A
809+134:35 tight glyph )
810+134:37 glyph (
811+134:38 tight name list
812+134:43 tvar A
813+134:44 tight glyph )
814+134:45 tight glyph ]
815+135:5 INDENT
816+135:5 glyph ?-
817+135:8 name args
818+136:7 INDENT
819+136:7 glyph [
820+136:8 tight name rest
821+136:13 name acc
822+136:16 tight glyph ]
823+137:9 INDENT
824+137:9 glyph ?-
825+137:12 name rest
826+138:11 INDENT
827+138:11 lit ~
828+138:13 name acc
829+139:11 NEWLINE
830+139:11 glyph [
831+139:12 tight name item
832+139:17 name more
833+139:21 tight glyph ]
834+139:23 glyph (
835+139:24 tight name reverse-into
836+139:37 name more
837+139:42 glyph [
838+139:43 tight name item
839+139:48 name acc
840+139:51 tight glyph ]
841+139:52 tight glyph )
842+140:3 DEDENT
843+140:3 DEDENT
844+140:3 DEDENT
845+140:3 DEDENT
846+140:3 NEWLINE
847+140:3 glyph (
848+140:4 tight name reverse-into
849+140:17 name xs
850+140:20 lit ~
851+140:21 tight glyph )
852+142:1 DEDENT
853+142:1 NEWLINE
854+142:1 glyph ++
855+142:4 name drop
856+142:9 glyph |=
857+142:12 name maybe
858+142:17 tight glyph =
859+142:18 tight glyph (
860+142:19 tight name unit
861+142:24 tvar A
862+142:25 tight glyph )
863+143:3 INDENT
864+143:3 glyph ?-
865+143:6 name maybe
866+144:5 INDENT
867+144:5 lit ~
868+144:7 lit ~
869+145:5 NEWLINE
870+145:5 glyph [
871+145:6 tight lit ~
872+145:8 name value
873+145:13 tight glyph ]
874+145:15 glyph [
875+145:16 tight name value
876+145:22 lit ~
877+145:23 tight glyph ]
878+147:1 DEDENT
879+147:1 DEDENT
880+147:1 NEWLINE
881+147:1 glyph ++
882+147:4 name bind
883+147:9 glyph |=
884+147:12 name args
885+147:16 tight glyph =
886+147:17 tight glyph [
887+147:18 tight glyph (
888+147:19 tight name unit
889+147:24 tvar A
890+147:25 tight glyph )
891+147:27 glyph $-(
892+147:30 tight tvar A
893+147:32 tvar B
894+147:33 tight glyph )
895+147:34 tight glyph ]
896+148:3 INDENT
897+148:3 glyph ?-
898+148:6 name args
899+149:5 INDENT
900+149:5 glyph [
901+149:6 tight name maybe
902+149:12 name f
903+149:13 tight glyph ]
904+150:7 INDENT
905+150:7 glyph ?-
906+150:10 name maybe
907+151:9 INDENT
908+151:9 lit ~
909+151:11 lit ~
910+152:9 NEWLINE
911+152:9 glyph [
912+152:10 tight lit ~
913+152:12 name value
914+152:17 tight glyph ]
915+152:19 glyph `
916+152:20 tight glyph (
917+152:21 tight name f
918+152:23 name value
919+152:28 tight glyph )
920+154:1 DEDENT
921+154:1 DEDENT
922+154:1 DEDENT
923+154:1 DEDENT
924+154:1 NEWLINE
925+154:1 glyph ++
926+154:4 name biff
927+154:9 glyph |=
928+154:12 name args
929+154:16 tight glyph =
930+154:17 tight glyph [
931+154:18 tight glyph (
932+154:19 tight name unit
933+154:24 tvar A
934+154:25 tight glyph )
935+154:27 glyph $-(
936+154:30 tight tvar A
937+154:32 glyph (
938+154:33 tight name unit
939+154:38 tvar B
940+154:39 tight glyph )
941+154:40 tight glyph )
942+154:41 tight glyph ]
943+155:3 INDENT
944+155:3 glyph ?-
945+155:6 name args
946+156:5 INDENT
947+156:5 glyph [
948+156:6 tight name maybe
949+156:12 name f
950+156:13 tight glyph ]
951+157:7 INDENT
952+157:7 glyph ?-
953+157:10 name maybe
954+158:9 INDENT
955+158:9 lit ~
956+158:11 lit ~
957+159:9 NEWLINE
958+159:9 glyph [
959+159:10 tight lit ~
960+159:12 name value
961+159:17 tight glyph ]
962+159:19 glyph (
963+159:20 tight name f
964+159:22 name value
965+159:27 tight glyph )
966+161:1 DEDENT
967+161:1 DEDENT
968+161:1 DEDENT
969+161:1 DEDENT
970+161:1 NEWLINE
971+161:1 glyph ++
972+161:4 name both
973+161:9 glyph |=
974+161:12 name args
975+161:16 tight glyph =
976+161:17 tight glyph [
977+161:18 tight glyph (
978+161:19 tight name unit
979+161:24 tvar A
980+161:25 tight glyph )
981+161:27 glyph (
982+161:28 tight name unit
983+161:33 tvar B
984+161:34 tight glyph )
985+161:35 tight glyph ]
986+162:3 INDENT
987+162:3 glyph ?-
988+162:6 name args
989+163:5 INDENT
990+163:5 glyph [
991+163:6 tight name first
992+163:12 name second
993+163:18 tight glyph ]
994+164:7 INDENT
995+164:7 glyph ?-
996+164:10 name first
997+165:9 INDENT
998+165:9 lit ~
999+165:11 lit ~
1000+166:9 NEWLINE
1001+166:9 glyph [
1002+166:10 tight lit ~
1003+166:12 name a
1004+166:13 tight glyph ]
1005+167:11 INDENT
1006+167:11 glyph ?-
1007+167:14 name second
1008+168:13 INDENT
1009+168:13 lit ~
1010+168:15 lit ~
1011+169:13 NEWLINE
1012+169:13 glyph [
1013+169:14 tight lit ~
1014+169:16 name b
1015+169:17 tight glyph ]
1016+169:19 glyph `
1017+169:20 tight glyph [
1018+169:21 tight name a
1019+169:23 name b
1020+169:24 tight glyph ]
1021+171:1 DEDENT
1022+171:1 DEDENT
1023+171:1 DEDENT
1024+171:1 DEDENT
1025+171:1 DEDENT
1026+171:1 DEDENT
1027+171:1 NEWLINE
1028+171:1 glyph ++
1029+171:4 name clap
1030+171:9 glyph |=
1031+171:12 name args
1032+171:16 tight glyph =
1033+171:17 tight glyph [
1034+171:18 tight glyph (
1035+171:19 tight name unit
1036+171:24 tvar A
1037+171:25 tight glyph )
1038+171:27 glyph (
1039+171:28 tight name unit
1040+171:33 tvar A
1041+171:34 tight glyph )
1042+171:36 glyph $-(
1043+171:39 tight glyph [
1044+171:40 tight tvar A
1045+171:42 tvar A
1046+171:43 tight glyph ]
1047+171:45 tvar A
1048+171:46 tight glyph )
1049+171:47 tight glyph ]
1050+172:3 INDENT
1051+172:3 glyph ?-
1052+172:6 name args
1053+173:5 INDENT
1054+173:5 glyph [
1055+173:6 tight name first
1056+173:12 name second
1057+173:19 name combine
1058+173:26 tight glyph ]
1059+174:7 INDENT
1060+174:7 glyph ?-
1061+174:10 name first
1062+175:9 INDENT
1063+175:9 lit ~
1064+175:11 name second
1065+176:9 NEWLINE
1066+176:9 glyph [
1067+176:10 tight lit ~
1068+176:12 name a
1069+176:13 tight glyph ]
1070+177:11 INDENT
1071+177:11 glyph ?-
1072+177:14 name second
1073+178:13 INDENT
1074+178:13 lit ~
1075+178:15 name first
1076+179:13 NEWLINE
1077+179:13 glyph [
1078+179:14 tight lit ~
1079+179:16 name b
1080+179:17 tight glyph ]
1081+179:19 glyph `
1082+179:20 tight glyph (
1083+179:21 tight name combine
1084+179:29 name a
1085+179:31 name b
1086+179:32 tight glyph )
1087+181:1 DEDENT
1088+181:1 DEDENT
1089+181:1 DEDENT
1090+181:1 DEDENT
1091+181:1 DEDENT
1092+181:1 DEDENT
1093+181:1 NEWLINE
1094+181:1 glyph ++
1095+181:4 name clef
1096+181:9 glyph |=
1097+181:12 name args
1098+181:16 tight glyph =
1099+181:17 tight glyph [
1100+181:18 tight glyph (
1101+181:19 tight name unit
1102+181:24 tvar A
1103+181:25 tight glyph )
1104+181:27 glyph (
1105+181:28 tight name unit
1106+181:33 tvar B
1107+181:34 tight glyph )
1108+181:36 glyph $-(
1109+181:39 tight glyph [
1110+181:40 tight tvar A
1111+181:42 tvar B
1112+181:43 tight glyph ]
1113+181:45 glyph (
1114+181:46 tight name unit
1115+181:51 tvar C
1116+181:52 tight glyph )
1117+181:53 tight glyph )
1118+181:54 tight glyph ]
1119+182:3 INDENT
1120+182:3 glyph ?-
1121+182:6 name args
1122+183:5 INDENT
1123+183:5 glyph [
1124+183:6 tight name first
1125+183:12 name second
1126+183:19 name combine
1127+183:26 tight glyph ]
1128+184:7 INDENT
1129+184:7 glyph ?-
1130+184:10 name first
1131+185:9 INDENT
1132+185:9 lit ~
1133+185:11 lit ~
1134+186:9 NEWLINE
1135+186:9 glyph [
1136+186:10 tight lit ~
1137+186:12 name a
1138+186:13 tight glyph ]
1139+187:11 INDENT
1140+187:11 glyph ?-
1141+187:14 name second
1142+188:13 INDENT
1143+188:13 lit ~
1144+188:15 lit ~
1145+189:13 NEWLINE
1146+189:13 glyph [
1147+189:14 tight lit ~
1148+189:16 name b
1149+189:17 tight glyph ]
1150+189:19 glyph (
1151+189:20 tight name combine
1152+189:28 name a
1153+189:30 name b
1154+189:31 tight glyph )
1155+191:1 DEDENT
1156+191:1 DEDENT
1157+191:1 DEDENT
1158+191:1 DEDENT
1159+191:1 DEDENT
1160+191:1 DEDENT
1161+191:1 NEWLINE
1162+191:1 glyph ++
1163+191:4 name skim
1164+191:9 glyph |=
1165+191:12 name args
1166+191:16 tight glyph =
1167+191:17 tight glyph [
1168+191:18 tight glyph (
1169+191:19 tight name list
1170+191:24 tvar A
1171+191:25 tight glyph )
1172+191:27 glyph $-(
1173+191:30 tight tvar A
1174+191:32 glyph ?
1175+191:33 tight glyph )
1176+191:34 tight glyph ]
1177+192:3 INDENT
1178+192:3 glyph ?-
1179+192:6 name args
1180+193:5 INDENT
1181+193:5 glyph [
1182+193:6 tight name xs
1183+193:9 name predicate
1184+193:18 tight glyph ]
1185+194:7 INDENT
1186+194:7 glyph ?-
1187+194:10 name xs
1188+195:9 INDENT
1189+195:9 lit ~
1190+195:11 lit ~
1191+196:9 NEWLINE
1192+196:9 glyph [
1193+196:10 tight name item
1194+196:15 name rest
1195+196:19 tight glyph ]
1196+197:11 INDENT
1197+197:11 glyph ?-
1198+197:14 glyph (
1199+197:15 tight name predicate
1200+197:25 name item
1201+197:29 tight glyph )
1202+198:13 INDENT
1203+198:13 lit %.y
1204+198:17 glyph [
1205+198:18 tight name item
1206+198:23 glyph (
1207+198:24 tight name skim
1208+198:29 name rest
1209+198:34 name predicate
1210+198:43 tight glyph )
1211+198:44 tight glyph ]
1212+199:13 NEWLINE
1213+199:13 lit %.n
1214+199:17 glyph (
1215+199:18 tight name skim
1216+199:23 name rest
1217+199:28 name predicate
1218+199:37 tight glyph )
1219+201:1 DEDENT
1220+201:1 DEDENT
1221+201:1 DEDENT
1222+201:1 DEDENT
1223+201:1 DEDENT
1224+201:1 DEDENT
1225+201:1 NEWLINE
1226+201:1 glyph ++
1227+201:4 name skip
1228+201:9 glyph |=
1229+201:12 name args
1230+201:16 tight glyph =
1231+201:17 tight glyph [
1232+201:18 tight glyph (
1233+201:19 tight name list
1234+201:24 tvar A
1235+201:25 tight glyph )
1236+201:27 glyph $-(
1237+201:30 tight tvar A
1238+201:32 glyph ?
1239+201:33 tight glyph )
1240+201:34 tight glyph ]
1241+202:3 INDENT
1242+202:3 glyph ?-
1243+202:6 name args
1244+203:5 INDENT
1245+203:5 glyph [
1246+203:6 tight name xs
1247+203:9 name predicate
1248+203:18 tight glyph ]
1249+204:7 INDENT
1250+204:7 glyph ?-
1251+204:10 name xs
1252+205:9 INDENT
1253+205:9 lit ~
1254+205:11 lit ~
1255+206:9 NEWLINE
1256+206:9 glyph [
1257+206:10 tight name item
1258+206:15 name rest
1259+206:19 tight glyph ]
1260+207:11 INDENT
1261+207:11 glyph ?-
1262+207:14 glyph (
1263+207:15 tight name predicate
1264+207:25 name item
1265+207:29 tight glyph )
1266+208:13 INDENT
1267+208:13 lit %.y
1268+208:17 glyph (
1269+208:18 tight name skip
1270+208:23 name rest
1271+208:28 name predicate
1272+208:37 tight glyph )
1273+209:13 NEWLINE
1274+209:13 lit %.n
1275+209:17 glyph [
1276+209:18 tight name item
1277+209:23 glyph (
1278+209:24 tight name skip
1279+209:29 name rest
1280+209:34 name predicate
1281+209:43 tight glyph )
1282+209:44 tight glyph ]
1283+211:1 DEDENT
1284+211:1 DEDENT
1285+211:1 DEDENT
1286+211:1 DEDENT
1287+211:1 DEDENT
1288+211:1 DEDENT
1289+211:1 NEWLINE
1290+211:1 glyph ++
1291+211:4 name levy
1292+211:9 glyph |=
1293+211:12 name args
1294+211:16 tight glyph =
1295+211:17 tight glyph [
1296+211:18 tight glyph (
1297+211:19 tight name list
1298+211:24 tvar A
1299+211:25 tight glyph )
1300+211:27 glyph $-(
1301+211:30 tight tvar A
1302+211:32 glyph ?
1303+211:33 tight glyph )
1304+211:34 tight glyph ]
1305+212:3 INDENT
1306+212:3 glyph ?-
1307+212:6 name args
1308+213:5 INDENT
1309+213:5 glyph [
1310+213:6 tight name xs
1311+213:9 name predicate
1312+213:18 tight glyph ]
1313+214:7 INDENT
1314+214:7 glyph ?-
1315+214:10 name xs
1316+215:9 INDENT
1317+215:9 lit ~
1318+215:11 lit %.y
1319+216:9 NEWLINE
1320+216:9 glyph [
1321+216:10 tight name item
1322+216:15 name rest
1323+216:19 tight glyph ]
1324+217:11 INDENT
1325+217:11 glyph ?-
1326+217:14 glyph (
1327+217:15 tight name predicate
1328+217:25 name item
1329+217:29 tight glyph )
1330+218:13 INDENT
1331+218:13 lit %.y
1332+218:17 glyph (
1333+218:18 tight name levy
1334+218:23 name rest
1335+218:28 name predicate
1336+218:37 tight glyph )
1337+219:13 NEWLINE
1338+219:13 lit %.n
1339+219:17 lit %.n
1340+221:1 DEDENT
1341+221:1 DEDENT
1342+221:1 DEDENT
1343+221:1 DEDENT
1344+221:1 DEDENT
1345+221:1 DEDENT
1346+221:1 NEWLINE
1347+221:1 glyph ++
1348+221:4 name lien
1349+221:9 glyph |=
1350+221:12 name args
1351+221:16 tight glyph =
1352+221:17 tight glyph [
1353+221:18 tight glyph (
1354+221:19 tight name list
1355+221:24 tvar A
1356+221:25 tight glyph )
1357+221:27 glyph $-(
1358+221:30 tight tvar A
1359+221:32 glyph ?
1360+221:33 tight glyph )
1361+221:34 tight glyph ]
1362+222:3 INDENT
1363+222:3 glyph ?-
1364+222:6 name args
1365+223:5 INDENT
1366+223:5 glyph [
1367+223:6 tight name xs
1368+223:9 name predicate
1369+223:18 tight glyph ]
1370+224:7 INDENT
1371+224:7 glyph ?-
1372+224:10 name xs
1373+225:9 INDENT
1374+225:9 lit ~
1375+225:11 lit %.n
1376+226:9 NEWLINE
1377+226:9 glyph [
1378+226:10 tight name item
1379+226:15 name rest
1380+226:19 tight glyph ]
1381+227:11 INDENT
1382+227:11 glyph ?-
1383+227:14 glyph (
1384+227:15 tight name predicate
1385+227:25 name item
1386+227:29 tight glyph )
1387+228:13 INDENT
1388+228:13 lit %.y
1389+228:17 lit %.y
1390+229:13 NEWLINE
1391+229:13 lit %.n
1392+229:17 glyph (
1393+229:18 tight name lien
1394+229:23 name rest
1395+229:28 name predicate
1396+229:37 tight glyph )
1397+231:1 DEDENT
1398+231:1 DEDENT
1399+231:1 DEDENT
1400+231:1 DEDENT
1401+231:1 DEDENT
1402+231:1 DEDENT
1403+231:1 NEWLINE
1404+231:1 glyph ++
1405+231:4 name roll
1406+231:9 glyph |=
1407+231:12 name args
1408+231:16 tight glyph =
1409+231:17 tight glyph [
1410+231:18 tight glyph (
1411+231:19 tight name list
1412+231:24 tvar A
1413+231:25 tight glyph )
1414+231:27 tvar B
1415+231:29 glyph $-(
1416+231:32 tight glyph [
1417+231:33 tight tvar A
1418+231:35 tvar B
1419+231:36 tight glyph ]
1420+231:38 tvar B
1421+231:39 tight glyph )
1422+231:40 tight glyph ]
1423+232:3 INDENT
1424+232:3 glyph ?-
1425+232:6 name args
1426+233:5 INDENT
1427+233:5 glyph [
1428+233:6 tight name xs
1429+233:9 name start
1430+233:15 name combine
1431+233:22 tight glyph ]
1432+234:7 INDENT
1433+234:7 glyph ?-
1434+234:10 name xs
1435+235:9 INDENT
1436+235:9 lit ~
1437+235:11 name start
1438+236:9 NEWLINE
1439+236:9 glyph [
1440+236:10 tight name item
1441+236:15 name rest
1442+236:19 tight glyph ]
1443+236:21 glyph (
1444+236:22 tight name roll
1445+236:27 name rest
1446+236:32 glyph (
1447+236:33 tight name combine
1448+236:41 name item
1449+236:46 name start
1450+236:51 tight glyph )
1451+236:53 name combine
1452+236:60 tight glyph )
1453+238:1 DEDENT
1454+238:1 DEDENT
1455+238:1 DEDENT
1456+238:1 DEDENT
1457+238:1 NEWLINE
1458+238:1 glyph ++
1459+238:4 name reel
1460+238:9 glyph |=
1461+238:12 name args
1462+238:16 tight glyph =
1463+238:17 tight glyph [
1464+238:18 tight glyph (
1465+238:19 tight name list
1466+238:24 tvar A
1467+238:25 tight glyph )
1468+238:27 tvar B
1469+238:29 glyph $-(
1470+238:32 tight glyph [
1471+238:33 tight tvar A
1472+238:35 tvar B
1473+238:36 tight glyph ]
1474+238:38 tvar B
1475+238:39 tight glyph )
1476+238:40 tight glyph ]
1477+239:3 INDENT
1478+239:3 glyph ?-
1479+239:6 name args
1480+240:5 INDENT
1481+240:5 glyph [
1482+240:6 tight name xs
1483+240:9 name start
1484+240:15 name combine
1485+240:22 tight glyph ]
1486+241:7 INDENT
1487+241:7 glyph ?-
1488+241:10 name xs
1489+242:9 INDENT
1490+242:9 lit ~
1491+242:11 name start
1492+243:9 NEWLINE
1493+243:9 glyph [
1494+243:10 tight name item
1495+243:15 name rest
1496+243:19 tight glyph ]
1497+243:21 glyph (
1498+243:22 tight name combine
1499+243:30 name item
1500+243:35 glyph (
1501+243:36 tight name reel
1502+243:41 name rest
1503+243:46 name start
1504+243:52 name combine
1505+243:59 tight glyph )
1506+243:60 tight glyph )
1507+245:1 DEDENT
1508+245:1 DEDENT
1509+245:1 DEDENT
1510+245:1 DEDENT
1511+245:1 NEWLINE
1512+245:1 glyph ++
1513+245:4 name flit
1514+245:9 glyph |=
1515+245:12 name predicate
1516+245:21 tight glyph =
1517+245:22 tight glyph $-(
1518+245:25 tight tvar A
1519+245:27 glyph ?
1520+245:28 tight glyph )
1521+246:3 INDENT
1522+246:3 glyph |=
1523+246:6 name value
1524+246:11 tight glyph =
1525+246:12 tight tvar A
1526+247:5 INDENT
1527+247:5 glyph ?-
1528+247:8 glyph (
1529+247:9 tight name predicate
1530+247:19 name value
1531+247:24 tight glyph )
1532+248:7 INDENT
1533+248:7 lit %.y
1534+248:11 glyph `
1535+248:12 tight name value
1536+249:7 NEWLINE
1537+249:7 lit %.n
1538+249:11 lit ~
1539+251:1 DEDENT
1540+251:1 DEDENT
1541+251:1 DEDENT
1542+251:1 NEWLINE
1543+251:1 glyph ++
1544+251:4 name murn
1545+251:9 glyph |=
1546+251:12 name args
1547+251:16 tight glyph =
1548+251:17 tight glyph [
1549+251:18 tight glyph (
1550+251:19 tight name list
1551+251:24 tvar A
1552+251:25 tight glyph )
1553+251:27 glyph $-(
1554+251:30 tight tvar A
1555+251:32 glyph (
1556+251:33 tight name unit
1557+251:38 tvar B
1558+251:39 tight glyph )
1559+251:40 tight glyph )
1560+251:41 tight glyph ]
1561+252:3 INDENT
1562+252:3 glyph ?-
1563+252:6 name args
1564+253:5 INDENT
1565+253:5 glyph [
1566+253:6 tight name xs
1567+253:9 name f
1568+253:10 tight glyph ]
1569+254:7 INDENT
1570+254:7 glyph ?-
1571+254:10 name xs
1572+255:9 INDENT
1573+255:9 lit ~
1574+255:11 lit ~
1575+256:9 NEWLINE
1576+256:9 glyph [
1577+256:10 tight name item
1578+256:15 name rest
1579+256:19 tight glyph ]
1580+257:11 INDENT
1581+257:11 glyph ?-
1582+257:14 glyph (
1583+257:15 tight name f
1584+257:17 name item
1585+257:21 tight glyph )
1586+258:13 INDENT
1587+258:13 lit ~
1588+258:15 glyph (
1589+258:16 tight name murn
1590+258:21 name rest
1591+258:26 name f
1592+258:27 tight glyph )
1593+259:13 NEWLINE
1594+259:13 glyph [
1595+259:14 tight lit ~
1596+259:16 name value
1597+259:21 tight glyph ]
1598+259:23 glyph [
1599+259:24 tight name value
1600+259:30 glyph (
1601+259:31 tight name murn
1602+259:36 name rest
1603+259:41 name f
1604+259:42 tight glyph )
1605+259:43 tight glyph ]
1606+261:1 DEDENT
1607+261:1 DEDENT
1608+261:1 DEDENT
1609+261:1 DEDENT
1610+261:1 DEDENT
1611+261:1 DEDENT
1612+261:1 NEWLINE
1613+261:1 glyph ++
1614+261:4 name join
1615+261:9 glyph |=
1616+261:12 name args
1617+261:16 tight glyph =
1618+261:17 tight glyph [
1619+261:18 tight tvar A
1620+261:20 glyph (
1621+261:21 tight name list
1622+261:26 tvar A
1623+261:27 tight glyph )
1624+261:28 tight glyph ]
1625+262:3 INDENT
1626+262:3 glyph ?-
1627+262:6 name args
1628+263:5 INDENT
1629+263:5 glyph [
1630+263:6 tight name separator
1631+263:16 name xs
1632+263:18 tight glyph ]
1633+264:7 INDENT
1634+264:7 glyph ?-
1635+264:10 name xs
1636+265:9 INDENT
1637+265:9 lit ~
1638+265:11 lit ~
1639+266:9 NEWLINE
1640+266:9 glyph [
1641+266:10 tight name item
1642+266:15 name rest
1643+266:19 tight glyph ]
1644+267:11 INDENT
1645+267:11 glyph ?-
1646+267:14 name rest
1647+268:13 INDENT
1648+268:13 lit ~
1649+268:15 glyph [
1650+268:16 tight name item
1651+268:21 lit ~
1652+268:22 tight glyph ]
1653+269:13 NEWLINE
1654+269:13 glyph [
1655+269:14 tight name next
1656+269:19 name more
1657+269:23 tight glyph ]
1658+269:25 glyph [
1659+269:26 tight name item
1660+269:31 glyph [
1661+269:32 tight name separator
1662+269:42 glyph (
1663+269:43 tight name join
1664+269:48 name separator
1665+269:58 name rest
1666+269:62 tight glyph )
1667+269:63 tight glyph ]
1668+269:64 tight glyph ]
1669+271:1 DEDENT
1670+271:1 DEDENT
1671+271:1 DEDENT
1672+271:1 DEDENT
1673+271:1 DEDENT
1674+271:1 DEDENT
1675+271:1 NEWLINE
1676+271:1 glyph ++
1677+271:4 name snip
1678+271:9 glyph |=
1679+271:12 name xs
1680+271:14 tight glyph =
1681+271:15 tight glyph (
1682+271:16 tight name list
1683+271:21 tvar A
1684+271:22 tight glyph )
1685+272:3 INDENT
1686+272:3 glyph ?-
1687+272:6 name xs
1688+273:5 INDENT
1689+273:5 lit ~
1690+273:7 lit ~
1691+274:5 NEWLINE
1692+274:5 glyph [
1693+274:6 tight name item
1694+274:11 name rest
1695+274:15 tight glyph ]
1696+275:7 INDENT
1697+275:7 glyph ?-
1698+275:10 name rest
1699+276:9 INDENT
1700+276:9 lit ~
1701+276:11 lit ~
1702+277:9 NEWLINE
1703+277:9 glyph [
1704+277:10 tight name next
1705+277:15 name more
1706+277:19 tight glyph ]
1707+277:21 glyph [
1708+277:22 tight name item
1709+277:27 glyph (
1710+277:28 tight name snip
1711+277:33 name rest
1712+277:37 tight glyph )
1713+277:38 tight glyph ]
1714+279:1 DEDENT
1715+279:1 DEDENT
1716+279:1 DEDENT
1717+279:1 DEDENT
1718+279:1 NEWLINE
1719+279:1 glyph ++
1720+279:4 name rear
1721+279:9 glyph |=
1722+279:12 name xs
1723+279:14 tight glyph =
1724+279:15 tight glyph (
1725+279:16 tight name list
1726+279:21 tvar A
1727+279:22 tight glyph )
1728+280:3 INDENT
1729+280:3 glyph ?-
1730+280:6 name xs
1731+281:5 INDENT
1732+281:5 lit ~
1733+281:7 glyph !!
1734+282:5 NEWLINE
1735+282:5 glyph [
1736+282:6 tight name item
1737+282:11 name rest
1738+282:15 tight glyph ]
1739+283:7 INDENT
1740+283:7 glyph ?-
1741+283:10 name rest
1742+284:9 INDENT
1743+284:9 lit ~
1744+284:11 name item
1745+285:9 NEWLINE
1746+285:9 glyph [
1747+285:10 tight name next
1748+285:15 name more
1749+285:19 tight glyph ]
1750+285:21 glyph (
1751+285:22 tight name rear
1752+285:27 name rest
1753+285:31 tight glyph )
1754+285:32 DEDENT
1755+285:32 DEDENT
1756+285:32 DEDENT
1757+285:32 DEDENT
1758+285:32 NEWLINE
tests/golden/prelude-unit-list-transforms/tree.txt+638−635
@@ -111,651 +111,654 @@
111111 (arm 47:5
112112 (cell 47:5 (bind 47:6 xs) (bind 47:9 f))
113113 (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
144− (cell 59:3
145− (const 59:4 %$)
146− (face 59:7 p (ref 59:9 dime)))
114+ (cast 48:7
115+ (apply 48:10 list (tvar 48:16 B))
116+ (body 49:9
117+ (branch 49:9
118+ (wing 49:12 xs)
119+ (arm 50:11 (lit 50:11 ~) (lit 50:13 ~))
120+ (arm 51:11
121+ (cell 51:11 (bind 51:12 item) (bind 51:17 rest))
122+ (tuple 51:23
123+ (group 51:24
124+ (call 51:25 (wing 51:25 f) (wing 51:27 item)))
125+ (group 51:33
126+ (call 51:34 (wing 51:34 turn) (wing 51:39 rest) (wing 51:44 f))))))))))))))
127+ (mold 53:1 dime
128+ (cell 53:9
129+ (face 53:10 p (aura 53:12 @ta))
130+ (face 53:16 q (aura 53:18 @))))
131+ (mold 55:1 hair
132+ (cell 55:9
133+ (face 55:10 p (aura 55:12 @ud))
134+ (face 55:16 q (aura 55:18 @ud))))
135+ (mold 57:1 pint
136+ (cell 57:9
137+ (face 57:10 p
138+ (cell 57:12
139+ (face 57:13 p (aura 57:15 @))
140+ (face 57:17 q (aura 57:19 @))))
141+ (face 57:22 q
142+ (cell 57:24
143+ (face 57:25 p (aura 57:27 @))
144+ (face 57:29 q (aura 57:31 @))))))
145+ (mold 59:1 coin
146+ (union 60:3
147147 (cell 60:3
148− (const 60:4 %blob)
149− (face 60:10 p (noun 60:12)))
148+ (const 60:4 %$)
149+ (face 60:7 p (ref 60:9 dime)))
150150 (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)
181− (cell 79:3
182− (const 79:4 %leaf)
183− (face 79:10 p (ref 79:12 tape)))
151+ (const 61:4 %blob)
152+ (face 61:10 p (noun 61:12)))
153+ (cell 62:3
154+ (const 62:4 %many)
155+ (face 62:10 p
156+ (apply 62:12 list (ref 62:18 coin))))))
157+ (mold 64:1 pair
158+ (generic 64:9 A B
159+ (cell 64:18
160+ (face 64:19 p (tvar 64:21 A))
161+ (face 64:23 q (tvar 64:25 B)))))
162+ (mold 66:1 trel
163+ (generic 66:9 A B C
164+ (cell 66:20
165+ (face 66:21 p (tvar 66:23 A))
166+ (face 66:25 q (tvar 66:27 B))
167+ (face 66:29 r (tvar 66:31 C)))))
168+ (mold 68:1 qual
169+ (generic 68:9 A B C D
170+ (cell 68:22
171+ (face 68:23 p (tvar 68:25 A))
172+ (face 68:27 q (tvar 68:29 B))
173+ (face 68:31 r (tvar 68:33 C))
174+ (face 68:35 s (tvar 68:37 D)))))
175+ (mold 70:1 cord (aura 70:9 @t))
176+ (mold 72:1 knot (aura 72:9 @ta))
177+ (mold 74:1 tape
178+ (apply 74:9 list (aura 74:15 @tD)))
179+ (mold 76:1 path
180+ (apply 76:9 list (ref 76:15 knot)))
181+ (mold 78:1 tank
182+ (union 79:3
183+ (ref 79:3 cord)
184184 (cell 80:3
185− (const 80:4 %palm)
186− (face 80:10 p
187− (apply 80:12 qual (ref 80:18 tape) (ref 80:23 tape) (ref 80:28 tape) (ref 80:33 tape)))
188− (face 80:39 q
189− (apply 80:41 list (ref 80:47 tank))))
185+ (const 80:4 %leaf)
186+ (face 80:10 p (ref 80:12 tape)))
190187 (cell 81:3
191− (const 81:4 %rose)
188+ (const 81:4 %palm)
192189 (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
216− (cell 92:3
217− (const 92:4 %0)
218− (face 92:7 p (noun 92:9)))
190+ (apply 81:12 qual (ref 81:18 tape) (ref 81:23 tape) (ref 81:28 tape) (ref 81:33 tape)))
191+ (face 81:39 q
192+ (apply 81:41 list (ref 81:47 tank))))
193+ (cell 82:3
194+ (const 82:4 %rose)
195+ (face 82:10 p
196+ (apply 82:12 trel (ref 82:18 tape) (ref 82:23 tape) (ref 82:28 tape)))
197+ (face 82:34 q
198+ (apply 82:36 list (ref 82:42 tank))))))
199+ (mold 84:1 nail
200+ (cell 84:9
201+ (face 84:10 p (ref 84:12 hair))
202+ (face 84:17 q (ref 84:19 tape))))
203+ (mold 86:1 edge
204+ (cell 86:9
205+ (face 86:10 p (ref 86:12 hair))
206+ (face 86:17 q
207+ (apply 86:19 unit
208+ (cell 86:25
209+ (face 86:26 p (noun 86:28))
210+ (face 86:30 q (ref 86:32 nail)))))))
211+ (mold 88:1 rule
212+ (fn 88:9 (ref 88:12 nail) (ref 88:17 edge)))
213+ (mold 90:1 spot
214+ (cell 90:9
215+ (face 90:10 p (ref 90:12 path))
216+ (face 90:17 q (ref 90:19 pint))))
217+ (mold 92:1 toon
218+ (union 93:3
219219 (cell 93:3
220− (const 93:4 %1)
220+ (const 93:4 %0)
221221 (face 93:7 p (noun 93:9)))
222222 (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
281− (cell 118:3
282− (const 118:4 %|)
283− (face 118:7 p (tvar 118:9 B)))
223+ (const 94:4 %1)
224+ (face 94:7 p (noun 94:9)))
225+ (cell 95:3
226+ (const 95:4 %2)
227+ (face 95:7 p
228+ (apply 95:9 list (ref 95:15 tank))))))
229+ (mold 97:1 like
230+ (generic 97:9 A
231+ (cell 97:16
232+ (face 97:17 p (ref 97:19 hair))
233+ (face 97:24 q
234+ (apply 97:26 unit
235+ (cell 97:32
236+ (face 97:33 p (tvar 97:35 A))
237+ (face 97:37 q (ref 97:39 nail))))))))
238+ (value 99:1 wonk
239+ (gate 99:9
240+ (face 99:12 veq
241+ (apply 99:16 like (tvar 99:22 A)))
242+ (body 100:3
243+ (branch 100:3
244+ (wing 100:6 q.veq)
245+ (arm 101:5 (lit 101:5 ~) (crash 101:7))
246+ (arm 102:5
247+ (cell 102:5 (lit 102:6 ~) (bind 102:8 product))
248+ (wing 102:17 p.product))))))
249+ (mold 104:1 lone
250+ (generic 104:9 A
251+ (cell 104:16
252+ (face 104:17 p (tvar 104:19 A)))))
253+ (mold 106:1 lest
254+ (generic 106:9 A
255+ (cell 106:16
256+ (face 106:17 i (tvar 106:19 A))
257+ (face 106:21 t
258+ (apply 106:23 list (tvar 106:29 A))))))
259+ (mold 108:1 pole
260+ (generic 108:9 A
261+ (union 109:3
262+ (const 109:3 ~)
263+ (cell 110:3
264+ (tvar 110:4 A)
265+ (apply 110:6 pole (tvar 110:12 A))))))
266+ (mold 112:1 quip
267+ (generic 112:9 A B
268+ (cell 112:18
269+ (apply 112:19 list (tvar 112:25 A))
270+ (tvar 112:28 B))))
271+ (mold 114:1 tree
272+ (generic 114:9 A
273+ (union 115:3
274+ (const 115:3 ~)
275+ (cell 116:3
276+ (face 116:4 n (tvar 116:6 A))
277+ (face 116:8 l
278+ (apply 116:10 tree (tvar 116:16 A)))
279+ (face 116:19 r
280+ (apply 116:21 tree (tvar 116:27 A)))))))
281+ (mold 118:1 each
282+ (generic 118:9 A B
283+ (union 119:3
284284 (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)))
499− (arm 197:13
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)))))
285+ (const 119:4 %|)
286+ (face 119:7 p (tvar 119:9 B)))
287+ (cell 120:3
288+ (const 120:4 %&)
289+ (face 120:7 p (tvar 120:9 A))))))
290+ (mold 122:1 bloq (aura 122:9 @))
291+ (value 124:1 some
292+ (gate 124:9
293+ (face 124:12 item (tvar 124:17 A))
294+ (unit 124:19 (wing 124:20 item))))
295+ (value 126:1 lure
296+ (gate 126:9
297+ (face 126:12 item (tvar 126:17 A))
298+ (body 127:3
299+ (cast 127:3
300+ (apply 127:6 list (tvar 127:12 A))
301+ (tuple 127:15 (wing 127:16 item) (lit 127:21 ~))))))
302+ (value 129:1 snoc
303+ (gate 129:9
304+ (face 129:12 args
305+ (cell 129:17
306+ (apply 129:18 list (tvar 129:24 A))
307+ (tvar 129:27 A)))
308+ (body 130:3
309+ (branch 130:3
310+ (wing 130:6 args)
311+ (arm 131:5
312+ (cell 131:5 (bind 131:6 xs) (bind 131:9 item))
313+ (group 131:15
314+ (call 131:16
315+ (wing 131:16 weld)
316+ (wing 131:21 xs)
317+ (tuple 131:24 (wing 131:25 item) (lit 131:30 ~)))))))))
318+ (value 133:1 flop
319+ (gate 133:9
320+ (face 133:12 xs
321+ (apply 133:15 list (tvar 133:21 A)))
322+ (body 134:3
323+ (value 134:3 reverse-into
324+ (gate 134:19
325+ (face 134:22 args
326+ (cell 134:27
327+ (apply 134:28 list (tvar 134:34 A))
328+ (apply 134:37 list (tvar 134:43 A))))
329+ (body 135:5
330+ (branch 135:5
331+ (wing 135:8 args)
332+ (arm 136:7
333+ (cell 136:7 (bind 136:8 rest) (bind 136:13 acc))
334+ (body 137:9
335+ (branch 137:9
336+ (wing 137:12 rest)
337+ (arm 138:11 (lit 138:11 ~) (wing 138:13 acc))
338+ (arm 139:11
339+ (cell 139:11 (bind 139:12 item) (bind 139:17 more))
340+ (group 139:23
341+ (call 139:24
342+ (wing 139:24 reverse-into)
343+ (wing 139:37 more)
344+ (tuple 139:42 (wing 139:43 item) (wing 139:48 acc))))))))))))
345+ (group 140:3
346+ (call 140:4 (wing 140:4 reverse-into) (wing 140:17 xs) (lit 140:20 ~))))))
347+ (value 142:1 drop
348+ (gate 142:9
349+ (face 142:12 maybe
350+ (apply 142:18 unit (tvar 142:24 A)))
351+ (body 143:3
352+ (branch 143:3
353+ (wing 143:6 maybe)
354+ (arm 144:5 (lit 144:5 ~) (lit 144:7 ~))
355+ (arm 145:5
356+ (cell 145:5 (lit 145:6 ~) (bind 145:8 value))
357+ (tuple 145:15 (wing 145:16 value) (lit 145:22 ~)))))))
358+ (value 147:1 bind
359+ (gate 147:9
360+ (face 147:12 args
361+ (cell 147:17
362+ (apply 147:18 unit (tvar 147:24 A))
363+ (fn 147:27 (tvar 147:30 A) (tvar 147:32 B))))
364+ (body 148:3
365+ (branch 148:3
366+ (wing 148:6 args)
367+ (arm 149:5
368+ (cell 149:5 (bind 149:6 maybe) (bind 149:12 f))
369+ (body 150:7
370+ (branch 150:7
371+ (wing 150:10 maybe)
372+ (arm 151:9 (lit 151:9 ~) (lit 151:11 ~))
373+ (arm 152:9
374+ (cell 152:9 (lit 152:10 ~) (bind 152:12 value))
375+ (unit 152:19
376+ (group 152:20
377+ (call 152:21 (wing 152:21 f) (wing 152:23 value))))))))))))
378+ (value 154:1 biff
379+ (gate 154:9
380+ (face 154:12 args
381+ (cell 154:17
382+ (apply 154:18 unit (tvar 154:24 A))
383+ (fn 154:27
384+ (tvar 154:30 A)
385+ (apply 154:32 unit (tvar 154:38 B)))))
386+ (body 155:3
387+ (branch 155:3
388+ (wing 155:6 args)
389+ (arm 156:5
390+ (cell 156:5 (bind 156:6 maybe) (bind 156:12 f))
391+ (body 157:7
392+ (branch 157:7
393+ (wing 157:10 maybe)
394+ (arm 158:9 (lit 158:9 ~) (lit 158:11 ~))
395+ (arm 159:9
396+ (cell 159:9 (lit 159:10 ~) (bind 159:12 value))
397+ (group 159:19
398+ (call 159:20 (wing 159:20 f) (wing 159:22 value)))))))))))
399+ (value 161:1 both
400+ (gate 161:9
401+ (face 161:12 args
402+ (cell 161:17
403+ (apply 161:18 unit (tvar 161:24 A))
404+ (apply 161:27 unit (tvar 161:33 B))))
405+ (body 162:3
406+ (branch 162:3
407+ (wing 162:6 args)
408+ (arm 163:5
409+ (cell 163:5 (bind 163:6 first) (bind 163:12 second))
410+ (body 164:7
411+ (branch 164:7
412+ (wing 164:10 first)
413+ (arm 165:9 (lit 165:9 ~) (lit 165:11 ~))
414+ (arm 166:9
415+ (cell 166:9 (lit 166:10 ~) (bind 166:12 a))
416+ (body 167:11
417+ (branch 167:11
418+ (wing 167:14 second)
419+ (arm 168:13 (lit 168:13 ~) (lit 168:15 ~))
420+ (arm 169:13
421+ (cell 169:13 (lit 169:14 ~) (bind 169:16 b))
422+ (unit 169:19
423+ (tuple 169:20 (wing 169:21 a) (wing 169:23 b))))))))))))))
424+ (value 171:1 clap
425+ (gate 171:9
426+ (face 171:12 args
427+ (cell 171:17
428+ (apply 171:18 unit (tvar 171:24 A))
429+ (apply 171:27 unit (tvar 171:33 A))
430+ (fn 171:36
431+ (cell 171:39 (tvar 171:40 A) (tvar 171:42 A))
432+ (tvar 171:45 A))))
433+ (body 172:3
434+ (branch 172:3
435+ (wing 172:6 args)
436+ (arm 173:5
437+ (cell 173:5 (bind 173:6 first) (bind 173:12 second) (bind 173:19 combine))
438+ (body 174:7
439+ (branch 174:7
440+ (wing 174:10 first)
441+ (arm 175:9 (lit 175:9 ~) (wing 175:11 second))
442+ (arm 176:9
443+ (cell 176:9 (lit 176:10 ~) (bind 176:12 a))
444+ (body 177:11
445+ (branch 177:11
446+ (wing 177:14 second)
447+ (arm 178:13 (lit 178:13 ~) (wing 178:15 first))
448+ (arm 179:13
449+ (cell 179:13 (lit 179:14 ~) (bind 179:16 b))
450+ (unit 179:19
451+ (group 179:20
452+ (call 179:21 (wing 179:21 combine) (wing 179:29 a) (wing 179:31 b)))))))))))))))
453+ (value 181:1 clef
454+ (gate 181:9
455+ (face 181:12 args
456+ (cell 181:17
457+ (apply 181:18 unit (tvar 181:24 A))
458+ (apply 181:27 unit (tvar 181:33 B))
459+ (fn 181:36
460+ (cell 181:39 (tvar 181:40 A) (tvar 181:42 B))
461+ (apply 181:45 unit (tvar 181:51 C)))))
462+ (body 182:3
463+ (branch 182:3
464+ (wing 182:6 args)
465+ (arm 183:5
466+ (cell 183:5 (bind 183:6 first) (bind 183:12 second) (bind 183:19 combine))
467+ (body 184:7
468+ (branch 184:7
469+ (wing 184:10 first)
470+ (arm 185:9 (lit 185:9 ~) (lit 185:11 ~))
471+ (arm 186:9
472+ (cell 186:9 (lit 186:10 ~) (bind 186:12 a))
473+ (body 187:11
474+ (branch 187:11
475+ (wing 187:14 second)
476+ (arm 188:13 (lit 188:13 ~) (lit 188:15 ~))
477+ (arm 189:13
478+ (cell 189:13 (lit 189:14 ~) (bind 189:16 b))
479+ (group 189:19
480+ (call 189:20 (wing 189:20 combine) (wing 189:28 a) (wing 189:30 b))))))))))))))
481+ (value 191:1 skim
482+ (gate 191:9
483+ (face 191:12 args
484+ (cell 191:17
485+ (apply 191:18 list (tvar 191:24 A))
486+ (fn 191:27 (tvar 191:30 A) (flag 191:32))))
487+ (body 192:3
488+ (branch 192:3
489+ (wing 192:6 args)
490+ (arm 193:5
491+ (cell 193:5 (bind 193:6 xs) (bind 193:9 predicate))
492+ (body 194:7
493+ (branch 194:7
494+ (wing 194:10 xs)
495+ (arm 195:9 (lit 195:9 ~) (lit 195:11 ~))
496+ (arm 196:9
497+ (cell 196:9 (bind 196:10 item) (bind 196:15 rest))
498+ (body 197:11
499+ (branch 197:11
500+ (group 197:14
501+ (call 197:15 (wing 197:15 predicate) (wing 197:25 item)))
505502 (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)))
530− (arm 207:13
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))))
503+ (lit 198:13 %.y)
504+ (tuple 198:17
505+ (wing 198:18 item)
506+ (group 198:23
507+ (call 198:24 (wing 198:24 skim) (wing 198:29 rest) (wing 198:34 predicate)))))
508+ (arm 199:13
509+ (lit 199:13 %.n)
510+ (group 199:17
511+ (call 199:18 (wing 199:18 skim) (wing 199:23 rest) (wing 199:28 predicate))))))))))))))
512+ (value 201:1 skip
513+ (gate 201:9
514+ (face 201:12 args
515+ (cell 201:17
516+ (apply 201:18 list (tvar 201:24 A))
517+ (fn 201:27 (tvar 201:30 A) (flag 201:32))))
518+ (body 202:3
519+ (branch 202:3
520+ (wing 202:6 args)
521+ (arm 203:5
522+ (cell 203:5 (bind 203:6 xs) (bind 203:9 predicate))
523+ (body 204:7
524+ (branch 204:7
525+ (wing 204:10 xs)
526+ (arm 205:9 (lit 205:9 ~) (lit 205:11 ~))
527+ (arm 206:9
528+ (cell 206:9 (bind 206:10 item) (bind 206:15 rest))
529+ (body 207:11
530+ (branch 207:11
531+ (group 207:14
532+ (call 207:15 (wing 207:15 predicate) (wing 207:25 item)))
534533 (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)))
683− (arm 257:13
684− (lit 257:13 ~)
685− (group 257:15
686− (call 257:16 (wing 257:16 murn) (wing 257:21 rest) (wing 257:26 f))))
534+ (lit 208:13 %.y)
535+ (group 208:17
536+ (call 208:18 (wing 208:18 skip) (wing 208:23 rest) (wing 208:28 predicate))))
537+ (arm 209:13
538+ (lit 209:13 %.n)
539+ (tuple 209:17
540+ (wing 209:18 item)
541+ (group 209:23
542+ (call 209:24 (wing 209:24 skip) (wing 209:29 rest) (wing 209:34 predicate)))))))))))))))
543+ (value 211:1 levy
544+ (gate 211:9
545+ (face 211:12 args
546+ (cell 211:17
547+ (apply 211:18 list (tvar 211:24 A))
548+ (fn 211:27 (tvar 211:30 A) (flag 211:32))))
549+ (body 212:3
550+ (branch 212:3
551+ (wing 212:6 args)
552+ (arm 213:5
553+ (cell 213:5 (bind 213:6 xs) (bind 213:9 predicate))
554+ (body 214:7
555+ (branch 214:7
556+ (wing 214:10 xs)
557+ (arm 215:9 (lit 215:9 ~) (lit 215:11 %.y))
558+ (arm 216:9
559+ (cell 216:9 (bind 216:10 item) (bind 216:15 rest))
560+ (body 217:11
561+ (branch 217:11
562+ (group 217:14
563+ (call 217:15 (wing 217:15 predicate) (wing 217:25 item)))
564+ (arm 218:13
565+ (lit 218:13 %.y)
566+ (group 218:17
567+ (call 218:18 (wing 218:18 levy) (wing 218:23 rest) (wing 218:28 predicate))))
568+ (arm 219:13 (lit 219:13 %.n) (lit 219:17 %.n))))))))))))
569+ (value 221:1 lien
570+ (gate 221:9
571+ (face 221:12 args
572+ (cell 221:17
573+ (apply 221:18 list (tvar 221:24 A))
574+ (fn 221:27 (tvar 221:30 A) (flag 221:32))))
575+ (body 222:3
576+ (branch 222:3
577+ (wing 222:6 args)
578+ (arm 223:5
579+ (cell 223:5 (bind 223:6 xs) (bind 223:9 predicate))
580+ (body 224:7
581+ (branch 224:7
582+ (wing 224:10 xs)
583+ (arm 225:9 (lit 225:9 ~) (lit 225:11 %.n))
584+ (arm 226:9
585+ (cell 226:9 (bind 226:10 item) (bind 226:15 rest))
586+ (body 227:11
587+ (branch 227:11
588+ (group 227:14
589+ (call 227:15 (wing 227:15 predicate) (wing 227:25 item)))
590+ (arm 228:13 (lit 228:13 %.y) (lit 228:17 %.y))
591+ (arm 229:13
592+ (lit 229:13 %.n)
593+ (group 229:17
594+ (call 229:18 (wing 229:18 lien) (wing 229:23 rest) (wing 229:28 predicate))))))))))))))
595+ (value 231:1 roll
596+ (gate 231:9
597+ (face 231:12 args
598+ (cell 231:17
599+ (apply 231:18 list (tvar 231:24 A))
600+ (tvar 231:27 B)
601+ (fn 231:29
602+ (cell 231:32 (tvar 231:33 A) (tvar 231:35 B))
603+ (tvar 231:38 B))))
604+ (body 232:3
605+ (branch 232:3
606+ (wing 232:6 args)
607+ (arm 233:5
608+ (cell 233:5 (bind 233:6 xs) (bind 233:9 start) (bind 233:15 combine))
609+ (body 234:7
610+ (branch 234:7
611+ (wing 234:10 xs)
612+ (arm 235:9 (lit 235:9 ~) (wing 235:11 start))
613+ (arm 236:9
614+ (cell 236:9 (bind 236:10 item) (bind 236:15 rest))
615+ (group 236:21
616+ (call 236:22
617+ (wing 236:22 roll)
618+ (wing 236:27 rest)
619+ (group 236:32
620+ (call 236:33 (wing 236:33 combine) (wing 236:41 item) (wing 236:46 start)))
621+ (wing 236:53 combine)))))))))))
622+ (value 238:1 reel
623+ (gate 238:9
624+ (face 238:12 args
625+ (cell 238:17
626+ (apply 238:18 list (tvar 238:24 A))
627+ (tvar 238:27 B)
628+ (fn 238:29
629+ (cell 238:32 (tvar 238:33 A) (tvar 238:35 B))
630+ (tvar 238:38 B))))
631+ (body 239:3
632+ (branch 239:3
633+ (wing 239:6 args)
634+ (arm 240:5
635+ (cell 240:5 (bind 240:6 xs) (bind 240:9 start) (bind 240:15 combine))
636+ (body 241:7
637+ (branch 241:7
638+ (wing 241:10 xs)
639+ (arm 242:9 (lit 242:9 ~) (wing 242:11 start))
640+ (arm 243:9
641+ (cell 243:9 (bind 243:10 item) (bind 243:15 rest))
642+ (group 243:21
643+ (call 243:22
644+ (wing 243:22 combine)
645+ (wing 243:30 item)
646+ (group 243:35
647+ (call 243:36 (wing 243:36 reel) (wing 243:41 rest) (wing 243:46 start) (wing 243:52 combine)))))))))))))
648+ (value 245:1 flit
649+ (gate 245:9
650+ (face 245:12 predicate
651+ (fn 245:22 (tvar 245:25 A) (flag 245:27)))
652+ (body 246:3
653+ (gate 246:3
654+ (face 246:6 value (tvar 246:12 A))
655+ (body 247:5
656+ (branch 247:5
657+ (group 247:8
658+ (call 247:9 (wing 247:9 predicate) (wing 247:19 value)))
659+ (arm 248:7
660+ (lit 248:7 %.y)
661+ (unit 248:11 (wing 248:12 value)))
662+ (arm 249:7 (lit 249:7 %.n) (lit 249:11 ~))))))))
663+ (value 251:1 murn
664+ (gate 251:9
665+ (face 251:12 args
666+ (cell 251:17
667+ (apply 251:18 list (tvar 251:24 A))
668+ (fn 251:27
669+ (tvar 251:30 A)
670+ (apply 251:32 unit (tvar 251:38 B)))))
671+ (body 252:3
672+ (branch 252:3
673+ (wing 252:6 args)
674+ (arm 253:5
675+ (cell 253:5 (bind 253:6 xs) (bind 253:9 f))
676+ (body 254:7
677+ (branch 254:7
678+ (wing 254:10 xs)
679+ (arm 255:9 (lit 255:9 ~) (lit 255:11 ~))
680+ (arm 256:9
681+ (cell 256:9 (bind 256:10 item) (bind 256:15 rest))
682+ (body 257:11
683+ (branch 257:11
684+ (group 257:14
685+ (call 257:15 (wing 257:15 f) (wing 257:17 item)))
687686 (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)
713− (arm 267:13
714− (lit 267:13 ~)
715− (tuple 267:15 (wing 267:16 item) (lit 267:21 ~)))
687+ (lit 258:13 ~)
688+ (group 258:15
689+ (call 258:16 (wing 258:16 murn) (wing 258:21 rest) (wing 258:26 f))))
690+ (arm 259:13
691+ (cell 259:13 (lit 259:14 ~) (bind 259:16 value))
692+ (tuple 259:23
693+ (wing 259:24 value)
694+ (group 259:30
695+ (call 259:31 (wing 259:31 murn) (wing 259:36 rest) (wing 259:41 f)))))))))))))))
696+ (value 261:1 join
697+ (gate 261:9
698+ (face 261:12 args
699+ (cell 261:17
700+ (tvar 261:18 A)
701+ (apply 261:20 list (tvar 261:26 A))))
702+ (body 262:3
703+ (branch 262:3
704+ (wing 262:6 args)
705+ (arm 263:5
706+ (cell 263:5 (bind 263:6 separator) (bind 263:16 xs))
707+ (body 264:7
708+ (branch 264:7
709+ (wing 264:10 xs)
710+ (arm 265:9 (lit 265:9 ~) (lit 265:11 ~))
711+ (arm 266:9
712+ (cell 266:9 (bind 266:10 item) (bind 266:15 rest))
713+ (body 267:11
714+ (branch 267:11
715+ (wing 267:14 rest)
716716 (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))))))))))))
717+ (lit 268:13 ~)
718+ (tuple 268:15 (wing 268:16 item) (lit 268:21 ~)))
719+ (arm 269:13
720+ (cell 269:13 (bind 269:14 next) (bind 269:19 more))
721+ (tuple 269:25
722+ (wing 269:26 item)
723+ (tuple 269:31
724+ (wing 269:32 separator)
725+ (group 269:42
726+ (call 269:43 (wing 269:43 join) (wing 269:48 separator) (wing 269:58 rest))))))))))))))))
727+ (value 271:1 snip
728+ (gate 271:9
729+ (face 271:12 xs
730+ (apply 271:15 list (tvar 271:21 A)))
731+ (body 272:3
732+ (branch 272:3
733+ (wing 272:6 xs)
734+ (arm 273:5 (lit 273:5 ~) (lit 273:7 ~))
735+ (arm 274:5
736+ (cell 274:5 (bind 274:6 item) (bind 274:11 rest))
737+ (body 275:7
738+ (branch 275:7
739+ (wing 275:10 rest)
740+ (arm 276:9 (lit 276:9 ~) (lit 276:11 ~))
741+ (arm 277:9
742+ (cell 277:9 (bind 277:10 next) (bind 277:15 more))
743+ (tuple 277:21
744+ (wing 277:22 item)
745+ (group 277:27
746+ (call 277:28 (wing 277:28 snip) (wing 277:33 rest))))))))))))
747+ (value 279:1 rear
748+ (gate 279:9
749+ (face 279:12 xs
750+ (apply 279:15 list (tvar 279:21 A)))
751+ (body 280:3
752+ (branch 280:3
753+ (wing 280:6 xs)
754+ (arm 281:5 (lit 281:5 ~) (crash 281:7))
755+ (arm 282:5
756+ (cell 282:5 (bind 282:6 item) (bind 282:11 rest))
757+ (body 283:7
758+ (branch 283:7
759+ (wing 283:10 rest)
760+ (arm 284:9 (lit 284:9 ~) (wing 284:11 item))
761+ (arm 285:9
762+ (cell 285:9 (bind 285:10 next) (bind 285:15 more))
763+ (group 285:21
764+ (call 285:22 (wing 285:22 rear) (wing 285:27 rest))))))))))))
tests/golden/types-list-zero-fit/about.txtnew file+4
@@ -0,0 +1,4 @@
1+source: Grammar, Literals: `~` is "A constant: the `~` case of any union with one, such as `(unit A)`, `(list A)`, `(map K V)` or `(set A)`".
2+tests: A zero-valued literal or constant nested in a tuple supplied to a list sample is not a definite mismatch; this partial checker does not yet propagate the list context into that tuple. Nonzero atoms and passing an arbitrary list where the zero constant is required remain definite mismatches. Separate call arguments do receive list context, and the prelude `turn` tuple also fails closed.
3+expect: parses
4+expect-types: a partial inference report
tests/golden/types-list-zero-fit/modules.txtnew file+1
@@ -0,0 +1 @@
1+# no module fixtures
tests/golden/types-list-zero-fit/source.jibbnew file+8
@@ -0,0 +1,8 @@
1+++ nil-arg |= f=$-([(list @t) @t] @t) (f [~ "ok"])
2+++ zero-arg |= f=$-([(list @t) @t] @t) (f [%$ "ok"])
3+++ zero-one-arg |= f=$-([(list @t) @t] @t) (f [%1 "ok"])
4+++ multi-arg |= f=$-([(list @t) @t] @t) (f ~ "ok")
5+++ constant |= [f=$-([(list @t) @t] @t) z=~] (f [z "ok"])
6+++ nonzero-constant |= [f=$-([(list @t) @t] @t) z=%1] (f [z "ok"])
7+++ reverse |= [f=$-(%$ @t) xs=(list @t)] (f xs)
8+++ turn-tuple (turn [~ |=(x x)])
tests/golden/types-list-zero-fit/tokens.txtnew file+181
@@ -0,0 +1,181 @@
1+1:1 glyph ++
2+1:4 name nil-arg
3+1:12 glyph |=
4+1:15 name f
5+1:16 tight glyph =
6+1:17 tight glyph $-(
7+1:20 tight glyph [
8+1:21 tight glyph (
9+1:22 tight name list
10+1:27 aura @t
11+1:29 tight glyph )
12+1:31 aura @t
13+1:33 tight glyph ]
14+1:35 aura @t
15+1:37 tight glyph )
16+1:39 glyph (
17+1:40 tight name f
18+1:42 glyph [
19+1:43 tight lit ~
20+1:45 str "ok"
21+1:49 tight glyph ]
22+1:50 tight glyph )
23+2:1 NEWLINE
24+2:1 glyph ++
25+2:4 name zero-arg
26+2:13 glyph |=
27+2:16 name f
28+2:17 tight glyph =
29+2:18 tight glyph $-(
30+2:21 tight glyph [
31+2:22 tight glyph (
32+2:23 tight name list
33+2:28 aura @t
34+2:30 tight glyph )
35+2:32 aura @t
36+2:34 tight glyph ]
37+2:36 aura @t
38+2:38 tight glyph )
39+2:40 glyph (
40+2:41 tight name f
41+2:43 glyph [
42+2:44 tight lit %$
43+2:47 str "ok"
44+2:51 tight glyph ]
45+2:52 tight glyph )
46+3:1 NEWLINE
47+3:1 glyph ++
48+3:4 name zero-one-arg
49+3:17 glyph |=
50+3:20 name f
51+3:21 tight glyph =
52+3:22 tight glyph $-(
53+3:25 tight glyph [
54+3:26 tight glyph (
55+3:27 tight name list
56+3:32 aura @t
57+3:34 tight glyph )
58+3:36 aura @t
59+3:38 tight glyph ]
60+3:40 aura @t
61+3:42 tight glyph )
62+3:44 glyph (
63+3:45 tight name f
64+3:47 glyph [
65+3:48 tight lit %1
66+3:51 str "ok"
67+3:55 tight glyph ]
68+3:56 tight glyph )
69+4:1 NEWLINE
70+4:1 glyph ++
71+4:4 name multi-arg
72+4:14 glyph |=
73+4:17 name f
74+4:18 tight glyph =
75+4:19 tight glyph $-(
76+4:22 tight glyph [
77+4:23 tight glyph (
78+4:24 tight name list
79+4:29 aura @t
80+4:31 tight glyph )
81+4:33 aura @t
82+4:35 tight glyph ]
83+4:37 aura @t
84+4:39 tight glyph )
85+4:41 glyph (
86+4:42 tight name f
87+4:44 lit ~
88+4:46 str "ok"
89+4:50 tight glyph )
90+5:1 NEWLINE
91+5:1 glyph ++
92+5:4 name constant
93+5:13 glyph |=
94+5:16 glyph [
95+5:17 tight name f
96+5:18 tight glyph =
97+5:19 tight glyph $-(
98+5:22 tight glyph [
99+5:23 tight glyph (
100+5:24 tight name list
101+5:29 aura @t
102+5:31 tight glyph )
103+5:33 aura @t
104+5:35 tight glyph ]
105+5:37 aura @t
106+5:39 tight glyph )
107+5:41 name z
108+5:42 tight glyph =
109+5:43 tight lit ~
110+5:44 tight glyph ]
111+5:46 glyph (
112+5:47 tight name f
113+5:49 glyph [
114+5:50 tight name z
115+5:52 str "ok"
116+5:56 tight glyph ]
117+5:57 tight glyph )
118+6:1 NEWLINE
119+6:1 glyph ++
120+6:4 name nonzero-constant
121+6:21 glyph |=
122+6:24 glyph [
123+6:25 tight name f
124+6:26 tight glyph =
125+6:27 tight glyph $-(
126+6:30 tight glyph [
127+6:31 tight glyph (
128+6:32 tight name list
129+6:37 aura @t
130+6:39 tight glyph )
131+6:41 aura @t
132+6:43 tight glyph ]
133+6:45 aura @t
134+6:47 tight glyph )
135+6:49 name z
136+6:50 tight glyph =
137+6:51 tight lit %1
138+6:53 tight glyph ]
139+6:55 glyph (
140+6:56 tight name f
141+6:58 glyph [
142+6:59 tight name z
143+6:61 str "ok"
144+6:65 tight glyph ]
145+6:66 tight glyph )
146+7:1 NEWLINE
147+7:1 glyph ++
148+7:4 name reverse
149+7:12 glyph |=
150+7:15 glyph [
151+7:16 tight name f
152+7:17 tight glyph =
153+7:18 tight glyph $-(
154+7:21 tight lit %$
155+7:24 aura @t
156+7:26 tight glyph )
157+7:28 name xs
158+7:30 tight glyph =
159+7:31 tight glyph (
160+7:32 tight name list
161+7:37 aura @t
162+7:39 tight glyph )
163+7:40 tight glyph ]
164+7:42 glyph (
165+7:43 tight name f
166+7:45 name xs
167+7:47 tight glyph )
168+8:1 NEWLINE
169+8:1 glyph ++
170+8:4 name turn-tuple
171+8:15 glyph (
172+8:16 tight name turn
173+8:21 glyph [
174+8:22 tight lit ~
175+8:24 glyph |=(
176+8:27 tight name x
177+8:29 name x
178+8:30 tight glyph )
179+8:31 tight glyph ]
180+8:32 tight glyph )
181+8:33 NEWLINE
tests/golden/types-list-zero-fit/tree.txtnew file+91
@@ -0,0 +1,91 @@
1+(module
2+ (value 1:1 nil-arg
3+ (gate 1:12
4+ (face 1:15 f
5+ (fn 1:17
6+ (cell 1:20
7+ (apply 1:21 list (aura 1:27 @t))
8+ (aura 1:31 @t))
9+ (aura 1:35 @t)))
10+ (group 1:39
11+ (call 1:40
12+ (wing 1:40 f)
13+ (tuple 1:42 (lit 1:43 ~) (str 1:45 "ok"))))))
14+ (value 2:1 zero-arg
15+ (gate 2:13
16+ (face 2:16 f
17+ (fn 2:18
18+ (cell 2:21
19+ (apply 2:22 list (aura 2:28 @t))
20+ (aura 2:32 @t))
21+ (aura 2:36 @t)))
22+ (group 2:40
23+ (call 2:41
24+ (wing 2:41 f)
25+ (tuple 2:43 (lit 2:44 %$) (str 2:47 "ok"))))))
26+ (value 3:1 zero-one-arg
27+ (gate 3:17
28+ (face 3:20 f
29+ (fn 3:22
30+ (cell 3:25
31+ (apply 3:26 list (aura 3:32 @t))
32+ (aura 3:36 @t))
33+ (aura 3:40 @t)))
34+ (group 3:44
35+ (call 3:45
36+ (wing 3:45 f)
37+ (tuple 3:47 (lit 3:48 %1) (str 3:51 "ok"))))))
38+ (value 4:1 multi-arg
39+ (gate 4:14
40+ (face 4:17 f
41+ (fn 4:19
42+ (cell 4:22
43+ (apply 4:23 list (aura 4:29 @t))
44+ (aura 4:33 @t))
45+ (aura 4:37 @t)))
46+ (group 4:41
47+ (call 4:42 (wing 4:42 f) (lit 4:44 ~) (str 4:46 "ok")))))
48+ (value 5:1 constant
49+ (gate 5:13
50+ (cell 5:16
51+ (face 5:17 f
52+ (fn 5:19
53+ (cell 5:22
54+ (apply 5:23 list (aura 5:29 @t))
55+ (aura 5:33 @t))
56+ (aura 5:37 @t)))
57+ (face 5:41 z (const 5:43 ~)))
58+ (group 5:46
59+ (call 5:47
60+ (wing 5:47 f)
61+ (tuple 5:49 (wing 5:50 z) (str 5:52 "ok"))))))
62+ (value 6:1 nonzero-constant
63+ (gate 6:21
64+ (cell 6:24
65+ (face 6:25 f
66+ (fn 6:27
67+ (cell 6:30
68+ (apply 6:31 list (aura 6:37 @t))
69+ (aura 6:41 @t))
70+ (aura 6:45 @t)))
71+ (face 6:49 z (const 6:51 %1)))
72+ (group 6:55
73+ (call 6:56
74+ (wing 6:56 f)
75+ (tuple 6:58 (wing 6:59 z) (str 6:61 "ok"))))))
76+ (value 7:1 reverse
77+ (gate 7:12
78+ (cell 7:15
79+ (face 7:16 f
80+ (fn 7:18 (const 7:21 %$) (aura 7:24 @t)))
81+ (face 7:28 xs
82+ (apply 7:31 list (aura 7:37 @t))))
83+ (group 7:42
84+ (call 7:43 (wing 7:43 f) (wing 7:45 xs)))))
85+ (value 8:1 turn-tuple
86+ (group 8:15
87+ (call 8:16
88+ (wing 8:16 turn)
89+ (tuple 8:21
90+ (lit 8:22 ~)
91+ (gate-wide 8:24 (bind 8:27 x) (wing 8:29 x)))))))
tests/golden/types-list-zero-fit/types.txtnew file+27
@@ -0,0 +1,27 @@
1+partial inference; module not checked
2+++ nil-arg: call constraint is not supported by partial inference
3+++ zero-arg: call constraint is not supported by partial inference
4+++ zero-one-arg: call's sample and argument types do not unify
5+/tests/golden/types-list-zero-fit/source.jibb:3:45: called gate has type $-([(list @t) @t] @t)
6+++ zero-one-arg |= f=$-([(list @t) @t] @t) (f [%1 "ok"])
7+ ^
8+/tests/golden/types-list-zero-fit/source.jibb:3:47: argument
9+++ zero-one-arg |= f=$-([(list @t) @t] @t) (f [%1 "ok"])
10+ ^
11+++ multi-arg: $-($-([(list @t) @t] @t) @t)
12+++ constant: call constraint is not supported by partial inference
13+++ nonzero-constant: call's sample and argument types do not unify
14+/tests/golden/types-list-zero-fit/source.jibb:6:56: called gate has type $-([(list @t) @t] @t)
15+++ nonzero-constant |= [f=$-([(list @t) @t] @t) z=%1] (f [z "ok"])
16+ ^
17+/tests/golden/types-list-zero-fit/source.jibb:6:58: argument has type [%1 @t]
18+++ nonzero-constant |= [f=$-([(list @t) @t] @t) z=%1] (f [z "ok"])
19+ ^
20+++ reverse: call's sample and argument types do not unify
21+/tests/golden/types-list-zero-fit/source.jibb:7:43: called gate has type $-(%$ @t)
22+++ reverse |= [f=$-(%$ @t) xs=(list @t)] (f xs)
23+ ^
24+/tests/golden/types-list-zero-fit/source.jibb:7:45: argument has type (list @t)
25+++ reverse |= [f=$-(%$ @t) xs=(list @t)] (f xs)
26+ ^
27+++ turn-tuple: call constraint is not supported by partial inference
tests/golden/types-prelude-direct/about.txt+1−1
@@ -1,4 +1,4 @@
11source: Overview, Prelude: "Hoon's standard library regrouped, written in Jibb and vendored as `/lib/jibb/prelude`". Grammar, Modules: no name may shadow one already in scope.
2−tests: A module with no imports uses the prelude's unit and need, printing unit without a qualifier. Unsupported prelude values still fail closed and their names remain reserved.
2+tests: A module with no imports uses the prelude's unit and need, printing unit without a qualifier. The prelude `turn` is available, but a list zero nested inside a single tuple argument remains unsupported instead of reporting a false mismatch. Prelude names remain reserved.
33expect: parses
44expect-types: a partial inference report
tests/golden/types-prelude-direct/source.jibb+1−1
@@ -1,5 +1,5 @@
11++ echo |= x=(unit A) x
22++ extract |= x=(unit A) (need x)
33++ concrete ^- (unit @t) ~
4−++ missing (turn [~ |=(x x)])
4+++ tuple-call (turn [~ |=(x x)])
55++ shadow |= need need
tests/golden/types-prelude-direct/tokens.txt+11−11
@@ -33,17 +33,17 @@
33333:26 lit ~
34344:1 NEWLINE
35354:1 glyph ++
36−4:4 name missing
37−4:12 glyph (
38−4:13 tight name turn
39−4:18 glyph [
40−4:19 tight lit ~
41−4:21 glyph |=(
42−4:24 tight name x
43−4:26 name x
44−4:27 tight glyph )
45−4:28 tight glyph ]
46−4:29 tight glyph )
36+4:4 name tuple-call
37+4:15 glyph (
38+4:16 tight name turn
39+4:21 glyph [
40+4:22 tight lit ~
41+4:24 glyph |=(
42+4:27 tight name x
43+4:29 name x
44+4:30 tight glyph )
45+4:31 tight glyph ]
46+4:32 tight glyph )
47475:1 NEWLINE
48485:1 glyph ++
49495:4 name shadow
tests/golden/types-prelude-direct/tree.txt+7−7
@@ -14,12 +14,12 @@
1414 (cast 3:13
1515 (apply 3:16 unit (aura 3:22 @t))
1616 (lit 3:26 ~)))
17− (value 4:1 missing
18− (group 4:12
19− (call 4:13
20− (wing 4:13 turn)
21− (tuple 4:18
22− (lit 4:19 ~)
23− (gate-wide 4:21 (bind 4:24 x) (wing 4:26 x))))))
17+ (value 4:1 tuple-call
18+ (group 4:15
19+ (call 4:16
20+ (wing 4:16 turn)
21+ (tuple 4:21
22+ (lit 4:22 ~)
23+ (gate-wide 4:24 (bind 4:27 x) (wing 4:29 x))))))
2424 (value 5:1 shadow
2525 (gate 5:11 (bind 5:14 need) (wing 5:19 need))))
tests/golden/types-prelude-direct/types.txt+1−1
@@ -2,5 +2,5 @@ partial inference; module not checked
22++ echo: $-((unit A) (unit A))
33++ extract: $-((unit A) A)
44++ concrete: (unit @t)
5−++ missing: name is not available to partial inference
5+++ tuple-call: call constraint is not supported by partial inference
66++ shadow: sample shadows a name
tests/golden/types-prelude-interface/about.txt+1−1
@@ -1,4 +1,4 @@
11source: Overview, Prelude: "Hoon's standard library regrouped, written in Jibb and vendored as `/lib/jibb/prelude`". Grammar, Modules: no name may shadow one already in scope.
2−tests: A unit constructed in one module passes through another module's generic identity and the root's prelude helpers, preserving one origin and printing `unit` unqualified. The prelude list mold is available; unavailable prelude values remain reserved and fail closed, and a sample cannot shadow one.
2+tests: A unit constructed in one module passes through another module's generic identity and the root's prelude helpers, preserving one origin and printing `unit` unqualified. The prelude list mold is available; a zero inside a single tuple passed to `turn` remains unsupported instead of reporting a false mismatch, and a sample cannot shadow a prelude name.
33expect: parses
44expect-types: a partial inference report
tests/golden/types-prelude-interface/source.jibb+1−1
@@ -4,7 +4,7 @@
44++ source (identity.right value.left)
55++ direct (need value.left)
66++ fallback (fall [value.left "fallback"])
7−++ unavailable (turn [~ |=(x x)])
7+++ tuple-call (turn [~ |=(x x)])
88++ shadow |= turn turn
99++ list-id |= x=(list @t) x
1010++ get-gate identity.right
tests/golden/types-prelude-interface/tokens.txt+11−11
@@ -46,17 +46,17 @@
46466:42 tight glyph )
47477:1 NEWLINE
48487:1 glyph ++
49−7:4 name unavailable
50−7:16 glyph (
51−7:17 tight name turn
52−7:22 glyph [
53−7:23 tight lit ~
54−7:25 glyph |=(
55−7:28 tight name x
56−7:30 name x
57−7:31 tight glyph )
58−7:32 tight glyph ]
59−7:33 tight glyph )
49+7:4 name tuple-call
50+7:15 glyph (
51+7:16 tight name turn
52+7:21 glyph [
53+7:22 tight lit ~
54+7:24 glyph |=(
55+7:27 tight name x
56+7:29 name x
57+7:30 tight glyph )
58+7:31 tight glyph ]
59+7:32 tight glyph )
60608:1 NEWLINE
61618:1 glyph ++
62628:4 name shadow
tests/golden/types-prelude-interface/tree.txt+7−7
@@ -16,13 +16,13 @@
1616 (call 6:14
1717 (wing 6:14 fall)
1818 (tuple 6:19 (wing 6:20 value.left) (str 6:31 "fallback")))))
19− (value 7:1 unavailable
20− (group 7:16
21− (call 7:17
22− (wing 7:17 turn)
23− (tuple 7:22
24− (lit 7:23 ~)
25− (gate-wide 7:25 (bind 7:28 x) (wing 7:30 x))))))
19+ (value 7:1 tuple-call
20+ (group 7:15
21+ (call 7:16
22+ (wing 7:16 turn)
23+ (tuple 7:21
24+ (lit 7:22 ~)
25+ (gate-wide 7:24 (bind 7:27 x) (wing 7:29 x))))))
2626 (value 8:1 shadow
2727 (gate 8:11 (bind 8:14 turn) (wing 8:19 turn)))
2828 (value 9:1 list-id
tests/golden/types-prelude-interface/types.txt+1−1
@@ -3,7 +3,7 @@ partial inference; module not checked
33++ source: (unit @t)
44++ direct: @t
55++ fallback: @t
6−++ unavailable: name is not available to partial inference
6+++ tuple-call: call constraint is not supported by partial inference
77++ shadow: sample shadows a name
88++ list-id: $-((list @t) (list @t))
99++ get-gate: $-((unit A) (unit A))
tests/golden/types-prelude-list-functions/about.txt+1−1
@@ -1,4 +1,4 @@
11source: 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.
2+tests: The actual prelude list helpers infer and instantiate independently for cords and ships, including through an imported module. `turn` infers identity and changing-element mappings, an empty list, an explicitly typed nested list, and an imported use; incompatible items or gates and unrelated unresolved tags fail closed.
33expect: parses
44expect-types: a partial inference report
tests/golden/types-prelude-list-functions/module-trees.txt+7−1
@@ -2,4 +2,10 @@
22(module
33 (value 1:1 value
44 (group 1:10
5− (call 1:11 (wing 1:11 lure) (lit 1:16 ~zod)))))
5+ (call 1:11 (wing 1:11 lure) (lit 1:16 ~zod))))
6+ (value 2:1 mapped
7+ (group 2:11
8+ (call 2:12
9+ (wing 2:12 turn)
10+ (list 2:17 (str 2:19 "a"))
11+ (gate-wide 2:24 (bind 2:27 x) (lit 2:29 ~zod))))))
tests/golden/types-prelude-list-functions/modules/ui/lib.jibb+1
@@ -1 +1,2 @@
11++ value (lure ~zod)
2+++ mapped (turn ~["a"] |=(x ~zod))
tests/golden/types-prelude-list-functions/source.jibb+7
@@ -9,3 +9,10 @@
99++ pending
1010 ~& %unknown
1111 (lure "hi")
12+++ turn-text (turn ~["a"] |=(x x))
13+++ turn-ships (turn ~[~zod] |=(x x))
14+++ turn-map (turn ~["a"] |=(x ~zod))
15+++ turn-empty (turn ~[] |=(x=@t x))
16+++ turn-nested (turn (^- (list (list @t)) ~[~["a"]]) |=(x x))
17+++ turn-import mapped.lib
18+++ turn-mismatch (turn ~["a"] |=(x (^- @p x)))
tests/golden/types-prelude-list-functions/tokens.txt+102−3
@@ -79,6 +79,105 @@
797911:6 tight name lure
808011:11 str "hi"
818111:15 tight glyph )
82−11:16 DEDENT
83−11:16 DEDENT
84−11:16 NEWLINE
82+12:1 DEDENT
83+12:1 DEDENT
84+12:1 NEWLINE
85+12:1 glyph ++
86+12:4 name turn-text
87+12:14 glyph (
88+12:15 tight name turn
89+12:20 glyph ~[
90+12:22 tight str "a"
91+12:25 tight glyph ]
92+12:27 glyph |=(
93+12:30 tight name x
94+12:32 name x
95+12:33 tight glyph )
96+12:34 tight glyph )
97+13:1 NEWLINE
98+13:1 glyph ++
99+13:4 name turn-ships
100+13:15 glyph (
101+13:16 tight name turn
102+13:21 glyph ~[
103+13:23 tight lit ~zod
104+13:27 tight glyph ]
105+13:29 glyph |=(
106+13:32 tight name x
107+13:34 name x
108+13:35 tight glyph )
109+13:36 tight glyph )
110+14:1 NEWLINE
111+14:1 glyph ++
112+14:4 name turn-map
113+14:13 glyph (
114+14:14 tight name turn
115+14:19 glyph ~[
116+14:21 tight str "a"
117+14:24 tight glyph ]
118+14:26 glyph |=(
119+14:29 tight name x
120+14:31 lit ~zod
121+14:35 tight glyph )
122+14:36 tight glyph )
123+15:1 NEWLINE
124+15:1 glyph ++
125+15:4 name turn-empty
126+15:15 glyph (
127+15:16 tight name turn
128+15:21 glyph ~[
129+15:23 tight glyph ]
130+15:25 glyph |=(
131+15:28 tight name x
132+15:29 tight glyph =
133+15:30 tight aura @t
134+15:33 name x
135+15:34 tight glyph )
136+15:35 tight glyph )
137+16:1 NEWLINE
138+16:1 glyph ++
139+16:4 name turn-nested
140+16:16 glyph (
141+16:17 tight name turn
142+16:22 glyph (
143+16:23 tight glyph ^-
144+16:26 glyph (
145+16:27 tight name list
146+16:32 glyph (
147+16:33 tight name list
148+16:38 aura @t
149+16:40 tight glyph )
150+16:41 tight glyph )
151+16:43 glyph ~[
152+16:45 tight glyph ~[
153+16:47 tight str "a"
154+16:50 tight glyph ]
155+16:51 tight glyph ]
156+16:52 tight glyph )
157+16:54 glyph |=(
158+16:57 tight name x
159+16:59 name x
160+16:60 tight glyph )
161+16:61 tight glyph )
162+17:1 NEWLINE
163+17:1 glyph ++
164+17:4 name turn-import
165+17:16 wing mapped.lib
166+18:1 NEWLINE
167+18:1 glyph ++
168+18:4 name turn-mismatch
169+18:18 glyph (
170+18:19 tight name turn
171+18:24 glyph ~[
172+18:26 tight str "a"
173+18:29 tight glyph ]
174+18:31 glyph |=(
175+18:34 tight name x
176+18:36 glyph (
177+18:37 tight glyph ^-
178+18:40 aura @p
179+18:43 name x
180+18:44 tight glyph )
181+18:45 tight glyph )
182+18:46 tight glyph )
183+18:47 NEWLINE
tests/golden/types-prelude-list-functions/tree.txt+48−1
@@ -37,4 +37,51 @@
3737 (lit 10:6 %unknown)
3838 (body 11:5
3939 (group 11:5
40− (call 11:6 (wing 11:6 lure) (str 11:11 "hi"))))))))
40+ (call 11:6 (wing 11:6 lure) (str 11:11 "hi")))))))
41+ (value 12:1 turn-text
42+ (group 12:14
43+ (call 12:15
44+ (wing 12:15 turn)
45+ (list 12:20 (str 12:22 "a"))
46+ (gate-wide 12:27 (bind 12:30 x) (wing 12:32 x)))))
47+ (value 13:1 turn-ships
48+ (group 13:15
49+ (call 13:16
50+ (wing 13:16 turn)
51+ (list 13:21 (lit 13:23 ~zod))
52+ (gate-wide 13:29 (bind 13:32 x) (wing 13:34 x)))))
53+ (value 14:1 turn-map
54+ (group 14:13
55+ (call 14:14
56+ (wing 14:14 turn)
57+ (list 14:19 (str 14:21 "a"))
58+ (gate-wide 14:26 (bind 14:29 x) (lit 14:31 ~zod)))))
59+ (value 15:1 turn-empty
60+ (group 15:15
61+ (call 15:16
62+ (wing 15:16 turn)
63+ (list 15:21)
64+ (gate-wide 15:25
65+ (face 15:28 x (aura 15:30 @t))
66+ (wing 15:33 x)))))
67+ (value 16:1 turn-nested
68+ (group 16:16
69+ (call 16:17
70+ (wing 16:17 turn)
71+ (group 16:22
72+ (cast 16:23
73+ (apply 16:26 list
74+ (apply 16:32 list (aura 16:38 @t)))
75+ (list 16:43
76+ (list 16:45 (str 16:47 "a")))))
77+ (gate-wide 16:54 (bind 16:57 x) (wing 16:59 x)))))
78+ (value 17:1 turn-import (wing 17:16 mapped.lib))
79+ (value 18:1 turn-mismatch
80+ (group 18:18
81+ (call 18:19
82+ (wing 18:19 turn)
83+ (list 18:24 (str 18:26 "a"))
84+ (gate-wide 18:31
85+ (bind 18:34 x)
86+ (group 18:36
87+ (cast 18:37 (aura 18:40 @p) (wing 18:43 x))))))))
tests/golden/types-prelude-list-functions/types.txt+13
@@ -13,3 +13,16 @@ partial inference; module not checked
1313++ mismatch (weld ~["a"] ~[~zod])
1414 ^
1515++ pending: tag needs context in partial inference
16+++ turn-text: (list @t)
17+++ turn-ships: (list @p)
18+++ turn-map: (list @p)
19+++ turn-empty: (list @t)
20+++ turn-nested: (list (list @t))
21+++ turn-import: (list @p)
22+++ turn-mismatch: call's sample and argument types do not unify
23+/tests/golden/types-prelude-list-functions/source.jibb:18:19: called gate has type $-([(list @t) $-(@t A)] (list A))
24+++ turn-mismatch (turn ~["a"] |=(x (^- @p x)))
25+ ^
26+/tests/golden/types-prelude-list-functions/source.jibb:18:31: argument has type $-(@p @p)
27+++ turn-mismatch (turn ~["a"] |=(x (^- @p x)))
28+ ^
tests/golden/types-union-patterns-generic/about.txtnew file+4
@@ -0,0 +1,4 @@
1+source: Grammar, Patterns: "Every case needs an arm or a catch-all"; Molds: "Type variables are capitals, generalized per `++`."
2+tests: Matching generic union cases preserves shared payload variables and concrete payload types. Different result variables, partial patterns, unresolved result tags and an explicit capital forced concrete remain unsupported. The same binder name can be reused in separate arms, and a duplicate arm is dead.
3+expect: parses
4+expect-types: a partial inference report
tests/golden/types-union-patterns-generic/modules.txtnew file+1
@@ -0,0 +1 @@
1+# no module fixtures
tests/golden/types-union-patterns-generic/source.jibbnew file+36
@@ -0,0 +1,36 @@
1++$ result |$ [V E]
2+ [%ok value=V]
3+ [%err error=E]
4+++ either-value |= r=(result A A)
5+ ?- r
6+ [%ok value] value
7+ [%err error] error
8+++ concrete |= r=(result @t @p)
9+ ?- r
10+ [%ok value] value
11+ [%err error] "failed"
12+++ missing |= r=(result @t @p)
13+ ?- r
14+ [%ok value] value
15+ [%ok again] again
16+++ nested |= r=(result @t @p)
17+ ?- r
18+ [%ok "x"] "hit"
19+ [%ok *] "other"
20+ [%err error] "failed"
21+++ different |= r=(result A B)
22+ ?- r
23+ [%ok value] value
24+ [%err error] error
25+++ forced |= r=(result A A)
26+ ?- r
27+ [%ok value] ^- @t value
28+ [%err error] error
29+++ reused |= r=(result A A)
30+ ?- r
31+ [%ok item] item
32+ [%err item] item
33+++ pending |= r=(result @t @p)
34+ ?- r
35+ [%ok value] %orphan
36+ [%err error] %orphan
tests/golden/types-union-patterns-generic/tokens.txtnew file+255
@@ -0,0 +1,255 @@
1+1:1 glyph +$
2+1:4 name result
3+1:11 glyph |$
4+1:14 glyph [
5+1:15 tight tvar V
6+1:17 tvar E
7+1:18 tight glyph ]
8+2:3 INDENT
9+2:3 glyph [
10+2:4 tight lit %ok
11+2:8 name value
12+2:13 tight glyph =
13+2:14 tight tvar V
14+2:15 tight glyph ]
15+3:3 NEWLINE
16+3:3 glyph [
17+3:4 tight lit %err
18+3:9 name error
19+3:14 tight glyph =
20+3:15 tight tvar E
21+3:16 tight glyph ]
22+4:1 DEDENT
23+4:1 NEWLINE
24+4:1 glyph ++
25+4:4 name either-value
26+4:17 glyph |=
27+4:20 name r
28+4:21 tight glyph =
29+4:22 tight glyph (
30+4:23 tight name result
31+4:30 tvar A
32+4:32 tvar A
33+4:33 tight glyph )
34+5:3 INDENT
35+5:3 glyph ?-
36+5:6 name r
37+6:5 INDENT
38+6:5 glyph [
39+6:6 tight lit %ok
40+6:10 name value
41+6:15 tight glyph ]
42+6:17 name value
43+7:5 NEWLINE
44+7:5 glyph [
45+7:6 tight lit %err
46+7:11 name error
47+7:16 tight glyph ]
48+7:18 name error
49+8:1 DEDENT
50+8:1 DEDENT
51+8:1 NEWLINE
52+8:1 glyph ++
53+8:4 name concrete
54+8:13 glyph |=
55+8:16 name r
56+8:17 tight glyph =
57+8:18 tight glyph (
58+8:19 tight name result
59+8:26 aura @t
60+8:29 aura @p
61+8:31 tight glyph )
62+9:3 INDENT
63+9:3 glyph ?-
64+9:6 name r
65+10:5 INDENT
66+10:5 glyph [
67+10:6 tight lit %ok
68+10:10 name value
69+10:15 tight glyph ]
70+10:17 name value
71+11:5 NEWLINE
72+11:5 glyph [
73+11:6 tight lit %err
74+11:11 name error
75+11:16 tight glyph ]
76+11:18 str "failed"
77+12:1 DEDENT
78+12:1 DEDENT
79+12:1 NEWLINE
80+12:1 glyph ++
81+12:4 name missing
82+12:12 glyph |=
83+12:15 name r
84+12:16 tight glyph =
85+12:17 tight glyph (
86+12:18 tight name result
87+12:25 aura @t
88+12:28 aura @p
89+12:30 tight glyph )
90+13:3 INDENT
91+13:3 glyph ?-
92+13:6 name r
93+14:5 INDENT
94+14:5 glyph [
95+14:6 tight lit %ok
96+14:10 name value
97+14:15 tight glyph ]
98+14:17 name value
99+15:5 NEWLINE
100+15:5 glyph [
101+15:6 tight lit %ok
102+15:10 name again
103+15:15 tight glyph ]
104+15:17 name again
105+16:1 DEDENT
106+16:1 DEDENT
107+16:1 NEWLINE
108+16:1 glyph ++
109+16:4 name nested
110+16:11 glyph |=
111+16:14 name r
112+16:15 tight glyph =
113+16:16 tight glyph (
114+16:17 tight name result
115+16:24 aura @t
116+16:27 aura @p
117+16:29 tight glyph )
118+17:3 INDENT
119+17:3 glyph ?-
120+17:6 name r
121+18:5 INDENT
122+18:5 glyph [
123+18:6 tight lit %ok
124+18:10 str "x"
125+18:13 tight glyph ]
126+18:15 str "hit"
127+19:5 NEWLINE
128+19:5 glyph [
129+19:6 tight lit %ok
130+19:10 glyph *
131+19:11 tight glyph ]
132+19:13 str "other"
133+20:5 NEWLINE
134+20:5 glyph [
135+20:6 tight lit %err
136+20:11 name error
137+20:16 tight glyph ]
138+20:18 str "failed"
139+21:1 DEDENT
140+21:1 DEDENT
141+21:1 NEWLINE
142+21:1 glyph ++
143+21:4 name different
144+21:14 glyph |=
145+21:17 name r
146+21:18 tight glyph =
147+21:19 tight glyph (
148+21:20 tight name result
149+21:27 tvar A
150+21:29 tvar B
151+21:30 tight glyph )
152+22:3 INDENT
153+22:3 glyph ?-
154+22:6 name r
155+23:5 INDENT
156+23:5 glyph [
157+23:6 tight lit %ok
158+23:10 name value
159+23:15 tight glyph ]
160+23:17 name value
161+24:5 NEWLINE
162+24:5 glyph [
163+24:6 tight lit %err
164+24:11 name error
165+24:16 tight glyph ]
166+24:18 name error
167+25:1 DEDENT
168+25:1 DEDENT
169+25:1 NEWLINE
170+25:1 glyph ++
171+25:4 name forced
172+25:11 glyph |=
173+25:14 name r
174+25:15 tight glyph =
175+25:16 tight glyph (
176+25:17 tight name result
177+25:24 tvar A
178+25:26 tvar A
179+25:27 tight glyph )
180+26:3 INDENT
181+26:3 glyph ?-
182+26:6 name r
183+27:5 INDENT
184+27:5 glyph [
185+27:6 tight lit %ok
186+27:10 name value
187+27:15 tight glyph ]
188+27:17 glyph ^-
189+27:20 aura @t
190+27:23 name value
191+28:5 NEWLINE
192+28:5 glyph [
193+28:6 tight lit %err
194+28:11 name error
195+28:16 tight glyph ]
196+28:18 name error
197+29:1 DEDENT
198+29:1 DEDENT
199+29:1 NEWLINE
200+29:1 glyph ++
201+29:4 name reused
202+29:11 glyph |=
203+29:14 name r
204+29:15 tight glyph =
205+29:16 tight glyph (
206+29:17 tight name result
207+29:24 tvar A
208+29:26 tvar A
209+29:27 tight glyph )
210+30:3 INDENT
211+30:3 glyph ?-
212+30:6 name r
213+31:5 INDENT
214+31:5 glyph [
215+31:6 tight lit %ok
216+31:10 name item
217+31:14 tight glyph ]
218+31:16 name item
219+32:5 NEWLINE
220+32:5 glyph [
221+32:6 tight lit %err
222+32:11 name item
223+32:15 tight glyph ]
224+32:17 name item
225+33:1 DEDENT
226+33:1 DEDENT
227+33:1 NEWLINE
228+33:1 glyph ++
229+33:4 name pending
230+33:12 glyph |=
231+33:15 name r
232+33:16 tight glyph =
233+33:17 tight glyph (
234+33:18 tight name result
235+33:25 aura @t
236+33:28 aura @p
237+33:30 tight glyph )
238+34:3 INDENT
239+34:3 glyph ?-
240+34:6 name r
241+35:5 INDENT
242+35:5 glyph [
243+35:6 tight lit %ok
244+35:10 name value
245+35:15 tight glyph ]
246+35:17 lit %orphan
247+36:5 NEWLINE
248+36:5 glyph [
249+36:6 tight lit %err
250+36:11 name error
251+36:16 tight glyph ]
252+36:18 lit %orphan
253+36:25 DEDENT
254+36:25 DEDENT
255+36:25 NEWLINE
tests/golden/types-union-patterns-generic/tree.txtnew file+117
@@ -0,0 +1,117 @@
1+(module
2+ (mold 1:1 result
3+ (generic 1:11 V E
4+ (union 2:3
5+ (cell 2:3
6+ (const 2:4 %ok)
7+ (face 2:8 value (tvar 2:14 V)))
8+ (cell 3:3
9+ (const 3:4 %err)
10+ (face 3:9 error (tvar 3:15 E))))))
11+ (value 4:1 either-value
12+ (gate 4:17
13+ (face 4:20 r
14+ (apply 4:22 result (tvar 4:30 A) (tvar 4:32 A)))
15+ (body 5:3
16+ (branch 5:3
17+ (wing 5:6 r)
18+ (arm 6:5
19+ (cell 6:5 (lit 6:6 %ok) (bind 6:10 value))
20+ (wing 6:17 value))
21+ (arm 7:5
22+ (cell 7:5 (lit 7:6 %err) (bind 7:11 error))
23+ (wing 7:18 error))))))
24+ (value 8:1 concrete
25+ (gate 8:13
26+ (face 8:16 r
27+ (apply 8:18 result (aura 8:26 @t) (aura 8:29 @p)))
28+ (body 9:3
29+ (branch 9:3
30+ (wing 9:6 r)
31+ (arm 10:5
32+ (cell 10:5 (lit 10:6 %ok) (bind 10:10 value))
33+ (wing 10:17 value))
34+ (arm 11:5
35+ (cell 11:5 (lit 11:6 %err) (bind 11:11 error))
36+ (str 11:18 "failed"))))))
37+ (value 12:1 missing
38+ (gate 12:12
39+ (face 12:15 r
40+ (apply 12:17 result (aura 12:25 @t) (aura 12:28 @p)))
41+ (body 13:3
42+ (branch 13:3
43+ (wing 13:6 r)
44+ (arm 14:5
45+ (cell 14:5 (lit 14:6 %ok) (bind 14:10 value))
46+ (wing 14:17 value))
47+ (arm 15:5
48+ (cell 15:5 (lit 15:6 %ok) (bind 15:10 again))
49+ (wing 15:17 again))))))
50+ (value 16:1 nested
51+ (gate 16:11
52+ (face 16:14 r
53+ (apply 16:16 result (aura 16:24 @t) (aura 16:27 @p)))
54+ (body 17:3
55+ (branch 17:3
56+ (wing 17:6 r)
57+ (arm 18:5
58+ (cell 18:5 (lit 18:6 %ok) (str 18:10 "x"))
59+ (str 18:15 "hit"))
60+ (arm 19:5
61+ (cell 19:5 (lit 19:6 %ok) (any 19:10))
62+ (str 19:13 "other"))
63+ (arm 20:5
64+ (cell 20:5 (lit 20:6 %err) (bind 20:11 error))
65+ (str 20:18 "failed"))))))
66+ (value 21:1 different
67+ (gate 21:14
68+ (face 21:17 r
69+ (apply 21:19 result (tvar 21:27 A) (tvar 21:29 B)))
70+ (body 22:3
71+ (branch 22:3
72+ (wing 22:6 r)
73+ (arm 23:5
74+ (cell 23:5 (lit 23:6 %ok) (bind 23:10 value))
75+ (wing 23:17 value))
76+ (arm 24:5
77+ (cell 24:5 (lit 24:6 %err) (bind 24:11 error))
78+ (wing 24:18 error))))))
79+ (value 25:1 forced
80+ (gate 25:11
81+ (face 25:14 r
82+ (apply 25:16 result (tvar 25:24 A) (tvar 25:26 A)))
83+ (body 26:3
84+ (branch 26:3
85+ (wing 26:6 r)
86+ (arm 27:5
87+ (cell 27:5 (lit 27:6 %ok) (bind 27:10 value))
88+ (cast 27:17 (aura 27:20 @t) (wing 27:23 value)))
89+ (arm 28:5
90+ (cell 28:5 (lit 28:6 %err) (bind 28:11 error))
91+ (wing 28:18 error))))))
92+ (value 29:1 reused
93+ (gate 29:11
94+ (face 29:14 r
95+ (apply 29:16 result (tvar 29:24 A) (tvar 29:26 A)))
96+ (body 30:3
97+ (branch 30:3
98+ (wing 30:6 r)
99+ (arm 31:5
100+ (cell 31:5 (lit 31:6 %ok) (bind 31:10 item))
101+ (wing 31:16 item))
102+ (arm 32:5
103+ (cell 32:5 (lit 32:6 %err) (bind 32:11 item))
104+ (wing 32:17 item))))))
105+ (value 33:1 pending
106+ (gate 33:12
107+ (face 33:15 r
108+ (apply 33:17 result (aura 33:25 @t) (aura 33:28 @p)))
109+ (body 34:3
110+ (branch 34:3
111+ (wing 34:6 r)
112+ (arm 35:5
113+ (cell 35:5 (lit 35:6 %ok) (bind 35:10 value))
114+ (lit 35:17 %orphan))
115+ (arm 36:5
116+ (cell 36:5 (lit 36:6 %err) (bind 36:11 error))
117+ (lit 36:18 %orphan)))))))
tests/golden/types-union-patterns-generic/types.txtnew file+13
@@ -0,0 +1,13 @@
1+partial inference; module not checked
2++$ result: cases proven disjoint; mold not checked
3+++ either-value: $-((result A A) A)
4+++ concrete: $-((result @t @p) @t)
5+++ missing: branch arm is covered by earlier arms
6+/tests/golden/types-union-patterns-generic/source.jibb:15:5: covered arm
7+ [%ok again] again
8+ ^
9+++ nested: partial union pattern is not supported by partial inference
10+++ different: union branch result matching needs unsupported inference
11+++ forced: explicit capital constraints are not supported by partial inference
12+++ reused: $-((result A A) A)
13+++ pending: union branch result matching needs unsupported inference
tests/golden/types-union-patterns-import/about.txtnew file+4
@@ -0,0 +1,4 @@
1+source: Grammar, Patterns: "Every case needs an arm or a catch-all"; Imports: names from a Jibb module are read through its face.
2+tests: A known imported union can be matched exhaustively with a tagged payload and a bare term; its name remains qualified in the inferred type.
3+expect: parses
4+expect-types: a partial inference report
tests/golden/types-union-patterns-import/module-trees.txtnew file+8
@@ -0,0 +1,8 @@
1+/ui/lib.jibb
2+(module
3+ (mold 1:1 msg
4+ (union 2:3
5+ (cell 2:3
6+ (const 2:4 %noted)
7+ (face 2:11 text (aura 2:16 @t)))
8+ (const 3:3 %add))))
tests/golden/types-union-patterns-import/modules.txtnew file+1
@@ -0,0 +1 @@
1+/ui/lib.jibb
tests/golden/types-union-patterns-import/modules/ui/lib.jibbnew file+3
@@ -0,0 +1,3 @@
1++$ msg
2+ [%noted text=@t]
3+ %add
tests/golden/types-union-patterns-import/source.jibbnew file+5
@@ -0,0 +1,5 @@
1+/= lib /ui/lib
2+++ show |= v=msg.lib
3+ ?- v
4+ [%noted words] words
5+ %add "add"
tests/golden/types-union-patterns-import/tokens.txtnew file+28
@@ -0,0 +1,28 @@
1+1:1 glyph /=
2+1:4 name lib
3+1:8 glyph /
4+1:9 tight knot ui
5+1:11 tight glyph /
6+1:12 tight knot lib
7+2:1 NEWLINE
8+2:1 glyph ++
9+2:4 name show
10+2:9 glyph |=
11+2:12 name v
12+2:13 tight glyph =
13+2:14 tight wing msg.lib
14+3:3 INDENT
15+3:3 glyph ?-
16+3:6 name v
17+4:5 INDENT
18+4:5 glyph [
19+4:6 tight lit %noted
20+4:13 name words
21+4:18 tight glyph ]
22+4:20 name words
23+5:5 NEWLINE
24+5:5 lit %add
25+5:10 str "add"
26+5:15 DEDENT
27+5:15 DEDENT
28+5:15 NEWLINE
tests/golden/types-union-patterns-import/tree.txtnew file+12
@@ -0,0 +1,12 @@
1+(module
2+ (jibb 1:1 lib /ui/lib)
3+ (value 2:1 show
4+ (gate 2:9
5+ (face 2:12 v (ref 2:14 msg.lib))
6+ (body 3:3
7+ (branch 3:3
8+ (wing 3:6 v)
9+ (arm 4:5
10+ (cell 4:5 (lit 4:6 %noted) (bind 4:13 words))
11+ (wing 4:20 words))
12+ (arm 5:5 (lit 5:5 %add) (str 5:10 "add")))))))
tests/golden/types-union-patterns-import/types.txtnew file+2
@@ -0,0 +1,2 @@
1+partial inference; module not checked
2+++ show: $-(msg.lib @t)
tests/golden/types-union-patterns/about.txtnew file+4
@@ -0,0 +1,4 @@
1+source: Grammar, Patterns: "Every case needs an arm or a catch-all"; "An arm that earlier arms cover ... is an error"; "A name in a pattern always binds anew".
2+tests: Whole cases of a closed tagged union match payload binders and catch-alls; missing cases and covered arms are named, and shadowing fails. A pattern that could cover only part of a case stays unsupported. Null and loobean patterns are compared by noun value. A union-result or list-result context and a complex union subject stay unsupported rather than reporting a loobean mismatch.
3+expect: parses
4+expect-types: a partial inference report
tests/golden/types-union-patterns/modules.txtnew file+1
@@ -0,0 +1 @@
1+# no module fixtures
tests/golden/types-union-patterns/source.jibbnew file+74
@@ -0,0 +1,74 @@
1++$ choice
2+ [%a value=@t]
3+ %b
4+ %c
5+++ complete |= v=choice
6+ ?- v
7+ [%a payload] payload
8+ %b "b"
9+ %c "c"
10+++ missing |= v=choice
11+ ?- v
12+ [%a payload] payload
13+ %b "b"
14+++ duplicate |= v=choice
15+ ?- v
16+ [%a payload] payload
17+ %b "b"
18+ %b "again"
19+ %c "c"
20+++ wildcard |= v=choice
21+ ?- v
22+ [%a payload] payload
23+ * "other"
24+++ covered |= v=choice
25+ ?- v
26+ * "all"
27+ %c "never"
28+++ shadow |= v=choice
29+ ?- v
30+ [%a complete] complete
31+ %b "b"
32+ %c "c"
33++$ flags
34+ [%flag enabled=?]
35+ %none
36+++ partial |= v=flags
37+ ?- v
38+ [%flag %.y] "yes"
39+ [%flag %.n] "no"
40+ %none "absent"
41+++ not-known |= v
42+ ?- v
43+ %a "a"
44+ %b "b"
45+ %c "c"
46++$ digits
47+ %$
48+ %1
49+++ as-booleans |= v=digits
50+ ?- v
51+ %.y "zero"
52+ %.n "one"
53++$ option
54+ ~
55+ %some
56+++ null-option |= v=option
57+ ?- v
58+ ~ "none"
59+ %some "some"
60++$ output
61+ %left
62+ %right
63+++ context |= v=digits
64+ ^- output ?- v
65+ %.y %left
66+ %.n %right
67+++ context-list |= v=digits
68+ ^- (list @t) ?- v
69+ %.y ~["left"]
70+ %.n ~["right"]
71+++ grouped-subject |= v=digits
72+ ?- (v)
73+ %.y "zero"
74+ %.n "one"
tests/golden/types-union-patterns/tokens.txtnew file+336
@@ -0,0 +1,336 @@
1+1:1 glyph +$
2+1:4 name choice
3+2:3 INDENT
4+2:3 glyph [
5+2:4 tight lit %a
6+2:7 name value
7+2:12 tight glyph =
8+2:13 tight aura @t
9+2:15 tight glyph ]
10+3:3 NEWLINE
11+3:3 lit %b
12+4:3 NEWLINE
13+4:3 lit %c
14+5:1 DEDENT
15+5:1 NEWLINE
16+5:1 glyph ++
17+5:4 name complete
18+5:13 glyph |=
19+5:16 name v
20+5:17 tight glyph =
21+5:18 tight name choice
22+6:3 INDENT
23+6:3 glyph ?-
24+6:6 name v
25+7:5 INDENT
26+7:5 glyph [
27+7:6 tight lit %a
28+7:9 name payload
29+7:16 tight glyph ]
30+7:18 name payload
31+8:5 NEWLINE
32+8:5 lit %b
33+8:8 str "b"
34+9:5 NEWLINE
35+9:5 lit %c
36+9:8 str "c"
37+10:1 DEDENT
38+10:1 DEDENT
39+10:1 NEWLINE
40+10:1 glyph ++
41+10:4 name missing
42+10:12 glyph |=
43+10:15 name v
44+10:16 tight glyph =
45+10:17 tight name choice
46+11:3 INDENT
47+11:3 glyph ?-
48+11:6 name v
49+12:5 INDENT
50+12:5 glyph [
51+12:6 tight lit %a
52+12:9 name payload
53+12:16 tight glyph ]
54+12:18 name payload
55+13:5 NEWLINE
56+13:5 lit %b
57+13:8 str "b"
58+14:1 DEDENT
59+14:1 DEDENT
60+14:1 NEWLINE
61+14:1 glyph ++
62+14:4 name duplicate
63+14:14 glyph |=
64+14:17 name v
65+14:18 tight glyph =
66+14:19 tight name choice
67+15:3 INDENT
68+15:3 glyph ?-
69+15:6 name v
70+16:5 INDENT
71+16:5 glyph [
72+16:6 tight lit %a
73+16:9 name payload
74+16:16 tight glyph ]
75+16:18 name payload
76+17:5 NEWLINE
77+17:5 lit %b
78+17:8 str "b"
79+18:5 NEWLINE
80+18:5 lit %b
81+18:8 str "again"
82+19:5 NEWLINE
83+19:5 lit %c
84+19:8 str "c"
85+20:1 DEDENT
86+20:1 DEDENT
87+20:1 NEWLINE
88+20:1 glyph ++
89+20:4 name wildcard
90+20:13 glyph |=
91+20:16 name v
92+20:17 tight glyph =
93+20:18 tight name choice
94+21:3 INDENT
95+21:3 glyph ?-
96+21:6 name v
97+22:5 INDENT
98+22:5 glyph [
99+22:6 tight lit %a
100+22:9 name payload
101+22:16 tight glyph ]
102+22:18 name payload
103+23:5 NEWLINE
104+23:5 glyph *
105+23:7 str "other"
106+24:1 DEDENT
107+24:1 DEDENT
108+24:1 NEWLINE
109+24:1 glyph ++
110+24:4 name covered
111+24:12 glyph |=
112+24:15 name v
113+24:16 tight glyph =
114+24:17 tight name choice
115+25:3 INDENT
116+25:3 glyph ?-
117+25:6 name v
118+26:5 INDENT
119+26:5 glyph *
120+26:7 str "all"
121+27:5 NEWLINE
122+27:5 lit %c
123+27:8 str "never"
124+28:1 DEDENT
125+28:1 DEDENT
126+28:1 NEWLINE
127+28:1 glyph ++
128+28:4 name shadow
129+28:11 glyph |=
130+28:14 name v
131+28:15 tight glyph =
132+28:16 tight name choice
133+29:3 INDENT
134+29:3 glyph ?-
135+29:6 name v
136+30:5 INDENT
137+30:5 glyph [
138+30:6 tight lit %a
139+30:9 name complete
140+30:17 tight glyph ]
141+30:19 name complete
142+31:5 NEWLINE
143+31:5 lit %b
144+31:8 str "b"
145+32:5 NEWLINE
146+32:5 lit %c
147+32:8 str "c"
148+33:1 DEDENT
149+33:1 DEDENT
150+33:1 NEWLINE
151+33:1 glyph +$
152+33:4 name flags
153+34:3 INDENT
154+34:3 glyph [
155+34:4 tight lit %flag
156+34:10 name enabled
157+34:17 tight glyph =
158+34:18 tight glyph ?
159+34:19 tight glyph ]
160+35:3 NEWLINE
161+35:3 lit %none
162+36:1 DEDENT
163+36:1 NEWLINE
164+36:1 glyph ++
165+36:4 name partial
166+36:12 glyph |=
167+36:15 name v
168+36:16 tight glyph =
169+36:17 tight name flags
170+37:3 INDENT
171+37:3 glyph ?-
172+37:6 name v
173+38:5 INDENT
174+38:5 glyph [
175+38:6 tight lit %flag
176+38:12 lit %.y
177+38:15 tight glyph ]
178+38:17 str "yes"
179+39:5 NEWLINE
180+39:5 glyph [
181+39:6 tight lit %flag
182+39:12 lit %.n
183+39:15 tight glyph ]
184+39:17 str "no"
185+40:5 NEWLINE
186+40:5 lit %none
187+40:11 str "absent"
188+41:1 DEDENT
189+41:1 DEDENT
190+41:1 NEWLINE
191+41:1 glyph ++
192+41:4 name not-known
193+41:14 glyph |=
194+41:17 name v
195+42:3 INDENT
196+42:3 glyph ?-
197+42:6 name v
198+43:5 INDENT
199+43:5 lit %a
200+43:8 str "a"
201+44:5 NEWLINE
202+44:5 lit %b
203+44:8 str "b"
204+45:5 NEWLINE
205+45:5 lit %c
206+45:8 str "c"
207+46:1 DEDENT
208+46:1 DEDENT
209+46:1 NEWLINE
210+46:1 glyph +$
211+46:4 name digits
212+47:3 INDENT
213+47:3 lit %$
214+48:3 NEWLINE
215+48:3 lit %1
216+49:1 DEDENT
217+49:1 NEWLINE
218+49:1 glyph ++
219+49:4 name as-booleans
220+49:16 glyph |=
221+49:19 name v
222+49:20 tight glyph =
223+49:21 tight name digits
224+50:3 INDENT
225+50:3 glyph ?-
226+50:6 name v
227+51:5 INDENT
228+51:5 lit %.y
229+51:9 str "zero"
230+52:5 NEWLINE
231+52:5 lit %.n
232+52:9 str "one"
233+53:1 DEDENT
234+53:1 DEDENT
235+53:1 NEWLINE
236+53:1 glyph +$
237+53:4 name option
238+54:3 INDENT
239+54:3 lit ~
240+55:3 NEWLINE
241+55:3 lit %some
242+56:1 DEDENT
243+56:1 NEWLINE
244+56:1 glyph ++
245+56:4 name null-option
246+56:16 glyph |=
247+56:19 name v
248+56:20 tight glyph =
249+56:21 tight name option
250+57:3 INDENT
251+57:3 glyph ?-
252+57:6 name v
253+58:5 INDENT
254+58:5 lit ~
255+58:7 str "none"
256+59:5 NEWLINE
257+59:5 lit %some
258+59:11 str "some"
259+60:1 DEDENT
260+60:1 DEDENT
261+60:1 NEWLINE
262+60:1 glyph +$
263+60:4 name output
264+61:3 INDENT
265+61:3 lit %left
266+62:3 NEWLINE
267+62:3 lit %right
268+63:1 DEDENT
269+63:1 NEWLINE
270+63:1 glyph ++
271+63:4 name context
272+63:12 glyph |=
273+63:15 name v
274+63:16 tight glyph =
275+63:17 tight name digits
276+64:3 INDENT
277+64:3 glyph ^-
278+64:6 name output
279+64:13 glyph ?-
280+64:16 name v
281+65:5 INDENT
282+65:5 lit %.y
283+65:9 lit %left
284+66:5 NEWLINE
285+66:5 lit %.n
286+66:9 lit %right
287+67:1 DEDENT
288+67:1 DEDENT
289+67:1 NEWLINE
290+67:1 glyph ++
291+67:4 name context-list
292+67:17 glyph |=
293+67:20 name v
294+67:21 tight glyph =
295+67:22 tight name digits
296+68:3 INDENT
297+68:3 glyph ^-
298+68:6 glyph (
299+68:7 tight name list
300+68:12 aura @t
301+68:14 tight glyph )
302+68:16 glyph ?-
303+68:19 name v
304+69:5 INDENT
305+69:5 lit %.y
306+69:9 glyph ~[
307+69:11 tight str "left"
308+69:17 tight glyph ]
309+70:5 NEWLINE
310+70:5 lit %.n
311+70:9 glyph ~[
312+70:11 tight str "right"
313+70:18 tight glyph ]
314+71:1 DEDENT
315+71:1 DEDENT
316+71:1 NEWLINE
317+71:1 glyph ++
318+71:4 name grouped-subject
319+71:20 glyph |=
320+71:23 name v
321+71:24 tight glyph =
322+71:25 tight name digits
323+72:3 INDENT
324+72:3 glyph ?-
325+72:6 glyph (
326+72:7 tight name v
327+72:8 tight glyph )
328+73:5 INDENT
329+73:5 lit %.y
330+73:9 str "zero"
331+74:5 NEWLINE
332+74:5 lit %.n
333+74:9 str "one"
334+74:14 DEDENT
335+74:14 DEDENT
336+74:14 NEWLINE
tests/golden/types-union-patterns/tree.txtnew file+152
@@ -0,0 +1,152 @@
1+(module
2+ (mold 1:1 choice
3+ (union 2:3
4+ (cell 2:3
5+ (const 2:4 %a)
6+ (face 2:7 value (aura 2:13 @t)))
7+ (const 3:3 %b)
8+ (const 4:3 %c)))
9+ (value 5:1 complete
10+ (gate 5:13
11+ (face 5:16 v (ref 5:18 choice))
12+ (body 6:3
13+ (branch 6:3
14+ (wing 6:6 v)
15+ (arm 7:5
16+ (cell 7:5 (lit 7:6 %a) (bind 7:9 payload))
17+ (wing 7:18 payload))
18+ (arm 8:5 (lit 8:5 %b) (str 8:8 "b"))
19+ (arm 9:5 (lit 9:5 %c) (str 9:8 "c"))))))
20+ (value 10:1 missing
21+ (gate 10:12
22+ (face 10:15 v (ref 10:17 choice))
23+ (body 11:3
24+ (branch 11:3
25+ (wing 11:6 v)
26+ (arm 12:5
27+ (cell 12:5 (lit 12:6 %a) (bind 12:9 payload))
28+ (wing 12:18 payload))
29+ (arm 13:5 (lit 13:5 %b) (str 13:8 "b"))))))
30+ (value 14:1 duplicate
31+ (gate 14:14
32+ (face 14:17 v (ref 14:19 choice))
33+ (body 15:3
34+ (branch 15:3
35+ (wing 15:6 v)
36+ (arm 16:5
37+ (cell 16:5 (lit 16:6 %a) (bind 16:9 payload))
38+ (wing 16:18 payload))
39+ (arm 17:5 (lit 17:5 %b) (str 17:8 "b"))
40+ (arm 18:5 (lit 18:5 %b) (str 18:8 "again"))
41+ (arm 19:5 (lit 19:5 %c) (str 19:8 "c"))))))
42+ (value 20:1 wildcard
43+ (gate 20:13
44+ (face 20:16 v (ref 20:18 choice))
45+ (body 21:3
46+ (branch 21:3
47+ (wing 21:6 v)
48+ (arm 22:5
49+ (cell 22:5 (lit 22:6 %a) (bind 22:9 payload))
50+ (wing 22:18 payload))
51+ (arm 23:5 (any 23:5) (str 23:7 "other"))))))
52+ (value 24:1 covered
53+ (gate 24:12
54+ (face 24:15 v (ref 24:17 choice))
55+ (body 25:3
56+ (branch 25:3
57+ (wing 25:6 v)
58+ (arm 26:5 (any 26:5) (str 26:7 "all"))
59+ (arm 27:5 (lit 27:5 %c) (str 27:8 "never"))))))
60+ (value 28:1 shadow
61+ (gate 28:11
62+ (face 28:14 v (ref 28:16 choice))
63+ (body 29:3
64+ (branch 29:3
65+ (wing 29:6 v)
66+ (arm 30:5
67+ (cell 30:5 (lit 30:6 %a) (bind 30:9 complete))
68+ (wing 30:19 complete))
69+ (arm 31:5 (lit 31:5 %b) (str 31:8 "b"))
70+ (arm 32:5 (lit 32:5 %c) (str 32:8 "c"))))))
71+ (mold 33:1 flags
72+ (union 34:3
73+ (cell 34:3
74+ (const 34:4 %flag)
75+ (face 34:10 enabled (flag 34:18)))
76+ (const 35:3 %none)))
77+ (value 36:1 partial
78+ (gate 36:12
79+ (face 36:15 v (ref 36:17 flags))
80+ (body 37:3
81+ (branch 37:3
82+ (wing 37:6 v)
83+ (arm 38:5
84+ (cell 38:5 (lit 38:6 %flag) (lit 38:12 %.y))
85+ (str 38:17 "yes"))
86+ (arm 39:5
87+ (cell 39:5 (lit 39:6 %flag) (lit 39:12 %.n))
88+ (str 39:17 "no"))
89+ (arm 40:5 (lit 40:5 %none) (str 40:11 "absent"))))))
90+ (value 41:1 not-known
91+ (gate 41:14
92+ (bind 41:17 v)
93+ (body 42:3
94+ (branch 42:3
95+ (wing 42:6 v)
96+ (arm 43:5 (lit 43:5 %a) (str 43:8 "a"))
97+ (arm 44:5 (lit 44:5 %b) (str 44:8 "b"))
98+ (arm 45:5 (lit 45:5 %c) (str 45:8 "c"))))))
99+ (mold 46:1 digits
100+ (union 47:3 (const 47:3 %$) (const 48:3 %1)))
101+ (value 49:1 as-booleans
102+ (gate 49:16
103+ (face 49:19 v (ref 49:21 digits))
104+ (body 50:3
105+ (branch 50:3
106+ (wing 50:6 v)
107+ (arm 51:5 (lit 51:5 %.y) (str 51:9 "zero"))
108+ (arm 52:5 (lit 52:5 %.n) (str 52:9 "one"))))))
109+ (mold 53:1 option
110+ (union 54:3 (const 54:3 ~) (const 55:3 %some)))
111+ (value 56:1 null-option
112+ (gate 56:16
113+ (face 56:19 v (ref 56:21 option))
114+ (body 57:3
115+ (branch 57:3
116+ (wing 57:6 v)
117+ (arm 58:5 (lit 58:5 ~) (str 58:7 "none"))
118+ (arm 59:5 (lit 59:5 %some) (str 59:11 "some"))))))
119+ (mold 60:1 output
120+ (union 61:3 (const 61:3 %left) (const 62:3 %right)))
121+ (value 63:1 context
122+ (gate 63:12
123+ (face 63:15 v (ref 63:17 digits))
124+ (body 64:3
125+ (cast 64:3
126+ (ref 64:6 output)
127+ (branch 64:13
128+ (wing 64:16 v)
129+ (arm 65:5 (lit 65:5 %.y) (lit 65:9 %left))
130+ (arm 66:5 (lit 66:5 %.n) (lit 66:9 %right)))))))
131+ (value 67:1 context-list
132+ (gate 67:17
133+ (face 67:20 v (ref 67:22 digits))
134+ (body 68:3
135+ (cast 68:3
136+ (apply 68:6 list (aura 68:12 @t))
137+ (branch 68:16
138+ (wing 68:19 v)
139+ (arm 69:5
140+ (lit 69:5 %.y)
141+ (list 69:9 (str 69:11 "left")))
142+ (arm 70:5
143+ (lit 70:5 %.n)
144+ (list 70:9 (str 70:11 "right"))))))))
145+ (value 71:1 grouped-subject
146+ (gate 71:20
147+ (face 71:23 v (ref 71:25 digits))
148+ (body 72:3
149+ (branch 72:3
150+ (group 72:6 (wing 72:7 v))
151+ (arm 73:5 (lit 73:5 %.y) (str 73:9 "zero"))
152+ (arm 74:5 (lit 74:5 %.n) (str 74:9 "one")))))))
tests/golden/types-union-patterns/types.txtnew file+25
@@ -0,0 +1,25 @@
1+partial inference; module not checked
2++$ choice: cases proven disjoint; mold not checked
3+++ complete: $-(choice @t)
4+++ missing: missing union case %c
5+++ duplicate: branch arm is covered by earlier arms
6+/tests/golden/types-union-patterns/source.jibb:18:5: covered arm
7+ %b "again"
8+ ^
9+++ wildcard: $-(choice @t)
10+++ covered: branch arm is covered by earlier arms
11+/tests/golden/types-union-patterns/source.jibb:27:5: covered arm
12+ %c "never"
13+ ^
14+++ shadow: pattern binder shadows a name
15++$ flags: cases proven disjoint; mold not checked
16+++ partial: partial union pattern is not supported by partial inference
17+++ not-known: branch is not supported by partial inference
18++$ digits: cases proven disjoint; mold not checked
19+++ as-booleans: $-(digits @t)
20++$ option: cases proven disjoint; mold not checked
21+++ null-option: $-(option @t)
22++$ output: cases proven disjoint; mold not checked
23+++ context: contextual union-pattern branch is not supported by partial inference
24+++ context-list: contextual union-pattern branch is not supported by partial inference
25+++ grouped-subject: union-pattern branch subject is not supported by partial inference
tests/golden/types-unit-patterns/types.txt+4−1
@@ -5,6 +5,9 @@ partial inference; module not checked
55++ shadow: pattern binder shadows a name
66++ unknown: unit branch subject is not supported by partial inference
77++ missing: branch pattern is not supported by partial inference
8−++ duplicate: branch is not supported by partial inference
8+++ duplicate: branch arm is covered by earlier arms
9+/tests/golden/types-unit-patterns/source.jibb:26:5: covered arm
10+ ~ !!
11+ ^
912++ pending: unit branch results need unsupported inference
1013++ unrelated: tag needs context in partial inference
tests/lib/jibb.hoon+481−454
@@ -36,6 +36,7 @@
3636/* src-5 %jibb /tests/golden/doc-grammar-04-step/source/jibb
3737/* tok-5 %txt /tests/golden/doc-grammar-04-step/tokens/txt
3838/* tre-5 %txt /tests/golden/doc-grammar-04-step/tree/txt
39+/* typ-5 %txt /tests/golden/doc-grammar-04-step/types/txt
3940/* src-6 %jibb /tests/golden/doc-grammar-06-cart-store/source/jibb
4041/* tok-6 %txt /tests/golden/doc-grammar-06-cart-store/tokens/txt
4142/* tre-6 %txt /tests/golden/doc-grammar-06-cart-store/tree/txt
@@ -1488,375 +1489,393 @@
14881489/* tok-438 %txt /tests/golden/types-list-patterns/tokens/txt
14891490/* tre-438 %txt /tests/golden/types-list-patterns/tree/txt
14901491/* typ-438 %txt /tests/golden/types-list-patterns/types/txt
1491−/* src-439 %jibb /tests/golden/types-local-capitals/source/jibb
1492−/* tok-439 %txt /tests/golden/types-local-capitals/tokens/txt
1493−/* tre-439 %txt /tests/golden/types-local-capitals/tree/txt
1494−/* typ-439 %txt /tests/golden/types-local-capitals/types/txt
1495−/* src-440 %jibb /tests/golden/types-local-recursive/source/jibb
1496−/* tok-440 %txt /tests/golden/types-local-recursive/tokens/txt
1497−/* tre-440 %txt /tests/golden/types-local-recursive/tree/txt
1498−/* typ-440 %txt /tests/golden/types-local-recursive/types/txt
1499−/* src-441 %jibb /tests/golden/types-module-fixtures/source/jibb
1500−/* tok-441 %txt /tests/golden/types-module-fixtures/tokens/txt
1501−/* tre-441 %txt /tests/golden/types-module-fixtures/tree/txt
1502−/* mod-441-1 %jibb /tests/golden/types-module-fixtures/modules/ui/api/blog/jibb
1503−/* mod-441-2 %jibb /tests/golden/types-module-fixtures/modules/ui/components/card/jibb
1504−/* typ-441 %txt /tests/golden/types-module-fixtures/types/txt
1505−/* mtre-441 %txt /tests/golden/types-module-fixtures/module-trees/txt
1506−/* src-442 %jibb /tests/golden/types-module-mixed/source/jibb
1507−/* tok-442 %txt /tests/golden/types-module-mixed/tokens/txt
1508−/* tre-442 %txt /tests/golden/types-module-mixed/tree/txt
1509−/* mod-442-1 %jibb /tests/golden/types-module-mixed/modules/ui/helper/jibb
1510−/* typ-442 %txt /tests/golden/types-module-mixed/types/txt
1511−/* imp-442-1 %txt /tests/golden/types-module-mixed/sur/fixture/txt
1512−/* mark-442-1 %txt /tests/golden/types-module-mixed/mar/label/txt
1513−/* mtre-442 %txt /tests/golden/types-module-mixed/module-trees/txt
1514−/* src-443 %jibb /tests/golden/types-multi-call/source/jibb
1515−/* tok-443 %txt /tests/golden/types-multi-call/tokens/txt
1516−/* tre-443 %txt /tests/golden/types-multi-call/tree/txt
1517−/* typ-443 %txt /tests/golden/types-multi-call/types/txt
1518−/* src-444 %jibb /tests/golden/types-multi-import/source/jibb
1519−/* tok-444 %txt /tests/golden/types-multi-import/tokens/txt
1520−/* tre-444 %txt /tests/golden/types-multi-import/tree/txt
1521−/* mod-444-1 %jibb /tests/golden/types-multi-import/modules/ui/lib/jibb
1522−/* typ-444 %txt /tests/golden/types-multi-import/types/txt
1523−/* mtre-444 %txt /tests/golden/types-multi-import/module-trees/txt
1524−/* src-445 %jibb /tests/golden/types-null-context/source/jibb
1525−/* tok-445 %txt /tests/golden/types-null-context/tokens/txt
1526−/* tre-445 %txt /tests/golden/types-null-context/tree/txt
1527−/* typ-445 %txt /tests/golden/types-null-context/types/txt
1528−/* src-446 %jibb /tests/golden/types-null-overlap/source/jibb
1529−/* tok-446 %txt /tests/golden/types-null-overlap/tokens/txt
1530−/* tre-446 %txt /tests/golden/types-null-overlap/tree/txt
1531−/* typ-446 %txt /tests/golden/types-null-overlap/types/txt
1532−/* src-447 %jibb /tests/golden/types-null-unresolved/source/jibb
1533−/* tok-447 %txt /tests/golden/types-null-unresolved/tokens/txt
1534−/* tre-447 %txt /tests/golden/types-null-unresolved/tree/txt
1535−/* typ-447 %txt /tests/golden/types-null-unresolved/types/txt
1536−/* src-448 %jibb /tests/golden/types-partial-apply/source/jibb
1537−/* tok-448 %txt /tests/golden/types-partial-apply/tokens/txt
1538−/* tre-448 %txt /tests/golden/types-partial-apply/tree/txt
1539−/* typ-448 %txt /tests/golden/types-partial-apply/types/txt
1540−/* src-449 %jibb /tests/golden/types-partial-atom-alias/source/jibb
1541−/* tok-449 %txt /tests/golden/types-partial-atom-alias/tokens/txt
1542−/* tre-449 %txt /tests/golden/types-partial-atom-alias/tree/txt
1543−/* typ-449 %txt /tests/golden/types-partial-atom-alias/types/txt
1544−/* src-450 %jibb /tests/golden/types-partial-atom-constraint/source/jibb
1545−/* tok-450 %txt /tests/golden/types-partial-atom-constraint/tokens/txt
1546−/* tre-450 %txt /tests/golden/types-partial-atom-constraint/tree/txt
1547−/* typ-450 %txt /tests/golden/types-partial-atom-constraint/types/txt
1548−/* src-451 %jibb /tests/golden/types-partial-atom-widening/source/jibb
1549−/* tok-451 %txt /tests/golden/types-partial-atom-widening/tokens/txt
1550−/* tre-451 %txt /tests/golden/types-partial-atom-widening/tree/txt
1551−/* typ-451 %txt /tests/golden/types-partial-atom-widening/types/txt
1552−/* src-452 %jibb /tests/golden/types-partial-aura/source/jibb
1553−/* tok-452 %txt /tests/golden/types-partial-aura/tokens/txt
1554−/* tre-452 %txt /tests/golden/types-partial-aura/tree/txt
1555−/* typ-452 %txt /tests/golden/types-partial-aura/types/txt
1556−/* src-453 %jibb /tests/golden/types-partial-aura-family/source/jibb
1557−/* tok-453 %txt /tests/golden/types-partial-aura-family/tokens/txt
1558−/* tre-453 %txt /tests/golden/types-partial-aura-family/tree/txt
1559−/* typ-453 %txt /tests/golden/types-partial-aura-family/types/txt
1560−/* src-454 %jibb /tests/golden/types-partial-aura-generalization/source/jibb
1561−/* tok-454 %txt /tests/golden/types-partial-aura-generalization/tokens/txt
1562−/* tre-454 %txt /tests/golden/types-partial-aura-generalization/tree/txt
1563−/* typ-454 %txt /tests/golden/types-partial-aura-generalization/types/txt
1564−/* src-455 %jibb /tests/golden/types-partial-bare-atom/source/jibb
1565−/* tok-455 %txt /tests/golden/types-partial-bare-atom/tokens/txt
1566−/* tre-455 %txt /tests/golden/types-partial-bare-atom/tree/txt
1567−/* typ-455 %txt /tests/golden/types-partial-bare-atom/types/txt
1568−/* src-456 %jibb /tests/golden/types-partial-branch-widening/source/jibb
1569−/* tok-456 %txt /tests/golden/types-partial-branch-widening/tokens/txt
1570−/* tre-456 %txt /tests/golden/types-partial-branch-widening/tree/txt
1571−/* typ-456 %txt /tests/golden/types-partial-branch-widening/types/txt
1572−/* src-457 %jibb /tests/golden/types-partial-conflicting-sites/source/jibb
1573−/* tok-457 %txt /tests/golden/types-partial-conflicting-sites/tokens/txt
1574−/* tre-457 %txt /tests/golden/types-partial-conflicting-sites/tree/txt
1575−/* typ-457 %txt /tests/golden/types-partial-conflicting-sites/types/txt
1576−/* src-458 %jibb /tests/golden/types-partial-decimal-default/source/jibb
1577−/* tok-458 %txt /tests/golden/types-partial-decimal-default/tokens/txt
1578−/* tre-458 %txt /tests/golden/types-partial-decimal-default/tree/txt
1579−/* typ-458 %txt /tests/golden/types-partial-decimal-default/types/txt
1580−/* src-459 %jibb /tests/golden/types-partial-dependency-chain/source/jibb
1581−/* tok-459 %txt /tests/golden/types-partial-dependency-chain/tokens/txt
1582−/* tre-459 %txt /tests/golden/types-partial-dependency-chain/tree/txt
1583−/* typ-459 %txt /tests/golden/types-partial-dependency-chain/types/txt
1584−/* src-460 %jibb /tests/golden/types-partial-explicit-capital/source/jibb
1585−/* tok-460 %txt /tests/golden/types-partial-explicit-capital/tokens/txt
1586−/* tre-460 %txt /tests/golden/types-partial-explicit-capital/tree/txt
1587−/* typ-460 %txt /tests/golden/types-partial-explicit-capital/types/txt
1588−/* src-461 %jibb /tests/golden/types-partial-forward/source/jibb
1589−/* tok-461 %txt /tests/golden/types-partial-forward/tokens/txt
1590−/* tre-461 %txt /tests/golden/types-partial-forward/tree/txt
1591−/* typ-461 %txt /tests/golden/types-partial-forward/types/txt
1592−/* src-462 %jibb /tests/golden/types-partial-generalization/source/jibb
1593−/* tok-462 %txt /tests/golden/types-partial-generalization/tokens/txt
1594−/* tre-462 %txt /tests/golden/types-partial-generalization/tree/txt
1595−/* typ-462 %txt /tests/golden/types-partial-generalization/types/txt
1596−/* src-463 %jibb /tests/golden/types-partial-identity/source/jibb
1597−/* tok-463 %txt /tests/golden/types-partial-identity/tokens/txt
1598−/* tre-463 %txt /tests/golden/types-partial-identity/tree/txt
1599−/* typ-463 %txt /tests/golden/types-partial-identity/types/txt
1600−/* src-464 %jibb /tests/golden/types-partial-independent-atoms/source/jibb
1601−/* tok-464 %txt /tests/golden/types-partial-independent-atoms/tokens/txt
1602−/* tre-464 %txt /tests/golden/types-partial-independent-atoms/tree/txt
1603−/* typ-464 %txt /tests/golden/types-partial-independent-atoms/types/txt
1604−/* src-465 %jibb /tests/golden/types-partial-local-molds/source/jibb
1605−/* tok-465 %txt /tests/golden/types-partial-local-molds/tokens/txt
1606−/* tre-465 %txt /tests/golden/types-partial-local-molds/tree/txt
1607−/* typ-465 %txt /tests/golden/types-partial-local-molds/types/txt
1608−/* src-466 %jibb /tests/golden/types-partial-locals/source/jibb
1609−/* tok-466 %txt /tests/golden/types-partial-locals/tokens/txt
1610−/* tre-466 %txt /tests/golden/types-partial-locals/tree/txt
1611−/* typ-466 %txt /tests/golden/types-partial-locals/types/txt
1612−/* src-467 %jibb /tests/golden/types-partial-many-atom-constraints/source/jibb
1613−/* tok-467 %txt /tests/golden/types-partial-many-atom-constraints/tokens/txt
1614−/* tre-467 %txt /tests/golden/types-partial-many-atom-constraints/tree/txt
1615−/* typ-467 %txt /tests/golden/types-partial-many-atom-constraints/types/txt
1616−/* src-468 %jibb /tests/golden/types-partial-mold-bare-aura/source/jibb
1617−/* tok-468 %txt /tests/golden/types-partial-mold-bare-aura/tokens/txt
1618−/* tre-468 %txt /tests/golden/types-partial-mold-bare-aura/tree/txt
1619−/* typ-468 %txt /tests/golden/types-partial-mold-bare-aura/types/txt
1620−/* src-469 %jibb /tests/golden/types-partial-mold-composite/source/jibb
1621−/* tok-469 %txt /tests/golden/types-partial-mold-composite/tokens/txt
1622−/* tre-469 %txt /tests/golden/types-partial-mold-composite/tree/txt
1623−/* typ-469 %txt /tests/golden/types-partial-mold-composite/types/txt
1624−/* src-470 %jibb /tests/golden/types-partial-mold-forward/source/jibb
1625−/* tok-470 %txt /tests/golden/types-partial-mold-forward/tokens/txt
1626−/* tre-470 %txt /tests/golden/types-partial-mold-forward/tree/txt
1627−/* typ-470 %txt /tests/golden/types-partial-mold-forward/types/txt
1628−/* src-471 %jibb /tests/golden/types-partial-mold-recursive/source/jibb
1629−/* tok-471 %txt /tests/golden/types-partial-mold-recursive/tokens/txt
1630−/* tre-471 %txt /tests/golden/types-partial-mold-recursive/tree/txt
1631−/* typ-471 %txt /tests/golden/types-partial-mold-recursive/types/txt
1632−/* src-472 %jibb /tests/golden/types-partial-occurs/source/jibb
1633−/* tok-472 %txt /tests/golden/types-partial-occurs/tokens/txt
1634−/* tre-472 %txt /tests/golden/types-partial-occurs/tree/txt
1635−/* typ-472 %txt /tests/golden/types-partial-occurs/types/txt
1636−/* src-473 %jibb /tests/golden/types-partial-projection/source/jibb
1637−/* tok-473 %txt /tests/golden/types-partial-projection/tokens/txt
1638−/* tre-473 %txt /tests/golden/types-partial-projection/tree/txt
1639−/* typ-473 %txt /tests/golden/types-partial-projection/types/txt
1640−/* src-474 %jibb /tests/golden/types-partial-shadow-global/source/jibb
1641−/* tok-474 %txt /tests/golden/types-partial-shadow-global/tokens/txt
1642−/* tre-474 %txt /tests/golden/types-partial-shadow-global/tree/txt
1643−/* typ-474 %txt /tests/golden/types-partial-shadow-global/types/txt
1644−/* src-475 %jibb /tests/golden/types-partial-shared-tvar/source/jibb
1645−/* tok-475 %txt /tests/golden/types-partial-shared-tvar/tokens/txt
1646−/* tre-475 %txt /tests/golden/types-partial-shared-tvar/tree/txt
1647−/* typ-475 %txt /tests/golden/types-partial-shared-tvar/types/txt
1648−/* src-476 %jibb /tests/golden/types-partial-union-cases/source/jibb
1649−/* tok-476 %txt /tests/golden/types-partial-union-cases/tokens/txt
1650−/* tre-476 %txt /tests/golden/types-partial-union-cases/tree/txt
1651−/* typ-476 %txt /tests/golden/types-partial-union-cases/types/txt
1652−/* src-477 %jibb /tests/golden/types-partial-union-edges/source/jibb
1653−/* tok-477 %txt /tests/golden/types-partial-union-edges/tokens/txt
1654−/* tre-477 %txt /tests/golden/types-partial-union-edges/tree/txt
1655−/* typ-477 %txt /tests/golden/types-partial-union-edges/types/txt
1656−/* src-478 %jibb /tests/golden/types-partial-unresolved-tag/source/jibb
1657−/* tok-478 %txt /tests/golden/types-partial-unresolved-tag/tokens/txt
1658−/* tre-478 %txt /tests/golden/types-partial-unresolved-tag/tree/txt
1659−/* typ-478 %txt /tests/golden/types-partial-unresolved-tag/types/txt
1660−/* src-479 %jibb /tests/golden/types-prelude-direct/source/jibb
1661−/* tok-479 %txt /tests/golden/types-prelude-direct/tokens/txt
1662−/* tre-479 %txt /tests/golden/types-prelude-direct/tree/txt
1663−/* typ-479 %txt /tests/golden/types-prelude-direct/types/txt
1664−/* src-480 %jibb /tests/golden/types-prelude-interface/source/jibb
1665−/* tok-480 %txt /tests/golden/types-prelude-interface/tokens/txt
1666−/* tre-480 %txt /tests/golden/types-prelude-interface/tree/txt
1667−/* mod-480-1 %jibb /tests/golden/types-prelude-interface/modules/ui/left/jibb
1668−/* mod-480-2 %jibb /tests/golden/types-prelude-interface/modules/ui/right/jibb
1669−/* typ-480 %txt /tests/golden/types-prelude-interface/types/txt
1670−/* mtre-480 %txt /tests/golden/types-prelude-interface/module-trees/txt
1671−/* src-481 %jibb /tests/golden/types-prelude-list-functions/source/jibb
1672−/* tok-481 %txt /tests/golden/types-prelude-list-functions/tokens/txt
1673−/* tre-481 %txt /tests/golden/types-prelude-list-functions/tree/txt
1674−/* mod-481-1 %jibb /tests/golden/types-prelude-list-functions/modules/ui/lib/jibb
1675−/* typ-481 %txt /tests/golden/types-prelude-list-functions/types/txt
1676−/* mtre-481 %txt /tests/golden/types-prelude-list-functions/module-trees/txt
1677−/* src-482 %jibb /tests/golden/types-record-bound-variable/source/jibb
1678−/* tok-482 %txt /tests/golden/types-record-bound-variable/tokens/txt
1679−/* tre-482 %txt /tests/golden/types-record-bound-variable/tree/txt
1680−/* typ-482 %txt /tests/golden/types-record-bound-variable/types/txt
1681−/* src-483 %jibb /tests/golden/types-record-faces/source/jibb
1682−/* tok-483 %txt /tests/golden/types-record-faces/tokens/txt
1683−/* tre-483 %txt /tests/golden/types-record-faces/tree/txt
1684−/* typ-483 %txt /tests/golden/types-record-faces/types/txt
1685−/* src-484 %jibb /tests/golden/types-record-import/source/jibb
1686−/* tok-484 %txt /tests/golden/types-record-import/tokens/txt
1687−/* tre-484 %txt /tests/golden/types-record-import/tree/txt
1688−/* mod-484-1 %jibb /tests/golden/types-record-import/modules/ui/lib/jibb
1689−/* typ-484 %txt /tests/golden/types-record-import/types/txt
1690−/* mtre-484 %txt /tests/golden/types-record-import/module-trees/txt
1691−/* src-485 %jibb /tests/golden/types-record-local-scheme/source/jibb
1692−/* tok-485 %txt /tests/golden/types-record-local-scheme/tokens/txt
1693−/* tre-485 %txt /tests/golden/types-record-local-scheme/tree/txt
1694−/* typ-485 %txt /tests/golden/types-record-local-scheme/types/txt
1695−/* src-486 %jibb /tests/golden/types-record-nested/source/jibb
1696−/* tok-486 %txt /tests/golden/types-record-nested/tokens/txt
1697−/* tre-486 %txt /tests/golden/types-record-nested/tree/txt
1698−/* typ-486 %txt /tests/golden/types-record-nested/types/txt
1699−/* src-487 %jibb /tests/golden/types-record-to-tuple/source/jibb
1700−/* tok-487 %txt /tests/golden/types-record-to-tuple/tokens/txt
1701−/* tre-487 %txt /tests/golden/types-record-to-tuple/tree/txt
1702−/* typ-487 %txt /tests/golden/types-record-to-tuple/types/txt
1703−/* src-488 %jibb /tests/golden/types-recursion-scc-failures/source/jibb
1704−/* tok-488 %txt /tests/golden/types-recursion-scc-failures/tokens/txt
1705−/* tre-488 %txt /tests/golden/types-recursion-scc-failures/tree/txt
1706−/* typ-488 %txt /tests/golden/types-recursion-scc-failures/types/txt
1707−/* src-489 %jibb /tests/golden/types-recursion-scc-groups/source/jibb
1708−/* tok-489 %txt /tests/golden/types-recursion-scc-groups/tokens/txt
1709−/* tre-489 %txt /tests/golden/types-recursion-scc-groups/tree/txt
1710−/* typ-489 %txt /tests/golden/types-recursion-scc-groups/types/txt
1711−/* src-490 %jibb /tests/golden/types-recursion-scc-import/source/jibb
1712−/* tok-490 %txt /tests/golden/types-recursion-scc-import/tokens/txt
1713−/* tre-490 %txt /tests/golden/types-recursion-scc-import/tree/txt
1714−/* mod-490-1 %jibb /tests/golden/types-recursion-scc-import/modules/ui/lib/jibb
1715−/* typ-490 %txt /tests/golden/types-recursion-scc-import/types/txt
1716−/* mtre-490 %txt /tests/golden/types-recursion-scc-import/module-trees/txt
1717−/* src-491 %jibb /tests/golden/types-recursion-scc-import-bad/source/jibb
1718−/* tok-491 %txt /tests/golden/types-recursion-scc-import-bad/tokens/txt
1719−/* tre-491 %txt /tests/golden/types-recursion-scc-import-bad/tree/txt
1720−/* mod-491-1 %jibb /tests/golden/types-recursion-scc-import-bad/modules/ui/lib/jibb
1721−/* typ-491 %txt /tests/golden/types-recursion-scc-import-bad/types/txt
1722−/* mtre-491 %txt /tests/golden/types-recursion-scc-import-bad/module-trees/txt
1723−/* src-492 %jibb /tests/golden/types-recursion-scc-local/source/jibb
1724−/* tok-492 %txt /tests/golden/types-recursion-scc-local/tokens/txt
1725−/* tre-492 %txt /tests/golden/types-recursion-scc-local/tree/txt
1726−/* typ-492 %txt /tests/golden/types-recursion-scc-local/types/txt
1727−/* src-493 %jibb /tests/golden/types-recursion-scc-order/source/jibb
1728−/* tok-493 %txt /tests/golden/types-recursion-scc-order/tokens/txt
1729−/* tre-493 %txt /tests/golden/types-recursion-scc-order/tree/txt
1730−/* typ-493 %txt /tests/golden/types-recursion-scc-order/types/txt
1731−/* src-494 %jibb /tests/golden/types-recursion-scc-shadow/source/jibb
1732−/* tok-494 %txt /tests/golden/types-recursion-scc-shadow/tokens/txt
1733−/* tre-494 %txt /tests/golden/types-recursion-scc-shadow/tree/txt
1734−/* typ-494 %txt /tests/golden/types-recursion-scc-shadow/types/txt
1735−/* src-495 %jibb /tests/golden/types-recursive-branch/source/jibb
1736−/* tok-495 %txt /tests/golden/types-recursive-branch/tokens/txt
1737−/* tre-495 %txt /tests/golden/types-recursive-branch/tree/txt
1738−/* typ-495 %txt /tests/golden/types-recursive-branch/types/txt
1739−/* src-496 %jibb /tests/golden/types-recursive-gate/source/jibb
1740−/* tok-496 %txt /tests/golden/types-recursive-gate/tokens/txt
1741−/* tre-496 %txt /tests/golden/types-recursive-gate/tree/txt
1742−/* typ-496 %txt /tests/golden/types-recursive-gate/types/txt
1743−/* src-497 %jibb /tests/golden/types-recursive-sample/source/jibb
1744−/* tok-497 %txt /tests/golden/types-recursive-sample/tokens/txt
1745−/* tre-497 %txt /tests/golden/types-recursive-sample/tree/txt
1746−/* typ-497 %txt /tests/golden/types-recursive-sample/types/txt
1747−/* src-498 %jibb /tests/golden/types-string-interpolation/source/jibb
1748−/* tok-498 %txt /tests/golden/types-string-interpolation/tokens/txt
1749−/* tre-498 %txt /tests/golden/types-string-interpolation/tree/txt
1750−/* typ-498 %txt /tests/golden/types-string-interpolation/types/txt
1751−/* src-499 %jibb /tests/golden/types-union-alias/source/jibb
1752−/* tok-499 %txt /tests/golden/types-union-alias/tokens/txt
1753−/* tre-499 %txt /tests/golden/types-union-alias/tree/txt
1754−/* typ-499 %txt /tests/golden/types-union-alias/types/txt
1755−/* src-500 %jibb /tests/golden/types-union-branch-context/source/jibb
1756−/* tok-500 %txt /tests/golden/types-union-branch-context/tokens/txt
1757−/* tre-500 %txt /tests/golden/types-union-branch-context/tree/txt
1758−/* typ-500 %txt /tests/golden/types-union-branch-context/types/txt
1759−/* src-501 %jibb /tests/golden/types-union-branch-pending/source/jibb
1760−/* tok-501 %txt /tests/golden/types-union-branch-pending/tokens/txt
1761−/* tre-501 %txt /tests/golden/types-union-branch-pending/tree/txt
1762−/* typ-501 %txt /tests/golden/types-union-branch-pending/types/txt
1763−/* src-502 %jibb /tests/golden/types-union-constructor-shape/source/jibb
1764−/* tok-502 %txt /tests/golden/types-union-constructor-shape/tokens/txt
1765−/* tre-502 %txt /tests/golden/types-union-constructor-shape/tree/txt
1766−/* typ-502 %txt /tests/golden/types-union-constructor-shape/types/txt
1767−/* src-503 %jibb /tests/golden/types-union-context-flow/source/jibb
1768−/* tok-503 %txt /tests/golden/types-union-context-flow/tokens/txt
1769−/* tre-503 %txt /tests/golden/types-union-context-flow/tree/txt
1770−/* typ-503 %txt /tests/golden/types-union-context-flow/types/txt
1771−/* src-504 %jibb /tests/golden/types-union-import/source/jibb
1772−/* tok-504 %txt /tests/golden/types-union-import/tokens/txt
1773−/* tre-504 %txt /tests/golden/types-union-import/tree/txt
1774−/* mod-504-1 %jibb /tests/golden/types-union-import/modules/ui/lib/jibb
1775−/* typ-504 %txt /tests/golden/types-union-import/types/txt
1776−/* mtre-504 %txt /tests/golden/types-union-import/module-trees/txt
1777−/* src-505 %jibb /tests/golden/types-union-local-pending/source/jibb
1778−/* tok-505 %txt /tests/golden/types-union-local-pending/tokens/txt
1779−/* tre-505 %txt /tests/golden/types-union-local-pending/tree/txt
1780−/* typ-505 %txt /tests/golden/types-union-local-pending/types/txt
1781−/* src-506 %jibb /tests/golden/types-union-overlap/source/jibb
1782−/* tok-506 %txt /tests/golden/types-union-overlap/tokens/txt
1783−/* tre-506 %txt /tests/golden/types-union-overlap/tree/txt
1784−/* typ-506 %txt /tests/golden/types-union-overlap/types/txt
1785−/* src-507 %jibb /tests/golden/types-union-overlap-nested/source/jibb
1786−/* tok-507 %txt /tests/golden/types-union-overlap-nested/tokens/txt
1787−/* tre-507 %txt /tests/golden/types-union-overlap-nested/tree/txt
1788−/* typ-507 %txt /tests/golden/types-union-overlap-nested/types/txt
1789−/* src-508 %jibb /tests/golden/types-union-phantom-generic/source/jibb
1790−/* tok-508 %txt /tests/golden/types-union-phantom-generic/tokens/txt
1791−/* tre-508 %txt /tests/golden/types-union-phantom-generic/tree/txt
1792−/* typ-508 %txt /tests/golden/types-union-phantom-generic/types/txt
1793−/* src-509 %jibb /tests/golden/types-union-print-cross-namespace/source/jibb
1794−/* tok-509 %txt /tests/golden/types-union-print-cross-namespace/tokens/txt
1795−/* tre-509 %txt /tests/golden/types-union-print-cross-namespace/tree/txt
1796−/* mod-509-1 %jibb /tests/golden/types-union-print-cross-namespace/modules/ui/lib/jibb
1797−/* typ-509 %txt /tests/golden/types-union-print-cross-namespace/types/txt
1798−/* mtre-509 %txt /tests/golden/types-union-print-cross-namespace/module-trees/txt
1799−/* src-510 %jibb /tests/golden/types-union-print-distinct/source/jibb
1800−/* tok-510 %txt /tests/golden/types-union-print-distinct/tokens/txt
1801−/* tre-510 %txt /tests/golden/types-union-print-distinct/tree/txt
1802−/* mod-510-1 %jibb /tests/golden/types-union-print-distinct/modules/ui/left/jibb
1803−/* mod-510-2 %jibb /tests/golden/types-union-print-distinct/modules/ui/right/jibb
1804−/* mod-510-3 %jibb /tests/golden/types-union-print-distinct/modules/ui/twin/jibb
1805−/* typ-510 %txt /tests/golden/types-union-print-distinct/types/txt
1806−/* mtre-510 %txt /tests/golden/types-union-print-distinct/module-trees/txt
1807−/* src-511 %jibb /tests/golden/types-union-print-escape/source/jibb
1808−/* tok-511 %txt /tests/golden/types-union-print-escape/tokens/txt
1809−/* tre-511 %txt /tests/golden/types-union-print-escape/tree/txt
1810−/* typ-511 %txt /tests/golden/types-union-print-escape/types/txt
1811−/* src-512 %jibb /tests/golden/types-union-print-local/source/jibb
1812−/* tok-512 %txt /tests/golden/types-union-print-local/tokens/txt
1813−/* tre-512 %txt /tests/golden/types-union-print-local/tree/txt
1814−/* typ-512 %txt /tests/golden/types-union-print-local/types/txt
1815−/* src-513 %jibb /tests/golden/types-union-print-nested/source/jibb
1816−/* tok-513 %txt /tests/golden/types-union-print-nested/tokens/txt
1817−/* tre-513 %txt /tests/golden/types-union-print-nested/tree/txt
1818−/* typ-513 %txt /tests/golden/types-union-print-nested/types/txt
1819−/* src-514 %jibb /tests/golden/types-union-print-same-origin/source/jibb
1820−/* tok-514 %txt /tests/golden/types-union-print-same-origin/tokens/txt
1821−/* tre-514 %txt /tests/golden/types-union-print-same-origin/tree/txt
1822−/* mod-514-1 %jibb /tests/golden/types-union-print-same-origin/modules/ui/shared/jibb
1823−/* typ-514 %txt /tests/golden/types-union-print-same-origin/types/txt
1824−/* mtre-514 %txt /tests/golden/types-union-print-same-origin/module-trees/txt
1825−/* src-515 %jibb /tests/golden/types-union-print-transitive/source/jibb
1826−/* tok-515 %txt /tests/golden/types-union-print-transitive/tokens/txt
1827−/* tre-515 %txt /tests/golden/types-union-print-transitive/tree/txt
1828−/* mod-515-1 %jibb /tests/golden/types-union-print-transitive/modules/ui/mid/jibb
1829−/* mod-515-2 %jibb /tests/golden/types-union-print-transitive/modules/ui/base/jibb
1830−/* typ-515 %txt /tests/golden/types-union-print-transitive/types/txt
1831−/* mtre-515 %txt /tests/golden/types-union-print-transitive/module-trees/txt
1832−/* src-516 %jibb /tests/golden/types-union-singleton/source/jibb
1833−/* tok-516 %txt /tests/golden/types-union-singleton/tokens/txt
1834−/* tre-516 %txt /tests/golden/types-union-singleton/tree/txt
1835−/* typ-516 %txt /tests/golden/types-union-singleton/types/txt
1836−/* src-517 %jibb /tests/golden/types-union-tag-atoms/source/jibb
1837−/* tok-517 %txt /tests/golden/types-union-tag-atoms/tokens/txt
1838−/* tre-517 %txt /tests/golden/types-union-tag-atoms/tree/txt
1839−/* typ-517 %txt /tests/golden/types-union-tag-atoms/types/txt
1840−/* src-518 %jibb /tests/golden/types-union-tags/source/jibb
1841−/* tok-518 %txt /tests/golden/types-union-tags/tokens/txt
1842−/* tre-518 %txt /tests/golden/types-union-tags/tree/txt
1843−/* typ-518 %txt /tests/golden/types-union-tags/types/txt
1844−/* src-519 %jibb /tests/golden/types-union-unresolved/source/jibb
1845−/* tok-519 %txt /tests/golden/types-union-unresolved/tokens/txt
1846−/* tre-519 %txt /tests/golden/types-union-unresolved/tree/txt
1847−/* typ-519 %txt /tests/golden/types-union-unresolved/types/txt
1848−/* src-520 %jibb /tests/golden/types-union-unresolved-flow/source/jibb
1849−/* tok-520 %txt /tests/golden/types-union-unresolved-flow/tokens/txt
1850−/* tre-520 %txt /tests/golden/types-union-unresolved-flow/tree/txt
1851−/* typ-520 %txt /tests/golden/types-union-unresolved-flow/types/txt
1852−/* src-521 %jibb /tests/golden/types-unit-context/source/jibb
1853−/* tok-521 %txt /tests/golden/types-unit-context/tokens/txt
1854−/* tre-521 %txt /tests/golden/types-unit-context/tree/txt
1855−/* typ-521 %txt /tests/golden/types-unit-context/types/txt
1856−/* src-522 %jibb /tests/golden/types-unit-patterns/source/jibb
1857−/* tok-522 %txt /tests/golden/types-unit-patterns/tokens/txt
1858−/* tre-522 %txt /tests/golden/types-unit-patterns/tree/txt
1859−/* typ-522 %txt /tests/golden/types-unit-patterns/types/txt
1492+/* src-439 %jibb /tests/golden/types-list-zero-fit/source/jibb
1493+/* tok-439 %txt /tests/golden/types-list-zero-fit/tokens/txt
1494+/* tre-439 %txt /tests/golden/types-list-zero-fit/tree/txt
1495+/* typ-439 %txt /tests/golden/types-list-zero-fit/types/txt
1496+/* src-440 %jibb /tests/golden/types-local-capitals/source/jibb
1497+/* tok-440 %txt /tests/golden/types-local-capitals/tokens/txt
1498+/* tre-440 %txt /tests/golden/types-local-capitals/tree/txt
1499+/* typ-440 %txt /tests/golden/types-local-capitals/types/txt
1500+/* src-441 %jibb /tests/golden/types-local-recursive/source/jibb
1501+/* tok-441 %txt /tests/golden/types-local-recursive/tokens/txt
1502+/* tre-441 %txt /tests/golden/types-local-recursive/tree/txt
1503+/* typ-441 %txt /tests/golden/types-local-recursive/types/txt
1504+/* src-442 %jibb /tests/golden/types-module-fixtures/source/jibb
1505+/* tok-442 %txt /tests/golden/types-module-fixtures/tokens/txt
1506+/* tre-442 %txt /tests/golden/types-module-fixtures/tree/txt
1507+/* mod-442-1 %jibb /tests/golden/types-module-fixtures/modules/ui/api/blog/jibb
1508+/* mod-442-2 %jibb /tests/golden/types-module-fixtures/modules/ui/components/card/jibb
1509+/* typ-442 %txt /tests/golden/types-module-fixtures/types/txt
1510+/* mtre-442 %txt /tests/golden/types-module-fixtures/module-trees/txt
1511+/* src-443 %jibb /tests/golden/types-module-mixed/source/jibb
1512+/* tok-443 %txt /tests/golden/types-module-mixed/tokens/txt
1513+/* tre-443 %txt /tests/golden/types-module-mixed/tree/txt
1514+/* mod-443-1 %jibb /tests/golden/types-module-mixed/modules/ui/helper/jibb
1515+/* typ-443 %txt /tests/golden/types-module-mixed/types/txt
1516+/* imp-443-1 %txt /tests/golden/types-module-mixed/sur/fixture/txt
1517+/* mark-443-1 %txt /tests/golden/types-module-mixed/mar/label/txt
1518+/* mtre-443 %txt /tests/golden/types-module-mixed/module-trees/txt
1519+/* src-444 %jibb /tests/golden/types-multi-call/source/jibb
1520+/* tok-444 %txt /tests/golden/types-multi-call/tokens/txt
1521+/* tre-444 %txt /tests/golden/types-multi-call/tree/txt
1522+/* typ-444 %txt /tests/golden/types-multi-call/types/txt
1523+/* src-445 %jibb /tests/golden/types-multi-import/source/jibb
1524+/* tok-445 %txt /tests/golden/types-multi-import/tokens/txt
1525+/* tre-445 %txt /tests/golden/types-multi-import/tree/txt
1526+/* mod-445-1 %jibb /tests/golden/types-multi-import/modules/ui/lib/jibb
1527+/* typ-445 %txt /tests/golden/types-multi-import/types/txt
1528+/* mtre-445 %txt /tests/golden/types-multi-import/module-trees/txt
1529+/* src-446 %jibb /tests/golden/types-null-context/source/jibb
1530+/* tok-446 %txt /tests/golden/types-null-context/tokens/txt
1531+/* tre-446 %txt /tests/golden/types-null-context/tree/txt
1532+/* typ-446 %txt /tests/golden/types-null-context/types/txt
1533+/* src-447 %jibb /tests/golden/types-null-overlap/source/jibb
1534+/* tok-447 %txt /tests/golden/types-null-overlap/tokens/txt
1535+/* tre-447 %txt /tests/golden/types-null-overlap/tree/txt
1536+/* typ-447 %txt /tests/golden/types-null-overlap/types/txt
1537+/* src-448 %jibb /tests/golden/types-null-unresolved/source/jibb
1538+/* tok-448 %txt /tests/golden/types-null-unresolved/tokens/txt
1539+/* tre-448 %txt /tests/golden/types-null-unresolved/tree/txt
1540+/* typ-448 %txt /tests/golden/types-null-unresolved/types/txt
1541+/* src-449 %jibb /tests/golden/types-partial-apply/source/jibb
1542+/* tok-449 %txt /tests/golden/types-partial-apply/tokens/txt
1543+/* tre-449 %txt /tests/golden/types-partial-apply/tree/txt
1544+/* typ-449 %txt /tests/golden/types-partial-apply/types/txt
1545+/* src-450 %jibb /tests/golden/types-partial-atom-alias/source/jibb
1546+/* tok-450 %txt /tests/golden/types-partial-atom-alias/tokens/txt
1547+/* tre-450 %txt /tests/golden/types-partial-atom-alias/tree/txt
1548+/* typ-450 %txt /tests/golden/types-partial-atom-alias/types/txt
1549+/* src-451 %jibb /tests/golden/types-partial-atom-constraint/source/jibb
1550+/* tok-451 %txt /tests/golden/types-partial-atom-constraint/tokens/txt
1551+/* tre-451 %txt /tests/golden/types-partial-atom-constraint/tree/txt
1552+/* typ-451 %txt /tests/golden/types-partial-atom-constraint/types/txt
1553+/* src-452 %jibb /tests/golden/types-partial-atom-widening/source/jibb
1554+/* tok-452 %txt /tests/golden/types-partial-atom-widening/tokens/txt
1555+/* tre-452 %txt /tests/golden/types-partial-atom-widening/tree/txt
1556+/* typ-452 %txt /tests/golden/types-partial-atom-widening/types/txt
1557+/* src-453 %jibb /tests/golden/types-partial-aura/source/jibb
1558+/* tok-453 %txt /tests/golden/types-partial-aura/tokens/txt
1559+/* tre-453 %txt /tests/golden/types-partial-aura/tree/txt
1560+/* typ-453 %txt /tests/golden/types-partial-aura/types/txt
1561+/* src-454 %jibb /tests/golden/types-partial-aura-family/source/jibb
1562+/* tok-454 %txt /tests/golden/types-partial-aura-family/tokens/txt
1563+/* tre-454 %txt /tests/golden/types-partial-aura-family/tree/txt
1564+/* typ-454 %txt /tests/golden/types-partial-aura-family/types/txt
1565+/* src-455 %jibb /tests/golden/types-partial-aura-generalization/source/jibb
1566+/* tok-455 %txt /tests/golden/types-partial-aura-generalization/tokens/txt
1567+/* tre-455 %txt /tests/golden/types-partial-aura-generalization/tree/txt
1568+/* typ-455 %txt /tests/golden/types-partial-aura-generalization/types/txt
1569+/* src-456 %jibb /tests/golden/types-partial-bare-atom/source/jibb
1570+/* tok-456 %txt /tests/golden/types-partial-bare-atom/tokens/txt
1571+/* tre-456 %txt /tests/golden/types-partial-bare-atom/tree/txt
1572+/* typ-456 %txt /tests/golden/types-partial-bare-atom/types/txt
1573+/* src-457 %jibb /tests/golden/types-partial-branch-widening/source/jibb
1574+/* tok-457 %txt /tests/golden/types-partial-branch-widening/tokens/txt
1575+/* tre-457 %txt /tests/golden/types-partial-branch-widening/tree/txt
1576+/* typ-457 %txt /tests/golden/types-partial-branch-widening/types/txt
1577+/* src-458 %jibb /tests/golden/types-partial-conflicting-sites/source/jibb
1578+/* tok-458 %txt /tests/golden/types-partial-conflicting-sites/tokens/txt
1579+/* tre-458 %txt /tests/golden/types-partial-conflicting-sites/tree/txt
1580+/* typ-458 %txt /tests/golden/types-partial-conflicting-sites/types/txt
1581+/* src-459 %jibb /tests/golden/types-partial-decimal-default/source/jibb
1582+/* tok-459 %txt /tests/golden/types-partial-decimal-default/tokens/txt
1583+/* tre-459 %txt /tests/golden/types-partial-decimal-default/tree/txt
1584+/* typ-459 %txt /tests/golden/types-partial-decimal-default/types/txt
1585+/* src-460 %jibb /tests/golden/types-partial-dependency-chain/source/jibb
1586+/* tok-460 %txt /tests/golden/types-partial-dependency-chain/tokens/txt
1587+/* tre-460 %txt /tests/golden/types-partial-dependency-chain/tree/txt
1588+/* typ-460 %txt /tests/golden/types-partial-dependency-chain/types/txt
1589+/* src-461 %jibb /tests/golden/types-partial-explicit-capital/source/jibb
1590+/* tok-461 %txt /tests/golden/types-partial-explicit-capital/tokens/txt
1591+/* tre-461 %txt /tests/golden/types-partial-explicit-capital/tree/txt
1592+/* typ-461 %txt /tests/golden/types-partial-explicit-capital/types/txt
1593+/* src-462 %jibb /tests/golden/types-partial-forward/source/jibb
1594+/* tok-462 %txt /tests/golden/types-partial-forward/tokens/txt
1595+/* tre-462 %txt /tests/golden/types-partial-forward/tree/txt
1596+/* typ-462 %txt /tests/golden/types-partial-forward/types/txt
1597+/* src-463 %jibb /tests/golden/types-partial-generalization/source/jibb
1598+/* tok-463 %txt /tests/golden/types-partial-generalization/tokens/txt
1599+/* tre-463 %txt /tests/golden/types-partial-generalization/tree/txt
1600+/* typ-463 %txt /tests/golden/types-partial-generalization/types/txt
1601+/* src-464 %jibb /tests/golden/types-partial-identity/source/jibb
1602+/* tok-464 %txt /tests/golden/types-partial-identity/tokens/txt
1603+/* tre-464 %txt /tests/golden/types-partial-identity/tree/txt
1604+/* typ-464 %txt /tests/golden/types-partial-identity/types/txt
1605+/* src-465 %jibb /tests/golden/types-partial-independent-atoms/source/jibb
1606+/* tok-465 %txt /tests/golden/types-partial-independent-atoms/tokens/txt
1607+/* tre-465 %txt /tests/golden/types-partial-independent-atoms/tree/txt
1608+/* typ-465 %txt /tests/golden/types-partial-independent-atoms/types/txt
1609+/* src-466 %jibb /tests/golden/types-partial-local-molds/source/jibb
1610+/* tok-466 %txt /tests/golden/types-partial-local-molds/tokens/txt
1611+/* tre-466 %txt /tests/golden/types-partial-local-molds/tree/txt
1612+/* typ-466 %txt /tests/golden/types-partial-local-molds/types/txt
1613+/* src-467 %jibb /tests/golden/types-partial-locals/source/jibb
1614+/* tok-467 %txt /tests/golden/types-partial-locals/tokens/txt
1615+/* tre-467 %txt /tests/golden/types-partial-locals/tree/txt
1616+/* typ-467 %txt /tests/golden/types-partial-locals/types/txt
1617+/* src-468 %jibb /tests/golden/types-partial-many-atom-constraints/source/jibb
1618+/* tok-468 %txt /tests/golden/types-partial-many-atom-constraints/tokens/txt
1619+/* tre-468 %txt /tests/golden/types-partial-many-atom-constraints/tree/txt
1620+/* typ-468 %txt /tests/golden/types-partial-many-atom-constraints/types/txt
1621+/* src-469 %jibb /tests/golden/types-partial-mold-bare-aura/source/jibb
1622+/* tok-469 %txt /tests/golden/types-partial-mold-bare-aura/tokens/txt
1623+/* tre-469 %txt /tests/golden/types-partial-mold-bare-aura/tree/txt
1624+/* typ-469 %txt /tests/golden/types-partial-mold-bare-aura/types/txt
1625+/* src-470 %jibb /tests/golden/types-partial-mold-composite/source/jibb
1626+/* tok-470 %txt /tests/golden/types-partial-mold-composite/tokens/txt
1627+/* tre-470 %txt /tests/golden/types-partial-mold-composite/tree/txt
1628+/* typ-470 %txt /tests/golden/types-partial-mold-composite/types/txt
1629+/* src-471 %jibb /tests/golden/types-partial-mold-forward/source/jibb
1630+/* tok-471 %txt /tests/golden/types-partial-mold-forward/tokens/txt
1631+/* tre-471 %txt /tests/golden/types-partial-mold-forward/tree/txt
1632+/* typ-471 %txt /tests/golden/types-partial-mold-forward/types/txt
1633+/* src-472 %jibb /tests/golden/types-partial-mold-recursive/source/jibb
1634+/* tok-472 %txt /tests/golden/types-partial-mold-recursive/tokens/txt
1635+/* tre-472 %txt /tests/golden/types-partial-mold-recursive/tree/txt
1636+/* typ-472 %txt /tests/golden/types-partial-mold-recursive/types/txt
1637+/* src-473 %jibb /tests/golden/types-partial-occurs/source/jibb
1638+/* tok-473 %txt /tests/golden/types-partial-occurs/tokens/txt
1639+/* tre-473 %txt /tests/golden/types-partial-occurs/tree/txt
1640+/* typ-473 %txt /tests/golden/types-partial-occurs/types/txt
1641+/* src-474 %jibb /tests/golden/types-partial-projection/source/jibb
1642+/* tok-474 %txt /tests/golden/types-partial-projection/tokens/txt
1643+/* tre-474 %txt /tests/golden/types-partial-projection/tree/txt
1644+/* typ-474 %txt /tests/golden/types-partial-projection/types/txt
1645+/* src-475 %jibb /tests/golden/types-partial-shadow-global/source/jibb
1646+/* tok-475 %txt /tests/golden/types-partial-shadow-global/tokens/txt
1647+/* tre-475 %txt /tests/golden/types-partial-shadow-global/tree/txt
1648+/* typ-475 %txt /tests/golden/types-partial-shadow-global/types/txt
1649+/* src-476 %jibb /tests/golden/types-partial-shared-tvar/source/jibb
1650+/* tok-476 %txt /tests/golden/types-partial-shared-tvar/tokens/txt
1651+/* tre-476 %txt /tests/golden/types-partial-shared-tvar/tree/txt
1652+/* typ-476 %txt /tests/golden/types-partial-shared-tvar/types/txt
1653+/* src-477 %jibb /tests/golden/types-partial-union-cases/source/jibb
1654+/* tok-477 %txt /tests/golden/types-partial-union-cases/tokens/txt
1655+/* tre-477 %txt /tests/golden/types-partial-union-cases/tree/txt
1656+/* typ-477 %txt /tests/golden/types-partial-union-cases/types/txt
1657+/* src-478 %jibb /tests/golden/types-partial-union-edges/source/jibb
1658+/* tok-478 %txt /tests/golden/types-partial-union-edges/tokens/txt
1659+/* tre-478 %txt /tests/golden/types-partial-union-edges/tree/txt
1660+/* typ-478 %txt /tests/golden/types-partial-union-edges/types/txt
1661+/* src-479 %jibb /tests/golden/types-partial-unresolved-tag/source/jibb
1662+/* tok-479 %txt /tests/golden/types-partial-unresolved-tag/tokens/txt
1663+/* tre-479 %txt /tests/golden/types-partial-unresolved-tag/tree/txt
1664+/* typ-479 %txt /tests/golden/types-partial-unresolved-tag/types/txt
1665+/* src-480 %jibb /tests/golden/types-prelude-direct/source/jibb
1666+/* tok-480 %txt /tests/golden/types-prelude-direct/tokens/txt
1667+/* tre-480 %txt /tests/golden/types-prelude-direct/tree/txt
1668+/* typ-480 %txt /tests/golden/types-prelude-direct/types/txt
1669+/* src-481 %jibb /tests/golden/types-prelude-interface/source/jibb
1670+/* tok-481 %txt /tests/golden/types-prelude-interface/tokens/txt
1671+/* tre-481 %txt /tests/golden/types-prelude-interface/tree/txt
1672+/* mod-481-1 %jibb /tests/golden/types-prelude-interface/modules/ui/left/jibb
1673+/* mod-481-2 %jibb /tests/golden/types-prelude-interface/modules/ui/right/jibb
1674+/* typ-481 %txt /tests/golden/types-prelude-interface/types/txt
1675+/* mtre-481 %txt /tests/golden/types-prelude-interface/module-trees/txt
1676+/* src-482 %jibb /tests/golden/types-prelude-list-functions/source/jibb
1677+/* tok-482 %txt /tests/golden/types-prelude-list-functions/tokens/txt
1678+/* tre-482 %txt /tests/golden/types-prelude-list-functions/tree/txt
1679+/* mod-482-1 %jibb /tests/golden/types-prelude-list-functions/modules/ui/lib/jibb
1680+/* typ-482 %txt /tests/golden/types-prelude-list-functions/types/txt
1681+/* mtre-482 %txt /tests/golden/types-prelude-list-functions/module-trees/txt
1682+/* src-483 %jibb /tests/golden/types-record-bound-variable/source/jibb
1683+/* tok-483 %txt /tests/golden/types-record-bound-variable/tokens/txt
1684+/* tre-483 %txt /tests/golden/types-record-bound-variable/tree/txt
1685+/* typ-483 %txt /tests/golden/types-record-bound-variable/types/txt
1686+/* src-484 %jibb /tests/golden/types-record-faces/source/jibb
1687+/* tok-484 %txt /tests/golden/types-record-faces/tokens/txt
1688+/* tre-484 %txt /tests/golden/types-record-faces/tree/txt
1689+/* typ-484 %txt /tests/golden/types-record-faces/types/txt
1690+/* src-485 %jibb /tests/golden/types-record-import/source/jibb
1691+/* tok-485 %txt /tests/golden/types-record-import/tokens/txt
1692+/* tre-485 %txt /tests/golden/types-record-import/tree/txt
1693+/* mod-485-1 %jibb /tests/golden/types-record-import/modules/ui/lib/jibb
1694+/* typ-485 %txt /tests/golden/types-record-import/types/txt
1695+/* mtre-485 %txt /tests/golden/types-record-import/module-trees/txt
1696+/* src-486 %jibb /tests/golden/types-record-local-scheme/source/jibb
1697+/* tok-486 %txt /tests/golden/types-record-local-scheme/tokens/txt
1698+/* tre-486 %txt /tests/golden/types-record-local-scheme/tree/txt
1699+/* typ-486 %txt /tests/golden/types-record-local-scheme/types/txt
1700+/* src-487 %jibb /tests/golden/types-record-nested/source/jibb
1701+/* tok-487 %txt /tests/golden/types-record-nested/tokens/txt
1702+/* tre-487 %txt /tests/golden/types-record-nested/tree/txt
1703+/* typ-487 %txt /tests/golden/types-record-nested/types/txt
1704+/* src-488 %jibb /tests/golden/types-record-to-tuple/source/jibb
1705+/* tok-488 %txt /tests/golden/types-record-to-tuple/tokens/txt
1706+/* tre-488 %txt /tests/golden/types-record-to-tuple/tree/txt
1707+/* typ-488 %txt /tests/golden/types-record-to-tuple/types/txt
1708+/* src-489 %jibb /tests/golden/types-recursion-scc-failures/source/jibb
1709+/* tok-489 %txt /tests/golden/types-recursion-scc-failures/tokens/txt
1710+/* tre-489 %txt /tests/golden/types-recursion-scc-failures/tree/txt
1711+/* typ-489 %txt /tests/golden/types-recursion-scc-failures/types/txt
1712+/* src-490 %jibb /tests/golden/types-recursion-scc-groups/source/jibb
1713+/* tok-490 %txt /tests/golden/types-recursion-scc-groups/tokens/txt
1714+/* tre-490 %txt /tests/golden/types-recursion-scc-groups/tree/txt
1715+/* typ-490 %txt /tests/golden/types-recursion-scc-groups/types/txt
1716+/* src-491 %jibb /tests/golden/types-recursion-scc-import/source/jibb
1717+/* tok-491 %txt /tests/golden/types-recursion-scc-import/tokens/txt
1718+/* tre-491 %txt /tests/golden/types-recursion-scc-import/tree/txt
1719+/* mod-491-1 %jibb /tests/golden/types-recursion-scc-import/modules/ui/lib/jibb
1720+/* typ-491 %txt /tests/golden/types-recursion-scc-import/types/txt
1721+/* mtre-491 %txt /tests/golden/types-recursion-scc-import/module-trees/txt
1722+/* src-492 %jibb /tests/golden/types-recursion-scc-import-bad/source/jibb
1723+/* tok-492 %txt /tests/golden/types-recursion-scc-import-bad/tokens/txt
1724+/* tre-492 %txt /tests/golden/types-recursion-scc-import-bad/tree/txt
1725+/* mod-492-1 %jibb /tests/golden/types-recursion-scc-import-bad/modules/ui/lib/jibb
1726+/* typ-492 %txt /tests/golden/types-recursion-scc-import-bad/types/txt
1727+/* mtre-492 %txt /tests/golden/types-recursion-scc-import-bad/module-trees/txt
1728+/* src-493 %jibb /tests/golden/types-recursion-scc-local/source/jibb
1729+/* tok-493 %txt /tests/golden/types-recursion-scc-local/tokens/txt
1730+/* tre-493 %txt /tests/golden/types-recursion-scc-local/tree/txt
1731+/* typ-493 %txt /tests/golden/types-recursion-scc-local/types/txt
1732+/* src-494 %jibb /tests/golden/types-recursion-scc-order/source/jibb
1733+/* tok-494 %txt /tests/golden/types-recursion-scc-order/tokens/txt
1734+/* tre-494 %txt /tests/golden/types-recursion-scc-order/tree/txt
1735+/* typ-494 %txt /tests/golden/types-recursion-scc-order/types/txt
1736+/* src-495 %jibb /tests/golden/types-recursion-scc-shadow/source/jibb
1737+/* tok-495 %txt /tests/golden/types-recursion-scc-shadow/tokens/txt
1738+/* tre-495 %txt /tests/golden/types-recursion-scc-shadow/tree/txt
1739+/* typ-495 %txt /tests/golden/types-recursion-scc-shadow/types/txt
1740+/* src-496 %jibb /tests/golden/types-recursive-branch/source/jibb
1741+/* tok-496 %txt /tests/golden/types-recursive-branch/tokens/txt
1742+/* tre-496 %txt /tests/golden/types-recursive-branch/tree/txt
1743+/* typ-496 %txt /tests/golden/types-recursive-branch/types/txt
1744+/* src-497 %jibb /tests/golden/types-recursive-gate/source/jibb
1745+/* tok-497 %txt /tests/golden/types-recursive-gate/tokens/txt
1746+/* tre-497 %txt /tests/golden/types-recursive-gate/tree/txt
1747+/* typ-497 %txt /tests/golden/types-recursive-gate/types/txt
1748+/* src-498 %jibb /tests/golden/types-recursive-sample/source/jibb
1749+/* tok-498 %txt /tests/golden/types-recursive-sample/tokens/txt
1750+/* tre-498 %txt /tests/golden/types-recursive-sample/tree/txt
1751+/* typ-498 %txt /tests/golden/types-recursive-sample/types/txt
1752+/* src-499 %jibb /tests/golden/types-string-interpolation/source/jibb
1753+/* tok-499 %txt /tests/golden/types-string-interpolation/tokens/txt
1754+/* tre-499 %txt /tests/golden/types-string-interpolation/tree/txt
1755+/* typ-499 %txt /tests/golden/types-string-interpolation/types/txt
1756+/* src-500 %jibb /tests/golden/types-union-alias/source/jibb
1757+/* tok-500 %txt /tests/golden/types-union-alias/tokens/txt
1758+/* tre-500 %txt /tests/golden/types-union-alias/tree/txt
1759+/* typ-500 %txt /tests/golden/types-union-alias/types/txt
1760+/* src-501 %jibb /tests/golden/types-union-branch-context/source/jibb
1761+/* tok-501 %txt /tests/golden/types-union-branch-context/tokens/txt
1762+/* tre-501 %txt /tests/golden/types-union-branch-context/tree/txt
1763+/* typ-501 %txt /tests/golden/types-union-branch-context/types/txt
1764+/* src-502 %jibb /tests/golden/types-union-branch-pending/source/jibb
1765+/* tok-502 %txt /tests/golden/types-union-branch-pending/tokens/txt
1766+/* tre-502 %txt /tests/golden/types-union-branch-pending/tree/txt
1767+/* typ-502 %txt /tests/golden/types-union-branch-pending/types/txt
1768+/* src-503 %jibb /tests/golden/types-union-constructor-shape/source/jibb
1769+/* tok-503 %txt /tests/golden/types-union-constructor-shape/tokens/txt
1770+/* tre-503 %txt /tests/golden/types-union-constructor-shape/tree/txt
1771+/* typ-503 %txt /tests/golden/types-union-constructor-shape/types/txt
1772+/* src-504 %jibb /tests/golden/types-union-context-flow/source/jibb
1773+/* tok-504 %txt /tests/golden/types-union-context-flow/tokens/txt
1774+/* tre-504 %txt /tests/golden/types-union-context-flow/tree/txt
1775+/* typ-504 %txt /tests/golden/types-union-context-flow/types/txt
1776+/* src-505 %jibb /tests/golden/types-union-import/source/jibb
1777+/* tok-505 %txt /tests/golden/types-union-import/tokens/txt
1778+/* tre-505 %txt /tests/golden/types-union-import/tree/txt
1779+/* mod-505-1 %jibb /tests/golden/types-union-import/modules/ui/lib/jibb
1780+/* typ-505 %txt /tests/golden/types-union-import/types/txt
1781+/* mtre-505 %txt /tests/golden/types-union-import/module-trees/txt
1782+/* src-506 %jibb /tests/golden/types-union-local-pending/source/jibb
1783+/* tok-506 %txt /tests/golden/types-union-local-pending/tokens/txt
1784+/* tre-506 %txt /tests/golden/types-union-local-pending/tree/txt
1785+/* typ-506 %txt /tests/golden/types-union-local-pending/types/txt
1786+/* src-507 %jibb /tests/golden/types-union-overlap/source/jibb
1787+/* tok-507 %txt /tests/golden/types-union-overlap/tokens/txt
1788+/* tre-507 %txt /tests/golden/types-union-overlap/tree/txt
1789+/* typ-507 %txt /tests/golden/types-union-overlap/types/txt
1790+/* src-508 %jibb /tests/golden/types-union-overlap-nested/source/jibb
1791+/* tok-508 %txt /tests/golden/types-union-overlap-nested/tokens/txt
1792+/* tre-508 %txt /tests/golden/types-union-overlap-nested/tree/txt
1793+/* typ-508 %txt /tests/golden/types-union-overlap-nested/types/txt
1794+/* src-509 %jibb /tests/golden/types-union-patterns/source/jibb
1795+/* tok-509 %txt /tests/golden/types-union-patterns/tokens/txt
1796+/* tre-509 %txt /tests/golden/types-union-patterns/tree/txt
1797+/* typ-509 %txt /tests/golden/types-union-patterns/types/txt
1798+/* src-510 %jibb /tests/golden/types-union-patterns-generic/source/jibb
1799+/* tok-510 %txt /tests/golden/types-union-patterns-generic/tokens/txt
1800+/* tre-510 %txt /tests/golden/types-union-patterns-generic/tree/txt
1801+/* typ-510 %txt /tests/golden/types-union-patterns-generic/types/txt
1802+/* src-511 %jibb /tests/golden/types-union-patterns-import/source/jibb
1803+/* tok-511 %txt /tests/golden/types-union-patterns-import/tokens/txt
1804+/* tre-511 %txt /tests/golden/types-union-patterns-import/tree/txt
1805+/* mod-511-1 %jibb /tests/golden/types-union-patterns-import/modules/ui/lib/jibb
1806+/* typ-511 %txt /tests/golden/types-union-patterns-import/types/txt
1807+/* mtre-511 %txt /tests/golden/types-union-patterns-import/module-trees/txt
1808+/* src-512 %jibb /tests/golden/types-union-phantom-generic/source/jibb
1809+/* tok-512 %txt /tests/golden/types-union-phantom-generic/tokens/txt
1810+/* tre-512 %txt /tests/golden/types-union-phantom-generic/tree/txt
1811+/* typ-512 %txt /tests/golden/types-union-phantom-generic/types/txt
1812+/* src-513 %jibb /tests/golden/types-union-print-cross-namespace/source/jibb
1813+/* tok-513 %txt /tests/golden/types-union-print-cross-namespace/tokens/txt
1814+/* tre-513 %txt /tests/golden/types-union-print-cross-namespace/tree/txt
1815+/* mod-513-1 %jibb /tests/golden/types-union-print-cross-namespace/modules/ui/lib/jibb
1816+/* typ-513 %txt /tests/golden/types-union-print-cross-namespace/types/txt
1817+/* mtre-513 %txt /tests/golden/types-union-print-cross-namespace/module-trees/txt
1818+/* src-514 %jibb /tests/golden/types-union-print-distinct/source/jibb
1819+/* tok-514 %txt /tests/golden/types-union-print-distinct/tokens/txt
1820+/* tre-514 %txt /tests/golden/types-union-print-distinct/tree/txt
1821+/* mod-514-1 %jibb /tests/golden/types-union-print-distinct/modules/ui/left/jibb
1822+/* mod-514-2 %jibb /tests/golden/types-union-print-distinct/modules/ui/right/jibb
1823+/* mod-514-3 %jibb /tests/golden/types-union-print-distinct/modules/ui/twin/jibb
1824+/* typ-514 %txt /tests/golden/types-union-print-distinct/types/txt
1825+/* mtre-514 %txt /tests/golden/types-union-print-distinct/module-trees/txt
1826+/* src-515 %jibb /tests/golden/types-union-print-escape/source/jibb
1827+/* tok-515 %txt /tests/golden/types-union-print-escape/tokens/txt
1828+/* tre-515 %txt /tests/golden/types-union-print-escape/tree/txt
1829+/* typ-515 %txt /tests/golden/types-union-print-escape/types/txt
1830+/* src-516 %jibb /tests/golden/types-union-print-local/source/jibb
1831+/* tok-516 %txt /tests/golden/types-union-print-local/tokens/txt
1832+/* tre-516 %txt /tests/golden/types-union-print-local/tree/txt
1833+/* typ-516 %txt /tests/golden/types-union-print-local/types/txt
1834+/* src-517 %jibb /tests/golden/types-union-print-nested/source/jibb
1835+/* tok-517 %txt /tests/golden/types-union-print-nested/tokens/txt
1836+/* tre-517 %txt /tests/golden/types-union-print-nested/tree/txt
1837+/* typ-517 %txt /tests/golden/types-union-print-nested/types/txt
1838+/* src-518 %jibb /tests/golden/types-union-print-same-origin/source/jibb
1839+/* tok-518 %txt /tests/golden/types-union-print-same-origin/tokens/txt
1840+/* tre-518 %txt /tests/golden/types-union-print-same-origin/tree/txt
1841+/* mod-518-1 %jibb /tests/golden/types-union-print-same-origin/modules/ui/shared/jibb
1842+/* typ-518 %txt /tests/golden/types-union-print-same-origin/types/txt
1843+/* mtre-518 %txt /tests/golden/types-union-print-same-origin/module-trees/txt
1844+/* src-519 %jibb /tests/golden/types-union-print-transitive/source/jibb
1845+/* tok-519 %txt /tests/golden/types-union-print-transitive/tokens/txt
1846+/* tre-519 %txt /tests/golden/types-union-print-transitive/tree/txt
1847+/* mod-519-1 %jibb /tests/golden/types-union-print-transitive/modules/ui/mid/jibb
1848+/* mod-519-2 %jibb /tests/golden/types-union-print-transitive/modules/ui/base/jibb
1849+/* typ-519 %txt /tests/golden/types-union-print-transitive/types/txt
1850+/* mtre-519 %txt /tests/golden/types-union-print-transitive/module-trees/txt
1851+/* src-520 %jibb /tests/golden/types-union-singleton/source/jibb
1852+/* tok-520 %txt /tests/golden/types-union-singleton/tokens/txt
1853+/* tre-520 %txt /tests/golden/types-union-singleton/tree/txt
1854+/* typ-520 %txt /tests/golden/types-union-singleton/types/txt
1855+/* src-521 %jibb /tests/golden/types-union-tag-atoms/source/jibb
1856+/* tok-521 %txt /tests/golden/types-union-tag-atoms/tokens/txt
1857+/* tre-521 %txt /tests/golden/types-union-tag-atoms/tree/txt
1858+/* typ-521 %txt /tests/golden/types-union-tag-atoms/types/txt
1859+/* src-522 %jibb /tests/golden/types-union-tags/source/jibb
1860+/* tok-522 %txt /tests/golden/types-union-tags/tokens/txt
1861+/* tre-522 %txt /tests/golden/types-union-tags/tree/txt
1862+/* typ-522 %txt /tests/golden/types-union-tags/types/txt
1863+/* src-523 %jibb /tests/golden/types-union-unresolved/source/jibb
1864+/* tok-523 %txt /tests/golden/types-union-unresolved/tokens/txt
1865+/* tre-523 %txt /tests/golden/types-union-unresolved/tree/txt
1866+/* typ-523 %txt /tests/golden/types-union-unresolved/types/txt
1867+/* src-524 %jibb /tests/golden/types-union-unresolved-flow/source/jibb
1868+/* tok-524 %txt /tests/golden/types-union-unresolved-flow/tokens/txt
1869+/* tre-524 %txt /tests/golden/types-union-unresolved-flow/tree/txt
1870+/* typ-524 %txt /tests/golden/types-union-unresolved-flow/types/txt
1871+/* src-525 %jibb /tests/golden/types-unit-context/source/jibb
1872+/* tok-525 %txt /tests/golden/types-unit-context/tokens/txt
1873+/* tre-525 %txt /tests/golden/types-unit-context/tree/txt
1874+/* typ-525 %txt /tests/golden/types-unit-context/types/txt
1875+/* src-526 %jibb /tests/golden/types-unit-patterns/source/jibb
1876+/* tok-526 %txt /tests/golden/types-unit-patterns/tokens/txt
1877+/* tre-526 %txt /tests/golden/types-unit-patterns/tree/txt
1878+/* typ-526 %txt /tests/golden/types-unit-patterns/types/txt
18601879=/ prepared-prelude (prepare-prelude:jibb prelude-source)
18611880|%
18621881:: one arm per case
@@ -1870,7 +1889,7 @@
18701889++ test-doc-grammar-03-view-day
18711890 (check ~.doc-grammar-03-view-day src-4 `tok-4 `tre-4)
18721891++ test-doc-grammar-04-step
1873− (check ~.doc-grammar-04-step src-5 `tok-5 `tre-5)
1892+ (weld (check ~.doc-grammar-04-step src-5 `tok-5 `tre-5) (check-module-types ~.doc-grammar-04-step ~[%tests %golden ~.doc-grammar-04-step %source %jibb] src-5 `typ-5 ~ ~ ~))
18741893++ test-doc-grammar-06-cart-store
18751894 (check ~.doc-grammar-06-cart-store src-6 `tok-6 `tre-6)
18761895++ test-doc-grammar-07-basket
@@ -2737,174 +2756,182 @@
27372756 (weld (check ~.types-list-pattern-imported src-437 `tok-437 `tre-437) (check-module-types ~.types-list-pattern-imported ~[%tests %golden ~.types-list-pattern-imported %source %jibb] src-437 `typ-437 ~[[%fixture %texts imp-437-1] [%fixture %text-set imp-437-2]] ~ ~))
27382757++ test-types-list-patterns
27392758 (weld (check ~.types-list-patterns src-438 `tok-438 `tre-438) (check-module-types ~.types-list-patterns ~[%tests %golden ~.types-list-patterns %source %jibb] src-438 `typ-438 ~ ~ ~))
2759+++ test-types-list-zero-fit
2760+ (weld (check ~.types-list-zero-fit src-439 `tok-439 `tre-439) (check-module-types ~.types-list-zero-fit ~[%tests %golden ~.types-list-zero-fit %source %jibb] src-439 `typ-439 ~ ~ ~))
27402761++ test-types-local-capitals
2741− (weld (check ~.types-local-capitals src-439 `tok-439 `tre-439) (check-module-types ~.types-local-capitals ~[%tests %golden ~.types-local-capitals %source %jibb] src-439 `typ-439 ~ ~ ~))
2762+ (weld (check ~.types-local-capitals src-440 `tok-440 `tre-440) (check-module-types ~.types-local-capitals ~[%tests %golden ~.types-local-capitals %source %jibb] src-440 `typ-440 ~ ~ ~))
27422763++ test-types-local-recursive
2743− (weld (check ~.types-local-recursive src-440 `tok-440 `tre-440) (check-module-types ~.types-local-recursive ~[%tests %golden ~.types-local-recursive %source %jibb] src-440 `typ-440 ~ ~ ~))
2764+ (weld (check ~.types-local-recursive src-441 `tok-441 `tre-441) (check-module-types ~.types-local-recursive ~[%tests %golden ~.types-local-recursive %source %jibb] src-441 `typ-441 ~ ~ ~))
27442765++ test-types-module-fixtures
2745− (weld (weld (check-at ~.types-module-fixtures ~[~.ui ~.blog ~.index ~.jibb] src-441 `tok-441 `tre-441) (check-module-types ~.types-module-fixtures ~[~.ui ~.blog ~.index ~.jibb] src-441 `typ-441 ~ ~ ~[['/ui/api/blog.jibb' ~[~.ui ~.api ~.blog ~.jibb] mod-441-1] ['/ui/components/card.jibb' ~[~.ui ~.components ~.card ~.jibb] mod-441-2]])) (check-module-trees ~.types-module-fixtures `mtre-441 ~[['/ui/api/blog.jibb' ~[~.ui ~.api ~.blog ~.jibb] mod-441-1] ['/ui/components/card.jibb' ~[~.ui ~.components ~.card ~.jibb] mod-441-2]]))
2766+ (weld (weld (check-at ~.types-module-fixtures ~[~.ui ~.blog ~.index ~.jibb] src-442 `tok-442 `tre-442) (check-module-types ~.types-module-fixtures ~[~.ui ~.blog ~.index ~.jibb] src-442 `typ-442 ~ ~ ~[['/ui/api/blog.jibb' ~[~.ui ~.api ~.blog ~.jibb] mod-442-1] ['/ui/components/card.jibb' ~[~.ui ~.components ~.card ~.jibb] mod-442-2]])) (check-module-trees ~.types-module-fixtures `mtre-442 ~[['/ui/api/blog.jibb' ~[~.ui ~.api ~.blog ~.jibb] mod-442-1] ['/ui/components/card.jibb' ~[~.ui ~.components ~.card ~.jibb] mod-442-2]]))
27462767++ test-types-module-mixed
2747− (weld (weld (check ~.types-module-mixed src-442 `tok-442 `tre-442) (check-module-types ~.types-module-mixed ~[%tests %golden ~.types-module-mixed %source %jibb] src-442 `typ-442 ~[[%fixture %title imp-442-1]] ~[[%label mark-442-1]] ~[['/ui/helper.jibb' ~[~.ui ~.helper ~.jibb] mod-442-1]])) (check-module-trees ~.types-module-mixed `mtre-442 ~[['/ui/helper.jibb' ~[~.ui ~.helper ~.jibb] mod-442-1]]))
2768+ (weld (weld (check ~.types-module-mixed src-443 `tok-443 `tre-443) (check-module-types ~.types-module-mixed ~[%tests %golden ~.types-module-mixed %source %jibb] src-443 `typ-443 ~[[%fixture %title imp-443-1]] ~[[%label mark-443-1]] ~[['/ui/helper.jibb' ~[~.ui ~.helper ~.jibb] mod-443-1]])) (check-module-trees ~.types-module-mixed `mtre-443 ~[['/ui/helper.jibb' ~[~.ui ~.helper ~.jibb] mod-443-1]]))
27482769++ test-types-multi-call
2749− (weld (check ~.types-multi-call src-443 `tok-443 `tre-443) (check-module-types ~.types-multi-call ~[%tests %golden ~.types-multi-call %source %jibb] src-443 `typ-443 ~ ~ ~))
2770+ (weld (check ~.types-multi-call src-444 `tok-444 `tre-444) (check-module-types ~.types-multi-call ~[%tests %golden ~.types-multi-call %source %jibb] src-444 `typ-444 ~ ~ ~))
27502771++ test-types-multi-import
2751− (weld (weld (check ~.types-multi-import src-444 `tok-444 `tre-444) (check-module-types ~.types-multi-import ~[%tests %golden ~.types-multi-import %source %jibb] src-444 `typ-444 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-444-1]])) (check-module-trees ~.types-multi-import `mtre-444 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-444-1]]))
2772+ (weld (weld (check ~.types-multi-import src-445 `tok-445 `tre-445) (check-module-types ~.types-multi-import ~[%tests %golden ~.types-multi-import %source %jibb] src-445 `typ-445 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-445-1]])) (check-module-trees ~.types-multi-import `mtre-445 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-445-1]]))
27522773++ test-types-null-context
2753− (weld (check ~.types-null-context src-445 `tok-445 `tre-445) (check-types ~.types-null-context ~[%tests %golden ~.types-null-context %source %jibb] src-445 `typ-445))
2774+ (weld (check ~.types-null-context src-446 `tok-446 `tre-446) (check-types ~.types-null-context ~[%tests %golden ~.types-null-context %source %jibb] src-446 `typ-446))
27542775++ test-types-null-overlap
2755− (weld (check ~.types-null-overlap src-446 `tok-446 `tre-446) (check-types ~.types-null-overlap ~[%tests %golden ~.types-null-overlap %source %jibb] src-446 `typ-446))
2776+ (weld (check ~.types-null-overlap src-447 `tok-447 `tre-447) (check-types ~.types-null-overlap ~[%tests %golden ~.types-null-overlap %source %jibb] src-447 `typ-447))
27562777++ test-types-null-unresolved
2757− (weld (check ~.types-null-unresolved src-447 `tok-447 `tre-447) (check-types ~.types-null-unresolved ~[%tests %golden ~.types-null-unresolved %source %jibb] src-447 `typ-447))
2778+ (weld (check ~.types-null-unresolved src-448 `tok-448 `tre-448) (check-types ~.types-null-unresolved ~[%tests %golden ~.types-null-unresolved %source %jibb] src-448 `typ-448))
27582779++ test-types-partial-apply
2759− (weld (check ~.types-partial-apply src-448 `tok-448 `tre-448) (check-types ~.types-partial-apply ~[%tests %golden ~.types-partial-apply %source %jibb] src-448 `typ-448))
2780+ (weld (check ~.types-partial-apply src-449 `tok-449 `tre-449) (check-types ~.types-partial-apply ~[%tests %golden ~.types-partial-apply %source %jibb] src-449 `typ-449))
27602781++ test-types-partial-atom-alias
2761− (weld (check ~.types-partial-atom-alias src-449 `tok-449 `tre-449) (check-types ~.types-partial-atom-alias ~[%tests %golden ~.types-partial-atom-alias %source %jibb] src-449 `typ-449))
2782+ (weld (check ~.types-partial-atom-alias src-450 `tok-450 `tre-450) (check-types ~.types-partial-atom-alias ~[%tests %golden ~.types-partial-atom-alias %source %jibb] src-450 `typ-450))
27622783++ test-types-partial-atom-constraint
2763− (weld (check ~.types-partial-atom-constraint src-450 `tok-450 `tre-450) (check-types ~.types-partial-atom-constraint ~[%tests %golden ~.types-partial-atom-constraint %source %jibb] src-450 `typ-450))
2784+ (weld (check ~.types-partial-atom-constraint src-451 `tok-451 `tre-451) (check-types ~.types-partial-atom-constraint ~[%tests %golden ~.types-partial-atom-constraint %source %jibb] src-451 `typ-451))
27642785++ test-types-partial-atom-widening
2765− (weld (check ~.types-partial-atom-widening src-451 `tok-451 `tre-451) (check-types ~.types-partial-atom-widening ~[%tests %golden ~.types-partial-atom-widening %source %jibb] src-451 `typ-451))
2786+ (weld (check ~.types-partial-atom-widening src-452 `tok-452 `tre-452) (check-types ~.types-partial-atom-widening ~[%tests %golden ~.types-partial-atom-widening %source %jibb] src-452 `typ-452))
27662787++ test-types-partial-aura
2767− (weld (check ~.types-partial-aura src-452 `tok-452 `tre-452) (check-types ~.types-partial-aura ~[%tests %golden ~.types-partial-aura %source %jibb] src-452 `typ-452))
2788+ (weld (check ~.types-partial-aura src-453 `tok-453 `tre-453) (check-types ~.types-partial-aura ~[%tests %golden ~.types-partial-aura %source %jibb] src-453 `typ-453))
27682789++ test-types-partial-aura-family
2769− (weld (check ~.types-partial-aura-family src-453 `tok-453 `tre-453) (check-types ~.types-partial-aura-family ~[%tests %golden ~.types-partial-aura-family %source %jibb] src-453 `typ-453))
2790+ (weld (check ~.types-partial-aura-family src-454 `tok-454 `tre-454) (check-types ~.types-partial-aura-family ~[%tests %golden ~.types-partial-aura-family %source %jibb] src-454 `typ-454))
27702791++ test-types-partial-aura-generalization
2771− (weld (check ~.types-partial-aura-generalization src-454 `tok-454 `tre-454) (check-types ~.types-partial-aura-generalization ~[%tests %golden ~.types-partial-aura-generalization %source %jibb] src-454 `typ-454))
2792+ (weld (check ~.types-partial-aura-generalization src-455 `tok-455 `tre-455) (check-types ~.types-partial-aura-generalization ~[%tests %golden ~.types-partial-aura-generalization %source %jibb] src-455 `typ-455))
27722793++ test-types-partial-bare-atom
2773− (weld (check ~.types-partial-bare-atom src-455 `tok-455 `tre-455) (check-types ~.types-partial-bare-atom ~[%tests %golden ~.types-partial-bare-atom %source %jibb] src-455 `typ-455))
2794+ (weld (check ~.types-partial-bare-atom src-456 `tok-456 `tre-456) (check-types ~.types-partial-bare-atom ~[%tests %golden ~.types-partial-bare-atom %source %jibb] src-456 `typ-456))
27742795++ test-types-partial-branch-widening
2775− (weld (check ~.types-partial-branch-widening src-456 `tok-456 `tre-456) (check-types ~.types-partial-branch-widening ~[%tests %golden ~.types-partial-branch-widening %source %jibb] src-456 `typ-456))
2796+ (weld (check ~.types-partial-branch-widening src-457 `tok-457 `tre-457) (check-types ~.types-partial-branch-widening ~[%tests %golden ~.types-partial-branch-widening %source %jibb] src-457 `typ-457))
27762797++ test-types-partial-conflicting-sites
2777− (weld (check ~.types-partial-conflicting-sites src-457 `tok-457 `tre-457) (check-types ~.types-partial-conflicting-sites ~[%tests %golden ~.types-partial-conflicting-sites %source %jibb] src-457 `typ-457))
2798+ (weld (check ~.types-partial-conflicting-sites src-458 `tok-458 `tre-458) (check-types ~.types-partial-conflicting-sites ~[%tests %golden ~.types-partial-conflicting-sites %source %jibb] src-458 `typ-458))
27782799++ test-types-partial-decimal-default
2779− (weld (check ~.types-partial-decimal-default src-458 `tok-458 `tre-458) (check-types ~.types-partial-decimal-default ~[%tests %golden ~.types-partial-decimal-default %source %jibb] src-458 `typ-458))
2800+ (weld (check ~.types-partial-decimal-default src-459 `tok-459 `tre-459) (check-types ~.types-partial-decimal-default ~[%tests %golden ~.types-partial-decimal-default %source %jibb] src-459 `typ-459))
27802801++ test-types-partial-dependency-chain
2781− (weld (check ~.types-partial-dependency-chain src-459 `tok-459 `tre-459) (check-types ~.types-partial-dependency-chain ~[%tests %golden ~.types-partial-dependency-chain %source %jibb] src-459 `typ-459))
2802+ (weld (check ~.types-partial-dependency-chain src-460 `tok-460 `tre-460) (check-types ~.types-partial-dependency-chain ~[%tests %golden ~.types-partial-dependency-chain %source %jibb] src-460 `typ-460))
27822803++ test-types-partial-explicit-capital
2783− (weld (check ~.types-partial-explicit-capital src-460 `tok-460 `tre-460) (check-types ~.types-partial-explicit-capital ~[%tests %golden ~.types-partial-explicit-capital %source %jibb] src-460 `typ-460))
2804+ (weld (check ~.types-partial-explicit-capital src-461 `tok-461 `tre-461) (check-types ~.types-partial-explicit-capital ~[%tests %golden ~.types-partial-explicit-capital %source %jibb] src-461 `typ-461))
27842805++ test-types-partial-forward
2785− (weld (check ~.types-partial-forward src-461 `tok-461 `tre-461) (check-types ~.types-partial-forward ~[%tests %golden ~.types-partial-forward %source %jibb] src-461 `typ-461))
2806+ (weld (check ~.types-partial-forward src-462 `tok-462 `tre-462) (check-types ~.types-partial-forward ~[%tests %golden ~.types-partial-forward %source %jibb] src-462 `typ-462))
27862807++ test-types-partial-generalization
2787− (weld (check ~.types-partial-generalization src-462 `tok-462 `tre-462) (check-types ~.types-partial-generalization ~[%tests %golden ~.types-partial-generalization %source %jibb] src-462 `typ-462))
2808+ (weld (check ~.types-partial-generalization src-463 `tok-463 `tre-463) (check-types ~.types-partial-generalization ~[%tests %golden ~.types-partial-generalization %source %jibb] src-463 `typ-463))
27882809++ test-types-partial-identity
2789− (weld (check ~.types-partial-identity src-463 `tok-463 `tre-463) (check-types ~.types-partial-identity ~[%tests %golden ~.types-partial-identity %source %jibb] src-463 `typ-463))
2810+ (weld (check ~.types-partial-identity src-464 `tok-464 `tre-464) (check-types ~.types-partial-identity ~[%tests %golden ~.types-partial-identity %source %jibb] src-464 `typ-464))
27902811++ test-types-partial-independent-atoms
2791− (weld (check ~.types-partial-independent-atoms src-464 `tok-464 `tre-464) (check-types ~.types-partial-independent-atoms ~[%tests %golden ~.types-partial-independent-atoms %source %jibb] src-464 `typ-464))
2812+ (weld (check ~.types-partial-independent-atoms src-465 `tok-465 `tre-465) (check-types ~.types-partial-independent-atoms ~[%tests %golden ~.types-partial-independent-atoms %source %jibb] src-465 `typ-465))
27922813++ test-types-partial-local-molds
2793− (weld (check ~.types-partial-local-molds src-465 `tok-465 `tre-465) (check-types ~.types-partial-local-molds ~[%tests %golden ~.types-partial-local-molds %source %jibb] src-465 `typ-465))
2814+ (weld (check ~.types-partial-local-molds src-466 `tok-466 `tre-466) (check-types ~.types-partial-local-molds ~[%tests %golden ~.types-partial-local-molds %source %jibb] src-466 `typ-466))
27942815++ test-types-partial-locals
2795− (weld (check ~.types-partial-locals src-466 `tok-466 `tre-466) (check-types ~.types-partial-locals ~[%tests %golden ~.types-partial-locals %source %jibb] src-466 `typ-466))
2816+ (weld (check ~.types-partial-locals src-467 `tok-467 `tre-467) (check-types ~.types-partial-locals ~[%tests %golden ~.types-partial-locals %source %jibb] src-467 `typ-467))
27962817++ test-types-partial-many-atom-constraints
2797− (weld (check ~.types-partial-many-atom-constraints src-467 `tok-467 `tre-467) (check-types ~.types-partial-many-atom-constraints ~[%tests %golden ~.types-partial-many-atom-constraints %source %jibb] src-467 `typ-467))
2818+ (weld (check ~.types-partial-many-atom-constraints src-468 `tok-468 `tre-468) (check-types ~.types-partial-many-atom-constraints ~[%tests %golden ~.types-partial-many-atom-constraints %source %jibb] src-468 `typ-468))
27982819++ test-types-partial-mold-bare-aura
2799− (weld (check ~.types-partial-mold-bare-aura src-468 `tok-468 `tre-468) (check-types ~.types-partial-mold-bare-aura ~[%tests %golden ~.types-partial-mold-bare-aura %source %jibb] src-468 `typ-468))
2820+ (weld (check ~.types-partial-mold-bare-aura src-469 `tok-469 `tre-469) (check-types ~.types-partial-mold-bare-aura ~[%tests %golden ~.types-partial-mold-bare-aura %source %jibb] src-469 `typ-469))
28002821++ test-types-partial-mold-composite
2801− (weld (check ~.types-partial-mold-composite src-469 `tok-469 `tre-469) (check-types ~.types-partial-mold-composite ~[%tests %golden ~.types-partial-mold-composite %source %jibb] src-469 `typ-469))
2822+ (weld (check ~.types-partial-mold-composite src-470 `tok-470 `tre-470) (check-types ~.types-partial-mold-composite ~[%tests %golden ~.types-partial-mold-composite %source %jibb] src-470 `typ-470))
28022823++ test-types-partial-mold-forward
2803− (weld (check ~.types-partial-mold-forward src-470 `tok-470 `tre-470) (check-types ~.types-partial-mold-forward ~[%tests %golden ~.types-partial-mold-forward %source %jibb] src-470 `typ-470))
2824+ (weld (check ~.types-partial-mold-forward src-471 `tok-471 `tre-471) (check-types ~.types-partial-mold-forward ~[%tests %golden ~.types-partial-mold-forward %source %jibb] src-471 `typ-471))
28042825++ test-types-partial-mold-recursive
2805− (weld (check ~.types-partial-mold-recursive src-471 `tok-471 `tre-471) (check-types ~.types-partial-mold-recursive ~[%tests %golden ~.types-partial-mold-recursive %source %jibb] src-471 `typ-471))
2826+ (weld (check ~.types-partial-mold-recursive src-472 `tok-472 `tre-472) (check-types ~.types-partial-mold-recursive ~[%tests %golden ~.types-partial-mold-recursive %source %jibb] src-472 `typ-472))
28062827++ test-types-partial-occurs
2807− (weld (check ~.types-partial-occurs src-472 `tok-472 `tre-472) (check-types ~.types-partial-occurs ~[%tests %golden ~.types-partial-occurs %source %jibb] src-472 `typ-472))
2828+ (weld (check ~.types-partial-occurs src-473 `tok-473 `tre-473) (check-types ~.types-partial-occurs ~[%tests %golden ~.types-partial-occurs %source %jibb] src-473 `typ-473))
28082829++ test-types-partial-projection
2809− (weld (check ~.types-partial-projection src-473 `tok-473 `tre-473) (check-types ~.types-partial-projection ~[%tests %golden ~.types-partial-projection %source %jibb] src-473 `typ-473))
2830+ (weld (check ~.types-partial-projection src-474 `tok-474 `tre-474) (check-types ~.types-partial-projection ~[%tests %golden ~.types-partial-projection %source %jibb] src-474 `typ-474))
28102831++ test-types-partial-shadow-global
2811− (weld (check ~.types-partial-shadow-global src-474 `tok-474 `tre-474) (check-types ~.types-partial-shadow-global ~[%tests %golden ~.types-partial-shadow-global %source %jibb] src-474 `typ-474))
2832+ (weld (check ~.types-partial-shadow-global src-475 `tok-475 `tre-475) (check-types ~.types-partial-shadow-global ~[%tests %golden ~.types-partial-shadow-global %source %jibb] src-475 `typ-475))
28122833++ test-types-partial-shared-tvar
2813− (weld (check ~.types-partial-shared-tvar src-475 `tok-475 `tre-475) (check-types ~.types-partial-shared-tvar ~[%tests %golden ~.types-partial-shared-tvar %source %jibb] src-475 `typ-475))
2834+ (weld (check ~.types-partial-shared-tvar src-476 `tok-476 `tre-476) (check-types ~.types-partial-shared-tvar ~[%tests %golden ~.types-partial-shared-tvar %source %jibb] src-476 `typ-476))
28142835++ test-types-partial-union-cases
2815− (weld (check ~.types-partial-union-cases src-476 `tok-476 `tre-476) (check-types ~.types-partial-union-cases ~[%tests %golden ~.types-partial-union-cases %source %jibb] src-476 `typ-476))
2836+ (weld (check ~.types-partial-union-cases src-477 `tok-477 `tre-477) (check-types ~.types-partial-union-cases ~[%tests %golden ~.types-partial-union-cases %source %jibb] src-477 `typ-477))
28162837++ test-types-partial-union-edges
2817− (weld (check ~.types-partial-union-edges src-477 `tok-477 `tre-477) (check-types ~.types-partial-union-edges ~[%tests %golden ~.types-partial-union-edges %source %jibb] src-477 `typ-477))
2838+ (weld (check ~.types-partial-union-edges src-478 `tok-478 `tre-478) (check-types ~.types-partial-union-edges ~[%tests %golden ~.types-partial-union-edges %source %jibb] src-478 `typ-478))
28182839++ test-types-partial-unresolved-tag
2819− (weld (check ~.types-partial-unresolved-tag src-478 `tok-478 `tre-478) (check-types ~.types-partial-unresolved-tag ~[%tests %golden ~.types-partial-unresolved-tag %source %jibb] src-478 `typ-478))
2840+ (weld (check ~.types-partial-unresolved-tag src-479 `tok-479 `tre-479) (check-types ~.types-partial-unresolved-tag ~[%tests %golden ~.types-partial-unresolved-tag %source %jibb] src-479 `typ-479))
28202841++ test-types-prelude-direct
2821− (weld (check ~.types-prelude-direct src-479 `tok-479 `tre-479) (check-module-types ~.types-prelude-direct ~[%tests %golden ~.types-prelude-direct %source %jibb] src-479 `typ-479 ~ ~ ~))
2842+ (weld (check ~.types-prelude-direct src-480 `tok-480 `tre-480) (check-module-types ~.types-prelude-direct ~[%tests %golden ~.types-prelude-direct %source %jibb] src-480 `typ-480 ~ ~ ~))
28222843++ test-types-prelude-interface
2823− (weld (weld (check ~.types-prelude-interface src-480 `tok-480 `tre-480) (check-module-types ~.types-prelude-interface ~[%tests %golden ~.types-prelude-interface %source %jibb] src-480 `typ-480 ~ ~ ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-480-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-480-2]])) (check-module-trees ~.types-prelude-interface `mtre-480 ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-480-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-480-2]]))
2844+ (weld (weld (check ~.types-prelude-interface src-481 `tok-481 `tre-481) (check-module-types ~.types-prelude-interface ~[%tests %golden ~.types-prelude-interface %source %jibb] src-481 `typ-481 ~ ~ ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-481-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-481-2]])) (check-module-trees ~.types-prelude-interface `mtre-481 ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-481-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-481-2]]))
28242845++ test-types-prelude-list-functions
2825− (weld (weld (check ~.types-prelude-list-functions src-481 `tok-481 `tre-481) (check-module-types ~.types-prelude-list-functions ~[%tests %golden ~.types-prelude-list-functions %source %jibb] src-481 `typ-481 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-481-1]])) (check-module-trees ~.types-prelude-list-functions `mtre-481 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-481-1]]))
2846+ (weld (weld (check ~.types-prelude-list-functions src-482 `tok-482 `tre-482) (check-module-types ~.types-prelude-list-functions ~[%tests %golden ~.types-prelude-list-functions %source %jibb] src-482 `typ-482 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-482-1]])) (check-module-trees ~.types-prelude-list-functions `mtre-482 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-482-1]]))
28262847++ test-types-record-bound-variable
2827− (weld (check ~.types-record-bound-variable src-482 `tok-482 `tre-482) (check-types ~.types-record-bound-variable ~[%tests %golden ~.types-record-bound-variable %source %jibb] src-482 `typ-482))
2848+ (weld (check ~.types-record-bound-variable src-483 `tok-483 `tre-483) (check-types ~.types-record-bound-variable ~[%tests %golden ~.types-record-bound-variable %source %jibb] src-483 `typ-483))
28282849++ test-types-record-faces
2829− (weld (check ~.types-record-faces src-483 `tok-483 `tre-483) (check-types ~.types-record-faces ~[%tests %golden ~.types-record-faces %source %jibb] src-483 `typ-483))
2850+ (weld (check ~.types-record-faces src-484 `tok-484 `tre-484) (check-types ~.types-record-faces ~[%tests %golden ~.types-record-faces %source %jibb] src-484 `typ-484))
28302851++ test-types-record-import
2831− (weld (weld (check ~.types-record-import src-484 `tok-484 `tre-484) (check-module-types ~.types-record-import ~[%tests %golden ~.types-record-import %source %jibb] src-484 `typ-484 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-484-1]])) (check-module-trees ~.types-record-import `mtre-484 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-484-1]]))
2852+ (weld (weld (check ~.types-record-import src-485 `tok-485 `tre-485) (check-module-types ~.types-record-import ~[%tests %golden ~.types-record-import %source %jibb] src-485 `typ-485 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-485-1]])) (check-module-trees ~.types-record-import `mtre-485 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-485-1]]))
28322853++ test-types-record-local-scheme
2833− (weld (check ~.types-record-local-scheme src-485 `tok-485 `tre-485) (check-types ~.types-record-local-scheme ~[%tests %golden ~.types-record-local-scheme %source %jibb] src-485 `typ-485))
2854+ (weld (check ~.types-record-local-scheme src-486 `tok-486 `tre-486) (check-types ~.types-record-local-scheme ~[%tests %golden ~.types-record-local-scheme %source %jibb] src-486 `typ-486))
28342855++ test-types-record-nested
2835− (weld (check ~.types-record-nested src-486 `tok-486 `tre-486) (check-types ~.types-record-nested ~[%tests %golden ~.types-record-nested %source %jibb] src-486 `typ-486))
2856+ (weld (check ~.types-record-nested src-487 `tok-487 `tre-487) (check-types ~.types-record-nested ~[%tests %golden ~.types-record-nested %source %jibb] src-487 `typ-487))
28362857++ test-types-record-to-tuple
2837− (weld (check ~.types-record-to-tuple src-487 `tok-487 `tre-487) (check-types ~.types-record-to-tuple ~[%tests %golden ~.types-record-to-tuple %source %jibb] src-487 `typ-487))
2858+ (weld (check ~.types-record-to-tuple src-488 `tok-488 `tre-488) (check-types ~.types-record-to-tuple ~[%tests %golden ~.types-record-to-tuple %source %jibb] src-488 `typ-488))
28382859++ test-types-recursion-scc-failures
2839− (weld (check ~.types-recursion-scc-failures src-488 `tok-488 `tre-488) (check-module-types ~.types-recursion-scc-failures ~[%tests %golden ~.types-recursion-scc-failures %source %jibb] src-488 `typ-488 ~ ~ ~))
2860+ (weld (check ~.types-recursion-scc-failures src-489 `tok-489 `tre-489) (check-module-types ~.types-recursion-scc-failures ~[%tests %golden ~.types-recursion-scc-failures %source %jibb] src-489 `typ-489 ~ ~ ~))
28402861++ test-types-recursion-scc-groups
2841− (weld (check ~.types-recursion-scc-groups src-489 `tok-489 `tre-489) (check-module-types ~.types-recursion-scc-groups ~[%tests %golden ~.types-recursion-scc-groups %source %jibb] src-489 `typ-489 ~ ~ ~))
2862+ (weld (check ~.types-recursion-scc-groups src-490 `tok-490 `tre-490) (check-module-types ~.types-recursion-scc-groups ~[%tests %golden ~.types-recursion-scc-groups %source %jibb] src-490 `typ-490 ~ ~ ~))
28422863++ test-types-recursion-scc-import
2843− (weld (weld (check ~.types-recursion-scc-import src-490 `tok-490 `tre-490) (check-module-types ~.types-recursion-scc-import ~[%tests %golden ~.types-recursion-scc-import %source %jibb] src-490 `typ-490 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-490-1]])) (check-module-trees ~.types-recursion-scc-import `mtre-490 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-490-1]]))
2864+ (weld (weld (check ~.types-recursion-scc-import src-491 `tok-491 `tre-491) (check-module-types ~.types-recursion-scc-import ~[%tests %golden ~.types-recursion-scc-import %source %jibb] src-491 `typ-491 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-491-1]])) (check-module-trees ~.types-recursion-scc-import `mtre-491 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-491-1]]))
28442865++ test-types-recursion-scc-import-bad
2845− (weld (weld (check ~.types-recursion-scc-import-bad src-491 `tok-491 `tre-491) (check-module-types ~.types-recursion-scc-import-bad ~[%tests %golden ~.types-recursion-scc-import-bad %source %jibb] src-491 `typ-491 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-491-1]])) (check-module-trees ~.types-recursion-scc-import-bad `mtre-491 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-491-1]]))
2866+ (weld (weld (check ~.types-recursion-scc-import-bad src-492 `tok-492 `tre-492) (check-module-types ~.types-recursion-scc-import-bad ~[%tests %golden ~.types-recursion-scc-import-bad %source %jibb] src-492 `typ-492 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-492-1]])) (check-module-trees ~.types-recursion-scc-import-bad `mtre-492 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-492-1]]))
28462867++ test-types-recursion-scc-local
2847− (weld (check ~.types-recursion-scc-local src-492 `tok-492 `tre-492) (check-module-types ~.types-recursion-scc-local ~[%tests %golden ~.types-recursion-scc-local %source %jibb] src-492 `typ-492 ~ ~ ~))
2868+ (weld (check ~.types-recursion-scc-local src-493 `tok-493 `tre-493) (check-module-types ~.types-recursion-scc-local ~[%tests %golden ~.types-recursion-scc-local %source %jibb] src-493 `typ-493 ~ ~ ~))
28482869++ test-types-recursion-scc-order
2849− (weld (check ~.types-recursion-scc-order src-493 `tok-493 `tre-493) (check-module-types ~.types-recursion-scc-order ~[%tests %golden ~.types-recursion-scc-order %source %jibb] src-493 `typ-493 ~ ~ ~))
2870+ (weld (check ~.types-recursion-scc-order src-494 `tok-494 `tre-494) (check-module-types ~.types-recursion-scc-order ~[%tests %golden ~.types-recursion-scc-order %source %jibb] src-494 `typ-494 ~ ~ ~))
28502871++ test-types-recursion-scc-shadow
2851− (weld (check ~.types-recursion-scc-shadow src-494 `tok-494 `tre-494) (check-module-types ~.types-recursion-scc-shadow ~[%tests %golden ~.types-recursion-scc-shadow %source %jibb] src-494 `typ-494 ~ ~ ~))
2872+ (weld (check ~.types-recursion-scc-shadow src-495 `tok-495 `tre-495) (check-module-types ~.types-recursion-scc-shadow ~[%tests %golden ~.types-recursion-scc-shadow %source %jibb] src-495 `typ-495 ~ ~ ~))
28522873++ test-types-recursive-branch
2853− (weld (check ~.types-recursive-branch src-495 `tok-495 `tre-495) (check-module-types ~.types-recursive-branch ~[%tests %golden ~.types-recursive-branch %source %jibb] src-495 `typ-495 ~ ~ ~))
2874+ (weld (check ~.types-recursive-branch src-496 `tok-496 `tre-496) (check-module-types ~.types-recursive-branch ~[%tests %golden ~.types-recursive-branch %source %jibb] src-496 `typ-496 ~ ~ ~))
28542875++ test-types-recursive-gate
2855− (weld (check ~.types-recursive-gate src-496 `tok-496 `tre-496) (check-types ~.types-recursive-gate ~[%tests %golden ~.types-recursive-gate %source %jibb] src-496 `typ-496))
2876+ (weld (check ~.types-recursive-gate src-497 `tok-497 `tre-497) (check-types ~.types-recursive-gate ~[%tests %golden ~.types-recursive-gate %source %jibb] src-497 `typ-497))
28562877++ test-types-recursive-sample
2857− (weld (check ~.types-recursive-sample src-497 `tok-497 `tre-497) (check-types ~.types-recursive-sample ~[%tests %golden ~.types-recursive-sample %source %jibb] src-497 `typ-497))
2878+ (weld (check ~.types-recursive-sample src-498 `tok-498 `tre-498) (check-types ~.types-recursive-sample ~[%tests %golden ~.types-recursive-sample %source %jibb] src-498 `typ-498))
28582879++ test-types-string-interpolation
2859− (weld (check ~.types-string-interpolation src-498 `tok-498 `tre-498) (check-module-types ~.types-string-interpolation ~[%tests %golden ~.types-string-interpolation %source %jibb] src-498 `typ-498 ~ ~ ~))
2880+ (weld (check ~.types-string-interpolation src-499 `tok-499 `tre-499) (check-module-types ~.types-string-interpolation ~[%tests %golden ~.types-string-interpolation %source %jibb] src-499 `typ-499 ~ ~ ~))
28602881++ test-types-union-alias
2861− (weld (check ~.types-union-alias src-499 `tok-499 `tre-499) (check-types ~.types-union-alias ~[%tests %golden ~.types-union-alias %source %jibb] src-499 `typ-499))
2882+ (weld (check ~.types-union-alias src-500 `tok-500 `tre-500) (check-types ~.types-union-alias ~[%tests %golden ~.types-union-alias %source %jibb] src-500 `typ-500))
28622883++ test-types-union-branch-context
2863− (weld (check ~.types-union-branch-context src-500 `tok-500 `tre-500) (check-types ~.types-union-branch-context ~[%tests %golden ~.types-union-branch-context %source %jibb] src-500 `typ-500))
2884+ (weld (check ~.types-union-branch-context src-501 `tok-501 `tre-501) (check-types ~.types-union-branch-context ~[%tests %golden ~.types-union-branch-context %source %jibb] src-501 `typ-501))
28642885++ test-types-union-branch-pending
2865− (weld (check ~.types-union-branch-pending src-501 `tok-501 `tre-501) (check-types ~.types-union-branch-pending ~[%tests %golden ~.types-union-branch-pending %source %jibb] src-501 `typ-501))
2886+ (weld (check ~.types-union-branch-pending src-502 `tok-502 `tre-502) (check-types ~.types-union-branch-pending ~[%tests %golden ~.types-union-branch-pending %source %jibb] src-502 `typ-502))
28662887++ test-types-union-constructor-shape
2867− (weld (check ~.types-union-constructor-shape src-502 `tok-502 `tre-502) (check-types ~.types-union-constructor-shape ~[%tests %golden ~.types-union-constructor-shape %source %jibb] src-502 `typ-502))
2888+ (weld (check ~.types-union-constructor-shape src-503 `tok-503 `tre-503) (check-types ~.types-union-constructor-shape ~[%tests %golden ~.types-union-constructor-shape %source %jibb] src-503 `typ-503))
28682889++ test-types-union-context-flow
2869− (weld (check ~.types-union-context-flow src-503 `tok-503 `tre-503) (check-types ~.types-union-context-flow ~[%tests %golden ~.types-union-context-flow %source %jibb] src-503 `typ-503))
2890+ (weld (check ~.types-union-context-flow src-504 `tok-504 `tre-504) (check-types ~.types-union-context-flow ~[%tests %golden ~.types-union-context-flow %source %jibb] src-504 `typ-504))
28702891++ test-types-union-import
2871− (weld (weld (check ~.types-union-import src-504 `tok-504 `tre-504) (check-module-types ~.types-union-import ~[%tests %golden ~.types-union-import %source %jibb] src-504 `typ-504 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-504-1]])) (check-module-trees ~.types-union-import `mtre-504 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-504-1]]))
2892+ (weld (weld (check ~.types-union-import src-505 `tok-505 `tre-505) (check-module-types ~.types-union-import ~[%tests %golden ~.types-union-import %source %jibb] src-505 `typ-505 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-505-1]])) (check-module-trees ~.types-union-import `mtre-505 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-505-1]]))
28722893++ test-types-union-local-pending
2873− (weld (check ~.types-union-local-pending src-505 `tok-505 `tre-505) (check-types ~.types-union-local-pending ~[%tests %golden ~.types-union-local-pending %source %jibb] src-505 `typ-505))
2894+ (weld (check ~.types-union-local-pending src-506 `tok-506 `tre-506) (check-types ~.types-union-local-pending ~[%tests %golden ~.types-union-local-pending %source %jibb] src-506 `typ-506))
28742895++ test-types-union-overlap
2875− (weld (check ~.types-union-overlap src-506 `tok-506 `tre-506) (check-types ~.types-union-overlap ~[%tests %golden ~.types-union-overlap %source %jibb] src-506 `typ-506))
2896+ (weld (check ~.types-union-overlap src-507 `tok-507 `tre-507) (check-types ~.types-union-overlap ~[%tests %golden ~.types-union-overlap %source %jibb] src-507 `typ-507))
28762897++ test-types-union-overlap-nested
2877− (weld (check ~.types-union-overlap-nested src-507 `tok-507 `tre-507) (check-types ~.types-union-overlap-nested ~[%tests %golden ~.types-union-overlap-nested %source %jibb] src-507 `typ-507))
2898+ (weld (check ~.types-union-overlap-nested src-508 `tok-508 `tre-508) (check-types ~.types-union-overlap-nested ~[%tests %golden ~.types-union-overlap-nested %source %jibb] src-508 `typ-508))
2899+++ test-types-union-patterns
2900+ (weld (check ~.types-union-patterns src-509 `tok-509 `tre-509) (check-module-types ~.types-union-patterns ~[%tests %golden ~.types-union-patterns %source %jibb] src-509 `typ-509 ~ ~ ~))
2901+++ test-types-union-patterns-generic
2902+ (weld (check ~.types-union-patterns-generic src-510 `tok-510 `tre-510) (check-module-types ~.types-union-patterns-generic ~[%tests %golden ~.types-union-patterns-generic %source %jibb] src-510 `typ-510 ~ ~ ~))
2903+++ test-types-union-patterns-import
2904+ (weld (weld (check ~.types-union-patterns-import src-511 `tok-511 `tre-511) (check-module-types ~.types-union-patterns-import ~[%tests %golden ~.types-union-patterns-import %source %jibb] src-511 `typ-511 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-511-1]])) (check-module-trees ~.types-union-patterns-import `mtre-511 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-511-1]]))
28782905++ test-types-union-phantom-generic
2879− (weld (check ~.types-union-phantom-generic src-508 `tok-508 `tre-508) (check-types ~.types-union-phantom-generic ~[%tests %golden ~.types-union-phantom-generic %source %jibb] src-508 `typ-508))
2906+ (weld (check ~.types-union-phantom-generic src-512 `tok-512 `tre-512) (check-types ~.types-union-phantom-generic ~[%tests %golden ~.types-union-phantom-generic %source %jibb] src-512 `typ-512))
28802907++ test-types-union-print-cross-namespace
2881− (weld (weld (check ~.types-union-print-cross-namespace src-509 `tok-509 `tre-509) (check-module-types ~.types-union-print-cross-namespace ~[%tests %golden ~.types-union-print-cross-namespace %source %jibb] src-509 `typ-509 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-509-1]])) (check-module-trees ~.types-union-print-cross-namespace `mtre-509 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-509-1]]))
2908+ (weld (weld (check ~.types-union-print-cross-namespace src-513 `tok-513 `tre-513) (check-module-types ~.types-union-print-cross-namespace ~[%tests %golden ~.types-union-print-cross-namespace %source %jibb] src-513 `typ-513 ~ ~ ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-513-1]])) (check-module-trees ~.types-union-print-cross-namespace `mtre-513 ~[['/ui/lib.jibb' ~[~.ui ~.lib ~.jibb] mod-513-1]]))
28822909++ test-types-union-print-distinct
2883− (weld (weld (check ~.types-union-print-distinct src-510 `tok-510 `tre-510) (check-module-types ~.types-union-print-distinct ~[%tests %golden ~.types-union-print-distinct %source %jibb] src-510 `typ-510 ~ ~ ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-510-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-510-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-510-3]])) (check-module-trees ~.types-union-print-distinct `mtre-510 ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-510-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-510-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-510-3]]))
2910+ (weld (weld (check ~.types-union-print-distinct src-514 `tok-514 `tre-514) (check-module-types ~.types-union-print-distinct ~[%tests %golden ~.types-union-print-distinct %source %jibb] src-514 `typ-514 ~ ~ ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-514-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-514-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-514-3]])) (check-module-trees ~.types-union-print-distinct `mtre-514 ~[['/ui/left.jibb' ~[~.ui ~.left ~.jibb] mod-514-1] ['/ui/right.jibb' ~[~.ui ~.right ~.jibb] mod-514-2] ['/ui/twin.jibb' ~[~.ui ~.twin ~.jibb] mod-514-3]]))
28842911++ test-types-union-print-escape
2885− (weld (check ~.types-union-print-escape src-511 `tok-511 `tre-511) (check-types ~.types-union-print-escape ~[%tests %golden ~.types-union-print-escape %source %jibb] src-511 `typ-511))
2912+ (weld (check ~.types-union-print-escape src-515 `tok-515 `tre-515) (check-types ~.types-union-print-escape ~[%tests %golden ~.types-union-print-escape %source %jibb] src-515 `typ-515))
28862913++ test-types-union-print-local
2887− (weld (check ~.types-union-print-local src-512 `tok-512 `tre-512) (check-types ~.types-union-print-local ~[%tests %golden ~.types-union-print-local %source %jibb] src-512 `typ-512))
2914+ (weld (check ~.types-union-print-local src-516 `tok-516 `tre-516) (check-types ~.types-union-print-local ~[%tests %golden ~.types-union-print-local %source %jibb] src-516 `typ-516))
28882915++ test-types-union-print-nested
2889− (weld (check ~.types-union-print-nested src-513 `tok-513 `tre-513) (check-types ~.types-union-print-nested ~[%tests %golden ~.types-union-print-nested %source %jibb] src-513 `typ-513))
2916+ (weld (check ~.types-union-print-nested src-517 `tok-517 `tre-517) (check-types ~.types-union-print-nested ~[%tests %golden ~.types-union-print-nested %source %jibb] src-517 `typ-517))
28902917++ test-types-union-print-same-origin
2891− (weld (weld (check ~.types-union-print-same-origin src-514 `tok-514 `tre-514) (check-module-types ~.types-union-print-same-origin ~[%tests %golden ~.types-union-print-same-origin %source %jibb] src-514 `typ-514 ~ ~ ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-514-1]])) (check-module-trees ~.types-union-print-same-origin `mtre-514 ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-514-1]]))
2918+ (weld (weld (check ~.types-union-print-same-origin src-518 `tok-518 `tre-518) (check-module-types ~.types-union-print-same-origin ~[%tests %golden ~.types-union-print-same-origin %source %jibb] src-518 `typ-518 ~ ~ ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-518-1]])) (check-module-trees ~.types-union-print-same-origin `mtre-518 ~[['/ui/shared.jibb' ~[~.ui ~.shared ~.jibb] mod-518-1]]))
28922919++ test-types-union-print-transitive
2893− (weld (weld (check ~.types-union-print-transitive src-515 `tok-515 `tre-515) (check-module-types ~.types-union-print-transitive ~[%tests %golden ~.types-union-print-transitive %source %jibb] src-515 `typ-515 ~ ~ ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-515-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-515-2]])) (check-module-trees ~.types-union-print-transitive `mtre-515 ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-515-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-515-2]]))
2920+ (weld (weld (check ~.types-union-print-transitive src-519 `tok-519 `tre-519) (check-module-types ~.types-union-print-transitive ~[%tests %golden ~.types-union-print-transitive %source %jibb] src-519 `typ-519 ~ ~ ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-519-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-519-2]])) (check-module-trees ~.types-union-print-transitive `mtre-519 ~[['/ui/mid.jibb' ~[~.ui ~.mid ~.jibb] mod-519-1] ['/ui/base.jibb' ~[~.ui ~.base ~.jibb] mod-519-2]]))
28942921++ test-types-union-singleton
2895− (weld (check ~.types-union-singleton src-516 `tok-516 `tre-516) (check-types ~.types-union-singleton ~[%tests %golden ~.types-union-singleton %source %jibb] src-516 `typ-516))
2922+ (weld (check ~.types-union-singleton src-520 `tok-520 `tre-520) (check-types ~.types-union-singleton ~[%tests %golden ~.types-union-singleton %source %jibb] src-520 `typ-520))
28962923++ test-types-union-tag-atoms
2897− (weld (check ~.types-union-tag-atoms src-517 `tok-517 `tre-517) (check-types ~.types-union-tag-atoms ~[%tests %golden ~.types-union-tag-atoms %source %jibb] src-517 `typ-517))
2924+ (weld (check ~.types-union-tag-atoms src-521 `tok-521 `tre-521) (check-types ~.types-union-tag-atoms ~[%tests %golden ~.types-union-tag-atoms %source %jibb] src-521 `typ-521))
28982925++ test-types-union-tags
2899− (weld (check ~.types-union-tags src-518 `tok-518 `tre-518) (check-types ~.types-union-tags ~[%tests %golden ~.types-union-tags %source %jibb] src-518 `typ-518))
2926+ (weld (check ~.types-union-tags src-522 `tok-522 `tre-522) (check-types ~.types-union-tags ~[%tests %golden ~.types-union-tags %source %jibb] src-522 `typ-522))
29002927++ test-types-union-unresolved
2901− (weld (check ~.types-union-unresolved src-519 `tok-519 `tre-519) (check-types ~.types-union-unresolved ~[%tests %golden ~.types-union-unresolved %source %jibb] src-519 `typ-519))
2928+ (weld (check ~.types-union-unresolved src-523 `tok-523 `tre-523) (check-types ~.types-union-unresolved ~[%tests %golden ~.types-union-unresolved %source %jibb] src-523 `typ-523))
29022929++ test-types-union-unresolved-flow
2903− (weld (check ~.types-union-unresolved-flow src-520 `tok-520 `tre-520) (check-types ~.types-union-unresolved-flow ~[%tests %golden ~.types-union-unresolved-flow %source %jibb] src-520 `typ-520))
2930+ (weld (check ~.types-union-unresolved-flow src-524 `tok-524 `tre-524) (check-types ~.types-union-unresolved-flow ~[%tests %golden ~.types-union-unresolved-flow %source %jibb] src-524 `typ-524))
29042931++ test-types-unit-context
2905− (weld (check ~.types-unit-context src-521 `tok-521 `tre-521) (check-types ~.types-unit-context ~[%tests %golden ~.types-unit-context %source %jibb] src-521 `typ-521))
2932+ (weld (check ~.types-unit-context src-525 `tok-525 `tre-525) (check-types ~.types-unit-context ~[%tests %golden ~.types-unit-context %source %jibb] src-525 `typ-525))
29062933++ test-types-unit-patterns
2907− (weld (check ~.types-unit-patterns src-522 `tok-522 `tre-522) (check-types ~.types-unit-patterns ~[%tests %golden ~.types-unit-patterns %source %jibb] src-522 `typ-522))
2934+ (weld (check ~.types-unit-patterns src-526 `tok-526 `tre-526) (check-types ~.types-unit-patterns ~[%tests %golden ~.types-unit-patterns %source %jibb] src-526 `typ-526))
29082935::
29092936:: +check: run golden:jibb on a case and compare both outputs
29102937::