From db0cf93b799f944e92ee346883afeb81b27dd8d7 Mon Sep 17 00:00:00 2001 From: reevafaisal Date: Wed, 30 Oct 2024 12:01:09 -0400 Subject: [PATCH 01/11] Solving merge conflicts from original tutorial-systems branch: updated Scratch State --- src/haz3lweb/Editors.re | 59 +- src/haz3lweb/Init.ml | 35833 ++++++++++++++-------------- src/haz3lweb/ScratchSlide.re | 41 +- src/haz3lweb/ScratchSlidesInit.re | 11 +- src/haz3lweb/Store.re | 62 +- src/haz3lweb/Update.re | 54 +- 6 files changed, 18485 insertions(+), 17575 deletions(-) diff --git a/src/haz3lweb/Editors.re b/src/haz3lweb/Editors.re index f8fa4e0b06..f47e95cbdc 100644 --- a/src/haz3lweb/Editors.re +++ b/src/haz3lweb/Editors.re @@ -20,10 +20,10 @@ let get_editor = (editors: t): Editor.t => switch (editors) { | Scratch(n, slides) => assert(n < List.length(slides)); - List.nth(slides, n); + List.nth(slides, n).hidden_tests.tests; | Documentation(name, slides) => assert(List.mem_assoc(name, slides)); - List.assoc(name, slides); + List.assoc(name, slides).hidden_tests.tests; | Exercises(_, _, exercise) => Exercise.editor_of_state(exercise) }; @@ -31,10 +31,31 @@ let put_editor = (ed: Editor.t, eds: t): t => switch (eds) { | Scratch(n, slides) => assert(n < List.length(slides)); - Scratch(n, Util.ListUtil.put_nth(n, ed, slides)); + let originalSlide = List.nth(slides, n); + let updatedSlide: ScratchSlide.state = { + title: originalSlide.title, + description: originalSlide.description, + hidden_tests: { + tests: ed, + hints: originalSlide.hidden_tests.hints, + }, + }; + Scratch(n, Util.ListUtil.put_nth(n, updatedSlide, slides)); | Documentation(name, slides) => assert(List.mem_assoc(name, slides)); - Documentation(name, slides |> ListUtil.update_assoc((name, ed))); + let originalSlide = List.assoc(name, slides); + let updatedSlide: ScratchSlide.state = { + title: originalSlide.title, + description: originalSlide.description, + hidden_tests: { + tests: ed, + hints: originalSlide.hidden_tests.hints, + }, + }; + Documentation( + name, + slides |> ListUtil.update_assoc((name, updatedSlide)), + ); | Exercises(n, specs, exercise) => Exercises(n, specs, Exercise.put_editor(exercise, ed)) }; @@ -115,19 +136,41 @@ let set_instructor_mode = (editors: t, instructor_mode: bool): t => ) }; -let reset_nth_slide = (~settings: CoreSettings.t, n, slides): list(Editor.t) => { +let reset_nth_slide = + (~settings: CoreSettings.t, n, slides): list(ScratchSlide.state) => { let (_, init_editors, _) = Init.startup.scratch; let data = List.nth(init_editors, n); let init_nth = ScratchSlide.unpersist(~settings, data); - Util.ListUtil.put_nth(n, init_nth, slides); + + // Wrap the unpersisted Editor.t in a ScratchSlide.state structure + let updated_slide: ScratchSlide.state = { + title: init_nth.title, // Assuming title and other fields are available + description: init_nth.description, + hidden_tests: { + tests: init_nth.hidden_tests.tests, + hints: init_nth.hidden_tests.hints, + }, + }; + Util.ListUtil.put_nth(n, updated_slide, slides); }; let reset_named_slide = - (~settings: CoreSettings.t, name, slides): list((string, Editor.t)) => { + (~settings: CoreSettings.t, name, slides) + : list((string, ScratchSlide.state)) => { let (_, init_editors, _) = Init.startup.documentation; let data = List.assoc(name, init_editors); let init_name = ScratchSlide.unpersist(~settings, data); - slides |> List.remove_assoc(name) |> List.cons((name, init_name)); + + // Wrap the unpersisted Editor.t in a ScratchSlide.state structure + let updated_slide: ScratchSlide.state = { + title: init_name.title, + description: init_name.description, + hidden_tests: { + tests: init_name.hidden_tests.tests, + hints: init_name.hidden_tests.hints, + }, + }; + slides |> List.remove_assoc(name) |> List.cons((name, updated_slide)); }; let reset_current = diff --git a/src/haz3lweb/Init.ml b/src/haz3lweb/Init.ml index c3d2de0aba..51f3397b11 100644 --- a/src/haz3lweb/Init.ml +++ b/src/haz3lweb/Init.ml @@ -27,17623 +27,18362 @@ let startup : PersistentData.t = context_inspector = false; instructor_mode = true; benchmark = false; + mode = Documentation; explainThis = { show = true; show_feedback = false; highlight = NoHighlight }; - mode = Documentation; }; scratch = ( 0, [ { - zipper = - "((selection((focus Left)(content())(mode \ - Normal)))(backpack())(relatives((siblings((((Grout((id \ - e87c8d67-9374-4a6f-ba01-5ec8f300b924)(shape \ - Convex))))))(ancestors())))(caret Outer))"; - backup_text = ""; + title = ""; + description = ""; + hidden_tests = + { + tests = + { + zipper = + "((selection((focus Left)(content())(mode \ + Normal)))(backpack())(relatives((siblings(((Secondary((id \ + 81269f55-a66c-48d1-9fbe-83187a492f55)(content(Whitespace\" \ + \"))))(Secondary((id \ + a4e41744-51dc-43bb-b359-47cb9649dcd4)(content(Whitespace\" \ + \")))))((Grout((id \ + ef3fb913-bd26-4ef8-af2f-424a73c5c753)(shape \ + Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + }; + hints = []; + }; + (* backup_text = " "; *) }; { - zipper = - "((selection((focus Left)(content())(mode \ - Normal)))(backpack())(relatives((siblings((((Grout((id \ - e87c8d67-9374-4a6f-ba01-5ec8f300b924)(shape \ - Convex))))))(ancestors())))(caret Outer))"; - backup_text = ""; + title = ""; + description = ""; + hidden_tests = + { + tests = + { + zipper = + "((selection((focus Left)(content())(mode \ + Normal)))(backpack())(relatives((siblings(((Secondary((id \ + 3fd71a3d-9baa-4362-9887-450674850113)(content(Whitespace\" \ + \"))))(Secondary((id \ + 140c0376-4f67-40b6-8056-8cac787af42d)(content(Whitespace\" \ + \")))))((Grout((id \ + 35a88970-2d50-43a7-a476-f81f5b36728d)(shape \ + Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + }; + hints = []; + }; }; { - zipper = - "((selection((focus Left)(content())(mode \ - Normal)))(backpack())(relatives((siblings((((Grout((id \ - e87c8d67-9374-4a6f-ba01-5ec8f300b924)(shape \ - Convex))))))(ancestors())))(caret Outer))"; - backup_text = ""; + title = ""; + description = ""; + hidden_tests = + { + tests = + { + zipper = + "((selection((focus Left)(content())(mode \ + Normal)))(backpack())(relatives((siblings(((Secondary((id \ + 36ace27f-cd35-4880-b50c-7629d3a8476a)(content(Whitespace\" \ + \"))))(Secondary((id \ + 39a56f0c-5214-443b-8bd9-931ac9a7720a)(content(Whitespace\" \ + \")))))((Grout((id \ + cbfc7b9d-7a60-4d4d-9a04-5239fe7008a3)(shape \ + Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + }; + hints = []; + }; }; { - zipper = - "((selection((focus Left)(content())(mode \ - Normal)))(backpack())(relatives((siblings((((Grout((id \ - e87c8d67-9374-4a6f-ba01-5ec8f300b924)(shape \ - Convex))))))(ancestors())))(caret Outer))"; - backup_text = ""; + title = ""; + description = ""; + hidden_tests = + { + tests = + { + zipper = + "((selection((focus Left)(content())(mode \ + Normal)))(backpack())(relatives((siblings(((Secondary((id \ + 83b9a843-4947-43b0-8232-fb9ce31f8628)(content(Whitespace\" \ + \"))))(Secondary((id \ + abca2150-7d0a-4c6c-8502-bdef953a11be)(content(Whitespace\" \ + \")))))((Grout((id \ + f292f825-054d-4023-80f7-5e436bbc25ff)(shape \ + Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + }; + hints = []; + }; }; { - zipper = - "((selection((focus Left)(content())(mode \ - Normal)))(backpack())(relatives((siblings((((Grout((id \ - e87c8d67-9374-4a6f-ba01-5ec8f300b924)(shape \ - Convex))))))(ancestors())))(caret Outer))"; - backup_text = ""; + title = ""; + description = ""; + hidden_tests = + { + tests = + { + zipper = + "((selection((focus Left)(content())(mode \ + Normal)))(backpack())(relatives((siblings(((Secondary((id \ + 520a7c0c-6bb8-4bdc-a548-5431ef003028)(content(Whitespace\" \ + \"))))(Secondary((id \ + dd7c1758-0001-46c0-8ab3-e43a23285e0e)(content(Whitespace\" \ + \")))))((Grout((id \ + 06807411-26c5-493c-8835-258878cb073e)(shape \ + Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + }; + hints = []; + }; }; { - zipper = - "((selection((focus Left)(content())(mode \ - Normal)))(backpack())(relatives((siblings((((Grout((id \ - e87c8d67-9374-4a6f-ba01-5ec8f300b924)(shape \ - Convex))))))(ancestors())))(caret Outer))"; - backup_text = ""; + title = ""; + description = ""; + hidden_tests = + { + tests = + { + zipper = + "((selection((focus Left)(content())(mode \ + Normal)))(backpack())(relatives((siblings(((Secondary((id \ + c0748728-2618-4872-881c-ccb38dbd0c58)(content(Whitespace\" \ + \"))))(Secondary((id \ + ab68e973-bf30-463d-989b-c7e37921aca2)(content(Whitespace\" \ + \")))))((Grout((id \ + a9b8ab49-ba54-46b5-b504-c85c3f615c64)(shape \ + Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + }; + hints = []; + }; }; { - zipper = - "((selection((focus Left)(content())(mode \ - Normal)))(backpack())(relatives((siblings((((Grout((id \ - e87c8d67-9374-4a6f-ba01-5ec8f300b924)(shape \ - Convex))))))(ancestors())))(caret Outer))"; - backup_text = ""; + title = ""; + description = ""; + hidden_tests = + { + tests = + { + zipper = + "((selection((focus Left)(content())(mode \ + Normal)))(backpack())(relatives((siblings(((Secondary((id \ + 53f99ea5-f1e2-4c4b-bb11-8bb270cc563d)(content(Whitespace\" \ + \"))))(Secondary((id \ + 0595315c-7bd1-43dc-8cd5-ef755f9d7538)(content(Whitespace\" \ + \")))))((Grout((id \ + 6ee496e0-c06a-4c46-bfdd-c844017a8bd2)(shape \ + Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + }; + hints = []; + }; }; { - zipper = - "((selection((focus Left)(content())(mode \ - Normal)))(backpack())(relatives((siblings((((Grout((id \ - e87c8d67-9374-4a6f-ba01-5ec8f300b924)(shape \ - Convex))))))(ancestors())))(caret Outer))"; - backup_text = ""; + title = ""; + description = ""; + hidden_tests = + { + tests = + { + zipper = + "((selection((focus Left)(content())(mode \ + Normal)))(backpack())(relatives((siblings(((Secondary((id \ + cdc8e64d-6836-4d9f-9353-969397bfe2ab)(content(Whitespace\" \ + \"))))(Secondary((id \ + 82f3fe37-c665-4aeb-af3d-01ad0de37d40)(content(Whitespace\" \ + \"))))(Secondary((id \ + 749ce88d-f0e0-4694-b13a-0831f733b0ed)(content(Whitespace\" \ + \"))))(Secondary((id \ + 4a7e3e85-8563-4160-a121-bc3c0911118b)(content(Whitespace\" \ + \")))))((Grout((id \ + 75ba0150-8d58-4efe-9253-cc2d7f4df1c4)(shape \ + Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + }; + hints = []; + }; }; ], - [ ("scratch_0", Evaluation); ("scratch_1", Evaluation) ] ); + [ ("scratch_0", Evaluation) ] ); documentation = - ( "Basic Reference", + ( "Programming Expressively", [ ( "Casting", { - zipper = - "((selection((focus Left)(content())(mode \ - Normal)))(backpack())(relatives((siblings(()((Secondary((id \ - 81369b05-3100-46fa-8519-383f032773b7)(content(Comment\"# \ - Internal Regression Tests: Function literal casting \ - #\"))))(Secondary((id \ - 661ca937-ef26-4d0f-8e56-34169b5314b4)(content(Whitespace\"\\n\"))))(Secondary((id \ - cec34ac6-7912-499a-9c79-3044a2463686)(content(Comment\"# None \ - of the below should trigger runtime exceptions \ - #\"))))(Secondary((id \ - 7226679b-c010-43b2-9dc4-17a1c5810b79)(content(Whitespace\"\\n\"))))(Secondary((id \ - 3286f00c-648a-45c0-b4ba-facb03d5f5eb)(content(Whitespace\"\\n\"))))(Tile((id \ - 9eaeefd6-f39a-4e11-9bbd-7670fa49ae2d)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 2b64b7f2-0ed1-4c42-a823-872b8a547369)(content(Whitespace\" \ - \"))))(Tile((id \ - e27950cc-13f0-4e63-b33d-bb38bcf4a33d)(label(g))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - ebd66162-10cb-405d-a69c-87c51113f790)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - cdf12728-5f08-4e00-adff-8d203d2e1406)(content(Whitespace\" \ - \"))))(Tile((id \ - cdeb3cfe-8cac-4efa-856c-92ffd856fba9)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 006b25b5-ccc3-430f-a8ef-0af78f24133d)(content(Whitespace\" \ - \"))))(Tile((id \ - 39909202-da1c-4570-80d2-3144f7ec1544)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 5f48f03b-fb47-4e0d-8b41-f8fb95081600)(content(Whitespace\" \ - \"))))(Tile((id \ - 56ad0cba-9a95-48f0-bc83-75203f7500fa)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 36f39a5d-453f-46f8-84a0-0e54a571aa3d)(content(Whitespace\" \ - \")))))((Secondary((id \ - acaad34c-1ef9-4103-8cc7-a315cb16766c)(content(Whitespace\" \ - \"))))(Tile((id \ - 58a5cd00-5b25-4258-8de2-4ec58460d679)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 77a7a302-9006-4fdf-8ebb-5a898fe80dda)(content(Whitespace\" \ - \"))))(Tile((id \ - 848cd28f-e857-440e-a5f1-9377774717b6)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 891dd4d9-3426-4ffc-ba06-67bdfd9e1eff)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 25cccae1-4e5b-4e5f-aa8e-994731827f49)(content(Whitespace\" \ - \"))))(Tile((id \ - 950ba9b6-d9aa-44e5-918b-6e388eb31365)(label(9))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 4f0f471a-e929-41cd-854f-73fc11a997c5)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 3c4aa4bf-2198-4d96-939b-622db1210f2f)(content(Whitespace\" \ - \"))))(Tile((id \ - 12aac901-a820-49a5-9de4-6d5efd1821a3)(label(-))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape(Concave \ - 3))(sort Exp))))))(shards(0))(children())))(Tile((id \ - a1c315c9-9f6d-49e8-83fb-619021db8ba6)(label(g))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - f2070018-aa3e-45f4-9108-039b8cfe8d0a)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 35429397-758e-443e-a6b4-570c37ab7ed8)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - cd5a1c96-d516-4740-a615-f329ded8cbb3)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 4f1e5988-02d8-4e2f-8809-130c13e5bedb)(content(Whitespace\"\\n\"))))(Secondary((id \ - a39a6432-d075-43de-821c-91c593ee68b7)(content(Whitespace\"\\n\"))))(Tile((id \ - 7fb82384-cfcf-4395-9f99-4df2fdb7259a)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 199cb1d9-9622-4470-bcde-98b88d1f2d2e)(content(Whitespace\" \ - \"))))(Tile((id \ - 8336854c-f7d3-4b02-bf20-f3de09fe0641)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 3339ca2a-6b18-4288-a8fe-f17890b2a4e8)(content(Whitespace\" \ - \")))))((Secondary((id \ - 4455604d-cd69-41fd-8f6b-8d42faf4bf30)(content(Whitespace\" \ - \"))))(Tile((id \ - 5f379f57-e6aa-4e13-b987-68edf2157c30)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 1b144f4e-2ee0-42ee-bc4f-41f39efa24cb)(content(Whitespace\" \ - \"))))(Tile((id \ - 57f0523e-58fd-481c-9208-555cebb9f272)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 62f93351-1cc0-48d3-8ffb-887cdde7b26c)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - b3f9ec66-5704-4f88-a893-3fc85a30ef33)(content(Whitespace\" \ - \"))))(Tile((id \ - fb2434da-6c4e-49f1-ae63-5f7f87aff525)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 3930fcf7-5f96-441d-bc79-8857a1d99eba)(content(Whitespace\" \ - \"))))(Tile((id \ - 7c3fd7f6-254d-492b-bfd5-2a68f0a1e69f)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 0cee3916-02e5-4293-99a6-70c6db19eae9)(content(Whitespace\" \ - \"))))(Tile((id \ - 8c13774a-da7b-486a-a9b6-c1ea1f1d8be3)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 15dc697a-d3d1-462b-872c-1e714ab3de22)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 3e3ea0f4-263e-40bc-b457-322892f972e5)(content(Whitespace\" \ - \"))))(Tile((id \ - e03c4dbd-e37a-409b-9b36-e3bada070bf6)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 46a54169-cc48-4153-89c6-02efa923deaf)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - f124eb1f-fa56-4867-b3eb-4dc3d2d86531)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 4c25952b-6297-4560-b56a-3c162d83c8e5)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 1e81390d-b689-482e-924e-77c9c8ce4484)(content(Whitespace\"\\n\"))))(Tile((id \ - ec4b55d8-e8ee-4c10-a340-a04819b633c3)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 9129d50f-afae-49fa-9d6a-2167542620c2)(content(Whitespace\" \ - \"))))(Tile((id \ - 3e496a44-1f49-4a3e-ab32-7c0fb8002c31)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 1df7b1d5-927a-4538-a168-21e4e4465342)(content(Whitespace\" \ - \")))))((Secondary((id \ - 708a7cb1-88e5-4754-8031-3143ec4c0383)(content(Whitespace\" \ - \"))))(Tile((id \ - 6d4a42cb-0718-4e9e-bca1-0af11cd095e7)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - f2f6342f-640f-40d6-85c7-7d0c5cce62ef)(content(Whitespace\" \ - \"))))(Tile((id \ - 6a9756bd-2505-46e0-9493-c1df53e5a1a5)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 3b0b22c1-8b06-454b-bc5b-3bcd047b858e)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - e4490437-dff5-4fac-aaf8-25017c9da92c)(content(Whitespace\" \ - \"))))(Tile((id \ - 5898078f-2261-4a01-ba61-529e85c7a1a8)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 518a4068-d476-4b78-a51d-71da3483d9a4)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 7b57f276-9239-48a5-959b-439c645e6b9b)(content(Whitespace\" \ - \"))))(Tile((id \ - 02e9a8a2-4b70-4386-a03a-c7338edd1ac1)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - b3c18a9e-1da8-4c5a-9d05-5925d467091b)(content(Whitespace\" \ - \"))))(Tile((id \ - a5a691d3-386c-4599-884a-c8f9aa833e68)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 9a583679-4605-45d0-a43e-52bf5622f396)(content(Whitespace\" \ - \"))))(Tile((id \ - 6cec4350-c571-4854-b06e-ca6c31ff0d82)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 69a109a1-5a88-451a-8cae-58b743ef879c)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - f587f878-71e0-466c-af3c-6806440c4280)(content(Whitespace\" \ - \"))))(Tile((id \ - 3f05de1c-201f-4e4d-881c-38096ae05061)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - ff86ff15-f544-4fd3-8dec-e3ac31a240ee)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - afd5101b-29b6-42cd-81d3-21d73058beb4)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 5c651383-18c1-48b1-8e66-b03c769f3bde)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - f7390a85-d74e-4b67-98d5-bb26e8b8865f)(content(Whitespace\"\\n\"))))(Tile((id \ - 0a704a14-505d-4c2d-a6de-ae4517221ab9)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - d5e59e75-f4f3-4b5b-b2e4-2019d7673305)(content(Whitespace\" \ - \"))))(Tile((id \ - c909509f-18e3-40c3-a5bd-d87fc999b730)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 1d89694e-c062-41b9-af8b-8355b392a7b8)(content(Whitespace\" \ - \")))))((Secondary((id \ - f1853bc9-8e24-4a70-90dd-194539cdb314)(content(Whitespace\" \ - \"))))(Tile((id \ - 310a11f0-71a7-4b63-a256-7307f27b228e)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 1d6f9a93-cc2c-4889-a604-f02951053baf)(content(Whitespace\" \ - \"))))(Tile((id \ - bf737c42-1b95-4fea-aed2-763f716782e3)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 58d9ec65-d4da-47ee-a01a-5bd43af058b8)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 91ff0c5e-4435-4908-9722-fc51f4b726dd)(content(Whitespace\" \ - \"))))(Tile((id \ - 25ce4103-1679-4c34-a5f1-5c6930fef1ee)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - f1c5d99a-e84a-4b86-945a-45eb32da95ba)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - a3b5cd01-b0a2-4300-ab04-fd6940ffcd15)(content(Whitespace\" \ - \"))))(Tile((id \ - 764204e6-fe9a-49db-9e9f-7576f8c736f1)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 56cad22e-7568-49f8-a934-1ad6645bbb5d)(content(Whitespace\" \ - \"))))(Tile((id \ - 2631fc54-11f2-4562-ac0a-357e1d807e05)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - f60d2720-ec79-4276-81de-486df193d1de)(content(Whitespace\" \ - \"))))(Tile((id \ - 0f4609f5-6880-4d39-9a3d-d23db6bc348d)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 92118d8a-9090-4cca-91c8-378221c73f3c)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - f126a678-ad98-49da-9331-c6c933d6c7e7)(content(Whitespace\" \ - \"))))(Tile((id \ - 4658f768-b661-46d7-a228-bda00d6b4630)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 5c6b8fdf-cc60-405f-b69e-74098d60aea8)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 3d9c9325-622f-4a2f-9f27-fbabbf352359)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - e4482912-39b0-49e3-82dd-4a222f6baad5)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - f528425c-fe76-45e2-aaf0-3fce94886371)(content(Whitespace\"\\n\"))))(Tile((id \ - e9ba542f-8cee-4258-97e3-b92404ca2681)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 34b33841-788c-4352-ba2d-7e198a3a7c5e)(content(Whitespace\" \ - \"))))(Tile((id \ - 75077e71-5287-4321-9425-d482e7db1ed3)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 27e7e63c-ca04-4945-af58-848913dbf40b)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 3b93dd7d-8393-4fe2-9060-72c4fab8280f)(content(Whitespace\" \ - \"))))(Tile((id \ - 143ea473-7035-4a1b-b70d-04cc0ece0c64)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - ee09a346-60da-4faf-af20-4ada2033a7b8)(content(Whitespace\" \ - \")))))((Secondary((id \ - 8904533a-4cdf-4111-b504-dc6c88ea0996)(content(Whitespace\" \ - \"))))(Tile((id \ - 022f45b7-15fe-4015-b609-048270f33bb5)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 95fa2567-2fd9-4c1f-801f-bbec283d6de8)(content(Whitespace\" \ - \"))))(Tile((id \ - b77150c8-ae85-4c15-b80d-4f1e1aa0afe7)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 920818bc-1839-487d-8f28-8ea1ac7f7f6b)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 9346d43d-0ae0-4e08-8050-39b3ea8d0ab4)(content(Whitespace\" \ - \"))))(Tile((id \ - 476aa9aa-37a4-473a-8ed6-040d0952d951)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 412312ee-b030-42b6-9dd2-1547de65ebfa)(content(Whitespace\" \ - \"))))(Tile((id \ - da81d26b-5d29-4e73-bb68-deafc87e357a)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - e521bb4a-b193-495a-aeb0-b2c82bacb9b2)(content(Whitespace\" \ - \"))))(Tile((id \ - 4e74bfb1-38c4-407c-8297-69cd09ae8e6b)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - ef63ff2c-8ef7-47f8-9710-c4f472c9a9cc)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 149a46b4-a34b-46cf-a027-cf85fb5b15e1)(content(Whitespace\" \ - \"))))(Tile((id \ - 1aae26f0-fc96-44aa-828f-b073e55ff69d)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 8e2b1ed4-db2d-49eb-88d2-4728cd09d8e4)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 662cbcb9-b30d-4562-80b0-7364ca66de2f)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - d20c5d46-a170-4403-a97e-a7011ff7cd9d)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 68beb6cf-6acf-4189-a0bd-e243d91237fa)(content(Whitespace\"\\n\"))))(Tile((id \ - f8a81479-e26e-4a45-9dcb-4c5fe7d14ab8)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - c482be25-4bc1-44f5-a33f-3821a6c7f273)(content(Whitespace\" \ - \"))))(Tile((id \ - 5c74dff5-8cce-4dc2-a5b6-49a978fac1e5)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 2d8453ea-d5be-40c8-ba37-3cb7862e3536)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 373f84cf-3935-4a76-b6a5-2553ab4f34ea)(content(Whitespace\" \ - \"))))(Tile((id \ - b6814e99-f3f7-4444-89d1-f5569a465c60)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 02e548b0-bfe6-419b-811a-96f0a293ccb5)(content(Whitespace\" \ - \")))))((Secondary((id \ - f7773304-b9e1-4487-ae33-452466e47a8e)(content(Whitespace\" \ - \"))))(Tile((id \ - 4476eff5-8342-4be4-bdd0-ef851d1e911f)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 2a5dd54d-d7bd-406b-a6ce-f4b9952398e2)(content(Whitespace\" \ - \"))))(Tile((id \ - 1a1b1421-4293-4126-b66b-d6836f42da81)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - cb957614-fcf7-4785-b6e3-be86272e251c)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - d66453af-7a7b-4659-b53c-8413552ad7e3)(content(Whitespace\" \ - \"))))(Tile((id \ - 194cfbbc-41e4-4896-9af4-a06fe2ec7c6d)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 95d63e9d-e9d1-432e-9738-bcf398544bed)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 1ebcd64c-8de0-4d29-a255-24f923bcc1cd)(content(Whitespace\" \ - \"))))(Tile((id \ - 6bda0da5-9b10-4ada-82da-524b09822480)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - c178798b-479e-487b-841a-749464fb5b13)(content(Whitespace\" \ - \"))))(Tile((id \ - c311861e-80ca-436c-8789-55ba6c0b16d5)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 6d7edee0-d45a-4f58-a531-a29da2882794)(content(Whitespace\" \ - \"))))(Tile((id \ - aa66b7b9-ca28-4865-b7d3-568f461a9cae)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 3f5a7092-d548-4a8a-825c-9268819bbe4a)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 0d5a7f6c-a557-4026-92a1-6bde64f360b7)(content(Whitespace\" \ - \"))))(Tile((id \ - 174e462f-11c0-4787-a300-09b9e0606098)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 14587240-3d05-48c1-98ec-999bfa2470a2)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 1027ad2a-9348-45a2-aab1-db362dbbbd58)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 4e933200-863d-4a1c-88e2-8bfa23c82acb)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - ad93dbcb-2b79-4ea8-9140-71fc17f4882d)(content(Whitespace\"\\n\"))))(Tile((id \ - f4641efb-5ac2-4a73-86ce-4d8253be45bb)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - b3ae2558-1ed6-4c2f-9a19-8f3c90d36d1f)(content(Whitespace\" \ - \"))))(Tile((id \ - cb65824d-6678-4e27-b490-6fe1fb699878)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 39c34523-e878-40a5-bc8c-cdd3a3f6f049)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 1e90aa13-be44-40a4-85b0-181ba16ab080)(content(Whitespace\" \ - \"))))(Tile((id \ - fff73ac1-c9d7-4e01-94fd-9ed3f0564eae)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - b6ee7de0-8d58-414c-be1c-33091bb7ca04)(content(Whitespace\" \ - \")))))((Secondary((id \ - b5cd6e6e-9aab-4679-998b-f7d1085e0440)(content(Whitespace\" \ - \"))))(Tile((id \ - ada250f8-1efd-4ee2-92f1-b3cb427a1494)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 8cfb3720-7e6e-448c-b437-04478b3622c3)(content(Whitespace\" \ - \"))))(Tile((id \ - 4657a01e-d011-4d88-acc3-b9cbb590bc28)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 6c7fbe5c-b345-4db0-ae41-7c98b7d78ea0)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - e605721b-a27d-4501-8b19-82983084ce1d)(content(Whitespace\" \ - \"))))(Tile((id \ - 6a54d4b4-a690-43ee-aaf0-145d5008ac26)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - c68d5b21-d1fb-4a7a-9cb6-d85c71df5a46)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - ba51531a-4f3b-494e-8c04-653a784f9c20)(content(Whitespace\" \ - \"))))(Tile((id \ - 4a550533-9737-432d-9e87-baf3352eee95)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - e3eb9a4e-91a9-42fa-a6be-aa59990d83cd)(content(Whitespace\" \ - \"))))(Tile((id \ - ae8e5205-b91e-4886-9a86-1b0f929fc9c4)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - a0da3698-12ea-4606-89d0-b8436462a95f)(content(Whitespace\" \ - \"))))(Tile((id \ - b2ede11e-8ae5-4601-8511-39b74b55fbc0)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - f279092e-a9ed-4986-ba12-9c7334c26167)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 3a262efd-7feb-4e19-93d1-6eacd82878a1)(content(Whitespace\" \ - \"))))(Tile((id \ - 54033896-bdf3-4539-8149-3987b264fda1)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - b5e74e95-cc04-4c27-adac-4f020ec31405)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - c820ac31-122a-4958-a0bb-8a8d0baf6e30)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - fe87eae2-aa00-4eb0-a785-fda1a4dc121f)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 727a5f75-ac95-4668-9085-b98ec78ab510)(content(Whitespace\"\\n\"))))(Tile((id \ - d30f154d-3759-4ca5-ad0d-d4b7a2b99fc9)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 0b102f64-22f5-4699-9f61-2a7297a36850)(content(Whitespace\" \ - \"))))(Tile((id \ - bf0aa727-8efe-455c-b780-110e574f409e)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - ada1e07c-d277-4b01-90c9-3386227cfeeb)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - ac994817-9b21-4f4e-87aa-95a03a6cad5f)(content(Whitespace\" \ - \"))))(Tile((id \ - 5ba369b1-179f-4407-98af-d586fad1b6c8)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - ccfd944f-3870-46ce-82b5-cbc33b7a5303)(content(Whitespace\" \ - \"))))(Tile((id \ - bbf8d0c6-d491-427e-83ae-c75b3db010fc)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 4428fb07-9c36-4477-9c69-466fbd28b185)(content(Whitespace\" \ - \"))))(Tile((id \ - 9d420a65-9363-43b1-b700-ce4a4233b7eb)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 1db2e4ba-abc4-4e92-b34a-e1783befad0a)(content(Whitespace\" \ - \")))))((Secondary((id \ - 3ed6de05-238b-44d8-97b7-b426127d6b52)(content(Whitespace\" \ - \"))))(Tile((id \ - 41f40d53-d3bf-460c-8970-310ff30cca3d)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 934c9ba9-32b6-4129-af6d-66464bd39386)(content(Whitespace\" \ - \"))))(Tile((id \ - 67607314-a4b3-4b37-bc77-015a22caac19)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - ccb99062-63b5-4c40-a196-69b672054250)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 4e311950-00df-4aad-87f8-4c9995a96d1d)(content(Whitespace\" \ - \"))))(Tile((id \ - afba7796-49fc-42c6-8c97-978430e3f3fc)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 4f275799-c0b0-4bfc-b77b-4915b2affe8b)(content(Whitespace\" \ - \"))))(Tile((id \ - d2a36a8c-6fb3-4261-875e-8822456bbc4b)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - bfa1515f-4fb6-470f-9ae5-84919b8b59e3)(content(Whitespace\" \ - \"))))(Tile((id \ - fc0f19fb-229e-4187-b623-41ff6111b24f)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - a3f15ef2-e460-4dfc-bb61-fbedba9ab321)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 7a12e1cc-3f2e-45e1-be62-71b78097957c)(content(Whitespace\" \ - \"))))(Tile((id \ - 8df21149-a38f-49ed-84fe-5f5e83809637)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 0c17f378-49e0-4eb2-b9fb-b90bbb8d740d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - d7b07adf-c1bb-4fef-be0c-920a54d9c5d0)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 888fccf9-8e5f-4760-be1c-d606300b7bc2)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 4cc6a91c-e1dd-4f59-ba75-897ebface5dc)(content(Whitespace\"\\n\"))))(Tile((id \ - 44395e54-de4a-4d4a-866d-31c6991e7004)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 345456cd-a4b1-4433-b6d7-aa0cdd8230b4)(content(Whitespace\" \ - \"))))(Tile((id \ - 670001da-ab32-488d-9c1d-abecd21636b3)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - d4bc69cd-616b-48e1-8f85-00af9db27d39)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - a649fdc8-3ec7-48a7-81e9-e9f3bf1c066a)(content(Whitespace\" \ - \"))))(Tile((id \ - ed9f4c24-134a-486f-b3bf-6acf3c08a6dd)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 49cde020-1dcb-44be-9005-1f389e617d82)(content(Whitespace\" \ - \"))))(Tile((id \ - 3905e512-9aa4-4ab0-b04e-f4786812da9e)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 2654b246-89c3-420a-86c6-1aed89b67173)(content(Whitespace\" \ - \"))))(Tile((id \ - d74ee9b8-3a04-4ede-af2a-a963db19675f)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 5c13fc12-9be4-42e2-951e-68ef1cce1da3)(content(Whitespace\" \ - \")))))((Secondary((id \ - a6201111-d191-46c7-9586-e5ea7a0d332e)(content(Whitespace\" \ - \"))))(Tile((id \ - 72d906de-8061-4ed7-a353-7c8e6d3dfc6a)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - d413d35c-d803-4c02-ac95-e683efd8591a)(content(Whitespace\" \ - \"))))(Tile((id \ - ebc05c7f-07a0-4b3c-ab67-833e556b156a)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - e56cab14-55c6-4029-9154-6de5d2dc909a)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 558941d2-7be4-4065-83ef-93649f6d8cde)(content(Whitespace\" \ - \"))))(Tile((id \ - 23c9a9af-4407-4213-8ea2-455466c46119)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 0cde4e0a-98dc-468f-8a44-ba2fea56ed49)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 023ddf1d-110e-4830-aecc-8bc19be454da)(content(Whitespace\" \ - \"))))(Tile((id \ - 461c4005-40ce-4952-bbd8-f9631528a10c)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 0cebaff7-5382-4cb5-bb3e-7e445f001f4d)(content(Whitespace\" \ - \"))))(Tile((id \ - afc88503-3c16-4243-b465-14e807b66446)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 8c43f148-2876-4ca8-94c3-bd42fe927d4b)(content(Whitespace\" \ - \"))))(Tile((id \ - 8da7da3f-1460-40a0-a975-5c4b6f042873)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - f4806e9d-37d1-4390-8f94-4d1b8446119f)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - efd7ceff-b80c-43fc-bc38-94c6392e23e4)(content(Whitespace\" \ - \"))))(Tile((id \ - 06ec0827-fe93-4fe5-a36a-5357069eb2f2)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - cb5458f9-858d-46d8-b385-e03498a99ee2)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 051ca841-f108-44b7-a7e9-0567c885e11c)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 236d7b22-3415-4a10-a0d6-785e958aef93)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 3e9d1246-8a0f-424c-b70f-49f31459b670)(content(Whitespace\"\\n\"))))(Tile((id \ - 01d328d8-5a45-44cf-88a6-779b0b5a6614)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - d68c60c7-dd64-4964-90c9-ca00c81958cb)(content(Whitespace\" \ - \"))))(Tile((id \ - fef2c656-6496-4d28-91a2-080777feedd5)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 85c1cf30-5e31-469b-809a-fdaa68feb8bd)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - ff8074b7-adc2-49bb-b955-ebffae9334cb)(content(Whitespace\" \ - \"))))(Tile((id \ - 399dd3a5-47b0-495b-a0b3-0adb588825d6)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - e24191c1-bd1a-4198-a7b1-f01bee5b76f4)(content(Whitespace\" \ - \"))))(Tile((id \ - 9dfef0a4-c410-40bb-9769-66b71533bf42)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - a09d3373-094a-440f-8943-680149da8066)(content(Whitespace\" \ - \"))))(Tile((id \ - 86932dbf-7439-46c0-90d4-455c052f4abd)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - ff13a0b9-b50e-40df-b336-a3eadb46b42c)(content(Whitespace\" \ - \")))))((Secondary((id \ - 4c325100-74c7-4bd2-8a89-232f0a0b414f)(content(Whitespace\" \ - \"))))(Tile((id \ - 2c164671-2faa-4d84-ab2f-c0e341b529eb)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 96018f05-2e0a-4eb9-9c97-ec586552a39b)(content(Whitespace\" \ - \"))))(Tile((id \ - 9572156f-8f54-47f7-8575-424ee16e5525)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 40486f0a-2699-46f5-b2b3-b5783ddf1397)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - c3f8dafa-dca6-4ec0-bd3d-dab9ac106a39)(content(Whitespace\" \ - \"))))(Tile((id \ - 7b932435-b4b5-4226-98ef-0ccf56798d13)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 4640e4ab-feec-43ec-966a-2024927f31e6)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 5e3273a2-cf78-465b-97af-ee302b9ceb26)(content(Whitespace\" \ - \"))))(Tile((id \ - a3f4f6a1-52ad-478c-914f-575b442b1950)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - cd921878-badc-4820-8511-ab89a24c2f0f)(content(Whitespace\" \ - \"))))(Tile((id \ - a8c0da36-61e8-4ce7-9e2d-20afdc25cfb0)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 9a994449-64a3-4aca-8f50-720723c163eb)(content(Whitespace\" \ - \"))))(Tile((id \ - c2aed4b3-9fba-4f50-b40a-d2599b65bd7b)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 271ee3ad-cfd0-4394-adff-9de4c4c65ade)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - edcd8312-7c21-444b-8465-f865c635d041)(content(Whitespace\" \ - \"))))(Tile((id \ - 3131a2b3-8ad7-4919-aa06-6ddf6f56a2a8)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 096de3ba-b14f-46e5-997c-d867c81fd6cf)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - a1b648d4-1490-4d95-8182-04839dc3f538)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 5d58099d-f550-455e-b274-b8d44b673764)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 4ba5ad49-1425-44ea-9961-3bb16e514206)(content(Whitespace\"\\n\"))))(Tile((id \ - 96ec8227-f5f6-4d9a-beb1-b6de5b4cfafc)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - ee59cc36-6cc6-4a11-a7b4-863f1e8334b3)(content(Whitespace\" \ - \"))))(Tile((id \ - 484b4174-f8da-4a33-932a-7644fe992b29)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - e8a7e593-6f9f-491d-a3c1-f6fac3e726a2)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - f83f64ae-470e-4f90-9d65-b89c75a4790e)(content(Whitespace\" \ - \"))))(Tile((id \ - c9c237c8-500f-4464-80e6-0b8d7a216447)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - c96d378e-344c-4693-92f9-f4f822a91c0e)(content(Whitespace\" \ - \"))))(Tile((id \ - 620e8167-f2be-4612-8a71-713085cd3c55)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - be87fa75-2b97-4248-9a33-688b219e0eee)(content(Whitespace\" \ - \"))))(Tile((id \ - 4491f8bd-ab06-4105-be04-e3332da642d4)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 54f32652-50c6-412e-ae71-c9b4822dec4b)(content(Whitespace\" \ - \")))))((Secondary((id \ - 97cfd64c-f6ed-4827-b18c-b37ff8ee0ab1)(content(Whitespace\" \ - \"))))(Tile((id \ - 51d12a97-54a8-42a4-af38-4b46ee5f1fea)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - cdf1bfa9-4c7a-4c90-9219-3bb6cadfc401)(content(Whitespace\" \ - \"))))(Tile((id \ - b9caeb1a-13b9-41ba-87a0-7048f4b2c085)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 47d38601-0a62-4421-8186-4725f5e86b0e)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 404685af-9999-4d72-a83e-f00dee7c3070)(content(Whitespace\" \ - \"))))(Tile((id \ - 5a20a632-5831-4b43-91ee-c89296ac87c5)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 27b52b4b-f200-4ea4-a6b4-4a89f1f73350)(content(Whitespace\" \ - \"))))(Tile((id \ - e46dfb03-2909-424f-a544-eee9173a06de)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - bc62f67f-2872-48cf-9d3b-d4b161c9713c)(content(Whitespace\" \ - \"))))(Tile((id \ - 6198cfa1-3918-4af3-93aa-2737f4e2300f)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 648999a3-e9cd-4572-a1e8-91069847516f)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 33ac7908-d5a5-440a-97aa-daa7feae7abb)(content(Whitespace\" \ - \"))))(Tile((id \ - 8a3ac91a-9de0-4fb1-a6c6-39f34f5e5ce7)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - a6dfbc30-52c0-4961-8359-6a7cbccf5050)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - c1d5a8cd-0c31-4545-b4a7-668574a2262e)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - cc7f868d-169b-48a1-8776-708fdbb271f6)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - aefaefe0-c489-459c-a90f-676a273e45d3)(content(Whitespace\"\\n\"))))(Tile((id \ - dfb2c3d9-d26c-41ac-acd4-331d8f18fb38)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 5c1ca163-3b80-4b33-9131-e26af61def24)(content(Whitespace\" \ - \"))))(Tile((id \ - 015a9c9d-49fa-48f4-af81-41f8a9176910)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - f3229705-7b06-4a16-bf2d-ccad56fdd66b)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - c20b44cd-647b-4dd4-a55e-f52e09387e3c)(content(Whitespace\" \ - \"))))(Tile((id \ - 0578cab9-80e2-469e-a804-283cf1ad16e0)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 4dd87f5a-457d-4000-84d8-6981913a19a3)(content(Whitespace\" \ - \"))))(Tile((id \ - 4db7eb0d-f6bb-4382-8e9d-7d5855f2e45a)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 4c5bd26c-d016-4aab-a760-87732dc66df4)(content(Whitespace\" \ - \"))))(Tile((id \ - 6a34b025-738a-4211-b0bb-e3aa3bcfaf15)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 2762c599-df68-46c2-ab8f-e71ee885f3ff)(content(Whitespace\" \ - \")))))((Secondary((id \ - 5b312070-fc46-4386-9087-2e4eb7a90a40)(content(Whitespace\" \ - \"))))(Tile((id \ - c31efc42-92bd-4b1f-98d9-f8403b2bd353)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - de4d1d1e-a36a-447c-b4a7-b6d388726378)(content(Whitespace\" \ - \"))))(Tile((id \ - e705d8a6-48de-40ac-bf4e-4a993716e2f5)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 9faf313a-e902-4342-8bd8-60e31698845d)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - c70579cf-0afa-4105-a2d8-e1c1e4ef7757)(content(Whitespace\" \ - \"))))(Tile((id \ - 1d95e5e3-df69-4520-99af-3d7ddf297ae8)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 086964f8-ab1a-46c6-9f7b-9e1dbc607452)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - a11341f9-b8a9-44e5-a04c-2579378cfd2b)(content(Whitespace\" \ - \"))))(Tile((id \ - bce55a9e-3000-4e8c-8fe4-8fc0a45dbb07)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - c6c901f2-2d3d-4788-ab41-bb14f9d81d70)(content(Whitespace\" \ - \"))))(Tile((id \ - dd2780cf-f96f-4b13-9520-b06e352c1184)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 2802c239-3dce-4afd-8b3d-a5f17b6c49a4)(content(Whitespace\" \ - \"))))(Tile((id \ - 554e55fb-140a-41ac-9297-bb637b418b78)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 0f1edec5-fa60-469d-a10d-8e83f7deab1a)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 27eb87fc-73d2-4af0-89c6-c3e9f18db8cf)(content(Whitespace\" \ - \"))))(Tile((id \ - 64c54a8c-0bf6-4a8f-824e-0c6852b5f9ee)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 3978b95b-b042-4db4-87b7-cfa0c6d07541)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 01389a6a-40bf-481a-bdf8-292731c99c71)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 4baf1e3f-8382-4e98-8e80-184b54aec095)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - c0dc0ee4-46c5-4477-9cc6-807e9177f9a4)(content(Whitespace\"\\n\"))))(Tile((id \ - 51b97558-4055-45df-927b-fb265bdf5bfa)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 2b8cae90-b0fe-4b4b-b588-3ab3f0179e6c)(content(Whitespace\" \ - \"))))(Tile((id \ - 14a62537-ed95-48a3-be96-4cbd3180dfcd)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 06c401be-259f-4a9b-b9d1-b1c150e3a242)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 9e49fe6b-6c3a-490a-91cc-877850d74b7a)(content(Whitespace\" \ - \"))))(Tile((id \ - aafc41d1-3e03-4087-9449-a2bf4ed30c18)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - b9de13d2-fdb7-495f-8439-3b556350ec62)(content(Whitespace\" \ - \"))))(Tile((id \ - 1f096804-096d-4e60-a161-aa5b8fd96038)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 1f258ee2-fade-4ba4-8bd5-7b29b09d788a)(content(Whitespace\" \ - \"))))(Tile((id \ - 7b548d5f-1146-4d20-99ef-463d3ef58ee2)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 28e73001-ebd8-4fde-9258-f4c1246abea3)(content(Whitespace\" \ - \")))))((Secondary((id \ - 7d2fb8a0-183b-4461-94c0-22094f91e3da)(content(Whitespace\" \ - \"))))(Tile((id \ - ccce627e-8ed9-4548-8b20-fb21c2336f88)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - a98e10cf-083b-4fd2-b1d0-8b48158594d4)(content(Whitespace\" \ - \"))))(Tile((id \ - 8304c105-574b-4ff2-8bd0-49ec6fff1ab1)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - bfbd35de-d70b-4722-83cc-d8d4274e38c8)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 8eb4dc36-4e5d-4fde-b4d8-825f6a72a669)(content(Whitespace\" \ - \"))))(Tile((id \ - 9aa05c03-3d06-4fbf-be2a-4e108738f262)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 03545f59-d1d0-458e-a76c-2f1b3b7f597d)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 27cdcb58-f75e-4d2c-8eaf-bbba044374d4)(content(Whitespace\" \ - \"))))(Tile((id \ - e3c8fece-e098-49cf-9aae-f190fdfb8734)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - ee56f34e-620c-4943-8e54-35c18c629342)(content(Whitespace\" \ - \"))))(Tile((id \ - 98682a79-5211-4c97-a12b-c19d576a8d53)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 3f9aa75e-0848-4a4d-bde1-881c1f0089f7)(content(Whitespace\" \ - \"))))(Tile((id \ - 2bb60bea-2c86-4c12-9b19-968ff80f143e)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 7175ac98-f0d1-4822-beea-f8d33f878cf7)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 9a3fd89e-dfa5-4ddf-9874-5ad61930698d)(content(Whitespace\" \ - \"))))(Tile((id \ - 5e8b3a5a-61ed-4b75-b49d-5a43a09c0f52)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - b1f8562d-3e9e-4223-b21d-6f58d4bcc059)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 40d534dd-11e0-40a1-90cc-28113e7763ff)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 0e6526da-0046-4138-94de-e82946772cfc)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 2ef640fe-5954-4cbb-b021-55b3b587cc04)(content(Whitespace\"\\n\"))))(Tile((id \ - a19c56f1-a816-4e38-aea5-0d6f420485a9)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 98128ccf-eb80-4274-a9f8-11446c56b5b5)(content(Whitespace\" \ - \"))))(Tile((id \ - e7ea6026-d6ba-4f07-a0c8-d047bd2f7345)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 44557d34-334c-4d06-9385-51e758dc83e7)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - fec09f88-6801-42a7-9175-9ef7303246f7)(content(Whitespace\" \ - \"))))(Tile((id \ - 2c2a1818-84d8-4c58-bc5d-3b33005ddb1d)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 57a45db0-c303-4c3a-bf1e-01f25e6a0ed2)(content(Whitespace\" \ - \"))))(Tile((id \ - d7063e08-d506-42fa-ac6c-4ae28161a2d9)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 10b217d4-3767-4336-ba63-ba8e6b3cb32f)(content(Whitespace\" \ - \"))))(Tile((id \ - 85bd9a4c-faea-4a76-b8f0-cf6d37a6bc08)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 2bfe4276-4545-4fd1-a956-8199488be84a)(content(Whitespace\" \ - \")))))((Secondary((id \ - a0123bb1-437f-4087-bee7-a806c490d512)(content(Whitespace\" \ - \"))))(Tile((id \ - 19d73c19-8fa2-457a-b7af-2df583748713)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 3f1e9ee0-1072-41a4-a399-b8883997ad74)(content(Whitespace\" \ - \"))))(Tile((id \ - 8ff514ba-39bc-4814-b9b2-b2f96459433e)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - f4644458-7e5b-4845-a044-ae6258f9b034)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - b8374dca-8331-4521-bb0d-fa528029b446)(content(Whitespace\" \ - \"))))(Tile((id \ - 5600f0d0-e653-454c-8c78-7ef3c536ccb0)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 5ffd63c6-4a32-4a55-9ae1-4678ab18c632)(content(Whitespace\" \ - \"))))(Tile((id \ - 9a0d1541-040f-4005-bc06-0de95750ec66)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - e388c305-99b7-4e44-86a1-3f0d2f6db4f1)(content(Whitespace\" \ - \"))))(Tile((id \ - 8ce8a964-f121-45fd-902e-2d3c921b202e)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 2b9a92dd-ee7b-438f-b11c-8c933b4c5dc8)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 3cdf446c-32f8-4537-b8e2-d19635cba9e3)(content(Whitespace\" \ - \"))))(Tile((id \ - 885c9638-f14c-4209-a18d-0027b9d60ee9)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 0959e0af-9d29-4781-ab5e-cb4e47eec8ac)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - df1ede34-f81f-4872-b3a0-40e465e76686)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 4d2fa6a7-1ce4-452d-9d9f-87c6e90ff090)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 2eb49856-902d-404a-b748-5feea0ca1768)(content(Whitespace\"\\n\"))))(Tile((id \ - 7a8e41c6-5e9d-44cc-b4eb-7cbfdacc1553)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - cfdf24e8-9a1e-4706-a496-1d4e02d66678)(content(Whitespace\" \ - \"))))(Tile((id \ - 2c18ffbd-d1a1-473d-97ad-5f7ab8b2c912)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 4464bd4d-b398-4b81-9b91-1c1d1bd359fa)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 83f46475-1e0b-4ef4-b673-b8f1a32d41de)(content(Whitespace\" \ - \"))))(Tile((id \ - e9702d52-7f41-4388-af63-657a7220eaad)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 76b34502-9430-45ed-a772-5fbc6a9be180)(content(Whitespace\" \ - \"))))(Tile((id \ - 20ece6f4-e474-4ac2-8694-e3dc032735b4)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 2003cf1f-e928-41a1-a5e3-099d2b178a7f)(content(Whitespace\" \ - \"))))(Tile((id \ - 13542ada-13e7-4363-a5f6-26c5368b23c3)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 650ef260-46ab-48b4-8c90-ec74bc051db4)(content(Whitespace\" \ - \")))))((Secondary((id \ - b4529b9b-30ff-4d26-bde9-1335db00c6c0)(content(Whitespace\" \ - \"))))(Tile((id \ - c6f437ed-3ead-4a0f-a94e-4c26491aa33f)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 399a8732-ec09-49cf-a7f8-8328d63f0286)(content(Whitespace\" \ - \"))))(Tile((id \ - f90f910d-d864-4376-bba1-541c48e7d7b3)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 86642454-aab9-4523-ab80-bdd57e8959d8)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 77a85ab8-e478-4505-90ef-92be37a3e9ae)(content(Whitespace\" \ - \"))))(Tile((id \ - 161cc43e-ec94-429e-b91b-c19ba5b78531)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 150ae360-22f9-404a-89d0-5e3ff3b04a35)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 9483c348-a09b-47fc-a3df-0ac8e8b889d3)(content(Whitespace\" \ - \"))))(Tile((id \ - 60f2da67-9cbd-46e7-92bd-a4d6559271a7)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 9fc8d718-c1e2-4abe-9c3b-80ae5f211b1e)(content(Whitespace\" \ - \"))))(Tile((id \ - bbac6b16-cb7f-4010-ba4e-72fb7680e08e)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 18b1c92a-a5c2-4e65-bdf4-bad8219ac43a)(content(Whitespace\" \ - \"))))(Tile((id \ - bdb128b4-b722-4d11-b512-4a12bdd52bc5)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - b1f07ebc-d87f-44bf-bf6e-bfd25fc0a1d0)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - e91971ff-13df-4635-915f-bb0848c342d0)(content(Whitespace\" \ - \"))))(Tile((id \ - 87cb2b65-acd0-40b7-8c78-029134db7160)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - d108db24-3242-40e0-bf0a-b0e7e43c608e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - b485d614-c9bb-4bc9-a203-16b73ebf346f)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 4ddd71d0-4bb2-48d2-955c-ef3328946282)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 2152af54-f0c0-470c-8813-e58a1d7bbb60)(content(Whitespace\"\\n\"))))(Tile((id \ - 65043ff3-6dce-41bf-86f4-e2f2702de6fd)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - e5027c61-0c83-4387-aad8-7c57b1e02b32)(content(Whitespace\" \ - \"))))(Tile((id \ - dc7273f2-0d50-458a-8f9e-985aa162d16a)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 61dcdae9-5537-4509-976f-31ea5a31dfa5)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - ebaaf9bc-ac82-485f-9d92-4646e148468f)(content(Whitespace\" \ - \"))))(Tile((id \ - e1430b36-4e7a-40d4-81ec-be2fb3c46e55)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 9279ef56-b02b-424d-8af6-20eb45f33767)(content(Whitespace\" \ - \"))))(Tile((id \ - f1f6ca79-b481-4b65-8747-127671befa58)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 24e89e5e-4f12-45b6-9d27-cd79d024ab3c)(content(Whitespace\" \ - \"))))(Tile((id \ - 64cec726-87a6-495b-bd78-f2682f07d4c1)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - abe4350e-19f8-4d6c-ab9b-29a77b2f50f7)(content(Whitespace\" \ - \")))))((Secondary((id \ - 2f2577f7-9dd2-4064-81ee-ecbc3cb8928b)(content(Whitespace\" \ - \"))))(Tile((id \ - 68eda258-5832-4cd8-8694-37321878756e)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - e502e437-a087-4576-8436-27f3213a2cd6)(content(Whitespace\" \ - \"))))(Tile((id \ - a6f283b2-c95d-49bd-a8dd-55947e2a1270)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 3bab8d58-d0ad-43f2-b149-d84f78dcd61c)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 8bca23ab-78c4-4ea3-ba15-c0223e504d33)(content(Whitespace\" \ - \"))))(Tile((id \ - 3b819b9d-669e-4d1f-ad5e-fd2dfce7f12d)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 35c887e9-f52e-47d9-8121-4be61869454c)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 3b036e98-60cf-472a-9e8f-01c5ced8a8d8)(content(Whitespace\" \ - \"))))(Tile((id \ - 0bb2edf1-0cc1-41f9-8e9a-d80e8b0637e3)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 05d20c47-aa5b-496f-b72d-6d9447cc6d70)(content(Whitespace\" \ - \"))))(Tile((id \ - 8a5b8d39-1c51-45e9-a788-cecc9ffb450c)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - edd46a22-d261-4d93-a5b1-9b5724cdd9a5)(content(Whitespace\" \ - \"))))(Tile((id \ - 13273931-f8a8-414b-97cf-be7a23d73d5e)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 6d496488-09c4-408e-821b-ecffe9f69dab)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - eba3c130-0ecb-460a-acbc-853a850a1828)(content(Whitespace\" \ - \"))))(Tile((id \ - 29d0aa2d-ddbd-4757-abc0-061e584172c0)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 54dd5f77-6e58-45bd-9033-50415c188e20)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 26d73d95-02b1-46bf-aadf-46aec79fd5cd)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 4f7a1bd8-b0ef-409e-9271-181dcb58722b)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 4d3f9222-9f37-4c30-8509-f9dc9613027e)(content(Whitespace\"\\n\"))))(Tile((id \ - 8c441a61-9777-4b1c-9259-86b90fbc4718)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 5e6f8aae-da65-45cc-9786-f1823b777da7)(content(Whitespace\" \ - \"))))(Tile((id \ - 6147717f-ce5c-42ad-adc7-da64a8bd061a)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 7d27c56e-9cf7-422b-9e8d-2fc2a9eededa)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 1db23200-8e64-4e54-bd1c-7b5cea608b19)(content(Whitespace\" \ - \"))))(Tile((id \ - cfc31226-9350-4c16-a3f8-050d949a08cd)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 742f7569-f38a-4c57-aa28-d88b71a6f552)(content(Whitespace\" \ - \"))))(Tile((id \ - 12f7912f-1216-41db-b8a2-eb9671e4d468)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 3be812d9-6334-4edb-aa0a-4a806380e5f2)(content(Whitespace\" \ - \"))))(Tile((id \ - 1215de91-8b24-4fe1-a090-de59d0033f4e)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 60fe0844-8a99-499f-a35d-7856f719d576)(content(Whitespace\" \ - \")))))((Secondary((id \ - d39b46db-5f4f-414e-a73d-31b5ac910179)(content(Whitespace\" \ - \"))))(Tile((id \ - eca88e9e-819f-45b7-b0a3-1443665ec3e7)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 92b93201-1df5-4103-beb5-6ef07e71d16c)(content(Whitespace\" \ - \"))))(Tile((id \ - f8ac367f-8937-4b64-884c-6451195c9543)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - f2b8f686-c841-43a5-9d3f-9ab5df0e8792)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 0848f952-375f-4ca0-8e11-5c74437f877f)(content(Whitespace\" \ - \"))))(Tile((id \ - 78ac8eb3-eff9-4e8f-a741-c2910cb15036)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 8be47997-bb67-4709-8576-d501c9c6f7b9)(content(Whitespace\" \ - \"))))(Tile((id \ - 581e9b22-4c79-4c52-90bf-e728af94a949)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 4c250464-befe-470e-98ca-80464f349317)(content(Whitespace\" \ - \"))))(Tile((id \ - 22f047c1-f8e8-45fb-8195-672ef54f926b)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - b0e7f832-107c-4adf-8423-68ba53a17902)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 53d99323-7374-4682-aa14-ea9ae56ada88)(content(Whitespace\" \ - \"))))(Tile((id \ - 500fffbe-147e-4431-8c4e-5826fe11871b)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 846762a1-f79b-491a-988b-38e810cfae08)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 912de3d4-1ffb-426e-89e9-42f9cd6f53cc)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - ca684f2b-9a71-4356-b6ce-ca0f3c9bc0d5)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 59f87025-ba17-4b81-9244-ee934bb37bc8)(content(Whitespace\"\\n\"))))(Tile((id \ - dff3d135-c383-41ef-8950-14ecf1c29366)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - bd99843e-277c-4bbb-9eb1-4644682ace84)(content(Whitespace\" \ - \"))))(Tile((id \ - e9e4dfb6-6c9a-45e7-a321-73d822a3c2fe)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 39e0ddf7-409c-4501-bf7c-7d84bf705ad6)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 4fd5037e-379f-4df1-9013-708cd696a48a)(content(Whitespace\" \ - \"))))(Tile((id \ - 669c0122-a10e-4943-b931-f9543b5628bb)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 02199619-4219-4b1c-b040-791e682292b3)(content(Whitespace\" \ - \"))))(Tile((id \ - b4bd5b28-d004-4cb1-a7af-ef7f614e6e53)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - fce3b39c-6801-499c-9a84-5503fac6c37b)(content(Whitespace\" \ - \"))))(Tile((id \ - ec743d49-6c4f-4d11-bd09-0e4f5958e98b)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 912b285a-0dc3-4e46-b91e-b62db6f93f62)(content(Whitespace\" \ - \")))))((Secondary((id \ - 0413683c-d92f-4bf0-aaa8-0906b9cc262e)(content(Whitespace\" \ - \"))))(Tile((id \ - bd067150-6e8b-4ff9-8ecf-40b1f5d898c1)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - cfe6deae-c503-4c4e-9874-641c1c4799a4)(content(Whitespace\" \ - \"))))(Tile((id \ - fea62697-8566-4e39-b7e0-ff85c2769357)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - af4d8b0d-3b42-4710-8c71-f3f442894293)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 12b568fe-a2b7-4bd2-8340-8d7c9b125b64)(content(Whitespace\" \ - \"))))(Tile((id \ - 954ca980-5411-4dbe-b228-00efb66fa054)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 47fcc2af-ae97-4341-ad02-a256b2b8d307)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - d517deff-6469-4b0a-811c-b247359750de)(content(Whitespace\" \ - \"))))(Tile((id \ - 6b8818fb-8a04-4e9b-a06a-eb9d0d49e6cf)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 04eb868f-e332-4a9a-b597-a8d0b0280976)(content(Whitespace\" \ - \"))))(Tile((id \ - bc0ef424-20c8-4e1d-9677-869abe58c766)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 9af80ce5-9846-49be-b7d8-a145136e12ec)(content(Whitespace\" \ - \"))))(Tile((id \ - 7aa44f9e-7e49-48c9-8836-6f5b6d425697)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - eb8f9e3a-a4b7-43e4-97d4-641e4bafd17e)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - e46f7506-1a51-4a95-bfd7-c1c4bc625d6a)(content(Whitespace\" \ - \"))))(Tile((id \ - 3adb1d79-6e7b-4e18-a2c5-57ecd86593c1)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 479dbf3f-ba6a-48c0-ac87-b66e93acc316)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 85729376-763a-4acf-ac8e-1da370b7df1a)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 9e5e8178-381e-4c10-b980-7ec168184efa)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 497a0d60-0ab7-4d96-9ac1-717fbaf1efca)(content(Whitespace\"\\n\"))))(Tile((id \ - 8f7563b2-9455-4599-9ff5-75ed69af637a)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 28594a45-8136-475b-a6cd-659eaebf389e)(content(Whitespace\" \ - \"))))(Tile((id \ - fed34b9f-5700-49aa-963a-8956bff955b9)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 7c171d8d-5551-44b8-bffe-6c5309cb8556)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - f750c67d-0faa-436c-a510-1e2827d91b5b)(content(Whitespace\" \ - \"))))(Tile((id \ - 61b971be-4988-4f4a-9c17-4b0348f43f99)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 6a466449-56eb-4788-a403-6ecd5a78608c)(content(Whitespace\" \ - \"))))(Tile((id \ - a60b549c-f762-4be1-9777-6089b8b65f28)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 1a7206f3-795e-419e-86c4-8ddd15a4b177)(content(Whitespace\" \ - \"))))(Tile((id \ - 8520407c-631a-4604-8b4b-e10c4ce52df2)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 31fcd1c1-352a-4398-a7b5-8864fa8b506e)(content(Whitespace\" \ - \")))))((Secondary((id \ - 5f28a5ec-6a33-4f91-893d-dbbd18425817)(content(Whitespace\" \ - \"))))(Tile((id \ - 6bd798f6-295d-44e0-b703-3c545968fea9)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 4386035e-5010-4d2a-a56b-8e369cdab53a)(content(Whitespace\" \ - \"))))(Tile((id \ - f942974a-343d-4802-869d-424f82da3f92)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 72d4784e-f6af-42f4-a759-4b7f58932ad9)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - c5db147c-a182-4930-be02-f40882740402)(content(Whitespace\" \ - \"))))(Tile((id \ - 7c14bc9e-7371-4820-898a-f282d3fded38)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 860fc3fc-2ce5-4f94-bcd4-5309e35d21ca)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 656d2c3a-adba-4440-b19a-e9f1aba703c7)(content(Whitespace\" \ - \"))))(Tile((id \ - 68ad3de0-09d3-4c4a-b1c5-23e178d5ee17)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 25ebe2d3-9f7e-46c4-bbe7-ecfd9d4bfa16)(content(Whitespace\" \ - \"))))(Tile((id \ - 78084462-d834-4411-aadb-07502e58a4e6)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - b9fc286d-232b-4c8f-9293-eba980beeb52)(content(Whitespace\" \ - \"))))(Tile((id \ - 4f85fc72-e07d-4025-ba79-945ba8f3a4db)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 5c4a559e-2615-499a-87d5-c1c9c03febf2)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 7961eecd-efa1-47a3-9751-23497a93a110)(content(Whitespace\" \ - \"))))(Tile((id \ - 1df1b019-acaf-4a69-be7a-6536f6063ceb)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 12e0b1cf-157e-4218-b357-6f4c0dd10463)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 11553788-86e8-414d-9cc3-756ac478b13f)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 142047ba-cd7f-4827-85e4-06aa322c1c3f)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 24c62fb1-1c75-4a40-a4c0-72f2195e96da)(content(Whitespace\" \ - \"))))(Secondary((id \ - 07002c8e-aa91-4c28-82ab-2a087e3b1612)(content(Comment \ - #ERR#))))(Secondary((id \ - f895dfd2-13d4-44d8-be73-e9b703bb1094)(content(Whitespace\"\\n\"))))(Secondary((id \ - 365ca0b0-a697-433d-8514-d6174b4090c7)(content(Whitespace\"\\n\"))))(Tile((id \ - 28164dcf-ff08-461b-92f7-32860f171cab)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - aef0f946-d973-4312-9e7a-0fcbc51f567d)(content(Whitespace\" \ - \"))))(Tile((id \ - 3aaaf7e2-490d-4380-a87f-202778445eda)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 296fdf06-82f0-4404-b7b3-e09d9d81a773)(content(Whitespace\" \ - \")))))((Secondary((id \ - 7651a4fd-7989-49c6-b4c2-c414bf0fce55)(content(Whitespace\" \ - \"))))(Tile((id \ - b48f2de7-7327-4256-bc92-d95e266304bb)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 6117c5a7-cb48-4a61-be2f-68af17e7b0b8)(content(Whitespace\" \ - \"))))(Tile((id \ - 57b917d8-e170-4ab5-b3e1-5bb8a2ae272c)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 9b6c7d09-7c66-48ca-9421-9e5abefe099c)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 17432af9-f82b-4fe3-8527-002b59570bbe)(content(Whitespace\" \ - \"))))(Tile((id \ - a6f7ad03-d8f2-48cd-a238-a0a89898f885)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 006fd185-4467-4f74-b767-157ac04257c8)(content(Whitespace\" \ - \"))))(Tile((id \ - 5326a8b0-b3ad-4eaf-93dd-9365d65dd0c4)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 9be71035-77a5-43d1-8c72-757283304ce5)(content(Whitespace\" \ - \"))))(Tile((id \ - ef918a20-47a9-4d1b-aa5e-9f7d37756186)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 2cf2b8dd-31e9-48b7-98dc-b24932a0f242)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - c43eeb3e-cd6e-495f-b45d-da6be67c0aec)(content(Whitespace\" \ - \"))))(Tile((id \ - f048757e-1228-47d8-9ae4-ecd45f8f30e0)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 229108a9-3793-4704-a18a-7105709635ae)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 17082d93-e429-4240-9500-1fee13b7fb23)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - c90802e0-7bcd-4af0-8857-4e9b2cc894bb)(content(Whitespace\" \ - \"))))(Tile((id \ - e48629c9-af5b-40eb-839c-b72e1eef788c)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 7bda3602-722b-4311-a048-35cb6e8de85a)(content(Whitespace\" \ - \"))))(Tile((id \ - 76e8a28c-ec7d-4170-ad7b-0cd3eca5a081)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 04b6f724-922b-4c05-a750-a42532383cd9)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 24fdccaa-d71c-4b52-a79e-6b8c0a2f85a6)(content(Whitespace\"\\n\"))))(Tile((id \ - 7ed645bf-2e8d-4227-8531-c2d26da9e73b)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - e4886839-ea76-4438-9006-35be8d065553)(content(Whitespace\" \ - \"))))(Tile((id \ - cfd8bd18-0549-4142-bbee-f51cb95d340e)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - c0cbe279-c697-48c5-9dd7-3762b751e91e)(content(Whitespace\" \ - \")))))((Secondary((id \ - e05b807c-c4eb-4570-9cc5-f4fbb362ee74)(content(Whitespace\" \ - \"))))(Tile((id \ - f6ca0585-f98a-4e3c-a885-76f53a4e5ea0)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - f91d5a37-ad48-4e6b-a7d0-f13200591773)(content(Whitespace\" \ - \"))))(Tile((id \ - 2795203d-0717-4c13-82b0-eaaa6adc142e)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 38f334e1-4d7f-4c63-a4a7-a7dc8abb96c9)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 551804aa-483e-4ccc-ae87-0a5030faf713)(content(Whitespace\" \ - \"))))(Tile((id \ - f38402bc-8b52-4db6-a19d-92b4b9fd6be2)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - f73c851c-7dd6-471f-bbfe-7c6a2cfb9626)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - f5862777-feaa-4502-8c3c-aada463eeb74)(content(Whitespace\" \ - \"))))(Tile((id \ - 3a66731e-7f72-4f50-af3e-6677babad8c2)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 510e7bb2-2c72-4196-b5e8-765112670b93)(content(Whitespace\" \ - \"))))(Tile((id \ - 34de1a6c-ae02-4c5a-ba1b-efb4625a70a7)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 086bb1ba-c2f0-4f57-b659-029ef20eec7b)(content(Whitespace\" \ - \"))))(Tile((id \ - 9f2e7ca0-882b-4401-ab30-0a0e3dc2cdee)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - f05b8ca0-c141-4846-9d80-fc76455fe268)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 3b2fe1b9-2db4-4100-a22a-f3f29f0d9525)(content(Whitespace\" \ - \"))))(Tile((id \ - 09b61fc5-5208-4e18-a443-10fa11f413e8)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 5e2e3a74-6bc2-4555-92b5-8568aa433ade)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - dd24a755-0573-433e-8b8f-4af069aa6b9f)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 443b31d5-36e8-4cab-9eb9-f4fd9b862f51)(content(Whitespace\" \ - \"))))(Tile((id \ - 1b591eaa-2af5-4354-afd5-779d96c24590)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 21626e70-35eb-4cfc-b9dc-27778eff7541)(content(Whitespace\" \ - \"))))(Tile((id \ - c5549a28-9141-409a-a696-86315e8bab0e)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - f3f502a0-e05e-4c5d-bac4-0940a4384e5b)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 5e566bac-f713-43cf-9a1c-a446bb10fd72)(content(Whitespace\"\\n\"))))(Tile((id \ - b5e39763-e6ac-4504-ace9-2f702b3bf054)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 73215912-7525-4aec-8bb8-5f0d00ed1a2f)(content(Whitespace\" \ - \"))))(Tile((id \ - c932105d-83e5-4abe-9b59-0700a0f06f5c)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 0711ed89-a605-4c72-a2f5-db62706870f9)(content(Whitespace\" \ - \")))))((Secondary((id \ - 79c84649-a8b4-48a8-9133-b2f9514bf4ac)(content(Whitespace\" \ - \"))))(Tile((id \ - ead1b462-795f-4041-a54e-4c7f472d05da)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - d8bacea6-3902-4f36-9f8a-16b330e76f73)(content(Whitespace\" \ - \"))))(Tile((id \ - 569f3650-bbe5-4ec7-a48a-f53f2fa1df28)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 62b71633-f65b-4a48-9ddc-945f9ab163b0)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 885fba18-bb5a-409f-b7c4-65bb60ed64fb)(content(Whitespace\" \ - \"))))(Tile((id \ - 3e5b1891-31e8-44f6-ae80-c795b070ddc8)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 8f851483-70b6-4f2d-925a-57a982bfa93d)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 63302d7d-1590-4836-ae8d-ca087abdc208)(content(Whitespace\" \ - \"))))(Tile((id \ - 34430174-6447-4913-bb3c-f34887b89db1)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 7bd589a8-1217-4eee-9622-f3953e7611bf)(content(Whitespace\" \ - \"))))(Tile((id \ - 92670b90-4e4e-4643-9196-e85d7be9c26d)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 40db8075-75e0-49ac-922a-82cb1cef182c)(content(Whitespace\" \ - \"))))(Tile((id \ - ed88a8eb-3d79-4ae7-ac73-79e4ea801760)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 17c87a74-73ad-4e38-9714-ebc1eaa96e3d)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - a34ed96e-0489-4a39-99be-1b6871fe0b3e)(content(Whitespace\" \ - \"))))(Tile((id \ - 5b1f4213-4405-4149-bd2b-79380456c515)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 5bd418a2-dff7-433c-b0f5-fdbf88c8ae06)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - a8102985-99eb-4c36-a3cf-2f85b0abd07e)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - e255d926-3901-4aeb-9260-c3e603719ff6)(content(Whitespace\" \ - \"))))(Tile((id \ - 29526314-bcb8-45ed-8379-c444ddcc1886)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 40705c42-0d49-43c4-8ef2-d127eefb52fe)(content(Whitespace\" \ - \"))))(Tile((id \ - 55665ab2-77d6-44c0-ba84-248442384124)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 3ef9f1f9-d033-4992-897e-5f2ef8513183)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 15eee5c4-d26a-427d-84d7-1569e3cb4919)(content(Whitespace\"\\n\"))))(Tile((id \ - 7274d08c-4615-4c9b-be36-990fd467e475)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 39de470e-3675-47b3-aacf-e34fe1e8dca8)(content(Whitespace\" \ - \"))))(Tile((id \ - e3df9d58-e01b-4746-9765-90403ce3d455)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 739a28db-0cea-479b-b49a-b7dfed077cf9)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 7c23aec8-8fac-409b-b4ff-ea0c11e1e064)(content(Whitespace\" \ - \"))))(Tile((id \ - 826a23ac-d204-4d9b-b3b2-5ff68758b09c)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 26f344fd-6114-4200-bcfc-0caa5f0cadb6)(content(Whitespace\" \ - \")))))((Secondary((id \ - 7c2e966c-b4d4-42d2-a1b4-fce00bbf6196)(content(Whitespace\" \ - \"))))(Tile((id \ - 1969789a-458b-4e05-b947-70d23b96bf39)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 5c849bda-0f4c-429a-a820-7dc5e8c5be28)(content(Whitespace\" \ - \"))))(Tile((id \ - fc50b426-ba00-479f-b26b-702e44aca663)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - ea9c2647-c134-4639-b2a2-ee96bab7b8e7)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 68abedc9-0113-4009-ab73-af255381a9d4)(content(Whitespace\" \ - \"))))(Tile((id \ - ca7e0e38-2bed-4d9d-aa61-c4da5526cdd8)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - b915f2b7-7aba-473e-b398-efdccca2ac0f)(content(Whitespace\" \ - \"))))(Tile((id \ - 04bd1c05-913c-418d-9cfb-1fd9c50f6ffd)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 01eada3e-b33b-4741-bcd3-60ceb1882b1b)(content(Whitespace\" \ - \"))))(Tile((id \ - 018c7cdd-d028-4add-9aa4-941601d4ad01)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - c88e09ec-9300-4f7a-b731-99d8dc8cb298)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 7aa4206e-8f62-4ff9-9547-6f1480b86c85)(content(Whitespace\" \ - \"))))(Tile((id \ - 7327d675-f536-4078-87fe-69690be87f51)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - c83cb139-41e1-469f-8948-fa675b31fdbb)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - a1f9cfc5-64be-4a4d-9777-fe6feabba0a4)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 28d5aa6d-9124-4b2c-8533-552b69bb15c3)(content(Whitespace\" \ - \"))))(Tile((id \ - 2eb779e0-8654-4ebd-a0b3-f10a2d9fb5d6)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 26a7acc4-31b4-4fc1-b5a0-17ef0e1a4f99)(content(Whitespace\" \ - \"))))(Tile((id \ - b4baeb8f-018f-448f-a10e-b3b593d00a4e)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - bb9c6f93-31f0-481d-ae6c-80cab1902cb9)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 068e9875-3e6a-475d-bfc0-9f2f443b7b63)(content(Whitespace\"\\n\"))))(Tile((id \ - 592c390c-1f19-422c-a471-a5ce868a91cf)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 683e9248-b7fc-4e13-9d75-9e62b8af677a)(content(Whitespace\" \ - \"))))(Tile((id \ - c96dc41f-dcf9-46c6-9448-d39a4c55d37d)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 7efd59fe-7c4e-49c8-8559-fce18a73cc39)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - fcb10726-1403-423f-b442-cdd48dd5d77e)(content(Whitespace\" \ - \"))))(Tile((id \ - 1feba6eb-ebdd-441e-9797-175c910892a3)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 7cde917c-acb0-4f97-9b14-647110bb3aa2)(content(Whitespace\" \ - \")))))((Secondary((id \ - f7d1ce1e-d5f6-4fde-a8b5-3f62db021689)(content(Whitespace\" \ - \"))))(Tile((id \ - 8f685f57-0c38-4dbd-bd98-f4cc665e1efb)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 326534a0-3d18-4833-a6d5-c0858a771841)(content(Whitespace\" \ - \"))))(Tile((id \ - 6e703dd6-b924-4ac5-a880-a2ed7b9f4881)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 7cfddcc5-641c-413f-91ea-383848351b32)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - ac7369fe-9d08-4a4f-b91b-b16761e38d31)(content(Whitespace\" \ - \"))))(Tile((id \ - d4a163e4-32d4-489b-a8e4-7c6d24447c05)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 95ec139b-f320-41a8-a7b1-2ce340b5ad26)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 04807fbe-1bc7-4bf3-b615-6c68a47735d3)(content(Whitespace\" \ - \"))))(Tile((id \ - 3a8eacec-7507-40b7-9462-216d24509a83)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - e7a45951-5ea6-47d7-a181-857895da130b)(content(Whitespace\" \ - \"))))(Tile((id \ - b983bb9a-ffbf-4514-ae30-63adba184fe3)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 875af082-d9c8-4784-bfca-fab86f00b08b)(content(Whitespace\" \ - \"))))(Tile((id \ - b4a60880-3e10-45d7-af87-325b2683a844)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 3bec3d06-d27a-4d48-b9b7-bdeb8e599860)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - ebadd770-c138-4ecd-aded-b533211474c4)(content(Whitespace\" \ - \"))))(Tile((id \ - 1d35f185-762e-4903-8e47-b6fc0a76009c)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 2004a474-7539-4d12-acd6-5eaf194f1948)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 242bf2b9-b9dd-451a-be88-46a3b6fb2628)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 34bd4eea-b342-4070-b657-96707aa51b05)(content(Whitespace\" \ - \"))))(Tile((id \ - d2593a6c-b878-4f1c-8b86-963c0f18567d)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - f6f5a0df-9e77-438c-a919-9c4be59126b2)(content(Whitespace\" \ - \"))))(Tile((id \ - 48d5294e-2b16-432f-8f32-0dcf54ba9587)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 7b8dee0e-55f7-4b8f-bceb-960272396728)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 9584580c-62ff-45e7-86dc-b5d559efdf21)(content(Whitespace\"\\n\"))))(Tile((id \ - 2e8deaa1-fad9-42f6-b2a2-cc74257fad3f)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 6691d181-75e0-432c-867a-2d3f7b3087fe)(content(Whitespace\" \ - \"))))(Tile((id \ - c759eba4-9329-43f9-bb98-7a4e0d8fc9d3)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - be8e424d-40a2-4be5-988a-077f9141f67a)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 4f6b2f24-dd3c-44b2-8445-323f5602a79c)(content(Whitespace\" \ - \"))))(Tile((id \ - b53300b8-7886-4124-bf81-47e1c1888c89)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - f4d020b8-97e2-416a-8985-ebfbb4a45b95)(content(Whitespace\" \ - \")))))((Secondary((id \ - 46143bec-11d8-45bf-9ffc-d4cc5cf06448)(content(Whitespace\" \ - \"))))(Tile((id \ - 5c2c7d78-5f05-4b30-a719-9203af5da3dd)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - efdef946-6b3a-4762-a4d9-abbd2d2ec7f4)(content(Whitespace\" \ - \"))))(Tile((id \ - dd40d17f-eaca-40f3-800d-fa71f6511717)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 21292813-ae30-4421-965c-984f854e72dc)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 35207fd7-80ab-42ad-ab06-051c5c964c5f)(content(Whitespace\" \ - \"))))(Tile((id \ - b5da4155-cf8b-4f53-8515-95103d0ff286)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 06a7485d-848b-453f-868b-b7f176a87ec7)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - ba271a94-21e3-4364-a8a0-44cf74754fe9)(content(Whitespace\" \ - \"))))(Tile((id \ - c24ad3bf-34a7-41d4-bb92-1da639b00211)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 28692f19-bc32-4bee-9b72-35ffeeadf60d)(content(Whitespace\" \ - \"))))(Tile((id \ - f63006e4-6ca0-48b4-acdb-389ea239b5fa)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 91114bba-c7a3-4852-88ff-bcd85e66ca86)(content(Whitespace\" \ - \"))))(Tile((id \ - 4dfd04bc-ed2c-49f1-ab8c-7888f6815ec4)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 2b3ca272-e046-4eaf-bf98-a9c0634303b2)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 0225a667-db44-442a-b448-6c5bce82c110)(content(Whitespace\" \ - \"))))(Tile((id \ - 59d42b3f-b9d7-4ada-83de-b39f31f3c638)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - cab1f053-ae06-4c71-916e-61b6f7039701)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 19d26568-fcaf-459e-8d8d-3dc079c0740e)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 80489f22-a168-4539-982a-cb574c1f79aa)(content(Whitespace\" \ - \"))))(Tile((id \ - 492d97fb-91ad-4d1a-8d6b-e4fd1cdda5fc)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 4ac0d076-d615-4341-af02-93207390fbf4)(content(Whitespace\" \ - \"))))(Tile((id \ - 535dd6b9-372c-48b6-b804-af8eba2c70db)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 57ce7d30-b2e6-4185-8b69-8909a2fa2657)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 7aedf271-fdbd-4ab0-a7bf-cff3ddf5d7a6)(content(Whitespace\"\\n\"))))(Tile((id \ - 9eb6a887-66ed-4e6f-abb1-0fd18cc232a2)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 12be4102-aed6-4de1-90d4-30fc48b2488e)(content(Whitespace\" \ - \"))))(Tile((id \ - 1265ef43-4ead-4e57-bd7b-71f40fde0dc9)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 78d8e46a-31a4-447f-a2ab-8d4411270c7f)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - ff9beba5-4d7e-438f-a67e-fa1cc6377635)(content(Whitespace\" \ - \"))))(Tile((id \ - 22c91783-af31-4c63-b95e-aba695f8dea1)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 4b97bca4-7324-4df0-940c-f378350c6b7f)(content(Whitespace\" \ - \"))))(Tile((id \ - 0487b328-02db-42ab-8717-e0c2e9ed5013)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 01854715-708b-4087-bde1-070444b998af)(content(Whitespace\" \ - \"))))(Tile((id \ - 849a5e18-db86-48e2-8e1c-90e6d0bff021)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 28071aa9-83fa-4426-8463-3a32fcbc59f2)(content(Whitespace\" \ - \")))))((Secondary((id \ - ba98ff4a-41ff-4029-90cd-ae83979916ca)(content(Whitespace\" \ - \"))))(Tile((id \ - eb3b3af6-9ea6-4066-af0d-aba8d6d33e3d)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - c5c594eb-aaf2-410f-98fd-d1c7e4c6a488)(content(Whitespace\" \ - \"))))(Tile((id \ - e14ee146-62cb-490c-b60e-1f63352a9c36)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 47f4de57-9b84-41ec-b953-464055365276)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - cc658ed0-0a54-46c8-b8b0-939f66e278ef)(content(Whitespace\" \ - \"))))(Tile((id \ - 109143e1-f8b8-4fcd-a18a-57ed61bd876e)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - f72203fc-cdd6-4153-b644-2c95b4c2ecb0)(content(Whitespace\" \ - \"))))(Tile((id \ - 95e2a609-b4b7-4c81-85aa-85a22eedd5f0)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 7e155bae-1731-479d-9f1b-06f61b7a89bf)(content(Whitespace\" \ - \"))))(Tile((id \ - 8bdfc26a-f9af-452a-8a87-6c1fe89f5585)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 6d64f6df-70ee-475a-9970-04228e13e884)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - d9e12550-14e9-484c-a37c-5c4ec208c2ed)(content(Whitespace\" \ - \"))))(Tile((id \ - 7a47d4da-93b4-45dc-a181-f5e0e2df44e5)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 3bbb380a-2756-43cb-9c31-47b11ed3b026)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 8cf40d8f-5131-4b2a-b925-f9a0c73e5c66)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - ba2a4838-e96f-439d-82b5-426ea913889a)(content(Whitespace\" \ - \"))))(Tile((id \ - 5b017b05-2dc9-4bb8-9d81-43104f05572c)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - af45430e-6e51-4520-9f9d-49117bfaf4aa)(content(Whitespace\" \ - \"))))(Tile((id \ - e6f67f3a-4b22-4be1-8ed1-36801f42b6d8)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 095ded62-7845-4ab1-b493-867e9ee579b1)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - fbb796fa-219b-46cd-b36f-ca75d1a64a3d)(content(Whitespace\"\\n\"))))(Tile((id \ - 31bf6267-878e-4291-8605-72974e318b28)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 983167f5-028f-4688-9cf9-f5c8daa9b9e8)(content(Whitespace\" \ - \"))))(Tile((id \ - c10b24c2-ea13-479d-80c3-1bd57b9c337f)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - dd5ef1eb-f6f0-46d9-91df-ec1a47142b3b)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 4facc02d-9485-45c5-8ffd-6e31b4561856)(content(Whitespace\" \ - \"))))(Tile((id \ - 8c129e44-abf5-46b1-909c-12f7a5fd0678)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - cea8313f-e717-476f-a6cf-b8d6a3cacc46)(content(Whitespace\" \ - \"))))(Tile((id \ - 88cf845d-19b6-4bbc-832c-b6f3cc362b84)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - e44bbf8f-56b5-4d01-a729-f4f01bd36794)(content(Whitespace\" \ - \"))))(Tile((id \ - c405397e-8e8d-46c8-91f4-0fbfbefe836a)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 94a49b3d-a15d-4d2d-a922-1ef745a5fb12)(content(Whitespace\" \ - \")))))((Secondary((id \ - bfbc29bc-ce2e-4086-a397-a391dfbf04a0)(content(Whitespace\" \ - \"))))(Tile((id \ - 5c2b4d8b-335a-449a-82df-351e7040c582)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 09e3f249-0d35-4992-9e96-442bcf21a0f1)(content(Whitespace\" \ - \"))))(Tile((id \ - f06585d0-5231-43e2-a7ff-47bfb8476b06)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - a00c688e-3015-4b40-bcd7-dbf738e7760d)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 555b1c1a-4bd3-4ae3-83d2-f18125b5bf2b)(content(Whitespace\" \ - \"))))(Tile((id \ - 2c6324e9-7640-4b34-9ccc-777428a6a097)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - d05188c6-65a0-4faf-bd90-87e61219f6b4)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 626c5d8c-9b0a-4eaf-b93e-f2fccc236f33)(content(Whitespace\" \ - \"))))(Tile((id \ - 603e5f78-5d90-4e18-8940-75b0a639b585)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - c08d9a5b-3e01-4978-8d06-ca262dd66433)(content(Whitespace\" \ - \"))))(Tile((id \ - 0332f83c-144e-4b12-9320-c7979fb8e029)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - c6d0c9f1-eb8f-4055-a5c3-685a6357d708)(content(Whitespace\" \ - \"))))(Tile((id \ - 1af5fcaf-8498-425c-bc46-7af2d3326375)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 4b493e4c-08b6-417c-bafc-8466dd14c80b)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 534e7df4-07b4-48c9-8551-24fd1cbff076)(content(Whitespace\" \ - \"))))(Tile((id \ - 1df2eb0c-0156-4f35-aee4-d12f57940147)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 9d7e38c0-9ff7-45ba-a7eb-cf1927b4a52b)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 396f8e21-6176-4c3d-8359-a5aeef61957c)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - bcd3e8be-a5e8-4621-8f98-85b4284f6f87)(content(Whitespace\" \ - \"))))(Tile((id \ - aeb2eda0-7164-4e3b-b8c8-bc615b928c00)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 47e9bb9b-4bb5-410c-8a7f-26ef26fb096e)(content(Whitespace\" \ - \"))))(Tile((id \ - d1d5d9aa-aad0-4486-848a-b4623c776bcd)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 22a96e4c-dd62-46b6-8ce0-891312cc0ab3)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 5577a324-0232-40b8-bfc7-cfa11ce76a42)(content(Whitespace\"\\n\"))))(Tile((id \ - aba93dc0-e541-408d-9776-49ac3e7852c9)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 91a328e7-7d3c-4e21-a464-b370b9e48aa7)(content(Whitespace\" \ - \"))))(Tile((id \ - 7f68f2bf-0d4c-4d82-a5e3-bd51941d58f5)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 36d8d777-d96d-47ab-af17-f337409ad427)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - ebe0f0ea-6143-4542-86cf-7c6f1100a634)(content(Whitespace\" \ - \"))))(Tile((id \ - 858d90c3-9942-45b1-8d27-b42614d47f4d)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 27e8dcb6-2f86-4d82-a27e-03e2093b365f)(content(Whitespace\" \ - \"))))(Tile((id \ - e5437087-ecd8-4120-bfae-bd3bf4c1f9ca)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 7f824a44-5d05-4254-b5e4-2b110d549a72)(content(Whitespace\" \ - \"))))(Tile((id \ - f758da13-d9e4-478a-abca-b3727c19e952)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 08006c22-cdee-47f2-8c9f-c4d51bae502e)(content(Whitespace\" \ - \")))))((Secondary((id \ - efdc2871-cdbe-479a-9108-be021edb0265)(content(Whitespace\" \ - \"))))(Tile((id \ - 549a5421-45ed-4578-a3ea-f5d53fa0d3fd)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 79c8bf09-f3d0-412e-9d45-baf44eff9bb1)(content(Whitespace\" \ - \"))))(Tile((id \ - 57833b66-cadf-4c0f-b734-35cd0aec89a2)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - da024268-488f-4095-a6e8-924711139f18)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - b9ac481e-9009-4a53-acdf-20ed6956fd64)(content(Whitespace\" \ - \"))))(Tile((id \ - abb7c9b8-e143-4537-a158-84e720ba8e4d)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 11a68b18-c9ee-4998-a7a4-3028a8b87bf3)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - c292d1ba-61d2-42c0-a51f-5e4ed16fd4a6)(content(Whitespace\" \ - \"))))(Tile((id \ - 83c22315-fce1-44c8-bc66-ab3b21041d30)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - a81ae344-dafa-4ccb-8a28-0e036a37139b)(content(Whitespace\" \ - \"))))(Tile((id \ - c97fa7fd-211f-4f3b-b4ef-311cf83a760d)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 919e5ad2-faa1-4f1a-844d-4b4363e81670)(content(Whitespace\" \ - \"))))(Tile((id \ - 99cee9a1-3024-4916-9e3a-c21c47e3b386)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 167d7af3-6b81-4ecf-bd0a-b920001c9ab3)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 390c410f-8099-450e-a96a-9396b89f0dd1)(content(Whitespace\" \ - \"))))(Tile((id \ - 9a350d43-86d2-4aac-88e4-477aee222b3d)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 74c9597e-081a-44d1-9d6c-59ec236635cf)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 1c0fc16e-ca6c-4930-9d9a-84d3a056bfb3)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 48980f08-2293-4e6f-8778-e29f0f7855ac)(content(Whitespace\" \ - \"))))(Tile((id \ - bf5d79af-54db-4fd3-b05e-3cfa54046b81)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 4b315d42-e151-4ea6-ab9c-546dffc9217b)(content(Whitespace\" \ - \"))))(Tile((id \ - 73438406-c661-409c-b4a2-b87e9f450721)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 57758ed1-ab57-4e3d-aef9-aa7d1fbf04d5)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - e7628ab6-c525-4065-80ea-893de72fa236)(content(Whitespace\"\\n\"))))(Tile((id \ - 8cf8b117-3717-4ce8-bed2-54a0036715cc)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 88d2f074-ef60-4d8b-bfb3-68d035e5706a)(content(Whitespace\" \ - \"))))(Tile((id \ - 0014f507-6f68-4412-be09-212a19dca949)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 9482dda0-f933-43cd-ae1a-13ada91e8b18)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 9f70188b-9cbc-40a5-95cf-9c189a1f0c85)(content(Whitespace\" \ - \"))))(Tile((id \ - 3e962086-862c-4c03-bb32-d446a5511509)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 2176d7bf-847e-45e9-ad8e-143fc5b7c945)(content(Whitespace\" \ - \"))))(Tile((id \ - f70c5e0c-61c4-4ec8-9b51-a630959eba84)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - dcc53af8-a281-4ed8-93a3-a33783043649)(content(Whitespace\" \ - \"))))(Tile((id \ - 69b78a78-6519-424e-97ab-fedcc9002ff0)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - eb70dc44-fd3e-421d-a873-272e02dd88be)(content(Whitespace\" \ - \")))))((Secondary((id \ - 5d6f4679-6a1b-40b4-b3ef-ef15cec637ac)(content(Whitespace\" \ - \"))))(Tile((id \ - acb8a802-0768-4b63-8e61-b32962743330)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 2884de99-add9-4604-9640-8af3a551585e)(content(Whitespace\" \ - \"))))(Tile((id \ - 58f0f730-9a99-4f96-9939-9ecce9c86813)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 1a0e1918-68a2-47da-9ef3-2fe570911946)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 8855824e-2554-4f29-8640-f12da017fb9e)(content(Whitespace\" \ - \"))))(Tile((id \ - 7469b75b-e2e8-4a00-95de-5c75f5f3e5eb)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 842a0b63-629d-4a53-bd09-c7cd1f7cd201)(content(Whitespace\" \ - \"))))(Tile((id \ - e4f29a70-bab6-4049-9d89-c3bb0621869e)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 95625354-da02-4b87-aaaf-096ac5051c4b)(content(Whitespace\" \ - \"))))(Tile((id \ - 8f5c2142-3f3a-4221-9764-7d8c1bf6caaf)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 17d9fc1b-e994-489d-a515-281c80254886)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 4649159d-c144-4fa0-b13f-b4b29b6dc38f)(content(Whitespace\" \ - \"))))(Tile((id \ - f0e635f9-1d16-4e70-91c3-17405b229157)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 10f6a9e7-32da-4caf-807a-74e8d17beb02)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - b7412d33-2626-4430-99a5-24b64072d705)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - ebac4da7-9134-41a0-96ba-e5187562426c)(content(Whitespace\" \ - \"))))(Tile((id \ - 66703279-490d-4776-b9a5-2b0dae0b4df8)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - a911af86-9bdd-4fe9-acf6-770f52193d2e)(content(Whitespace\" \ - \"))))(Tile((id \ - 871b70ce-e384-4741-a0f0-e91dc6c91f2c)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - bfbcec2b-6879-44ef-81f4-46bde8f68a94)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 90aceb86-483e-4844-b758-9c04a734f56c)(content(Whitespace\"\\n\"))))(Tile((id \ - 5e772249-f1bb-44d3-b037-cbfa1746ebae)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - a48e554d-6b6e-4976-b863-47aa3099778f)(content(Whitespace\" \ - \"))))(Tile((id \ - deb0d572-8fe7-4e81-a6c5-9f7235e230ef)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 969170cf-4bf4-4299-990e-e0c3f75f3f4c)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 05efd73c-c11c-4583-9d24-d6fa2e5cbfc5)(content(Whitespace\" \ - \"))))(Tile((id \ - 9626500b-0d65-45d6-8cc1-21701b982ee7)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 9ecb9b9b-fded-468c-8cf7-2e3729056b37)(content(Whitespace\" \ - \"))))(Tile((id \ - 00e07324-83e7-4df7-a772-22d1d8de54b8)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 88fd3332-464a-4fca-8af8-d49c003ff470)(content(Whitespace\" \ - \"))))(Tile((id \ - 3f0cb206-538c-40ec-9d39-03a3390cbb8e)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - db022bb8-9aca-48fd-9690-ae1d6c5bb490)(content(Whitespace\" \ - \")))))((Secondary((id \ - 2d450b70-0ed5-42be-85f1-f0f933a8483c)(content(Whitespace\" \ - \"))))(Tile((id \ - 8bdfcdc9-d729-47f6-97d7-2ac32198f162)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 06ddc928-ab64-4781-bd72-dffab779b785)(content(Whitespace\" \ - \"))))(Tile((id \ - d2319dc5-d1f8-4de0-8d7f-63a147483635)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - c25b9f07-e439-4dfe-a263-5bcaed84a1de)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 9ccf8e55-fcd4-493a-a201-e42102d1e8d0)(content(Whitespace\" \ - \"))))(Tile((id \ - 34769c15-47a8-4e46-aeb5-6eeb8b0807fd)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - a87d5b15-7d32-4daf-abc6-1bcc2b50bd34)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - c036a747-29d0-4d85-b17b-6d6b56ffadd9)(content(Whitespace\" \ - \"))))(Tile((id \ - a91b0838-4442-4144-b1c7-0c2a9c0baee2)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - f1649a88-1f7e-4178-ad24-48c3a8a288d5)(content(Whitespace\" \ - \"))))(Tile((id \ - b02e51ce-a0d5-43a9-8da4-661da9b68805)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - dac2a560-cb86-4e00-81ff-b562d2ce7418)(content(Whitespace\" \ - \"))))(Tile((id \ - c00f81b8-8545-498a-96b7-b763e03a4076)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 735cc62a-bfcc-41b3-b850-4dc5498b4f82)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - b461d8b4-fde6-444f-b91f-43e54c2196ae)(content(Whitespace\" \ - \"))))(Tile((id \ - 3d7259df-8be3-4feb-8be1-879a470dffa8)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - ed9207eb-e8a6-4812-b49b-18275f649eb3)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - ee3b1c86-1b07-46d6-8d98-dfa2e9b01333)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 967b9cd8-a392-48d2-af20-89b3d996fdce)(content(Whitespace\" \ - \"))))(Tile((id \ - baa5eb0d-189d-4f32-a19f-4ee25cf4e9c9)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - f8ffbb71-c00d-4ca3-a16e-5af3a1ac39f0)(content(Whitespace\" \ - \"))))(Tile((id \ - 3b24e68b-6cce-4418-a75a-52010aedeedf)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 3db940c0-7cd1-46ff-bd95-848686d62bc2)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - baf9fff8-bdad-4120-a57d-609684b3c00e)(content(Whitespace\"\\n\"))))(Tile((id \ - ced662d0-40b1-49d2-aeed-14e5b19b9bf8)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - e86f6dfc-95e6-431d-b7b4-f3951b691796)(content(Whitespace\" \ - \"))))(Tile((id \ - 4d1baebc-09a9-4c66-ae7e-cf888cae6a86)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 00ec5f54-d6ac-4b1d-b7be-6a00dc7579ba)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - f87ea09c-c66e-4ff8-a440-2c5c551ab2cd)(content(Whitespace\" \ - \"))))(Tile((id \ - e74f7346-d1cf-4e40-b23a-4989d0fa3be4)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 6b8e383d-3bd1-478d-85f4-89ab10769816)(content(Whitespace\" \ - \"))))(Tile((id \ - 045eb834-c416-4178-9684-65571b11ca00)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 9c4a59c1-43fd-4310-825b-aef7ffa892a9)(content(Whitespace\" \ - \"))))(Tile((id \ - 50526889-cf1a-45a8-a289-9e5eef58949e)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 19011eab-4218-454d-8de9-0801934b624e)(content(Whitespace\" \ - \")))))((Secondary((id \ - 158e221a-8e5d-4652-b0d9-a558c0313529)(content(Whitespace\" \ - \"))))(Tile((id \ - 69a3edf9-3dec-4fa6-8ed2-f216f28fe76f)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 9f7734ab-daaf-4851-b627-af2c546d8b21)(content(Whitespace\" \ - \"))))(Tile((id \ - 78cca49d-e3e1-465a-a32c-6bde6671f2bc)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - e6b95480-2132-4201-99f9-26bdc8b5df1c)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 91eda95c-2d9a-4bba-a2af-1d20bea73d9c)(content(Whitespace\" \ - \"))))(Tile((id \ - d6c45d32-a1d2-43b4-8262-6124417d5c86)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 278e4a58-bc7a-4387-8b49-88616fb2a8cd)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - ffeace91-a82e-4ef5-85d7-d28c4d9499a1)(content(Whitespace\" \ - \"))))(Tile((id \ - 2b517f29-a6d8-47bd-958c-d4c3e959b530)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 4b2ca458-d052-49fb-b890-328ff5d99d06)(content(Whitespace\" \ - \"))))(Tile((id \ - 7ebdd869-99b1-468d-b006-04a41af147e0)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 97826df9-82b5-4fcd-bc69-9682b769f0d4)(content(Whitespace\" \ - \"))))(Tile((id \ - b096fcee-6c3b-4031-87c3-d4158787990a)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 5ffc38f4-6c30-427c-9fdd-e1f64dee4636)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - b77b8f48-fd64-4069-9766-8e7031786091)(content(Whitespace\" \ - \"))))(Tile((id \ - 38845d37-0f71-44e6-8043-593ccd979192)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 43c772b1-012c-48bb-bf01-5ed1981c10b2)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 33e62425-ff7c-405a-bd40-4717d7a0e031)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 2c64ed12-5710-4d17-8537-84505afa0b91)(content(Whitespace\" \ - \"))))(Tile((id \ - 3656e38c-ed7f-4d9f-8137-adfda414a209)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 64098c03-acc7-4d0b-95d8-38cb950e4ebe)(content(Whitespace\" \ - \"))))(Tile((id \ - d84f6294-f7b6-4da2-8280-17ff445f9c75)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - eccbf863-8826-4c0f-8e23-8eafad3eb9ef)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 7aa73962-e3ff-4888-9f19-14fc18bce03c)(content(Whitespace\"\\n\"))))(Tile((id \ - 4c006c03-ca73-450e-a26c-2ede30e78b09)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 68b2c91f-1e98-45b5-8a01-6003cc94ea63)(content(Whitespace\" \ - \"))))(Tile((id \ - 8a8e5529-a4b4-4ddb-8dad-baa79ba51373)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 573bd504-f9dd-4047-ad50-be503d5e7c25)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 9f430850-54e1-45a5-a470-4332577ef26b)(content(Whitespace\" \ - \"))))(Tile((id \ - a4cd0a4e-4577-4a05-abf8-fedf9edb7088)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 3ab16d71-565d-46f1-8197-42c05146cb1f)(content(Whitespace\" \ - \"))))(Tile((id \ - fddcb399-67ef-4249-bb64-c99b69dfdb23)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - a873c136-4dc5-4a55-b1c3-8872c313112c)(content(Whitespace\" \ - \"))))(Tile((id \ - ff72d139-df9c-4720-9012-189e536af3ce)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - ddfe4334-19de-461f-9167-3fc7e4fadafa)(content(Whitespace\" \ - \")))))((Secondary((id \ - 7d8aaba0-019a-4c4a-8e20-0016858bbcfd)(content(Whitespace\" \ - \"))))(Tile((id \ - 4e248130-8d4d-4329-9477-f96837affdce)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 735a66f3-35f5-4bb2-978e-21076b7fd756)(content(Whitespace\" \ - \"))))(Tile((id \ - b5d9e601-6097-404c-8bd5-7a9b6e9d9c96)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 4f3037e2-cc04-41d1-aa98-ac188b8d017a)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 1802abd3-3eb2-44dd-bb5d-06159679e6f4)(content(Whitespace\" \ - \"))))(Tile((id \ - 68e24d5b-2d4a-4b13-8334-dcb39571d31c)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 53156d78-5fd0-43dc-8d39-6181fd47534c)(content(Whitespace\" \ - \"))))(Tile((id \ - 3800df1b-0894-4471-b836-50cd9dab55c9)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - e2bcd9bc-9d51-4733-977b-7c6e62598182)(content(Whitespace\" \ - \"))))(Tile((id \ - af35b589-3432-4b72-8744-7b95856459bf)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - b5061643-74aa-4e45-b68f-0e6a3d467b70)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - c906fce4-50a9-401f-862e-35769927bc45)(content(Whitespace\" \ - \"))))(Tile((id \ - ee3606f9-1e03-4db2-81c5-fa37d8e61055)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 6c140faf-75e0-47bb-a0d9-832ebb0b0ed4)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 4573a35f-6552-4634-b8ed-99f99f303841)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 03a86cef-8652-426d-8579-cbb328b035b0)(content(Whitespace\" \ - \"))))(Tile((id \ - 50b5890d-bb23-4712-8bfd-94ee4e503054)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 52b64aa9-0d10-467e-bcfa-09aca544bfd1)(content(Whitespace\" \ - \"))))(Tile((id \ - b062a20e-a072-4822-97da-b13ec379c12c)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 5dd2d4ab-a2b7-482d-8140-78790ff8c623)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - be1ba7de-ec19-4672-8cb3-0e7482ee9237)(content(Whitespace\"\\n\"))))(Tile((id \ - 226f8cc3-31fa-48a6-bc2a-9fe5bc8b8046)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 3bd8505c-e38c-473a-878a-cb3fe94e0e73)(content(Whitespace\" \ - \"))))(Tile((id \ - a6dd8947-0a0b-4406-9c7e-c0c19fad54de)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - a93a0099-ec2a-431c-8a95-0856e25cd900)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 6ee451cd-b02d-48c7-814c-911907a0bdef)(content(Whitespace\" \ - \"))))(Tile((id \ - 93a0edcb-f9bc-48d4-9bae-a21ecde6850e)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - ae727d65-13c8-4bd5-bae9-53478a94569a)(content(Whitespace\" \ - \"))))(Tile((id \ - 6b4e022e-1df9-4a73-8a72-8221ad245945)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - a8a82dab-6ed5-451a-9407-e30e8264cd0c)(content(Whitespace\" \ - \"))))(Tile((id \ - b078e37a-51f2-4658-b847-90f3babecbfa)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - b845173a-9104-438f-a364-5dc28a8e781f)(content(Whitespace\" \ - \")))))((Secondary((id \ - 9b0c486a-3f26-4bdb-8959-76195ebce31e)(content(Whitespace\" \ - \"))))(Tile((id \ - b2cb6bf5-c0ce-4976-bd94-307ef4475ec4)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 9eb19b00-2c5d-4fd9-bf10-f824f313a3bd)(content(Whitespace\" \ - \"))))(Tile((id \ - fe3faddd-142f-44a4-a59a-be380e47159e)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - a05299d1-ee0e-4551-b400-02f082bfbdcc)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 4bc14b38-90c0-42b0-95ee-e4b609dbbb1b)(content(Whitespace\" \ - \"))))(Tile((id \ - fffb4962-d18c-449e-be30-dc73ed7c3a87)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - a406f0cd-29da-4b48-be85-2fae11da87bd)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - e640fd12-11c1-40ab-92bb-051cdf2a111e)(content(Whitespace\" \ - \"))))(Tile((id \ - 679f722c-2a77-463f-9c38-899e6fc629bf)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - c768c89f-854d-4aa4-bbce-761603c09244)(content(Whitespace\" \ - \"))))(Tile((id \ - f65d928b-18fe-473a-946c-713cc86a9450)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - eeac3afa-3ab2-45d2-9973-7c54a9c0ec77)(content(Whitespace\" \ - \"))))(Tile((id \ - 0156c574-0368-43ec-b561-1d43d1033fda)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 7d723fb5-cf4a-4ea1-9ea4-1e3e3aad126b)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - eb3fc3da-aea8-4ec2-bccd-92f207dc1f27)(content(Whitespace\" \ - \"))))(Tile((id \ - 7cca7ddc-350b-4593-b125-36242c0097da)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 7f226cc5-4f76-4884-8bb9-0b3062c53ab5)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - a961c178-ab39-4885-b37a-001fc0bc9af4)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 27b63192-bf57-417c-bc0d-381ad9744908)(content(Whitespace\" \ - \"))))(Tile((id \ - e1548cbb-0fa4-4c62-8841-79d60121366e)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 8da9116e-ac40-44a6-9cbc-db7f25cdeba1)(content(Whitespace\" \ - \"))))(Tile((id \ - a73f5960-d7a0-42f3-9f87-b7ab23ee225e)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 1ec6b086-98b7-4bcc-acff-3e2ee3747026)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 21363ebd-d485-44f1-ab7e-1007beaffef1)(content(Whitespace\"\\n\"))))(Tile((id \ - 35ec3a37-980a-4deb-9e53-47f783d84412)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 33a3e151-e2ca-4555-a38a-43081ecfe350)(content(Whitespace\" \ - \"))))(Tile((id \ - 2e706c72-fb01-4054-9822-af7e5d243694)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 249ac389-683d-4aed-ae34-7598215b4222)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - fe5dec15-fb65-419b-a94f-d832bf5a3ff6)(content(Whitespace\" \ - \"))))(Tile((id \ - a507c20b-0f41-43d4-b687-812cc402e307)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - a7e19047-fe26-4af9-bdaf-01484ea9fae4)(content(Whitespace\" \ - \"))))(Tile((id \ - 6b189eb2-a05c-42d2-a1e2-3b8ecc1ebb0d)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 8fb1a892-921e-47d4-9327-de260ebd51b4)(content(Whitespace\" \ - \"))))(Tile((id \ - 2557e096-fe29-4849-969c-a1a953831b1c)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 4ebec74c-fb13-4758-a8bf-c4e34b031434)(content(Whitespace\" \ - \")))))((Secondary((id \ - fee94c78-9e92-4ba3-aa5f-822a0a287c22)(content(Whitespace\" \ - \"))))(Tile((id \ - 4a2689de-836c-4af7-bf4a-38276bd27dfe)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 9c0835cf-0fd3-40d4-a82a-db25807291c5)(content(Whitespace\" \ - \"))))(Tile((id \ - 10130787-6c13-47ce-9cc8-8fcd90fac2fe)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 673f4447-fc1c-4ee6-ad30-176759e4fc84)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 3723e8ba-29d8-4751-a6bd-57c6014ebed0)(content(Whitespace\" \ - \"))))(Tile((id \ - ad007c76-3fb0-4aa4-9d46-7092c82c2992)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 867cf76d-01c2-4ea6-b03d-fd57d631c6a2)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 6a6bb12f-d4e7-4071-a134-a6022e4dbaa2)(content(Whitespace\" \ - \"))))(Tile((id \ - e259d880-65b2-4f43-8335-cb4cb8a09790)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 58b08f75-9b15-440f-b2ac-162c1bb6fad9)(content(Whitespace\" \ - \"))))(Tile((id \ - 28a0c1c6-cf38-4bc7-8d7d-acadf6dae3d1)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 733e13fe-1a99-4140-8d15-708b1a3d3782)(content(Whitespace\" \ - \"))))(Tile((id \ - fe0f62c7-19d7-4964-be42-4a45da1dd3b6)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - e0e2e3fe-717e-46f1-80d8-bf641a00c9f5)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 11d58c19-3c5f-4a3b-89de-31cea5ac4dc2)(content(Whitespace\" \ - \"))))(Tile((id \ - 29f2de60-7e6d-460f-9516-72bfcceb8230)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 186dcf99-1acf-4b9f-bceb-4e1e791b6bcc)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - d79997d8-d848-43dd-860c-601908513e92)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 70281d27-0079-4001-b1a3-699b60c84b2a)(content(Whitespace\" \ - \"))))(Tile((id \ - 45ca8fc5-d408-4b13-afa7-083f98723c79)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 4070c4ad-2776-477f-823f-085f4384bed5)(content(Whitespace\" \ - \"))))(Tile((id \ - de179e15-928a-4fb5-a7e0-6aaabd17e3c9)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - a0b183bd-484a-4a7f-9ab8-e8c7c2bf2a13)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 95b8cb50-ee78-4de8-803f-a219c8e99e24)(content(Whitespace\"\\n\"))))(Tile((id \ - 1665684e-79cf-41ac-bb87-3b785fd83ba8)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 420f3e72-db0b-458b-a278-2eb3141fe707)(content(Whitespace\" \ - \"))))(Tile((id \ - ac9456a0-a4df-4a4a-a01e-3c61afc49e3f)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 2042021f-8855-4b02-a0bc-2e0b97717108)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 0a812609-dea7-4f7d-af3a-e1ee023ce806)(content(Whitespace\" \ - \"))))(Tile((id \ - b1c10962-4a74-423e-8097-7589d7ca18ef)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 84dad8ea-8e76-4145-98cf-e8ac1720e2bc)(content(Whitespace\" \ - \"))))(Tile((id \ - 3c048fd3-81d3-4b96-9508-74eee76c9bf5)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 5f1d6a94-de73-4914-a521-cb718d275a54)(content(Whitespace\" \ - \"))))(Tile((id \ - 19323054-da63-4b8a-a870-79856e7ce363)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - d1f08ac3-eef1-4f0c-91db-e92293e0b2c2)(content(Whitespace\" \ - \")))))((Secondary((id \ - a72e6c11-44b8-4de8-bca7-120ab8e768dc)(content(Whitespace\" \ - \"))))(Tile((id \ - dc18a635-3244-4441-99a6-b65d9e7cc313)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 1bdba6fb-deda-4959-8039-f84359c1044a)(content(Whitespace\" \ - \"))))(Tile((id \ - 53954186-d29c-4f04-8129-fd4aa6ea680f)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 8e88416c-1019-41ea-8087-4d974d572d88)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 0ec4549b-5c98-45be-8ba7-c6eb7393cf92)(content(Whitespace\" \ - \"))))(Tile((id \ - adad0f21-5597-4d95-ba63-a2bf964a490d)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 796ba787-372f-480a-a9cf-d74db2e77b51)(content(Whitespace\" \ - \"))))(Tile((id \ - 95f43eb4-a91e-4e1d-8b99-7ad69b68adb2)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - a91d6a13-8021-45b5-8c2b-8cc8c6981cf0)(content(Whitespace\" \ - \"))))(Tile((id \ - 518e5e46-b13b-4f09-91f3-31fa566c58b0)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 15b907b3-5c2f-46a0-b06b-ed21778fd31c)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 792c8302-9378-43b9-b261-57261ee99901)(content(Whitespace\" \ - \"))))(Tile((id \ - 155c7c10-94f6-4c2f-8eef-004e14f86a92)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 89e0c4f8-e24f-446c-a6a9-0839fc6faeb2)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - bb5b3555-df6b-4b83-9220-073d7b532a98)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - b3e23749-62b7-4a0d-98a5-4eb5d91e3473)(content(Whitespace\" \ - \"))))(Tile((id \ - 91d1521b-18b1-4fc9-823e-71811291de24)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - be75c19e-b32a-4505-927c-827587312b06)(content(Whitespace\" \ - \"))))(Tile((id \ - 38c33e85-50e7-44b7-9c47-4b338295a021)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 21e4563f-b90c-4e2d-9c5e-4f113b210207)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 4205826b-a066-481f-9870-987bd9896244)(content(Whitespace\"\\n\"))))(Tile((id \ - cee321fa-2443-4038-a148-61a759151c2b)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - a8a4d5ee-d14f-4435-bdc8-c03d5c572e08)(content(Whitespace\" \ - \"))))(Tile((id \ - ab5c9b8f-4cd8-47bd-ad7b-896e127394e5)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - c57bdcda-7c9d-42da-8bf0-a017399dea55)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 3450d3eb-af8f-4fa5-ac4d-8251ffe96db5)(content(Whitespace\" \ - \"))))(Tile((id \ - cb3bebfd-611f-4f89-aca6-48289afa5c69)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 014406c2-02dd-4aee-acaa-8f2899602fc5)(content(Whitespace\" \ - \"))))(Tile((id \ - 8839ec01-9b9c-43ed-8f6a-c9db60caec52)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 3cf0d400-0787-4327-b46a-7180d93d129c)(content(Whitespace\" \ - \"))))(Tile((id \ - dcddfbdc-0422-4720-9b2e-595f1dc069c3)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - fd270d79-b6e4-465e-8988-9e3d20e3ef54)(content(Whitespace\" \ - \")))))((Secondary((id \ - 944ca76d-9d70-49f5-8d99-d69df0e815a1)(content(Whitespace\" \ - \"))))(Tile((id \ - 924e711f-10f5-4da2-972e-54d6cfcf01f4)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 2b02f6d4-2d31-4e60-8cec-6b903fdadae0)(content(Whitespace\" \ - \"))))(Tile((id \ - 245fb049-2e05-42ec-8fb2-fa3553a1d525)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 9a3fccf7-bb56-4d6a-aa7a-9fb7b7735be9)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 2625294e-7343-4fa6-8efa-e8492aca2192)(content(Whitespace\" \ - \"))))(Tile((id \ - c15d7c3e-bf3e-44da-8997-2afc9a4ee9a5)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 2ee1898a-0e53-46fd-8c8e-38e670fdd897)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - cf2250a8-a2b1-4f6c-977f-3614e6b8915d)(content(Whitespace\" \ - \"))))(Tile((id \ - f2b7fc34-928e-4380-a8fb-fe194132b817)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 6b4935b4-ee35-49ae-9d8a-2387c77194b3)(content(Whitespace\" \ - \"))))(Tile((id \ - 9c3c3a45-ccb5-45d8-9803-e7b86d129d39)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 5ad14a87-f72a-47be-9069-d577535f6c48)(content(Whitespace\" \ - \"))))(Tile((id \ - da4c4043-2748-433c-877e-2c4e7cf1edfa)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - c87b63b3-b6cb-4083-bf97-4e6f0a4c0539)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 6fc08be0-071a-4168-853b-da2f68952816)(content(Whitespace\" \ - \"))))(Tile((id \ - 77cc4e88-4a49-4b92-a107-535cc80424ee)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 0f6f2ecd-a29a-4435-86fc-b9f6c230de48)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 55c07b75-8a45-4567-b7f8-60d14f7c07ad)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 1f7669fa-03fa-4f4f-9902-fb47ddcc8530)(content(Whitespace\" \ - \"))))(Tile((id \ - db81a8da-7e91-4fd6-a92d-9a4c09efbaca)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - f34cb844-06e0-4ddf-a1aa-598a4e6be420)(content(Whitespace\" \ - \"))))(Tile((id \ - 361f292f-39ab-40b3-a65a-613cfe384cae)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - b1bf835a-595d-4097-90ba-27001a850978)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 3aafdf26-ef40-4068-85d9-f27d95ef2621)(content(Whitespace\"\\n\"))))(Tile((id \ - 1abb53f5-ad2b-474d-8c52-4fc4f1d7fd6a)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 5188bb35-71ce-4a97-bde0-e7c7af9ecbdf)(content(Whitespace\" \ - \"))))(Tile((id \ - 0ae1b856-b7b8-4294-8cea-51ebd49ac543)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 7a888086-5e3c-44a1-afa5-b071561256f7)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - f8a7feb1-35ea-420e-82a0-ab43d55262b5)(content(Whitespace\" \ - \"))))(Tile((id \ - 127ac2ba-9dc6-4a90-b232-e69d258d94ad)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 408eba72-bae5-4791-96fe-3aa8415131df)(content(Whitespace\" \ - \"))))(Tile((id \ - 5c37f8d8-046b-442f-b258-3f010c032b77)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 7714e2f8-31d4-46ad-8346-4a47913e9f37)(content(Whitespace\" \ - \"))))(Tile((id \ - 24f4e851-1ea2-4764-b1be-2b072b9fa21c)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 6912611d-7e4f-4495-be27-4aafcf1a375a)(content(Whitespace\" \ - \")))))((Secondary((id \ - a266abef-19ec-45d6-aa58-190ed57e63f0)(content(Whitespace\" \ - \"))))(Tile((id \ - 134292bc-5ecc-47e7-bfc1-f4bcadde17cf)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 0ae4fdef-dacb-41a4-b276-37e0efc71965)(content(Whitespace\" \ - \"))))(Tile((id \ - da8967f1-c3a1-4f99-ace9-fa4933bfb579)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 52908ba0-5b6f-4f2f-bb5b-c569a70eefcc)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 8152e22a-be0c-4854-8dde-0a5e7e301fbe)(content(Whitespace\" \ - \"))))(Tile((id \ - 443b5cb9-1ff9-4aa7-a8a4-fc718f3e9df4)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 54a22bfc-d43f-4b0b-8d64-199bfe9bba14)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 29bbe425-ba82-4208-8c80-2dfa3fd0bee9)(content(Whitespace\" \ - \"))))(Tile((id \ - 10e14aa2-591d-4ea0-b76a-bd4a343b358b)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 559b79a7-9c9c-4472-a187-c6f8e83a9439)(content(Whitespace\" \ - \"))))(Tile((id \ - 68ae9f08-17ce-463c-a0ea-226fb65a9bef)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - bb2cd4c6-9f2d-4684-b434-9ac9317667c5)(content(Whitespace\" \ - \"))))(Tile((id \ - ea6534a4-039e-4eb0-a2d1-252aa4947866)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 0a892a3f-b976-4d5a-b137-7f058b3d6a32)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 2b4c6dfe-10ad-4d83-ac59-c7a2a8bdafaa)(content(Whitespace\" \ - \"))))(Tile((id \ - 7ccb1bb9-a155-4011-b3f0-a7d0cd616311)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - bcc83914-ac9e-4923-948a-21fcc6500a97)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 3a7f8d7c-2aa2-46ad-8ec6-da7718293b00)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 5ca9edbe-5106-4ab9-b934-a8cd11a1ecdf)(content(Whitespace\" \ - \"))))(Tile((id \ - dfb066cd-1459-4f97-a46a-75175abf2f77)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 3c65fd1d-8ca6-43ed-8c38-887ec2e8d496)(content(Whitespace\" \ - \"))))(Tile((id \ - ea0b0f78-226e-4414-a4d0-356d0b84ceab)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - b5b3f373-ffb6-4353-89bc-934c4c890136)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - ab179275-22b6-4232-a44e-2c0e3c044bc8)(content(Whitespace\"\\n\"))))(Secondary((id \ - 5f555c1f-ff3c-485b-9c47-514ee5f9d4ba)(content(Whitespace\"\\n\"))))(Tile((id \ - d045a6aa-410c-410d-a561-73837d026f1d)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - b50b0fb9-3515-4ef8-bcff-7a56cc3eb9bb)(content(Whitespace\" \ - \"))))(Tile((id \ - d575360c-3482-4ef8-943a-43b5d3c46435)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 7205c138-01a0-46de-8920-04f964b8dc3a)(content(Whitespace\" \ - \")))))((Secondary((id \ - f0a76c58-c581-4081-8d6a-36d54d527ab9)(content(Whitespace\" \ - \"))))(Tile((id \ - 6c3fd393-d782-41fb-8155-e67c3d2c89a3)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 0930d78b-5667-4113-9cd1-2889969c1a2d)(content(Whitespace\" \ - \"))))(Tile((id \ - e7905658-e2e8-4d46-8516-1d1b3c4b41c8)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 62000e68-6de4-46ea-9e6e-abf7e23e8be8)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 45c5e6a7-ecef-4ac6-a6fc-353cb942aa66)(content(Whitespace\" \ - \"))))(Tile((id \ - 052c1e66-c99d-437f-9566-8634fac4294b)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 1cf090b9-5d39-496e-b03d-949f527bdf17)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 93e77fef-ef57-49dd-9553-a7b658579d2b)(content(Whitespace\" \ - \"))))(Tile((id \ - 2d7073f4-0a18-45c1-9602-a363506b2fe6)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 8860c4ae-d9c3-436a-8d6c-a8dc583a3aa0)(content(Whitespace\" \ - \"))))(Tile((id \ - 48a43dc5-8cd8-430d-85ea-5ec6919ed8b3)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 1c27e3fc-635e-4779-93d3-a0b756b6f7c8)(content(Whitespace\" \ - \"))))(Tile((id \ - bc74610b-ea3e-4bc1-b782-63db54c601b2)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 0321da82-0225-492e-a8eb-34226d846a6d)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 9cdb87d8-8303-47b4-9fd8-e628b0a288bb)(content(Whitespace\" \ - \"))))(Tile((id \ - 9e44fb59-8641-4382-9606-bf69cea2a644)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 2bd366e6-1356-4d5f-9a17-799d3d5cf6f6)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 7f1fe351-9957-40dd-91d7-bf8470ad8756)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 087103aa-873d-4d2e-bc93-1c2dd198003f)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - bd48283f-38a9-48c7-be14-2c9f7fbff9ad)(content(Whitespace\" \ - \"))))(Tile((id \ - 3806ef0e-e20f-44cb-9edd-dd82ed1202d2)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 2efb5f7f-eece-4042-ae3e-86b8417c643a)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 0ceef89a-c47f-4b07-a58d-7268b8b11f6f)(content(Whitespace\"\\n\"))))(Tile((id \ - 21af2be8-1468-43e1-bc58-0e103ff4a70c)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - c990349e-8ebb-46eb-8b18-39facf131b5b)(content(Whitespace\" \ - \"))))(Tile((id \ - fbaa5097-5d8e-4abd-925d-0696180f3ba6)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - a527e9a5-af7a-4147-aaea-7e532e368c5e)(content(Whitespace\" \ - \")))))((Secondary((id \ - d313e853-7df9-404c-9253-624a99c08413)(content(Whitespace\" \ - \"))))(Tile((id \ - be53392f-c141-4f69-ae59-9cdc16f2337a)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 120353f7-949c-4378-b0c3-1fab665fc365)(content(Whitespace\" \ - \"))))(Tile((id \ - a123c1bd-7373-43d3-8c39-4dfde0b58b61)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - a8cd877a-f098-4d76-b861-1a19be8f8c81)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - e90819b1-7393-495c-a509-9bf0d646fa01)(content(Whitespace\" \ - \"))))(Tile((id \ - d32ee69b-6b2d-4f5a-8bac-0ff4ade92fdd)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 1e2e65a3-81da-4de1-8eaf-8c7529d36556)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 3863750e-8521-425e-9d11-ada947ea3397)(content(Whitespace\" \ - \"))))(Tile((id \ - 77134c07-8a4e-4194-8e2f-9a0595c4dd48)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - b07c5dc6-9749-47ba-bec4-a1699f1bfce0)(content(Whitespace\" \ - \"))))(Secondary((id \ - 2ad38361-9f56-40ed-9291-7bdb46f46385)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 41d69c50-1acc-4a12-9481-2c84e758f52a)(content(Whitespace\" \ - \"))))(Tile((id \ - 8b78d5e1-1101-4cc4-b650-d063dbc12ad7)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - bb0a7c70-43b5-4508-95b2-f94e2a62baa4)(content(Whitespace\" \ - \"))))(Tile((id \ - 607f3ceb-8bac-4c6b-a227-ce968b30c6d8)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - f5313869-3019-46bb-bc82-25719e17741e)(content(Whitespace\" \ - \"))))(Tile((id \ - de7a2497-ebe3-4ae9-9a61-d5ef34cd8562)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 4166f028-4812-496b-825c-6ed30562e52b)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 2f7715d3-603a-4cf9-8f74-8057b5ee75cb)(content(Whitespace\" \ - \"))))(Tile((id \ - 56a118a5-3b48-4b70-a51c-711916074c7f)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 50146bfc-e7d9-41bd-bcfb-9f54a7e150d1)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - c430ad3e-1656-4f70-9f51-9f8372bfd55a)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 08db6430-c09f-4b02-b317-2e9b1b9acae2)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - d2fa3cf9-1b93-4964-8f0a-bb3fd83ea868)(content(Whitespace\" \ - \"))))(Tile((id \ - eb18ffe5-0d40-4470-aaaa-9ea0f450fe47)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 3508ff9c-84c8-4f0c-8f66-b0bd05fcb640)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - c9b1ef3b-5b9b-495e-9f82-a67443c39051)(content(Whitespace\"\\n\"))))(Tile((id \ - a5474569-9485-4402-ba63-ee8df3f8a489)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 41a2aca8-68d1-47e7-9b73-cfed3e748364)(content(Whitespace\" \ - \"))))(Tile((id \ - 182041f3-b3ec-4b2c-b6a8-a096763cda33)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 81ba3305-ff3a-44c1-b244-fe2191dd2ec7)(content(Whitespace\" \ - \")))))((Secondary((id \ - d4ac2b7b-994c-45a6-b769-b332663df36a)(content(Whitespace\" \ - \"))))(Tile((id \ - 44573832-39da-48ec-afdb-fa5c8900b81f)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 5589ba00-c0b4-44f1-b2b4-0f6ef87f82f2)(content(Whitespace\" \ - \"))))(Tile((id \ - e14764ae-97ea-4365-9707-a443a62a56b1)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 2b81df7d-9153-4f5a-a776-7256c6def523)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - b07949ac-d3c1-4af4-9ddb-2eca381665ae)(content(Whitespace\" \ - \"))))(Tile((id \ - fdf70e9f-7fd4-431a-9091-e00a2059dbdf)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - c621eb2d-7c4f-4203-8e07-44f343ab29d9)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 2fae53dc-6bdb-47c7-8e34-4e3b19ea3a10)(content(Whitespace\" \ - \"))))(Tile((id \ - afe54977-bf81-4824-8206-8843f2658b04)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - f6a23963-e107-48e7-aad0-5f53ce32aee4)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 084974bf-38e0-41f1-b64e-9aaa80f602fe)(content(Whitespace\" \ - \"))))(Tile((id \ - 2d02e281-1f39-4ce8-a37a-6682815f6ea7)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 290ba035-d72e-47bf-bedd-b66a5d707726)(content(Whitespace\" \ - \"))))(Tile((id \ - ea30219b-4afc-4918-9ff8-b863a7447656)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 984756f5-4774-463f-9618-dc2a72287830)(content(Whitespace\" \ - \"))))(Tile((id \ - f2dc795b-537d-477f-a184-81f2dcc0887d)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 38460a6b-efd4-44ba-8ed2-d6879e2913ed)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - e9bafdd1-6986-43a6-b851-e746f864b3d3)(content(Whitespace\" \ - \"))))(Tile((id \ - 81131e23-c1de-448a-82ed-013ba4b8de9c)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - ef3edfbc-bcbb-4d5f-aefa-f21de4062271)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - d282eee9-7456-4b6e-a486-0a5fbbc9490f)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 8ce2f265-919f-4bab-9c64-179dc041bf55)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - f79bdaa0-cae5-4310-b7d7-f3853127bca4)(content(Whitespace\" \ - \"))))(Tile((id \ - 9c101efb-ca2b-4724-a233-8f98aec75b25)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 43038ffb-081a-4011-9594-ede00e3f4958)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - a91c2cb6-4a1a-480b-ae2d-d9c8f6d4f10f)(content(Whitespace\"\\n\"))))(Tile((id \ - 76a63418-74bb-4235-821e-0b41e8dd5274)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - c84ecc69-f6f7-4a81-b453-4e7dda5d7efc)(content(Whitespace\" \ - \"))))(Tile((id \ - 0f25b864-34c8-4e7b-8d19-60b7e20c55de)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 0349ca00-580e-418d-ab27-4682e21da633)(content(Whitespace\" \ - \")))))((Secondary((id \ - d10c97b2-22e5-4a52-87dc-c2d8d1476b5a)(content(Whitespace\" \ - \"))))(Tile((id \ - 1072ad6d-92d8-43ca-b74a-a1977806a658)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - c23ad015-92d8-4d63-9ed4-3557fa6224e7)(content(Whitespace\" \ - \"))))(Tile((id \ - 34ace31f-67fe-46ce-96e4-bdfced8edfac)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 8669f34e-aa04-4eb9-aaff-26534e695ba8)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 0a5099bc-7e37-4c50-a54c-31aa78e1c5b2)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - d3a849e5-48db-4b4c-b1e1-62bd32e722ee)(content(Whitespace\" \ - \"))))(Tile((id \ - fccbf8b2-a2eb-4657-ba10-5ef78866702c)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children()))))))))(Tile((id \ - fea27ae3-edd4-40ae-b72d-73acf0c0cab7)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 3ef94d2a-f330-4e49-a457-bebd71a0beed)(content(Whitespace\" \ - \"))))(Tile((id \ - 661b8e37-2726-49e8-9d59-7ecf23f635f4)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 01c7dfcf-e95c-410a-8a8e-eba2f3a3485e)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 721ff006-dad0-4010-bde6-e9d592c91227)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 68624def-48c6-45c8-bb9c-1f846819dde8)(content(Whitespace\" \ - \"))))(Tile((id \ - 20623eba-2cda-413a-8c58-1fa4399cea17)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 2566dfae-edd4-4ffe-80a4-56968a475285)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 52609218-3a2a-4dfd-8f40-0ae4e783a13a)(content(Whitespace\" \ - \"))))(Tile((id \ - 7f6f0c0a-7015-448b-b8a4-642b9304aee5)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - f490212a-c3dd-4e90-b267-9ca127e20b11)(content(Whitespace\" \ - \"))))(Tile((id \ - c91b4b3e-06cf-4b94-98bc-dc1c261ac807)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 0c6805e8-0585-4e3c-ba3d-552516fc782d)(content(Whitespace\" \ - \"))))(Tile((id \ - 83a53af1-7c2b-4de1-899e-8d62a47734ea)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 7af5c6eb-6dc8-43cc-979a-1a50ec56926a)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 4a781956-8b8d-4ff1-9ef4-a11d0aab7757)(content(Whitespace\" \ - \"))))(Tile((id \ - 3cd3fde3-be6b-4e09-979a-1a021b1d12b5)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - cabe87ee-fb11-4d75-945c-4fcc9fcfb176)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 87674a64-680c-43a7-a493-e9ac20287264)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 35c1b7bb-4136-4980-9107-802b8eac8edd)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 265f5c13-9c06-45b9-8915-3e97ff54d180)(content(Whitespace\" \ - \"))))(Tile((id \ - c37f722e-97f5-4e0a-83ab-5d0778dfd906)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - a40df762-a8b8-428c-83ac-0ec6b8cab1d8)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - a3dd9552-89c8-482f-8c6d-8b4cc77e1687)(content(Whitespace\"\\n\"))))(Tile((id \ - ebf4c810-7207-451f-a1fc-8c7dfb7a941e)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 31d8517a-8873-49a3-9f52-2c53e56d10dc)(content(Whitespace\" \ - \"))))(Tile((id \ - 646f355f-4afb-4689-90e7-c44fd9962b33)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - b22cfa0c-f400-4401-9cf6-72815348b350)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 922b9ec9-9048-438c-b763-dbcc0f0d9bc5)(content(Whitespace\" \ - \"))))(Tile((id \ - fb0a5657-3ebb-498f-81d1-d6a49c21382a)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - e88ccac9-5c7e-465a-8352-c440c1948a24)(content(Whitespace\" \ - \")))))((Secondary((id \ - 7b732b12-0b14-4aaf-9f1f-b74b9ffc2d2f)(content(Whitespace\" \ - \"))))(Tile((id \ - a5aa73d7-4bcb-4c54-9c1f-8adfaf349b61)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 1086b2b9-af49-473e-8e3c-76fc3cb45232)(content(Whitespace\" \ - \"))))(Tile((id \ - f82c151d-d67a-47d5-88c6-18d79457fc66)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 01f6c191-045e-447c-9374-1702f7c4358c)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 4b4d36bc-bab0-4c14-8697-36fb3a4f58d0)(content(Whitespace\" \ - \"))))(Tile((id \ - c3151bfb-d7a9-4507-b454-2a77c2fef2a4)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - d0751f56-95dc-4e5a-8142-58b7a9aad3e9)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - d1594cb6-528c-45b5-9ca0-d2f5db646ebb)(content(Whitespace\" \ - \"))))(Tile((id \ - 0c18b4f9-5824-4c13-8b9f-4c03509e3d19)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 9dfc4dda-d775-4495-8059-18e3ae60e620)(content(Whitespace\" \ - \"))))(Tile((id \ - 59d0bec5-8da8-480f-b9f9-aa2315ac5b05)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - b65ed8ff-e142-443c-9d35-2b763111bbfd)(content(Whitespace\" \ - \"))))(Tile((id \ - 70faba09-22c9-40a0-a244-6dcae68e484d)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 0cda9659-d0a6-494c-8205-976647e3cb23)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 900e3e11-7858-48a0-83a3-790dda457039)(content(Whitespace\" \ - \"))))(Tile((id \ - 25766c0d-076a-4f19-9d10-9612247d8f8d)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - e2fadbb3-13d5-4a5d-83a7-62487c4ce73f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 2fd60358-4c5b-4667-ab4a-8ea942da4f78)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 46368e17-b30e-4543-98a3-75a131df9d7e)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 1f3531d7-5aae-4dc3-9d36-438653994b0e)(content(Whitespace\" \ - \"))))(Tile((id \ - b3d9dced-fa23-48c9-9955-ad7f0361a838)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - e185d3b6-73bc-44e6-b252-c688f844855a)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 2b1f34b8-5a8d-40d4-acd3-b5c0d7f3f520)(content(Whitespace\"\\n\"))))(Tile((id \ - 8667d8c0-adfa-405b-9da1-5f703ef0a4fb)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 34fd2d59-25d4-48bf-95ef-7b79db0959c6)(content(Whitespace\" \ - \"))))(Tile((id \ - 008a716e-5e30-497b-8ae1-b8da9e34fe95)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 4d6b24f4-e671-44af-8f93-e57285d8cd72)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 248638bf-01e8-48b0-974b-a95cac9fe3e8)(content(Whitespace\" \ - \"))))(Tile((id \ - 38b3e39e-bd0f-43ef-acb8-819b06a70b92)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 6c4024cd-2e5b-403b-9526-cbdd6541af54)(content(Whitespace\" \ - \")))))((Secondary((id \ - 44eb6358-ca32-4982-9ff1-4c32ebc3ed0a)(content(Whitespace\" \ - \"))))(Tile((id \ - a53112ca-c595-4ee2-8edb-b729b6905c31)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 931b44f6-bfdd-44a1-9e42-dfb135be1808)(content(Whitespace\" \ - \"))))(Tile((id \ - e35ceb10-6c8f-445e-a055-54028bd61344)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - b22b3a28-ef38-4c28-90e8-e20af795e923)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - bf609873-bca2-4b7d-a177-2161e68345ac)(content(Whitespace\" \ - \"))))(Secondary((id \ - d03e9b31-6164-4e7d-92f5-cfae09c720b4)(content(Whitespace\" \ - \"))))(Tile((id \ - 3fc47261-10c6-470c-91ad-2f7b04fbcbf4)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 8dc4e8f5-4f89-418d-bed7-967bb6611d59)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 84c39660-2dbf-45b9-88a8-41dbe2c9fac8)(content(Whitespace\" \ - \"))))(Tile((id \ - 742a5e07-30a8-48ab-bd4e-367720619557)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - c95b16bc-5c4e-483f-a9d7-15c0de37a834)(content(Whitespace\" \ - \"))))(Secondary((id \ - fe78d319-78d2-4072-94c4-68a57926dc7d)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 7ff568f5-e626-41a0-9561-73c83659fa01)(content(Whitespace\" \ - \"))))(Tile((id \ - a71e5576-4bbb-4a52-9cb3-24029e2c93be)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 62bd4be1-2085-45db-86af-16f088d5e2a2)(content(Whitespace\" \ - \"))))(Tile((id \ - d2a7d9fc-beb1-4d92-9202-8f870729fc9f)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - d0d66364-052b-48c5-99c8-c5559fb786b5)(content(Whitespace\" \ - \"))))(Tile((id \ - 2017864f-e67e-4ad9-8428-f5f095ee0e9b)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 755d06b6-4d8a-4149-baa1-e10717916097)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - ad3d700b-0c3d-4cf1-b2bb-678f779aff3b)(content(Whitespace\" \ - \"))))(Tile((id \ - e329ddc1-ae46-4cfd-bad2-f9fc4f6888dd)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 6127d3ae-4daf-446b-b92c-59cc4f92d948)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - db5a9d88-e8fd-440b-89c8-ec866a4b0b3d)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 2aca8941-c435-485f-ba30-9a34d607a802)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - a909d6e7-0e8a-4c13-b21b-0a0c01b20ba0)(content(Whitespace\" \ - \"))))(Tile((id \ - 017e8f15-9b57-4c81-8eb9-f0c9baec5039)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 266cf2d9-ddca-4fdf-aae5-8ce12ddca4b0)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 3fe35443-0e62-4b24-88e5-f750b4aad0ad)(content(Whitespace\"\\n\"))))(Tile((id \ - 7aac6064-64b6-4e06-99c6-487a152c14a9)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - cb48efcf-8e92-4bbe-80b4-6b06ee6e3233)(content(Whitespace\" \ - \"))))(Tile((id \ - d1a5627b-9bd1-4176-86b5-e20d10810ddc)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 568ccf78-b847-4ac7-bbb5-a9bd7b19e077)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 5040036b-e561-42dd-887a-c7d4fbd5f55c)(content(Whitespace\" \ - \"))))(Tile((id \ - 42e92110-d918-41d5-83d3-e60a335946bc)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 8d5e246c-1cbb-4271-a185-9f3a60ddcc12)(content(Whitespace\" \ - \")))))((Secondary((id \ - 09dc5081-5c6d-4b8b-b376-2a009458d5d4)(content(Whitespace\" \ - \"))))(Tile((id \ - cff47fcd-7087-40db-a920-df7a6b38e08e)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - bba7f435-d6b1-4c13-a1e8-e36596f8f4a2)(content(Whitespace\" \ - \"))))(Tile((id \ - 24236d9e-31a6-4240-b2df-c0a9aa50a2f0)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - ca2dd60d-1ab0-4bc4-9b09-db5d185f5309)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - b4411e64-f416-48f7-93bb-c15417635b96)(content(Whitespace\" \ - \"))))(Tile((id \ - 131b1c95-1913-466c-923b-151582cd1a41)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 437e049e-0211-43b1-b363-faef322b6608)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - bd1685c7-e98e-4024-8fe9-638aea7ff463)(content(Whitespace\" \ - \"))))(Tile((id \ - ede4f17f-8a4d-4f50-b4f2-7e986d88c2b6)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 4c547a87-eb59-4fc5-9d19-b23abb75a8d1)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - bc0a22c9-2204-44ea-8141-7ceaeb09e124)(content(Whitespace\" \ - \"))))(Tile((id \ - 88ded2ef-cc84-4ed9-ab14-3940657f3e65)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - c1763aee-2ec1-4b29-904c-3e8c8c7ea983)(content(Whitespace\" \ - \"))))(Tile((id \ - f28f183a-6524-4f1d-82ba-3deba2ed10e0)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 13418cf6-15b4-450a-b54e-670b790808b7)(content(Whitespace\" \ - \"))))(Tile((id \ - dcd757d6-a025-4441-b71f-80b7498cae65)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - a9c548ea-6dd8-4d2a-817f-19bd5638c43e)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 88006b00-ad25-4b6b-b8f2-46805805ce02)(content(Whitespace\" \ - \"))))(Tile((id \ - fb195e21-44ce-4ca5-9b85-ef9072cbef3e)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 33611903-51cb-487d-8fbf-aa9cf39229d0)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - e6988fdd-0475-48cc-baf5-206e1af0a695)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 04fa7efc-c94e-429d-af5d-96ac6b3e0acc)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 1a410cbc-778d-453c-9ca9-14f9c567cd25)(content(Whitespace\" \ - \"))))(Tile((id \ - 0b489afe-f686-4f09-a7f1-8d2d8a421675)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 235f8bc3-e437-402e-85b4-7771adb8778e)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 30d18eac-2393-47ed-9358-bdefc31e58e6)(content(Whitespace\"\\n\"))))(Tile((id \ - 4780eb65-8f0e-4a67-bab8-107f251ae3f1)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 9baf2aad-35d3-4395-a9c4-05ba8e88388a)(content(Whitespace\" \ - \"))))(Tile((id \ - 516ad7d0-136c-4058-8589-ead6ff52394a)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - f9aaed1a-dc5e-4306-bcba-869a3725b6ee)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 9cc431fb-b855-4794-b524-c477c0d9aadd)(content(Whitespace\" \ - \"))))(Tile((id \ - c78cd1f1-2e8c-48e2-9f2e-3adcf55f9768)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 321eac64-1c4f-43a1-b76f-06ac833a5a73)(content(Whitespace\" \ - \")))))((Secondary((id \ - c0a5a1df-825b-49e0-ac29-c186dc016512)(content(Whitespace\" \ - \"))))(Tile((id \ - e156e57b-8a65-44ea-9cdd-c94fe195c9a5)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - da46c755-ef24-408b-bb62-07524fd24562)(content(Whitespace\" \ - \"))))(Tile((id \ - a2866d81-aebc-42eb-a7ae-e26043a74cf6)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 43cff81d-0762-4f05-976e-ce07af1b8a6c)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 226b9739-c1c9-46a4-8188-3f786f1f2086)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 06f2ab89-0ba8-4e6a-8dc9-9ec181d6564d)(content(Whitespace\" \ - \"))))(Tile((id \ - 0feac348-f033-4ccc-8da7-d5f3a85c9307)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children()))))))))(Tile((id \ - b5769b91-2d42-4b21-a507-85f80375b6d4)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 09e4539f-10b2-47db-a05e-6f0f4ea43ab6)(content(Whitespace\" \ - \"))))(Tile((id \ - 0771103c-da05-4a99-aec3-4e8bff1a3536)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 6492bbc5-95f1-4060-bca6-cb8522f43720)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - fa29e80b-ee90-4ca7-8887-96d4dad7e206)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 7709b111-a6f6-4879-9e99-5441ab2571ca)(content(Whitespace\" \ - \"))))(Tile((id \ - d935b558-7c35-46ba-8ec7-58d61f343648)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 973270cb-406f-4118-885e-204c4574a814)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 1656182a-3530-4fad-b7af-19adeb223861)(content(Whitespace\" \ - \"))))(Tile((id \ - 5486db83-9bbf-4226-9389-3bd6a649e547)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - a3ac746b-4082-4873-9dbf-5f56d0f0f0f7)(content(Whitespace\" \ - \"))))(Tile((id \ - 27ed21fe-1cc0-4748-81ed-28e703e04bd3)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 1fd235e2-06ba-4e14-800c-745e4c75d2dd)(content(Whitespace\" \ - \"))))(Tile((id \ - c0911878-6939-44aa-845e-4f69b96d65fd)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 83fa241c-fd81-42d6-b83e-6d2da973399a)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 92f7bbd4-e2e0-4778-9519-0140b26da2ce)(content(Whitespace\" \ - \"))))(Tile((id \ - 0c1dafed-ce1f-468a-8354-cb27671f5156)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 84b9e0f1-6cbf-4334-9df6-6e723b2c1318)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 930e2d07-21f2-4671-b098-d41ddbb7f068)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - c18881a1-4666-4280-9e23-30595fbce237)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 8e98faa4-6463-4002-a1fd-a50db6eee4b3)(content(Whitespace\" \ - \"))))(Tile((id \ - fbc65161-1ffa-4c69-8320-56c51dfd4e2b)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 91c71496-e60d-4e86-82c0-5f0e8d875382)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - b29c15d6-e2e2-496e-9c3d-ae025d33a239)(content(Whitespace\"\\n\"))))(Tile((id \ - 9daa0d58-3873-40e3-94f5-35732774bcd3)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - b4fe7d76-e4e1-486a-a2dc-fcd0f3880f45)(content(Whitespace\" \ - \"))))(Tile((id \ - a9580d9e-5f69-444f-a882-0a131072e3d3)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 8f7fff52-3b95-47de-b364-be40c36a715f)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 31d43ab2-3fdf-497c-a6b4-41f7a796085b)(content(Whitespace\" \ - \"))))(Tile((id \ - 810c4be4-6469-49b8-9415-7bc6938a7bad)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 9c7b8ecf-a1a2-4c06-a36d-7b5dfcba096a)(content(Whitespace\" \ - \"))))(Tile((id \ - 5fce45d1-4122-42c2-a799-a65bc416d8e3)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 04201a4b-4a9c-44cc-b345-52c52304caa6)(content(Whitespace\" \ - \"))))(Tile((id \ - d5781b3a-a856-49dc-940c-2300f377cdcd)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 3c58a8ab-71b8-4d3f-bf5b-1f1297ce4581)(content(Whitespace\" \ - \")))))((Secondary((id \ - 9f0d4a23-cc87-4332-8e8f-cec5fa3fc45d)(content(Whitespace\" \ - \"))))(Tile((id \ - 4279a28c-7e46-4485-93cf-678207144e74)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 215728f0-aa5d-43a3-b5b8-8784aad5b8be)(content(Whitespace\" \ - \"))))(Tile((id \ - 5138bfb3-2dd8-4371-bf07-92df8b84f6d5)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 43b443bb-7a84-4866-9377-a2d3f523eef7)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - cb7c843d-8ddf-48ce-9c53-6102e8c17822)(content(Whitespace\" \ - \"))))(Tile((id \ - f30751ef-019a-49e3-9a74-ac42e5673b6a)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 8eb77346-d376-4ea6-ac2b-d428fb0d13bc)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 12248498-708f-49ca-97a2-628a1be566f2)(content(Whitespace\" \ - \"))))(Tile((id \ - 9c42e90c-e033-49be-8e59-8d1e28d5e737)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 99980d37-c66a-4f16-badc-b912ba8c5c89)(content(Whitespace\" \ - \"))))(Tile((id \ - a3be2bdb-d9c4-4233-b010-0c1bb3e62d2f)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - c2029d3a-1a8a-48af-86e1-cd96cafca897)(content(Whitespace\" \ - \"))))(Tile((id \ - 11214c70-9a30-404a-897f-a08cce1de0aa)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 89263309-873e-464a-bd31-f7fa7b44deea)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 2db81e68-e20d-48af-b5ea-6f3cf015f8f3)(content(Whitespace\" \ - \"))))(Tile((id \ - 1f0a271a-c64f-4357-90be-857c771bc969)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 78ef23b6-5143-4473-a21a-79a2069d9829)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - f24a098f-8ba0-4173-9c92-2994a82bebe2)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 5bfa564f-ee24-4849-b0ae-2b7fde9821d5)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - f4be52c1-8d60-46ff-aead-61e7a30eae43)(content(Whitespace\" \ - \"))))(Tile((id \ - ffffbcb2-6e3a-4ff6-ae94-f2eb129a8020)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - fc3577dc-45a5-4c31-a027-091beae08b06)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 32e0f96a-c442-478b-80d1-0823411a57a3)(content(Whitespace\"\\n\"))))(Tile((id \ - 7d3171f1-f0fd-47ba-917d-0c00f109962c)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - be37c3b9-0f8a-4192-bbb6-5f812ec2a738)(content(Whitespace\" \ - \"))))(Tile((id \ - 85a13f28-7e4e-49f7-be41-d50bc5384f9b)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 95565c5e-7083-4a85-9e4e-0cc864ae8745)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - a5ce904d-687c-4c40-9557-83d581fa8645)(content(Whitespace\" \ - \"))))(Tile((id \ - 4ac34072-e313-4591-b660-02ec83bdd182)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - c4d930e3-2153-4558-aac4-272b881ba1ce)(content(Whitespace\" \ - \"))))(Tile((id \ - 6a81dc28-84d9-41a5-a122-27e7d6d2dc4a)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - c424dc63-fc09-4504-bdb4-99a9ba65bf91)(content(Whitespace\" \ - \"))))(Tile((id \ - d78e2dd4-ed3b-4412-944c-23e702be7034)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 0d350bb5-3fbb-4cb6-ae79-670c92b1e235)(content(Whitespace\" \ - \")))))((Secondary((id \ - 917381e3-6d3b-4275-8e13-9ebdde15ae75)(content(Whitespace\" \ - \"))))(Tile((id \ - 1a04c79e-0f7f-42ed-ac40-b93394f12631)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - b27eb762-a874-4dcc-9fd4-b2b9bd1a9ec8)(content(Whitespace\" \ - \"))))(Tile((id \ - bcd7f101-d67e-458e-b55c-8aa3051f32bb)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 9ad940ed-bef7-44ab-9cb0-618034dad0c6)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 8ff2c6ec-1259-4d1d-a73f-069dc7176a60)(content(Whitespace\" \ - \"))))(Tile((id \ - a0bffd21-7c6e-4aa0-9bbe-92d42b9526b4)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - fa65330c-032c-4bdc-be72-60d2c19c5515)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 11aa06f6-cbf1-4a10-b8e6-3a81f2282f65)(content(Whitespace\" \ - \"))))(Tile((id \ - 9a36f1c2-5edc-4cc7-a74f-a5262554f0f5)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - f28ac6f7-38b2-4450-895a-d0f68f224fd8)(content(Whitespace\" \ - \"))))(Secondary((id \ - e64b7753-13d6-4874-ab8c-c4eef4c2840c)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 26031709-475d-4861-81dc-e80bb5293980)(content(Whitespace\" \ - \"))))(Tile((id \ - e8bb26f5-7792-4ac4-9dea-d001e93bb861)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 9d1686de-5dc0-4382-9f1d-e64add1e0836)(content(Whitespace\" \ - \"))))(Tile((id \ - 708c6b62-ec64-4756-a390-c339b6a5bdad)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - d0126896-2093-4a1c-9331-a50b4b339513)(content(Whitespace\" \ - \"))))(Tile((id \ - eb086815-ad0d-4e96-a4c7-a0f7d75c113c)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - a3ab4231-46af-444f-b0f6-032ae139b578)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - ac89534d-4f51-4f5b-954a-0c4ef1db3098)(content(Whitespace\" \ - \"))))(Tile((id \ - 173223c9-5720-40b4-913f-7998d41105b9)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - f93531a8-8da2-4623-8d44-39df361554d5)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 3b6568d7-3062-4763-a201-3343957ff3d8)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 2f5a6aaf-b092-4c58-b419-5865967b888d)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 1bd2aef2-5f34-49a3-80ae-47de3ffe6e20)(content(Whitespace\" \ - \"))))(Tile((id \ - 0b740331-4b0a-4e2b-8b56-cce39774b935)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 22583b1d-a3dc-4cc1-a660-1474e6cf0172)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 913e9b67-b810-4f88-9542-c93baf9535e7)(content(Whitespace\"\\n\"))))(Tile((id \ - f0c54c7e-e7ed-4f1b-8a2f-0e0ae502cb8f)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - dd0ead85-35f6-485c-abdf-01592a532b75)(content(Whitespace\" \ - \"))))(Tile((id \ - 9721ed47-b932-4a72-bb7f-bba6f29bc895)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 93a5e7e1-6ff1-4332-bccc-eab69074ada8)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 0eafd477-2595-4374-8ce2-dabe0cf00c47)(content(Whitespace\" \ - \"))))(Tile((id \ - 2d83c80d-076a-4d2c-830b-5c996ea46e64)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 0bd5d294-03f8-4a7a-953d-d66fcdf542de)(content(Whitespace\" \ - \"))))(Tile((id \ - 74f87761-a327-4d21-844e-2cc249a3e722)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - af55299c-11eb-4104-8a7c-db502b572d66)(content(Whitespace\" \ - \"))))(Tile((id \ - 78fa88f9-d0cb-4d36-adf9-1377897f3b64)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - c39ae7f9-7aab-45dd-88db-f98605040197)(content(Whitespace\" \ - \")))))((Secondary((id \ - 38123bbf-a8c5-4134-8127-e7099abfad6d)(content(Whitespace\" \ - \"))))(Tile((id \ - b47d518b-c18d-4409-80a0-c896b2c04a22)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - d407247a-3cd8-4bfb-b03a-ffa207457c0f)(content(Whitespace\" \ - \"))))(Tile((id \ - 605c4ae1-95e5-48f6-a0b7-13f9b792a60a)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - efdcbd71-2f09-4272-94ce-a50d047cda39)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - ab734cad-524b-4de1-868c-12c3843405b3)(content(Whitespace\" \ - \"))))(Tile((id \ - 0e58d366-e414-43ca-914a-482ce79d1db0)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 246729b5-e397-4814-a3aa-3a88c8b60cac)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - cabd8d8a-9450-4322-9450-9f8a6c1760b1)(content(Whitespace\" \ - \"))))(Tile((id \ - 6fe9f703-34fe-4024-9a4e-334b5548f61f)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - f0eab0f9-ee8a-464c-9ce4-05e0c16b6a84)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 92dd92e9-e9d4-4e72-a81d-6c60bbebb5df)(content(Whitespace\" \ - \"))))(Tile((id \ - d2d0bc8d-e12a-4e5c-b3d3-8ecb0350e3f4)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 9094e003-b8ab-40cc-a5a4-1ae33722084f)(content(Whitespace\" \ - \"))))(Tile((id \ - 376b1959-4013-4e21-85da-8ee6b4696c06)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 9b74d115-7af0-441a-a728-8e68aaaaa3ad)(content(Whitespace\" \ - \"))))(Tile((id \ - 542fb2e0-6d43-49f0-ad48-1eb37babd095)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - c5fc87d9-58d4-41b9-9c0c-1552eebc7b1e)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - d3fcb46c-58b5-49ae-ba6c-27d93650bbb1)(content(Whitespace\" \ - \"))))(Tile((id \ - 3c0a53c8-91e3-418e-86a8-282d80a48538)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - f624e90c-dc4d-4102-bfc7-415759cd74f8)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 0bc8dfab-0eee-4ca8-83ae-58e5ebe71246)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 4dcb54ea-eac4-442b-866b-c3cc047b3c50)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 3af47f19-2b75-48b1-9d20-7c3e87d1d397)(content(Whitespace\" \ - \"))))(Tile((id \ - 4c69f1c5-2159-4244-b85a-fe8a7624cdd3)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 395ff835-cd43-4f7e-804a-8f7751d883c6)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 3822a97c-909e-4e0f-9783-aa511ae2e4be)(content(Whitespace\"\\n\"))))(Tile((id \ - dbc95f6f-0dac-413b-9a57-875c91d1bc19)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 6d4f1f2b-2cb6-4a54-855c-eba41992f09a)(content(Whitespace\" \ - \"))))(Tile((id \ - b2f91c33-d0b4-4a42-8bdd-cb318b160df3)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 3f84fcc2-2c28-4b76-b9c4-7a12a043ddb4)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 849c5444-d52d-407b-a91a-78ecd49eaec7)(content(Whitespace\" \ - \"))))(Tile((id \ - d99c9e74-3821-438c-8a00-2990985f1b27)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - f23c1d14-e2c2-45b8-a766-af783330ef62)(content(Whitespace\" \ - \"))))(Tile((id \ - 3254d589-fc8c-44bd-af59-b32f30bf2194)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 00c77afb-bc00-49a8-8e14-8b24e92793b3)(content(Whitespace\" \ - \"))))(Tile((id \ - cbcd2b8f-95e4-431c-853e-1bd3ebc0c0bd)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - d9b539b4-0ed0-4ce0-a3c4-7c796959d9b2)(content(Whitespace\" \ - \")))))((Secondary((id \ - 005e18cc-6749-4a8d-85f5-513cf98bcbf1)(content(Whitespace\" \ - \"))))(Tile((id \ - b569b6f7-d7fc-4248-b301-16d955623be9)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - e22cb4de-e71f-437c-aa78-7dbddaf539b9)(content(Whitespace\" \ - \"))))(Tile((id \ - f1cf30d1-5648-4a00-ab7f-3a6ddd790203)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 644e9674-214f-4d11-8679-6d3d920cc2ea)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 01fecc9f-f74c-4505-b970-87738e766bd1)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 786d94c1-6e02-4925-b04d-a4a76d0d4e62)(content(Whitespace\" \ - \"))))(Tile((id \ - 2cc9c805-a00e-444f-a440-fbfa3d63c99d)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children()))))))))(Tile((id \ - bcada562-fe9c-4f83-acd4-416e41ef4546)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 54b24744-488a-457e-9abf-f70d4947bf8e)(content(Whitespace\" \ - \"))))(Tile((id \ - 14508377-cc9d-420b-8d68-d7d5a7fd35c0)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 501dfb3c-f396-46d9-8838-380c842b63e3)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 58d2c431-0b68-485f-9fa5-3fbf8823a165)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - b8d97744-b2d7-43d6-a0e0-4cb376efb927)(content(Whitespace\" \ - \"))))(Tile((id \ - 8e3dd6c0-0cd8-4006-a23d-ac23094f5564)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 6cfb4cb5-8066-4a65-b197-b4155ba475f8)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - e547925e-3719-4132-a268-711329c13791)(content(Whitespace\" \ - \"))))(Tile((id \ - f989002e-7cf8-4163-93dd-1043941820c0)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 35b2a690-ccac-466f-b90e-d651f823e56e)(content(Whitespace\" \ - \"))))(Tile((id \ - 18e0b965-1d34-45fd-9a69-9158d8099c33)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - b6a82bdb-5fe5-424b-a63c-3edcfb0d08a9)(content(Whitespace\" \ - \"))))(Tile((id \ - b7ed8465-5cd8-45ba-a30c-43f845b03341)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - c1b1e3c2-2c9d-46e5-9053-b0d14f2174e7)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - a391afd6-6206-4a8b-9173-eda0124c5248)(content(Whitespace\" \ - \"))))(Tile((id \ - 04785cf3-a023-4724-b495-a2a5567ff327)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 86485503-96d7-4ed0-a017-983fb191bdf8)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - d97768d7-25f9-4967-821c-297c36c93d98)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 036dab2e-58df-403a-98e5-a994434a3bdb)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 465c6146-c520-45ac-93b5-bc90b0691b53)(content(Whitespace\" \ - \"))))(Tile((id \ - 91f7f8bf-5c5a-442f-9ea4-6f0a90e35e06)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - bb0c1e89-3047-414b-b445-dd343fe3f874)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - e0011fca-0dfd-4ec7-a74f-0d8a3cdb2eff)(content(Whitespace\"\\n\"))))(Tile((id \ - 0a16c719-e6b8-4ae8-8602-074ee1ce69f6)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 804b57a4-e5ad-4f42-b1d9-9293f223c724)(content(Whitespace\" \ - \"))))(Tile((id \ - d19a1997-d322-426d-8293-84a4064730cf)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - b1243561-3961-471b-93fe-f531c58d48e7)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 6bee335b-b841-432e-9933-0c984252ede6)(content(Whitespace\" \ - \"))))(Tile((id \ - e9d13a71-fd23-4b27-a9e9-d5a395ce52d8)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 3e809ff9-9891-4c99-a3d1-573f52645e17)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - da2dccb5-7ad0-4606-9e5b-24011989db77)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - c86d66f4-84b5-4250-b8ec-f48697881277)(content(Whitespace\" \ - \"))))(Tile((id \ - 0d86b99c-4cd2-4db8-bb41-fa737b3b8098)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - b4431d08-0ed8-4bc4-8e01-83476e937af1)(content(Whitespace\" \ - \"))))(Tile((id \ - 776b88a1-6a5e-4c61-bfee-61b48058cb19)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 9bba64e9-2c26-4c96-b5b3-661db6e4bac9)(content(Whitespace\" \ - \"))))(Tile((id \ - f7cd4a7e-d29d-4758-863a-8d1f40db78b3)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 794f9424-8d84-4c66-8436-da7e719d51cf)(content(Whitespace\" \ - \")))))((Secondary((id \ - a23ce396-a5e1-49e1-8344-a2fb1fcee0dc)(content(Whitespace\" \ - \"))))(Tile((id \ - 408e94b8-448d-4799-ae58-2230a86db98e)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 15117fe1-bcaf-4b56-9a15-01df91847a3e)(content(Whitespace\" \ - \"))))(Tile((id \ - 64bdf45b-3110-4037-9f09-64a644be429d)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - cc12782b-2a38-44f4-93ca-092f94e27c86)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 717232e9-1ce3-4caf-be52-0957da124dc4)(content(Whitespace\" \ - \"))))(Tile((id \ - 3ea5fc7b-03bb-4029-85bf-318eabc68207)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - ef6659b0-9d3c-4018-af64-4c990e77cf00)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 94106d2b-323f-485a-a3e1-76c8e0967ac2)(content(Whitespace\" \ - \"))))(Tile((id \ - 8c52a3d3-a1a8-449f-b12f-b425ba640e16)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 740c5794-82ff-4682-bc1b-196bfc039643)(content(Whitespace\" \ - \"))))(Tile((id \ - 0350f5a0-85f5-444b-920f-26294eab140c)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 1828398b-0858-4850-a283-5e5d7cfc1d8c)(content(Whitespace\" \ - \"))))(Tile((id \ - bab4e21f-f6ce-4c13-8560-9cade7290a25)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 9a974c5e-b836-4adc-9949-11c3449f7514)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - be9ff373-e7ac-4dc1-ace7-d25ea830ff61)(content(Whitespace\" \ - \"))))(Tile((id \ - 4020ff3d-a6b5-4fe8-b0a2-c4108f7f5fbb)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 5fa91144-8aa5-4bb0-9e16-8a80b0199d1a)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 13d276a7-8b38-4fc2-80aa-c66c4df6c4fe)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - f073e364-7311-483b-a162-22c31e0dcbc3)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 3b924d1b-da65-4f96-a649-32783c12fa4d)(content(Whitespace\" \ - \"))))(Tile((id \ - 9ce3031c-1ed5-4c08-be33-e8e003040023)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 6b955a59-ba44-4b65-99c1-1418fb72ef21)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 954c6c0f-e515-4725-808b-2f4220144f8c)(content(Whitespace\"\\n\"))))(Tile((id \ - 741f0667-79a0-4c27-bd96-bbea5a774a54)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 3f8879c2-d63d-4bbb-b102-47e9875b6860)(content(Whitespace\" \ - \"))))(Tile((id \ - 2344e263-fbe9-4cda-abfc-5f3a9161c3c6)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - eb9b1a49-91b3-42db-8c6d-f8f76e750af4)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - d3470c02-0b2b-43cf-bdfc-25ea54aac84f)(content(Whitespace\" \ - \"))))(Tile((id \ - 86d8bc13-4d1c-44d8-9f74-a523ca09d63c)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - da203b49-ec57-48ec-883f-66907d129de3)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - d48ad174-a0c6-45e0-b006-25be499197cd)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 76528446-265a-4f6c-bda3-7bdee9f7ffa1)(content(Whitespace\" \ - \"))))(Tile((id \ - c1e234b2-70ef-4de7-b98d-fc895acb7dd2)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 54e6d15d-c657-4496-8223-8536938d609a)(content(Whitespace\" \ - \"))))(Tile((id \ - e943d407-db80-472e-90cb-114c35e58969)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 53caf4f7-40d6-44d3-a8b7-e039f221cba8)(content(Whitespace\" \ - \"))))(Tile((id \ - 06707990-cdfe-4aa4-bd7b-c1162c4a4112)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 4ed8f66e-efe9-46a0-ad84-5d342b89034b)(content(Whitespace\" \ - \")))))((Secondary((id \ - 72286cbc-1586-45ab-acbd-831dcef7356e)(content(Whitespace\" \ - \"))))(Tile((id \ - 28395633-07ab-40bf-8a0e-f1cf33ac4364)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 07fc34a6-e37e-4af8-9585-d7cac87f19bd)(content(Whitespace\" \ - \"))))(Tile((id \ - c663a1d5-5166-449c-8a8c-f33b63652c5c)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 5d3e9a69-d15c-48c1-bc13-433923f251cc)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 1e0e0dae-5435-4a5f-96b8-30ecbd84f935)(content(Whitespace\" \ - \"))))(Tile((id \ - 59546d31-22b8-459f-8a9a-153d9a0e4eb1)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 94233aef-7819-4eee-934b-7e7e41136c21)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 28df4ae9-b956-41ac-96b9-37921c16ba2a)(content(Whitespace\" \ - \"))))(Tile((id \ - 15ef8426-a983-4b8d-ad31-e8dc4695c37c)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 1eee4812-6300-493c-b91c-8bcdac410000)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 9cce1083-a29c-406a-913a-b411aa0a867d)(content(Whitespace\" \ - \"))))(Tile((id \ - 54271780-532f-46d7-8d8d-bdbfd943c10a)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 6a9f7544-aa99-4453-8005-bb57f27065af)(content(Whitespace\" \ - \"))))(Tile((id \ - 7cb13d40-21c4-4886-b704-ca4d1540a644)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - fe14cabf-9f0c-40ae-b739-e8caaf266ab1)(content(Whitespace\" \ - \"))))(Tile((id \ - 10253db9-e295-4e30-b51f-81b0aa17d6f2)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 4f8f2341-c0db-4772-9417-3c903f090689)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 20afd105-6686-4952-8f39-c586e2117c4d)(content(Whitespace\" \ - \"))))(Tile((id \ - d303a86a-a801-4b4b-8e90-25d1b8357a91)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - e7595dbf-d4eb-4736-a3c9-ce6a68e5eda4)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 3d26e8b7-8786-4c95-b076-d8da4c6d7f6d)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 7dc46863-13b5-4677-a034-1f4dd0d1e6b0)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 00129298-79c9-44d2-8321-31fd74737cb0)(content(Whitespace\" \ - \"))))(Tile((id \ - 8bdfae0d-2497-4531-be87-393573618a3d)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 3ef219e5-fe9a-4c23-aaa4-9f20dc05c015)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 02a2101b-a82e-4cb8-b24a-53d750216c90)(content(Whitespace\"\\n\"))))(Tile((id \ - 2f5e8f90-2224-4d16-a860-0c7d00780419)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - c42ee223-5f97-4d88-a4c9-7b284590e739)(content(Whitespace\" \ - \"))))(Tile((id \ - e10e2503-6206-40d1-b464-5105931c8f9b)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 9c6a476c-fe73-452b-8450-d7dc9a141e66)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 7b153ae1-dcf3-450a-b553-f434c5930837)(content(Whitespace\" \ - \"))))(Tile((id \ - 3a536989-5de0-48bf-ac04-ff566f8638f8)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 0cd7bac8-34b0-49a4-a098-b5c71b6349f3)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 676531bc-ff4f-40a5-81c0-16b7d027f0e9)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 0f508fc9-6f42-43e1-8098-873e33df79e6)(content(Whitespace\" \ - \"))))(Tile((id \ - 48b8b67b-fcb4-4c51-824a-b835f38dd563)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 7bcff800-5950-4388-ac86-3dd35ba91aa5)(content(Whitespace\" \ - \"))))(Tile((id \ - 73998d82-f3cf-4b57-82b0-5f863ec75a37)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - ac690e38-efaa-40ca-92ca-6d886b0ad0af)(content(Whitespace\" \ - \"))))(Tile((id \ - e689edd7-c1b2-4a19-83ce-96083ef41241)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - c17d167e-66ab-4d55-9c8f-f02f1174147d)(content(Whitespace\" \ - \")))))((Secondary((id \ - 354edd89-4de1-4cb3-a062-5cbcc62faded)(content(Whitespace\" \ - \"))))(Tile((id \ - b5789586-2ff7-4040-ba8f-3a037c96fc16)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 0e9895b8-f3a6-49c3-acb8-ea5973315809)(content(Whitespace\" \ - \"))))(Tile((id \ - 019221e7-b7f4-45f6-9cda-eea902b16ccf)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 097c716f-cd91-4889-8126-f213d5a4202e)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 079a0a90-5795-45cf-ad53-78c640a16721)(content(Whitespace\" \ - \"))))(Tile((id \ - b2105dda-13f6-40f0-ba81-1ff9f5c2897d)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 6ab9139d-165c-45bd-b770-1b3a9cfc66e5)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 15ffc761-de1c-4775-a3ca-56514625808e)(content(Whitespace\" \ - \"))))(Tile((id \ - aa33aedf-0177-4014-ba2e-edfc1667b2ec)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - f554b45b-9a88-47f3-a1c5-3aa3b6a6da6e)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - e8953ff1-37ea-4353-a6f5-13c3edf9f37a)(content(Whitespace\" \ - \"))))(Tile((id \ - 0f6519a8-2117-4e17-accb-613a378390b1)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - f57c2b2f-9936-49c5-843e-47f78e818dc6)(content(Whitespace\" \ - \"))))(Tile((id \ - 5270b18d-7a86-436c-844e-83a2da3ffd13)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 576551ea-b75b-45e6-a53a-72208fe05088)(content(Whitespace\" \ - \"))))(Tile((id \ - ac127c5d-a9ef-4fda-94ef-bd72067a5324)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - a7e9c7b9-4a78-4b62-bf97-52a76358b86b)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - af3df7b9-93ba-447f-ba68-c9fe69368a1f)(content(Whitespace\" \ - \"))))(Tile((id \ - 5d09c495-1def-4b50-997e-78bffc66ce8d)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 432f6f29-13ec-42aa-85e3-4046f9b4204b)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 420455f3-21ec-45fd-af0c-1ab16278482f)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - ed7445df-264f-4781-8e06-cc89a7277678)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 71bf73fe-e5e4-4d9c-af4a-830b6522d37f)(content(Whitespace\" \ - \"))))(Tile((id \ - 40bc4865-948b-4ee5-b47a-e09f60961fed)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 65ecec74-10b5-4d65-9d07-547469eebbbd)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - b2c53c9e-6b7d-40e3-ad2d-9b52e1629baf)(content(Whitespace\"\\n\"))))(Tile((id \ - 0cd2dc3e-b0e1-4e8f-befb-f8c713347207)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 47feb2d3-9a81-46ce-94f5-6c4709bbfef1)(content(Whitespace\" \ - \"))))(Tile((id \ - b8275797-9c01-4428-b63c-ab024079adf3)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - afe7c5c9-ccb4-4bd9-8757-1f35b2e373da)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 97ea9a19-ecaf-4940-aa98-f60b0cca8b69)(content(Whitespace\" \ - \"))))(Tile((id \ - 64dd32f3-466a-45d3-8a9d-416d49c7c47e)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - d74d4b0c-ce2b-44ef-83ff-143918d607bb)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 00c4e1ae-f97c-4dc8-8a34-2880447762e6)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 051317d4-7a19-40b5-ab5b-480bc2189611)(content(Whitespace\" \ - \"))))(Tile((id \ - 64c5f634-8dbc-4e96-86fc-aa459e60a7e4)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - f72f09a2-4927-4efa-aef0-e607f7395640)(content(Whitespace\" \ - \"))))(Tile((id \ - 6f2156c2-f276-4f03-98f4-fb329a4aa303)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - a4056e5b-d4ae-4f43-adec-8b10b535403d)(content(Whitespace\" \ - \"))))(Tile((id \ - ee11d786-4484-49b4-abad-35c0ae7313fb)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 1f580963-ebca-4c1d-ac42-8d6a8f0f23a8)(content(Whitespace\" \ - \")))))((Secondary((id \ - 67e2966b-fdf7-41ba-b8b1-a08a2a357889)(content(Whitespace\" \ - \"))))(Tile((id \ - 2dae69d8-d8e3-468e-86d7-d8e7e1e84df1)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - e5606c6e-7542-4c62-a12d-16ee9db2e3be)(content(Whitespace\" \ - \"))))(Tile((id \ - 4bdd36af-3c46-4017-9797-2f2608dbb63b)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 36cd609b-5234-452c-a457-0856a2669506)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 7f01d606-9f3d-4aed-91fb-caac53e398f9)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - bc94654c-2f20-4f6c-9ddc-f59bd27c35a9)(content(Whitespace\" \ - \"))))(Tile((id \ - e42001b6-5437-441b-b90e-f4bab5ed406a)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children()))))))))(Tile((id \ - edae296e-119c-4dd6-bc12-8723e45ce0d2)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 5105f7c4-b37b-4830-b60a-8074fd6e6679)(content(Whitespace\" \ - \"))))(Tile((id \ - 916b59a6-7696-4c2b-8401-7a096d90377a)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - d153adf1-31c6-4bde-8248-e8aa30b6d5bd)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - d4b4cfe7-fa85-44e0-82e3-ad28e9b01562)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 069aa331-8134-41ef-96fd-04218183a31e)(content(Whitespace\" \ - \"))))(Tile((id \ - d52e2889-7799-4cb8-b089-dfe46a94a1dd)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 97627ef0-8e55-449c-a860-31b892a436ff)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 0ce934a9-0108-43fa-9ae7-dd73215f01e3)(content(Whitespace\" \ - \"))))(Tile((id \ - e3e5b629-a269-4d18-9533-17b4b6b34126)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 40114966-50d0-4c74-a078-c09f3924b7b2)(content(Whitespace\" \ - \"))))(Tile((id \ - 897951a3-7a44-4520-83f2-c8b58477f5eb)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 3f06f2d5-c79b-4925-b967-bd136c952490)(content(Whitespace\" \ - \"))))(Tile((id \ - 5c51116c-3198-4254-b2bb-9bf9326f0681)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 02d21a0e-d741-4ce3-bca6-c56712c95003)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - c3012fb4-dbd8-4b65-bd7d-6bc52e02a910)(content(Whitespace\" \ - \"))))(Tile((id \ - 4c4ee333-dc6e-4d9d-a919-aaa80c32d84e)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 35054f3d-b381-455c-a3e9-2749418b7887)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - d1737bd2-ead6-496c-8810-905f390bdcfa)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 7c4b90c2-b230-4068-9527-3ca580536ff2)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - d6f450f3-6aef-4292-b2d1-04e4c7c536e9)(content(Whitespace\" \ - \"))))(Tile((id \ - 4673f3fa-3ee8-4ec3-971d-e2cedd8509f6)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 98605f14-241b-41b1-ad67-5795c7a108f0)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 376a93e5-d19e-46fe-97a1-75092092e4f8)(content(Whitespace\"\\n\"))))(Tile((id \ - 23838c85-4434-427c-bbf6-ad7216161cae)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - b9c403c1-486f-4281-b123-7ac8fe903c1f)(content(Whitespace\" \ - \"))))(Tile((id \ - 73e74bb7-c1ef-4170-b168-6385771f6508)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 79ea2e5b-9a88-49d3-8ff7-d109d319824c)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - b06aa8a5-4a29-410c-826e-223657b9344e)(content(Whitespace\" \ - \"))))(Tile((id \ - 2cc8366c-a301-42b8-a2b1-2278cce34ccc)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - b0a594f4-645b-4deb-966c-e7f09eee5b8b)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 3f78bcb7-af28-4b2f-9018-374c7035517e)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - c63464ac-b79b-4269-8530-54cc046de68d)(content(Whitespace\" \ - \"))))(Tile((id \ - 4329b2b6-e7ad-4296-88ac-6005713f8cc5)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 0e68f20e-300f-40ff-ae48-bb60dc210e7e)(content(Whitespace\" \ - \"))))(Tile((id \ - 32c8ebbb-222e-432f-a69b-79988c6b6913)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 2e2be603-d2fb-4ecc-997a-adb69d159cd3)(content(Whitespace\" \ - \"))))(Tile((id \ - bf1f0cef-5c7e-4f51-bbda-f85adecf318e)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 8f5b33e8-8b1d-44d5-8638-9c330744c979)(content(Whitespace\" \ - \")))))((Secondary((id \ - 4d1a8a7c-79ba-490f-a797-e438b620fa67)(content(Whitespace\" \ - \"))))(Tile((id \ - a1495f70-2cd9-482a-8907-5f4ee0ccd14f)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 11439fcd-3a12-45a5-8dc3-eb0e2871a3ba)(content(Whitespace\" \ - \"))))(Tile((id \ - 0911ba1b-85af-4d18-af1e-1e38c065d78b)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 605ea2a8-3c81-4bfe-88ce-5b6b94e11979)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 78a2bc66-ead9-45dc-a0ba-2ddd00d2e8b9)(content(Whitespace\" \ - \"))))(Tile((id \ - 31237158-256a-4be3-af94-c57ec6a1aa59)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 6f8baedb-6517-4beb-a178-a67a96a39d49)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - f60f3acd-7836-4436-bcad-f5cedc50aba2)(content(Whitespace\" \ - \"))))(Tile((id \ - 8a38855d-d3dd-45f6-8b4b-549a0af11220)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 27f73a81-432f-47cf-ac51-bfd6795ed30b)(content(Whitespace\" \ - \"))))(Tile((id \ - 92a165de-27b7-497b-a22a-020a4d4c9086)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 37f14632-9380-4689-a2cd-91df99902c58)(content(Whitespace\" \ - \"))))(Tile((id \ - c81d480a-d37e-47ea-acbd-05020071cdbd)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - a59bf95b-6f8d-4218-9845-2c1550ccb6c1)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - bcc8cf2e-e9dd-40c7-a870-05dba9b4f496)(content(Whitespace\" \ - \"))))(Tile((id \ - 83a26342-f298-43b8-90e4-8d8a943f41e8)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 5becf2b3-1143-4ae1-899a-6530a5cc6287)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 0e53d94c-7040-4c08-8d31-0f1d47ed91b1)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 0b3c3616-4739-461a-8f08-dc7064e70297)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 7e5a67e7-6fbe-4e4b-a728-c6e160c93c2e)(content(Whitespace\" \ - \"))))(Tile((id \ - a38e504d-eff5-41f8-ad28-3912a77795b8)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - a444a690-dd1f-46f0-8b32-673d85a87cfd)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 3c720d05-2dd6-474f-8aef-6c537bc99012)(content(Whitespace\"\\n\"))))(Tile((id \ - 1b3c8184-481b-41ed-af13-ecaee014db19)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 804ad984-3c3b-4505-bd75-7d027ffbbdee)(content(Whitespace\" \ - \"))))(Tile((id \ - f6b17887-aef4-4da1-bfb9-06d14907f573)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 5ff4205a-bae5-447f-b8f9-2174c5822251)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 13e0fa19-3bdd-4e2f-aa95-9b0e64c4c4ca)(content(Whitespace\" \ - \"))))(Tile((id \ - e62e7a04-b4ab-4012-bae2-f736e9069860)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 807e8383-0fb4-4ab4-8573-db7379c9a427)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - dc8738cf-c053-4b5a-96fc-da5b208201a0)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - aae82972-a68b-4ac8-8641-a3dff81bfed9)(content(Whitespace\" \ - \"))))(Tile((id \ - a5ef2480-3805-4e78-8d27-429423d972b8)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 6e73393c-97e4-4bb4-8b6b-025eb39410ac)(content(Whitespace\" \ - \"))))(Tile((id \ - 09f746b3-e174-4027-b328-f256404e5d07)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 0c86de59-8038-40e5-b224-c9090e7f449b)(content(Whitespace\" \ - \"))))(Tile((id \ - 9e2a96b2-d16e-4e02-bbd4-254037dc6100)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 351e167f-b09b-4c76-bbcf-992cfdc6c9a9)(content(Whitespace\" \ - \")))))((Secondary((id \ - d9c64d40-e20a-403b-ad8c-39006832a360)(content(Whitespace\" \ - \"))))(Tile((id \ - ebbe74d6-7ff0-4c0f-9bea-77069f59676c)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 8d3cffdb-352b-4388-8c11-3256fe3eb3c4)(content(Whitespace\" \ - \"))))(Tile((id \ - 5ef11133-5b82-42f5-ab2e-7494af420c15)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 2a4ad24b-7659-458b-9672-2b14e466eca0)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - c695b1c2-ced5-4122-84fb-5cc028d9d361)(content(Whitespace\" \ - \"))))(Tile((id \ - dfa59620-e6a9-4077-b9d1-1a4e2ddb714e)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 214ff7f9-27a3-41f1-a3a1-c5d465e3c5f9)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - ccac5fca-1192-4123-abfb-68f987774372)(content(Whitespace\" \ - \"))))(Tile((id \ - 1c78e035-6ab3-4094-ad71-99225db45bfa)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 13e164d8-e802-44e9-bb9d-907681ea2fa6)(content(Whitespace\" \ - \"))))(Secondary((id \ - 7f5f819a-1111-4679-ad2d-4e8cab62e396)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 0f4ae17d-6028-4ab6-91d6-ca6152c58656)(content(Whitespace\" \ - \"))))(Tile((id \ - a39c895c-a577-4fd2-ad3f-a850f7458911)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 949db5bc-11ea-4cd4-a3cb-5b3692375071)(content(Whitespace\" \ - \"))))(Tile((id \ - 407e39ce-960e-4fdb-957b-02cc506cdf60)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - cb7289ce-c7f2-498e-a0e3-74e541699823)(content(Whitespace\" \ - \"))))(Tile((id \ - ed9a05df-34ff-4f8e-b996-714d5a12b28b)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - b12e7c69-4c46-44c1-853b-2b45684c1e10)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 6933afb9-f003-440f-ad29-613f73847b07)(content(Whitespace\" \ - \"))))(Tile((id \ - 19e5b8d4-e080-41c8-8bfb-aef2b53bcf65)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 785addd4-155d-4060-ba64-c2629b94f4e6)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 44ef56e7-c1ee-40ff-b8af-0c64ad654b46)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - eb1a9137-8cad-4361-98be-54c32e7941a9)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 9b8aeb8a-ff33-4c34-b36b-7c2b481e2cf2)(content(Whitespace\" \ - \"))))(Tile((id \ - 57136821-4424-45a8-94c4-2024e1174a7b)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 4fe2861a-a3b4-41fa-83ee-8214e7390ce0)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - cea6e21d-7c1c-4617-8ca0-f4f26295f1ad)(content(Whitespace\"\\n\"))))(Tile((id \ - c5630b4f-d0cc-4423-b9df-6c2a5d338e84)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 723f77ed-7c7c-4425-9975-e03f5f2796c1)(content(Whitespace\" \ - \"))))(Tile((id \ - 45b04c53-21bb-49c2-af2e-4db1118b3919)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 67ae30d0-142d-4680-a9a1-e9588d253a8a)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 8203e6a2-b957-49a7-9846-7d0321d6de81)(content(Whitespace\" \ - \"))))(Tile((id \ - 8fee1d03-c759-4bc4-8f2f-c63312efdf58)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 862b2430-3972-4107-b0d9-4a591e811442)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 2f675e69-419a-471b-a24c-768cdfe9d195)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 3f4de23b-dcb2-4c83-8b92-499167ac65c9)(content(Whitespace\" \ - \"))))(Tile((id \ - 9fceb4b1-bc3d-4a75-840e-3d210eb4c3bf)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - e2a7fc27-64d6-4193-87a0-1a81b005d189)(content(Whitespace\" \ - \"))))(Tile((id \ - a2d90a4d-622f-420f-a01f-604e567a11c1)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - de74e75d-9c88-433d-afce-914ef03f07b7)(content(Whitespace\" \ - \"))))(Tile((id \ - 10ac9c16-ea4a-4595-8a1d-8fdc9afdb13d)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - bffcfa1f-f040-4d33-8a4a-2758d7a4ac9a)(content(Whitespace\" \ - \")))))((Secondary((id \ - adf7b8e1-aa0c-439a-8191-28d3bb86d59f)(content(Whitespace\" \ - \"))))(Tile((id \ - 8b74d945-578d-4339-b6b2-ed0e3bfb7604)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - a199017a-a863-44a7-91af-ca4bab16e0c0)(content(Whitespace\" \ - \"))))(Tile((id \ - 1dda4f28-4651-43c4-942f-afc91a06391a)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 005f0fca-40d2-4347-b0e6-1cfdff1b7abf)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 3aa11510-029b-47f4-9814-7b849a6b0c18)(content(Whitespace\" \ - \"))))(Tile((id \ - 8c3b0613-0a5f-4baf-bb13-8e0537ba8a99)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 8356a33e-e14a-45ea-9ccb-8643dc7e8c90)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 82610d60-0e70-4286-a06f-027b27f889fc)(content(Whitespace\" \ - \"))))(Tile((id \ - 8c1ae8d6-4e32-4fce-9ba3-1abddb49e7af)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 90b04bf4-97ce-454a-b7a3-0058ad4148bc)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - dd298321-2ef3-4941-9f2b-330c29b875ac)(content(Whitespace\" \ - \"))))(Tile((id \ - 71a8e354-93c0-418c-b729-b993dc488fdf)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 110aea15-876e-4a86-80ea-89438d64c8a7)(content(Whitespace\" \ - \"))))(Tile((id \ - 65d321df-a172-45f9-945f-d1b89ae81761)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 4420f1b9-ac27-4a1a-b018-8b5d87049d78)(content(Whitespace\" \ - \"))))(Tile((id \ - 91cc08cd-3a9e-4c30-8815-bd79da9c3581)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 7f1b07d3-315d-401a-8ce2-6be512c2bada)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 8e172e2f-ac49-4023-8435-2fee16bb4e12)(content(Whitespace\" \ - \"))))(Tile((id \ - f1cec1c7-8074-4892-ba78-f85ed01e3c00)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - ed95bd43-3ee3-4095-9b70-28884d520361)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - ace88fc4-3a31-45d4-9bdf-69a20bdffd47)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 31350bb8-4ba5-4166-83ff-44b230650a22)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 623cd71d-5f31-4a56-818c-b14816d3fe21)(content(Whitespace\" \ - \"))))(Tile((id \ - cfdcf73b-d839-4fa3-b242-335d39050a9e)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 4c26285b-99ab-425b-8eb5-e76daf1d0d54)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 7c81343d-3896-40ff-9b94-4fe477cfdcfb)(content(Whitespace\"\\n\"))))(Tile((id \ - bc97567d-b5e7-4cbd-8ed9-b977b4202305)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 8cf90a7f-e5cd-45ea-9ff6-8306406d8d71)(content(Whitespace\" \ - \"))))(Tile((id \ - d53912ff-83a8-4b21-80c5-482a4883d905)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 0822bcaf-a00a-465a-9755-20e7f4eaf2ad)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 530c0bde-85f2-47f1-a63c-cdeee2e4d904)(content(Whitespace\" \ - \"))))(Tile((id \ - dba55abd-232c-4612-b620-8169e50591e7)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 44916c8d-978d-41d2-b474-d3bd7cc91117)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 4a19a9fd-2065-4544-824d-000c076f622b)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 55a7648e-3dbe-4016-b2c3-964605fcc1e3)(content(Whitespace\" \ - \"))))(Tile((id \ - 9738a782-bfb7-43df-8335-ff637f58f825)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 8a4e86bd-016e-4831-ab72-02b5c3a011d6)(content(Whitespace\" \ - \"))))(Tile((id \ - f966a034-25c1-4736-89c7-fe57d129e3f3)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - e42f3030-e41c-4328-b559-5e79d4241f23)(content(Whitespace\" \ - \"))))(Tile((id \ - 1dfe097a-be5b-45a8-8351-33883acebc2c)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - b93a67ae-2c8f-4c20-9346-0c462298f519)(content(Whitespace\" \ - \")))))((Secondary((id \ - 6a25cc2a-69cc-4864-a54b-a7764c1676d3)(content(Whitespace\" \ - \"))))(Tile((id \ - c423168b-9d88-446a-ae07-0a664c60ecce)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 27dfc916-18f7-420f-b39b-fe53266910fc)(content(Whitespace\" \ - \"))))(Tile((id \ - f716266b-c8be-4581-b250-984d63b6fbe3)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 2bb90dc1-a91f-409d-a4cb-9650a68712ad)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 7ae50a29-9e0d-493f-b4aa-3f2f11f5b789)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 2b2f4d71-025b-4275-a0e1-9be7ba4b1179)(content(Whitespace\" \ - \"))))(Tile((id \ - 46e2f0f8-b86e-4826-b2f9-fe1eb4d17d91)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children()))))))))(Tile((id \ - ec82935f-dbe6-44ba-a061-2bce36224f7e)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 30ab007c-c5a6-4d59-99b1-56bac0bb7160)(content(Whitespace\" \ - \"))))(Tile((id \ - e3c6e770-7a03-4d1f-a8e9-7feae2a10adb)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - b37f7679-d081-4ec7-97c6-b049015500c7)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - b3a36d6f-2523-4a44-a591-49b433fee592)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - b593a8d9-e18d-41d9-9097-0ed1dfe24101)(content(Whitespace\" \ - \"))))(Tile((id \ - 6f8b7845-29d1-4f3f-90ef-4e4044b448d8)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 5a427452-2351-440f-bf7f-0a5ba3f2946c)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - c5ab0cfd-d873-4b9f-9372-3369a86a25fb)(content(Whitespace\" \ - \"))))(Tile((id \ - ca851131-76db-4fc2-b08c-da2f450cff28)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - dfb9a24d-2654-4be3-a601-7a917bf7944e)(content(Whitespace\" \ - \"))))(Tile((id \ - d4a1b884-05b7-490a-b7ea-91d37bd6bfc1)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - bc2dca84-abca-4423-8743-1ca9ddedce81)(content(Whitespace\" \ - \"))))(Tile((id \ - b06dfd1d-91b1-4352-a36a-076ecd0a2269)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 87eb5fd8-49b2-4fe5-a6eb-655451b1f4cb)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - dad9de9e-6e93-484f-bd8c-28df93b0da06)(content(Whitespace\" \ - \"))))(Tile((id \ - 5df5e410-305e-4e26-b1d4-71e197de9811)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - dccfc060-0742-4072-bfd4-bc4c04000904)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 3a2e58b2-df94-41ad-a531-f0d78b9e3edd)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 951fafa4-ff14-4695-bc02-207a1895c66b)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - b0b19ca0-b024-432f-b2f0-3ec428acf942)(content(Whitespace\" \ - \"))))(Tile((id \ - a3492fe6-456d-44a0-9159-2da47a11a9c6)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - cfcced1d-e9f8-473e-8f80-46e5d60af422)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - f9042aa1-ef31-4dfa-ab93-72eb124c811f)(content(Whitespace\"\\n\"))))(Tile((id \ - b94fc01e-4a92-4ae9-bcb6-e4083f81350b)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 4c5a73ed-3a5a-4469-910e-21196d2ca81f)(content(Whitespace\" \ - \"))))(Tile((id \ - 7bafc498-f448-42c7-be93-7c7251d28b34)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 79cdb704-c1c6-415e-9338-70b0c9a0e35d)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - f9d6db4e-df30-4d88-9b2c-73dbf42b8c61)(content(Whitespace\" \ - \"))))(Tile((id \ - 162e2661-8105-4e12-ac58-66021e5d958f)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 4c332712-ca44-4cb4-afd4-cdfe5a432b50)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 9409dddc-4c29-4a44-b6b4-cb1110246ac9)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 01fd3e4c-700c-4c66-a5f1-1337c1d20bbd)(content(Whitespace\" \ - \"))))(Tile((id \ - 39d7039f-2ea3-471d-be75-b46eac839be6)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - e897e0ab-e739-4196-aaef-f309c2e6c87b)(content(Whitespace\" \ - \"))))(Tile((id \ - 6fef2665-08d4-4fd9-b7af-45b02a4ff70c)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 498f37b3-1be3-4414-95ec-bbf672821622)(content(Whitespace\" \ - \"))))(Tile((id \ - c0d7bf93-2f43-4d7e-86c2-d56c4ee5f564)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 6688af32-79f1-4cb8-8fd0-1371748bd8f9)(content(Whitespace\" \ - \")))))((Secondary((id \ - aa64dd83-1c8e-43e9-af02-9f2f25ca7d6e)(content(Whitespace\" \ - \"))))(Tile((id \ - 4911837e-2404-4ec5-8bc1-e50654fa5fe6)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 70805a22-abdd-42ed-9268-322855c90800)(content(Whitespace\" \ - \"))))(Tile((id \ - 35d7bb29-7017-4bca-a2db-253df116efc9)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 345536af-891d-4b2f-809a-4839e3eded8c)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - a988b54c-62be-4beb-ab1f-7fde46772d46)(content(Whitespace\" \ - \"))))(Tile((id \ - 8ac8c748-7fd3-4a02-805e-5d5323bc696c)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - ce28116e-9e2d-43e9-a793-a53572192803)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 8a9e96dc-f7bc-42ff-ba47-01c977440fa2)(content(Whitespace\" \ - \"))))(Tile((id \ - 2fec9ac7-9339-4f96-84b4-34a9c6f73bfa)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - c0ec2546-64ca-4bc3-b812-05af6069baa9)(content(Whitespace\" \ - \"))))(Tile((id \ - 6ff7b3fe-68e5-460c-a9d0-eef19693b947)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - a5b14a37-466e-46c0-b847-f10f9bc1c7e9)(content(Whitespace\" \ - \"))))(Tile((id \ - c46c568d-4f00-477b-923f-82d0ede12890)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - b6188cdf-5f8b-4945-a226-a898fd454383)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 43740e87-1f7d-4182-a068-8485e851c77e)(content(Whitespace\" \ - \"))))(Tile((id \ - 569b185c-c138-4865-858c-a1842790e6d2)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - ed5b1350-b5d6-4104-a2ed-92003976b091)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 30d5a125-e373-46fc-a3a5-841fb583bf72)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 9adab38f-695e-43fe-b1b0-2123d6ae4baa)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - eb450173-68bd-4d31-b717-48cb6cea8ed8)(content(Whitespace\" \ - \"))))(Tile((id \ - 36e861e9-c3be-462e-a88b-12970221948d)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 5471073b-c26c-4631-85c6-e5ace2e10f5f)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - ebc4fcb0-e14c-4cdc-bbd6-72c4124013e5)(content(Whitespace\"\\n\"))))(Tile((id \ - a9d79ee8-1272-4310-adbc-d930a3cd5312)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - d71737cd-b6d0-43a6-b418-1a7676108e28)(content(Whitespace\" \ - \"))))(Tile((id \ - 77042751-cbcd-47a4-8962-2ecf6f843eb3)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 1e3d6e4c-028f-422c-bbd7-46be30ac4297)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - dc5f6381-8b71-4359-8379-da4f9686e73e)(content(Whitespace\" \ - \"))))(Tile((id \ - 67192a2d-7b66-47a5-9a19-173ffa270e84)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 7bbe238e-30c4-4032-b5cc-b751f99fe3a0)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 817ba7d5-6946-4522-84d8-3a143da3e087)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - e8f2b9fb-8129-4644-943e-7da00eae86f5)(content(Whitespace\" \ - \"))))(Tile((id \ - 5c334cb8-937b-4791-91eb-90b2a452ac3c)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 6300e6bb-c002-4c64-939c-32f1d635db62)(content(Whitespace\" \ - \"))))(Tile((id \ - 3e209554-611c-4b99-adce-f78c142f9678)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 10677ba9-8355-4637-849f-55b0ac355ecb)(content(Whitespace\" \ - \"))))(Tile((id \ - f029b7c4-8a6e-407c-bcef-bc60f13ccc6b)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 4d671960-3dc7-469e-bc94-d9f85304234b)(content(Whitespace\" \ - \")))))((Secondary((id \ - 20668536-b9fe-4f52-bcf5-cc921d9c59e1)(content(Whitespace\" \ - \"))))(Tile((id \ - f8b49d68-5a39-4a73-8b96-2df7cff483e3)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - c290be37-98df-4e95-8d94-c05467574a74)(content(Whitespace\" \ - \"))))(Tile((id \ - e659ae87-013b-4ba8-a9e7-e1c3ab485a14)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 0285464f-4c43-46c5-bc12-1dbfb0bfac63)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 399b04af-4a93-4d90-9a23-6e064ffaedf1)(content(Whitespace\" \ - \"))))(Tile((id \ - d8f0975b-c738-4835-b3db-04cf1bf48628)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 73330c4a-f166-4af0-9195-ab12a83b9ed5)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 59c1a946-0b79-4f7b-a95a-2efb120dffb2)(content(Whitespace\" \ - \"))))(Tile((id \ - 38f13aca-751c-4a31-8092-30fa65d6c0f0)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 48e1fca6-4927-46e0-89a4-669ead2fd537)(content(Whitespace\" \ - \"))))(Secondary((id \ - 9d1580b9-18f8-4e36-9b0c-fb724d1fa47c)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 9f7637bb-a589-4886-bc2c-84f24bf33351)(content(Whitespace\" \ - \"))))(Tile((id \ - 147bf938-d556-4338-a313-106354271255)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - a250792f-ee12-4f94-a184-83a6eb901af8)(content(Whitespace\" \ - \"))))(Tile((id \ - c6055ca2-f8af-4fa2-9e88-f5878407aa9a)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - c518ac9f-8aba-4323-a85a-bef0d466925a)(content(Whitespace\" \ - \"))))(Tile((id \ - 378163bf-adfe-40c7-be7c-c5fce772e493)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - c884f25d-30f2-4f04-84b8-ebbdc9513817)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 4801cb5a-5927-4d99-864f-ac0d0584c154)(content(Whitespace\" \ - \"))))(Tile((id \ - 99fdfc3b-c239-4508-aebb-b8c29052bdb2)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - baef7d1c-b5ee-45be-9c01-6a8c172cefb5)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 26d8cca4-6998-43db-a690-b2e0cc824680)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 1e941029-dadd-454c-873b-a2ae7a5f9bdc)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 28414614-8cdd-4dc6-9d41-f518070feeca)(content(Whitespace\" \ - \"))))(Tile((id \ - c86388a4-c2c4-4680-be35-d62a573b9e19)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 637c43d2-1fea-48ed-88b8-ee598e1bfd2a)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - f5d78c30-4c90-4561-9e6c-538ec0121217)(content(Whitespace\"\\n\"))))(Tile((id \ - f1c6a454-343d-4eb1-a928-8d96eff67dc3)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - e9396021-2f8c-4a10-ab80-a708ea89c266)(content(Whitespace\" \ - \"))))(Tile((id \ - 4a0ecaf2-f05a-4ff4-8a61-08b3cd066050)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 9b66c49a-b90a-4308-9afa-c509538a4439)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 965ba50a-8122-4719-8826-5f71e7f9fb88)(content(Whitespace\" \ - \"))))(Tile((id \ - 9a6597f7-ff96-416e-9518-505eb5591474)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 629c3337-c818-4637-91fc-d49038ab4153)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 93b277e8-a338-4b0c-bb42-d8311ac8dbfb)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - faecc857-6573-402e-ba8f-84b59ba2b292)(content(Whitespace\" \ - \"))))(Tile((id \ - ed411ef4-9705-4e3f-a138-e14c8f3d52bb)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 6d921357-b093-4504-b2d5-2f4bc42d12a5)(content(Whitespace\" \ - \"))))(Tile((id \ - 131e03f2-d8ba-446b-9416-9721b12e8ad1)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - c18f456d-bfd6-4ca8-aec1-0420159dc26c)(content(Whitespace\" \ - \"))))(Tile((id \ - f2a74f31-8bd2-4572-b821-2cdae72eade4)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 3e369f63-3994-4fe6-b356-2dbb4f4cc881)(content(Whitespace\" \ - \")))))((Secondary((id \ - 689dee09-afca-44d5-a527-771e64675d87)(content(Whitespace\" \ - \"))))(Tile((id \ - 52033ae3-5ae5-4f2a-bf8f-e6a5ea53f6fb)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - fe8cd260-7335-4f25-a872-bcac0a6f6d53)(content(Whitespace\" \ - \"))))(Tile((id \ - 8cf1949f-c811-4003-9e5d-77f94e4d8744)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 329e7886-88f2-493d-b858-293e12cdc21f)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - e68c833f-a788-4ed3-8656-ddd9013ed451)(content(Whitespace\" \ - \"))))(Tile((id \ - c20ea726-acad-45ac-a13a-3c9aa82937e9)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 3142844e-d8b4-4d68-8899-fa1047f0e9d3)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - fa296f80-daf0-44e4-8eaa-3ebab1655fae)(content(Whitespace\" \ - \"))))(Tile((id \ - 2f81ff0c-b8db-4ab1-8c1b-fc4d56647e1c)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 121d598a-d31d-475f-8c82-280c804713f1)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - e44b06ba-0433-478f-bcf3-3c4d04adec0a)(content(Whitespace\" \ - \"))))(Tile((id \ - 6fd34eac-3ffd-41a9-a461-b6baf8e6b320)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - c1a99c86-e6f1-4015-a4ad-29f932730b45)(content(Whitespace\" \ - \"))))(Tile((id \ - 7531d75d-4ac5-49c2-942a-b0773f2c18fa)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 378d495c-14b4-4f3b-99b0-83b299b42953)(content(Whitespace\" \ - \"))))(Tile((id \ - 4f2605f9-27cc-467c-b8de-6b8c5369795e)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 798d8937-fa75-4cd3-b007-06044754abd3)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 9c22105f-9b9a-41c2-a7da-31b368ca5268)(content(Whitespace\" \ - \"))))(Tile((id \ - c38a5375-a26a-4cf5-95af-506747effafc)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - e5af6a96-3548-42d5-bd1e-3af6cf30a9ea)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 6339f357-ce20-468b-87d7-61ffa266cdd9)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - f9a79446-2016-4a9c-aaab-d70887a1c6fe)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 49fd670b-4f55-44fe-ab34-f407521a63f7)(content(Whitespace\" \ - \"))))(Tile((id \ - c4a85424-0297-4aee-858e-9a30c5f98f30)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 87c698cf-8aba-44ba-bb79-a223a452b823)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 241640f0-109f-4e09-b4cc-efc7c097a369)(content(Whitespace\"\\n\"))))(Tile((id \ - fa7004cc-6f59-4317-8084-9b2583a1838e)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 35d4e102-4c3b-4056-be2b-2fb9392e33b3)(content(Whitespace\" \ - \"))))(Tile((id \ - 7b885957-fa00-45d3-ba15-622c32b6142d)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 9920c06e-bfa1-4f2b-9e81-db63e2a89764)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 850d0e94-3118-4f4a-8e9f-fc6d16f20d59)(content(Whitespace\" \ - \"))))(Tile((id \ - e73df443-f777-493e-a8e4-8c25d4cb96c1)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - d9673b28-8854-43f9-bcb2-d1ebfee5d845)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 35e9c745-e4a9-4450-9ca9-81830b721e61)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - f7c92250-a128-4f09-ad57-e72d878ef5ac)(content(Whitespace\" \ - \"))))(Tile((id \ - c7a7ed1d-a4cf-4787-bdf1-43aeb80f0709)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 733bf0c2-6254-4827-b718-4ba5a5db9ba4)(content(Whitespace\" \ - \"))))(Tile((id \ - 07bd9b7e-200a-411e-ad5d-9e9d526147bf)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 36f66486-5dfb-4b38-830f-02c75a905c49)(content(Whitespace\" \ - \"))))(Tile((id \ - b7a86965-9327-4b77-91e4-648c84c7604d)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 9494308a-26bf-41ff-8bac-672fd9ea208f)(content(Whitespace\" \ - \")))))((Secondary((id \ - 90f1a775-b049-4401-a27d-381142a796bb)(content(Whitespace\" \ - \"))))(Tile((id \ - 070297db-ec76-4b31-8d06-82a36b79e375)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - d64d0383-49e4-4bee-8e88-402364ac2bf2)(content(Whitespace\" \ - \"))))(Tile((id \ - 0980686f-33ad-4301-9340-0cce1fe86647)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 92d2eafc-6979-4c72-9bb6-32abe12df48b)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - a9e019ac-9602-4109-9423-38f211362ad7)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 8d809fbe-794e-45a7-8b5f-6ad1b4ed0327)(content(Whitespace\" \ - \"))))(Tile((id \ - 0bb9c4b3-63e8-4ce1-bd10-870990cb858e)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children()))))))))(Tile((id \ - 238cbd62-29bf-4ae7-9c87-e8a163811b3f)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 835b7059-495d-4581-b226-930f0aa2d0c6)(content(Whitespace\" \ - \"))))(Tile((id \ - 3041ff42-d3c7-4ec1-ae59-8eb66fb8ed53)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - c8de1d8b-098a-40cf-aede-66cbe492a023)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 015aeb7e-d5d3-46a3-938c-d10d8e0d2218)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - a093ceeb-07d2-406c-ae44-0fdcf3472e69)(content(Whitespace\" \ - \"))))(Tile((id \ - efbccf6d-0d8b-478a-a595-1413475959f2)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 1c6a2c54-98e3-423f-b2fa-04a0f31c176d)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - b7e696ee-0072-4504-b813-66ad684ceebd)(content(Whitespace\" \ - \"))))(Tile((id \ - 9b333115-4981-4abd-a710-06069dc2e201)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - abb84c80-a7f2-419c-9980-06faaf582b40)(content(Whitespace\" \ - \"))))(Tile((id \ - d952b11c-7972-495d-94a7-1342bc85026f)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 8fa0aaf4-5345-4d61-8550-733584d4ef57)(content(Whitespace\" \ - \"))))(Tile((id \ - 02e09527-8c71-4095-ab6c-6efbcc08be6c)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - dcd645d2-396d-4e4f-8c82-353c6e98ec75)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - a52ab881-25b0-4df9-a9b0-fe74890885c0)(content(Whitespace\" \ - \"))))(Tile((id \ - 2287944d-f0dd-4ad6-8200-955c20976f79)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 81022dd8-a05f-4888-a694-153bd0efec62)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - a2e45f4a-0b70-4af4-8d48-5d25c67aa4c8)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 0e94a859-d72e-431a-b202-89dd534e9fba)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - b998420a-5352-4820-a0a8-739ed79e6e48)(content(Whitespace\" \ - \"))))(Tile((id \ - 8e0c0849-c714-4413-b6b3-27bdcb546b31)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 84842094-9cfd-44b0-a616-59a635d135a7)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - c08a517c-7d31-491a-8ca0-bdb311cdd1fd)(content(Whitespace\"\\n\"))))(Tile((id \ - 973aca77-7a2e-447f-9b8b-79d46c90d289)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - e058a9fd-33ed-426d-9a16-9d28aecdb6fd)(content(Whitespace\" \ - \"))))(Tile((id \ - b56a3be6-f44d-477f-8bc1-9035556d7e7e)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 64a0ad2a-f57a-4021-873d-65799d736b60)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 138862a5-5864-4e64-8d38-a7733be25a9e)(content(Whitespace\" \ - \"))))(Tile((id \ - c85f2fbd-f802-43df-a8cc-b16441205ddf)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - cccc5c68-3881-48ee-875f-36701f4416cc)(content(Whitespace\" \ - \"))))(Tile((id \ - 1c7771cf-00e8-40bd-87df-b14712ddb613)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 62318fea-bb9c-48db-895c-93fccb51a26a)(content(Whitespace\" \ - \"))))(Tile((id \ - f37a26dc-c159-475b-936a-6524364575b1)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - c86d7fbf-5672-4471-8dc7-00417019c03c)(content(Whitespace\" \ - \")))))((Secondary((id \ - 485e90e1-b228-4a73-b1f8-98596532febe)(content(Whitespace\" \ - \"))))(Tile((id \ - 2109b5ea-d867-4d42-95b3-e0219286c4b5)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - f99b0538-9b95-42b5-96b4-15afb3485b66)(content(Whitespace\" \ - \"))))(Tile((id \ - bd3a7a7f-89c7-4c87-a0f4-b200c691d177)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - cad85f10-72e6-418c-865c-270742dca8ee)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - cfb8dbac-bf36-46f2-890d-e9f9c6ffd884)(content(Whitespace\" \ - \"))))(Tile((id \ - cef6028f-59f5-4e7d-b194-f7adec478ed8)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - bd1d38d8-0d67-4f80-a35b-59588f1383a7)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - b5c8eab9-9902-4bd3-a066-8c6c229d14c1)(content(Whitespace\" \ - \"))))(Tile((id \ - c76cb56d-201a-4f93-bd11-5d35c69bc89d)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 80810ecd-fde1-4b31-8708-ce638f46760c)(content(Whitespace\" \ - \"))))(Tile((id \ - e9a90d2c-09c6-435e-a04a-41da2cfc2756)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 7692ebaf-e2b3-47c9-903d-909d8d496964)(content(Whitespace\" \ - \"))))(Tile((id \ - fd793831-f96a-4b94-aee9-e6723a91ad60)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - ea9c4db9-1dc3-49dc-835c-0069653696d2)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 2c7872cd-b918-4c6d-8175-4089080e36cb)(content(Whitespace\" \ - \"))))(Tile((id \ - b314e3ce-371e-49f3-8c4b-0447af69010c)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - be253910-1720-429d-8ed9-f81db0449dd2)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 2fe89d4f-097a-44bf-8771-168063c819d6)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 4062f46d-48c1-4138-a0e7-5732094e221c)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 10f5853b-e255-44c6-95c6-9180bc8f6904)(content(Whitespace\" \ - \"))))(Tile((id \ - ea4764e3-37cb-497d-ad34-c2470daf273a)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 8996cc25-1f48-4ca3-94ce-6eaa7498aa5a)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 0a78844d-935d-498c-9a44-a68f43962170)(content(Whitespace\"\\n\"))))(Tile((id \ - 47790c08-a9e1-47d3-95ce-6030c0d06c09)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 916f9b14-621e-48c9-9edf-4cab8499a8ea)(content(Whitespace\" \ - \"))))(Tile((id \ - 45f53c2f-9d60-447a-bd89-d0225a86528d)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 0557d6d0-211a-4761-9c80-f5f4cb88fa3d)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 06199b86-2bc6-46f3-95c7-dd38fa7f9044)(content(Whitespace\" \ - \"))))(Tile((id \ - a7ba4ee6-1a03-404a-9900-b08e2d86b8de)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 98d56171-c361-4f62-abcd-d7fd00394a67)(content(Whitespace\" \ - \"))))(Tile((id \ - fb920087-9166-4c09-8737-8c90bbbe6c9f)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 0f7c6467-0079-417b-818c-1fafb365ec21)(content(Whitespace\" \ - \"))))(Tile((id \ - 8377ab57-5d90-4acf-bd9d-6795d80c6299)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 3489484f-1413-496f-be53-4f7ccccaeec9)(content(Whitespace\" \ - \")))))((Secondary((id \ - 3880508f-a25e-42a2-9a6d-1e7c02a2261a)(content(Whitespace\" \ - \"))))(Tile((id \ - f87f7e93-5c74-4015-9324-ea4c3fa1c193)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - d91f0622-9b52-4b1f-8c5e-cd32d8482079)(content(Whitespace\" \ - \"))))(Tile((id \ - 117385a4-0f99-4ceb-bd55-e80ccc7eba79)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 3acc077b-8e8a-4963-bf80-97d7a061bd9a)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 4a4ca8a2-7112-4fba-867a-c4a9ed22d911)(content(Whitespace\" \ - \"))))(Tile((id \ - 82cafc59-177f-42cd-8838-13edbfec33cb)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 37a5fd62-d26b-48c6-85b9-277d9b99787b)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - fb335f33-ec02-42ac-b9d2-125f3052f46a)(content(Whitespace\" \ - \"))))(Tile((id \ - ed32223d-470f-4237-b2d9-39b0a016a0ac)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 0fd75c65-531e-4cc9-8f00-30107fab4d69)(content(Whitespace\" \ - \"))))(Secondary((id \ - b53880b4-4e39-4e65-967c-aa45f62540e4)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 1622b77a-1b36-40dc-a463-d69ef002c5dc)(content(Whitespace\" \ - \"))))(Tile((id \ - 73290c21-6b8d-4840-943b-56de0499f532)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 72470713-6edd-4809-8262-48506fdb6cc2)(content(Whitespace\" \ - \"))))(Tile((id \ - 35e74c6e-7dfd-472d-aadd-b0a25422f83d)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - e9849eb2-92e1-45b5-983d-b4c4efc443c4)(content(Whitespace\" \ - \"))))(Tile((id \ - 72ee6f9e-5c3b-4635-8740-5ec010bef5c9)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 42d11360-d68b-4e83-896c-fab41052dea1)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 0540387f-c191-4f0c-b011-0e02a99ac216)(content(Whitespace\" \ - \"))))(Tile((id \ - 97db6dea-f3a8-4f3e-897f-45d739106e7a)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - d8fb6e78-61d3-408c-831a-155561751f4a)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 17b14124-2913-4406-9ee2-c4e49a51745d)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - ff8bf59f-351a-4bd0-b3ed-0bea707aed25)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 99aeb614-c1d6-421f-bea5-38c265e0da1e)(content(Whitespace\" \ - \"))))(Tile((id \ - 60f943d1-a0d0-4835-b63a-163b57faea38)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - b5e14b9b-d4f7-4c17-befb-ce5bd8c907cf)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 623f89b2-f4b9-4708-abd9-4858f4b6c685)(content(Whitespace\"\\n\"))))(Tile((id \ - 2a11ed63-c77a-41a5-98c6-9944b775106b)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 81c32cf6-5e3a-4eb6-b206-bdd0ca210a0c)(content(Whitespace\" \ - \"))))(Tile((id \ - 9580051a-1fc1-4512-aa4f-33afba464fac)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - f3d33f33-6988-4dbe-8653-9609aee12615)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 902e2355-2372-4218-be02-7a49ab8671dd)(content(Whitespace\" \ - \"))))(Tile((id \ - 3939a4ec-1d35-4fa8-bb31-b2a2b7e17313)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - c64c35d5-b8ed-4955-9f83-b5c301360a61)(content(Whitespace\" \ - \"))))(Tile((id \ - 78b3eee1-7d12-470b-9f9c-145e913c9167)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 4ceadb13-0558-406b-b5fb-7e50ee87fdf8)(content(Whitespace\" \ - \"))))(Tile((id \ - 02253eaf-3c18-41c4-aa2f-97ee47ea29bf)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - c540e15c-3b2a-4146-861c-b415cef3701c)(content(Whitespace\" \ - \")))))((Secondary((id \ - c788a07a-9849-4102-b17c-f3d4a5e1e1e8)(content(Whitespace\" \ - \"))))(Tile((id \ - 16105dd2-b42d-428c-bc82-66c19b810b91)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - f18ab206-6397-424f-bd01-8ec1de2af31f)(content(Whitespace\" \ - \"))))(Tile((id \ - c54bae36-a6be-45cb-a175-f11b640c14db)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - deee1609-2695-41ff-b342-01d2c118feb4)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 31dc3c6b-40d4-4df3-99ae-e84ce7b7fb45)(content(Whitespace\" \ - \"))))(Tile((id \ - abfee07b-f80b-4cbb-8932-b8ab45fa79af)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 0f82c4fc-c292-4b5a-b3ce-2c96a41dae0b)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 2aa9f93a-2604-4b31-abff-6e1e73aa94ad)(content(Whitespace\" \ - \"))))(Tile((id \ - d644270f-ef6e-49e4-84a3-e7cb8fbb4ca7)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 6eb9b226-f651-416f-883c-85365a10311e)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 809318ff-8155-415c-8990-23b5fad263c3)(content(Whitespace\" \ - \"))))(Tile((id \ - 222f3893-83f7-4142-b4f9-3e4db52a5692)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 4a86a391-f008-40a2-9245-aceaa2b75b6f)(content(Whitespace\" \ - \"))))(Tile((id \ - 485796d0-1475-429b-be51-2c738aad651f)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 2d4487e4-3410-4ab7-b761-b552f65db9ea)(content(Whitespace\" \ - \"))))(Tile((id \ - b6a8ad38-c1fd-4d69-8832-67206f0d1f53)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 23b3f6fb-10d5-4caa-a9a9-057575a66052)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 5158275a-4ab2-44b0-aa30-6c099c173abd)(content(Whitespace\" \ - \"))))(Tile((id \ - 1e924e79-7a16-4de9-9a3c-e4ff9ad48333)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 299dab18-d0a3-441a-aae1-b30ea66fd395)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 477383e7-bc41-438f-8955-434f3fc33fee)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - a5fd3ab0-498e-4f4c-8302-78dc766caebd)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 8bebd1d5-97af-49b5-814e-d2ed6db0a6b7)(content(Whitespace\" \ - \"))))(Tile((id \ - b57f8ebf-002d-4f04-9d78-700c8208d5d0)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - f8b67ad0-d8da-4614-b1e7-0dbcc7b19ae1)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 225913ec-3b8f-46d7-a43f-1ff784f26662)(content(Whitespace\"\\n\"))))(Tile((id \ - e14eec4b-d7f7-4085-902f-c5b99493873a)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - aa1cb2c3-44fe-489c-92ef-f22d198c90d6)(content(Whitespace\" \ - \"))))(Tile((id \ - cc232e4d-fb0e-40b8-a483-cd83dc15ebc9)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - f0b36e59-61ee-469c-83fa-ff5bd5c2985d)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - f765efa2-eab5-4665-9965-c4ed7f3b5400)(content(Whitespace\" \ - \"))))(Tile((id \ - 3241dc2e-cbe0-4905-b83d-63d45dacc896)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 0f4ce747-c45a-427d-8f29-29f50f4d0036)(content(Whitespace\" \ - \"))))(Tile((id \ - edb6f7cb-4f54-44ff-b297-9e4e6e80d8b5)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - c4c4173d-2af1-415e-8f02-2415ed7e6892)(content(Whitespace\" \ - \"))))(Tile((id \ - 6b18af98-5b9e-4e1f-be93-d02a3768a806)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 583ba5ee-ae97-4b56-b85c-214ec904727b)(content(Whitespace\" \ - \")))))((Secondary((id \ - cea0ece3-97ef-4970-9332-49dbc49b80cc)(content(Whitespace\" \ - \"))))(Tile((id \ - 733ef178-7a6f-43e8-9397-e0583cfecf6d)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 89915481-daa5-42f3-954f-948c1aff1549)(content(Whitespace\" \ - \"))))(Tile((id \ - a53dceac-6fe5-405e-a1d7-97343fbc9030)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 0b692918-371b-49dd-9f3d-6c93800c3f31)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - a1517b07-805c-43bf-88df-39d427604f7d)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 6331eeb6-db80-4c09-9f8e-3d1fa91e34b6)(content(Whitespace\" \ - \"))))(Tile((id \ - ff25c371-f52b-4aca-adea-44556eaa65ea)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children()))))))))(Tile((id \ - 30df784d-d6a7-4e72-b333-743de0028917)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 783606ed-bd62-4b30-bae2-b3c9125c6582)(content(Whitespace\" \ - \"))))(Tile((id \ - 658854e3-0c3b-4297-b35c-f9f082a3b7fd)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 41a1d469-33c7-427a-bf48-cf9dc5011380)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 37c77d32-4cca-4788-8b0b-9cff76192356)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 8b12e819-c936-468b-af2c-7b2e0eb84f8b)(content(Whitespace\" \ - \"))))(Tile((id \ - 90c22047-605e-4f41-9b93-d7cd0404ded9)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - d35fea4a-36de-4e10-9512-1873c1965654)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 8b51bb9e-3510-4ca9-afaf-579d5e4d05a6)(content(Whitespace\" \ - \"))))(Tile((id \ - fa6f5d9a-7e59-459b-b5cb-0fa241021151)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - a658832d-570e-4d64-945b-2fe3a5f49666)(content(Whitespace\" \ - \"))))(Tile((id \ - 652a04e7-897d-4ec3-b0f7-1b63e64e7b20)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - e94b2239-27cc-468b-9214-a42d2a497929)(content(Whitespace\" \ - \"))))(Tile((id \ - 9a2efcf0-6410-465c-8871-909dba1b381c)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 30c12b6a-6d0f-419d-8fdd-c898449e2237)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 2836f94f-1d02-470e-85ad-b0fee4aa4c22)(content(Whitespace\" \ - \"))))(Tile((id \ - f07dcef0-5700-4c69-afad-63e79497701e)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 452a38b7-3724-47ae-91d2-b397871e54c8)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 8a70ca24-26f2-4608-a159-1f11ed4901c0)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - f340d87c-adff-463e-9045-fcac56ce16fc)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - d439aade-1f27-494b-9e00-1930511c5192)(content(Whitespace\" \ - \"))))(Tile((id \ - 59050d8e-66da-4abd-8ed4-5e6febdb06a8)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - f485a019-0a07-40d3-899a-9512d4def50c)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 5633975f-c769-481e-9b92-68cb2685176c)(content(Whitespace\"\\n\"))))(Grout((id \ - ec5fef77-52f4-4093-a5fa-7e07d30a822b)(shape \ - Convex))))))(ancestors())))(caret Outer))"; - backup_text = - "# Internal Regression Tests: Function literal casting #\n\ - # None of the below should trigger runtime exceptions #\n\n\ - let g: ? -> ? = fun _ -> 9 in -g(1);\n\n\ - let f = fun b -> b && true in f(true);\n\ - let f = fun b: ? -> b && true in f(true);\n\ - let f = fun b: Bool -> b && true in f(true);\n\ - let f: ? = fun b -> b && true in f(true);\n\ - let f: ? = fun b: ? -> b && true in f(true);\n\ - let f: ? = fun b: Bool -> b && true in f(true);\n\ - let f: ? -> ? = fun b -> b && true in f(true);\n\ - let f: ? -> ? = fun b: ? -> b && true in f(true);\n\ - let f: ? -> ? = fun b: Bool -> b && true in f(true);\n\ - let f: Bool -> ? = fun b -> b && true in f(true);\n\ - let f: Bool -> ? = fun b: ? -> b && true in f(true);\n\ - let f: Bool -> ? = fun b: Bool -> b && true in f(true);\n\ - let f: Bool -> Bool = fun b -> b && true in f(true);\n\ - let f: Bool -> Bool = fun b: ? -> b && true in f(true);\n\ - let f: Bool -> Bool = fun b: Bool -> b && true in f(true);\n\ - let f: ? -> Bool = fun b -> b && true in f(true);\n\ - let f: ? -> Bool = fun b: ? -> b && true in f(true);\n\ - let f: ? -> Bool = fun b: Bool -> b && true in f(true); #ERR#\n\n\ - let f = fun b -> b && true in f(true) && true;\n\ - let f = fun b: ? -> b && true in f(true) && true;\n\ - let f = fun b: Bool -> b && true in f(true) && true;\n\ - let f: ? = fun b -> b && true in f(true) && true;\n\ - let f: ? = fun b: ? -> b && true in f(true) && true;\n\ - let f: ? = fun b: Bool -> b && true in f(true) && true;\n\ - let f: ? -> ? = fun b -> b && true in f(true) && true;\n\ - let f: ? -> ? = fun b: ? -> b && true in f(true) && true;\n\ - let f: ? -> ? = fun b: Bool -> b && true in f(true) && true;\n\ - let f: Bool -> ? = fun b -> b && true in f(true) && true;\n\ - let f: Bool -> ? = fun b: ? -> b && true in f(true) && true;\n\ - let f: Bool -> ? = fun b: Bool -> b && true in f(true) && true;\n\ - let f: Bool -> Bool = fun b -> b && true in f(true) && true;\n\ - let f: Bool -> Bool = fun b: ? -> b && true in f(true) && true;\n\ - let f: Bool -> Bool = fun b: Bool -> b && true in f(true) && \ - true;\n\ - let f: ? -> Bool = fun b -> b && true in f(true) && true;\n\ - let f: ? -> Bool = fun b: ? -> b && true in f(true) && true;\n\ - let f: ? -> Bool = fun b: Bool -> b && true in f(true) && \ - true;\n\n\ - let f = fun a, b -> a + 1 in f(1, 2);\n\ - let f = fun a: ?, b -> a + 1 in f(1, 2);\n\ - let f = fun a: Int, b -> a + 1 in f(1, 2);\n\ - let f = fun (a, b): (Int, ?) -> a + 1 in f(1, 2);\n\ - let f: ? = fun a, b -> a + 1 in f(1, 2);\n\ - let f: ? = fun a: ?, b -> a + 1 in f(1, 2);\n\ - let f: ? = fun a: Int, b -> a + 1 in f(1, 2);\n\ - let f: ? = fun (a, b): (Int, ?) -> a + 1 in f(1, 2);\n\ - let f: ? -> ? = fun a, b -> a + 1 in f(1, 2);\n\ - let f: ? -> ? = fun a: ?, b -> a + 1 in f(1, 2);\n\ - let f: ? -> ? = fun a: Int, b -> a + 1 in f(1, 2);\n\ - let f: ? -> ? = fun (a, b): (Int, ?) -> a + 1 in f(1, 2);\n\ - let f: (?, ?) -> ? = fun a, b -> a + 1 in f(1, 2);\n\ - let f: (?, ?) -> ? = fun a: ?, b -> a + 1 in f(1, 2);\n\ - let f: (?, ?) -> ? = fun a: Int, b -> a + 1 in f(1, 2);\n\ - let f: (?, ?) -> ? = fun (a, b): (Int, ?) -> a + 1 in f(1, 2);\n\ - let f: (Int, ?) -> ? = fun a, b -> a + 1 in f(1, 2);\n\ - let f: (Int, ?) -> ? = fun a: ?, b -> a + 1 in f(1, 2);\n\ - let f: (Int, ?) -> ? = fun a: Int, b -> a + 1 in f(1, 2);\n\ - let f: (Int, ?) -> ? = fun (a, b): (Int, ?) -> a + 1 in f(1, \ - 2);\n\ - let f: (Int, ?) -> Int = fun a, b -> a + 1 in f(1, 2);\n\ - let f: (Int, ?) -> Int = fun a: ?, b -> a + 1 in f(1, 2);\n\ - let f: (Int, ?) -> Int = fun a: Int, b -> a + 1 in f(1, 2);\n\ - let f: (Int, ?) -> Int = fun (a, b): (Int, ?) -> a + 1 in \ - f(1, 2);\n\ - let f: ? -> Int = fun a, b -> a + 1 in f(1, 2);\n\ - let f: ? -> Int = fun a: ?, b -> a + 1 in f(1, 2);\n\ - let f: ? -> Int = fun a: Int, b -> a + 1 in f(1, 2);\n\ - let f: ? -> Int = fun (a, b): (Int, ?) -> a + 1 in f(1, 2);\n\ - \ "; + title = ""; + description = ""; + hidden_tests = + { + tests = + { + zipper = + "((selection((focus Left)(content())(mode \ + Normal)))(backpack())(relatives((siblings(()((Secondary((id \ + 8068a0c4-8131-4ce5-a850-c17e7e7e38a7)(content(Comment\"# \ + Internal Regression Tests: Function literal casting \ + #\"))))(Secondary((id \ + 3be72b01-de96-4cd5-910f-b6f3ab6a172e)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 4d828014-6d8f-434b-abf2-6a662fe33c69)(content(Comment\"# \ + None of the below should trigger runtime exceptions \ + #\"))))(Secondary((id \ + c3af568c-60e3-49fb-b4b6-aceb07a91e97)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + e57439be-1c01-459a-bcf9-cd5f3aa8c65d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + ce9fa5fe-b457-40f2-b69a-1dd30d72b19a)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + cbeba9b0-28a2-4e5f-84d3-1ac692fdadac)(content(Whitespace\" \ + \"))))(Tile((id \ + 5c050101-1fa6-4df8-b20b-b19c253a622d)(label(g))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + f9aa410a-67dd-402d-bb0f-4a7681401d98)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 364edc1f-bb6f-4b64-b3c8-88889944ab35)(content(Whitespace\" \ + \"))))(Secondary((id \ + 8bd22357-2c15-4dcc-92b8-5aa2f6e4762a)(content(Whitespace\" \ + \"))))(Grout((id \ + f20dff97-39f2-4f4d-8f31-684088be69f0)(shape \ + Convex)))(Tile((id \ + ca20cc5f-f628-4149-9310-d59868ecc7a9)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 5cb83599-6fff-4fe6-8b1b-fbc0f2b16df6)(shape \ + Convex)))(Secondary((id \ + b6ed15b5-4d03-474f-8079-ff23578cb9c3)(content(Whitespace\" \ + \"))))(Secondary((id \ + 90761b49-64e0-4fa1-b3b8-2baf37151b32)(content(Whitespace\" \ + \"))))(Secondary((id \ + 8784e29d-9fb1-47e6-9833-13964e30a390)(content(Whitespace\" \ + \")))))((Secondary((id \ + 881872c6-0d5d-4618-a27f-2d8189d891d3)(content(Whitespace\" \ + \"))))(Tile((id \ + ec558c21-a417-440e-8649-5d1e471ac938)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 6cafce86-7cfd-4966-890f-1ff63e7c59d1)(content(Whitespace\" \ + \"))))(Tile((id \ + e6197a04-5d43-457c-b9ac-2863dc99c9aa)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 8bc5b8c6-b9f6-4f7f-bdc0-cca1ee17ace0)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 5fa91f17-5b9d-4375-8c21-48ea2a17f79b)(content(Whitespace\" \ + \"))))(Tile((id \ + 729bfaa3-4d19-45ab-b2ea-0ee7cbf89f6a)(label(9))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + efb902d5-fca7-4ea6-811b-8fa5cacf00a6)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 4b388e57-61f6-4c4f-8288-28300d5c63be)(content(Whitespace\" \ + \"))))(Tile((id \ + 54988076-8257-438a-800d-614fed5dbf32)(label(-))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 2))(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 6760425e-a4f8-4974-8ae4-59d7cb943370)(label(g))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + bfb3339a-8286-43fb-9ba1-28b3ccd4f57c)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + c39698c7-0f2e-4bef-a04f-8a39d9a055d0)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + fa356f00-e672-434b-affe-c17ba6a33b8b)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 7816c92f-1592-4df0-b2c9-079260acf77c)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + eb8b1deb-50e1-4a00-b58c-c1203e082d85)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + c244a67e-156c-4a5b-8976-9c33b02945ab)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 058e2ec9-8a44-404c-a984-b5e3fc44526a)(content(Whitespace\" \ + \"))))(Tile((id \ + d9a0395f-eb34-47a7-9962-cc212a342bae)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 700d354d-c0ce-4a53-b12c-cbee7556a60b)(content(Whitespace\" \ + \")))))((Secondary((id \ + c4653559-da72-40fc-a7e7-bcc45abf19cc)(content(Whitespace\" \ + \"))))(Tile((id \ + bd681a2c-d7c4-4483-af87-fc929dd43eda)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 1a9f798b-6df6-4aac-a512-699c4f0e4914)(content(Whitespace\" \ + \"))))(Tile((id \ + 998f8e6f-d099-444b-9c75-891ab31f1768)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + a5faaaaa-e2f9-46ad-932a-0289bd5b39ec)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 5c84c891-35bf-4c68-a116-83e16699136f)(content(Whitespace\" \ + \"))))(Tile((id \ + 74466136-5bab-4a17-af60-4e45651ef15c)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f9708006-883e-4b2d-bb30-c16eceb968dc)(content(Whitespace\" \ + \"))))(Tile((id \ + 5b08b814-e7df-456c-b93f-0612e8ae5e9a)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + cad35cba-3f46-4c8d-8e95-874ac1cbb84f)(content(Whitespace\" \ + \"))))(Tile((id \ + f130da22-b535-4868-8c28-bb7d6e114694)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 6e17c3c4-3b95-4524-abd9-64fb1a179665)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 3d264c86-a12c-4dc2-8d06-9bfc92ff1160)(content(Whitespace\" \ + \"))))(Tile((id \ + 53ac5aaa-2c96-4159-a15c-be816540dcf6)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 3fbf338a-1948-42bd-9d25-93b98002a1a8)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 5a6b4ca1-8b45-43e5-88e7-0df7ab9a8291)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 5b9cad15-2118-48bd-8a90-930a1a14fc34)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + cd49f1aa-27da-42f3-8f0f-02f845ca8cd3)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 4b5a4b1a-c654-4b0c-a3d3-53794844fe64)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 2b4ded00-335f-42d5-af7c-3ddfa436f524)(content(Whitespace\" \ + \"))))(Tile((id \ + 083512d6-17a6-4288-a83a-faea34192510)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + a5916772-9b05-4c21-a6ee-9ecbd54516be)(content(Whitespace\" \ + \")))))((Secondary((id \ + 666f67e6-24c9-446f-a7ab-38e2c015f9cf)(content(Whitespace\" \ + \"))))(Tile((id \ + f0807ef5-df8e-4eb7-9f78-339003a5b8de)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 106fc984-125d-427f-a0b1-acbe77f0ffba)(content(Whitespace\" \ + \"))))(Tile((id \ + a049e806-20c5-4b1d-a099-7755a9097b7c)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 43a50e94-546c-4d1a-8dd8-c5b597a73727)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + a2958e5b-2da8-4f25-903f-220583955a32)(shape \ + Convex)))(Secondary((id \ + 2a78f83f-11c1-488f-8e1b-81f27b9d6a73)(content(Whitespace\" \ + \"))))(Secondary((id \ + e24760a0-00f4-411c-bd9e-6ddaafdfa45e)(content(Whitespace\" \ + \"))))(Secondary((id \ + cea3d12d-01b1-4cde-8fab-0249d492ab91)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + b1651b66-ecf9-40e2-87b6-1467f19c6199)(content(Whitespace\" \ + \"))))(Tile((id \ + 76e9f1a4-edd2-4dcc-ab7d-bb5ce3daa033)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 29b18195-9677-4596-a89c-b9fc61267425)(content(Whitespace\" \ + \"))))(Tile((id \ + 43ab9ff3-2fac-440f-ba6f-67cde6a259fd)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f48bf544-6b5f-45c8-a4b4-2d2b8b8d62c4)(content(Whitespace\" \ + \"))))(Tile((id \ + c73a3100-a782-46b9-a401-3194788d3ab9)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 1755c477-85d2-427c-8240-a91649c21dfa)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 77a083d4-1e8d-46a3-9844-c2a929afae23)(content(Whitespace\" \ + \"))))(Tile((id \ + a40bdf1f-e175-48aa-b34f-c6c3c2ac61d9)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + a08d599a-5b8d-4b5d-8f5f-8a28646b9e01)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + a7b66a4e-4c88-4a7d-b325-1ef561c8945d)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 506b50ea-1e13-4309-83ed-9e2646874c49)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 08da3a5e-3737-4e5e-9fb3-9b18d8142310)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d0c3bbff-de90-4c18-bc64-f06637a0c534)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + bd3ce62f-26d4-4583-895c-b1703388b2b2)(content(Whitespace\" \ + \"))))(Tile((id \ + 98686f54-7a2c-4951-b59d-48a861d27aab)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 7d9fa3db-ad61-4696-9c7e-9b897a1bf2b3)(content(Whitespace\" \ + \")))))((Secondary((id \ + c3afe279-39cc-4c43-9185-e19ce5ba31ff)(content(Whitespace\" \ + \"))))(Tile((id \ + 5965539f-7948-4f36-9160-aa18475144e3)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + d7403374-174d-4a55-a4bd-423d6c907a22)(content(Whitespace\" \ + \"))))(Tile((id \ + 9f58bd61-2540-4de4-877a-275ea138c657)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 84123ab9-18d0-44aa-98a8-08f1eb3c0b42)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 6134bd22-8950-4612-a5a7-5fff5a16abed)(content(Whitespace\" \ + \"))))(Tile((id \ + 9a1a6bd7-feb2-4476-9be1-81af953c33da)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + a2a9a9ad-3751-4443-b863-9075a213e282)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 7dd4efd1-b246-4cef-a279-e45029f3f048)(content(Whitespace\" \ + \"))))(Tile((id \ + 50d4bc14-0110-47f1-9ff3-9173fb4c799f)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 1cbbf7f7-82f6-4d5f-8af4-694afddaa340)(content(Whitespace\" \ + \"))))(Tile((id \ + 07740340-432f-404b-a4b4-58c849178faa)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 2f0a5a7a-2a8a-442a-9b42-bb29ace672ba)(content(Whitespace\" \ + \"))))(Tile((id \ + 8cfe83fb-95ca-430d-b614-7ad6a1f060fd)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + c49a3f96-09b3-4c92-9d9a-4e0e129bfd4d)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + ccc17a8b-20f6-41ca-aced-8ab1e37b51af)(content(Whitespace\" \ + \"))))(Tile((id \ + 9d4cca74-c8be-47b6-aab7-db4a81519644)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + b0b5f605-6c2a-4163-91af-2db67039b026)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + a52dcc6a-5f33-438c-bfa5-f5065c49dd3a)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 823c2d05-bfca-456f-8ea7-3dc327249035)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 6ef23420-91b3-4e62-a6ad-acc727256268)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 812d4f83-80f9-419a-862b-7fbcd5ca14ce)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 74ec9114-7deb-4131-95fa-ef6596f0727f)(content(Whitespace\" \ + \"))))(Tile((id \ + 9a1e62b2-f5a8-44d6-be05-e543aa063c03)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + f8d525db-5cf3-454e-93f4-dd805dbfece7)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + fe35e44b-a3d8-4d9f-b052-d95ce9dff21c)(shape \ + Convex)))(Secondary((id \ + 68211388-5a88-4811-959f-947ab63a5bcd)(content(Whitespace\" \ + \"))))(Secondary((id \ + 3a3a303f-be27-4df1-9b21-86efdcb6ec46)(content(Whitespace\" \ + \"))))(Secondary((id \ + 442407b8-023a-4380-ba34-3a9d13d031a0)(content(Whitespace\" \ + \")))))((Secondary((id \ + 0fc60cb0-46de-4545-a2fb-4282bd97be44)(content(Whitespace\" \ + \"))))(Tile((id \ + d0c96440-b4ab-4e5f-b547-568097937dcb)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + fde88b1c-69da-461c-9b0d-6c47f1a9ed6d)(content(Whitespace\" \ + \"))))(Tile((id \ + 32ff1b3a-0010-4190-9ff8-18086ad6e5d8)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 10d76632-a4a7-4622-8872-8c5886c49e42)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 1e546a71-cd49-4ebd-aff1-dd6d1aa7c4a0)(content(Whitespace\" \ + \"))))(Tile((id \ + 808bf4f2-1a68-415e-b997-01ff2037d799)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 05c7644a-7a22-4c20-a812-1fd5b8e02005)(content(Whitespace\" \ + \"))))(Tile((id \ + 5e74bd2d-8a05-4ebf-aee6-6fb3ec824145)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + ec28d888-794d-4201-abda-94b6e3f1bbdf)(content(Whitespace\" \ + \"))))(Tile((id \ + 3ef7de3a-2a14-4188-a55f-51527113ef74)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 9a6d019d-7e68-4607-acda-eba022cdc741)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 5aa34837-e964-4ba3-a34c-ad5fd015a710)(content(Whitespace\" \ + \"))))(Tile((id \ + 7632724e-1f20-4d15-ba4e-e01b565bbf4f)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 002d2fdb-a677-4f81-9c2e-1867a5407bbb)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 62820ee1-7863-4a17-90f8-e04dad881c64)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 4dfb1076-524e-4527-9a36-4f2b33913898)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + ea549dfd-7437-4aa5-83fc-c59393a44e84)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 3ac5d13b-c645-4a2d-8500-f753ba61e239)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 3772fc52-5d80-49a9-a915-10132f4413a7)(content(Whitespace\" \ + \"))))(Tile((id \ + 88657220-85e6-4449-91d5-4b282ca9468a)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 753a4301-8388-45c4-bd4e-626eeac2f55f)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 30afec45-3066-4a0f-817b-4f99697585e3)(shape \ + Convex)))(Secondary((id \ + e534716b-c249-4bc8-8bdc-c492a72acf60)(content(Whitespace\" \ + \"))))(Secondary((id \ + bf464cbe-a15c-4dc8-9376-f14dafd49ee5)(content(Whitespace\" \ + \"))))(Secondary((id \ + 00da0773-8c3b-44a0-93ee-552d6d00d643)(content(Whitespace\" \ + \")))))((Secondary((id \ + ff437f2e-8a76-4186-857b-56cc23c8cf53)(content(Whitespace\" \ + \"))))(Tile((id \ + 28ba42f0-050b-43dc-a8f4-918c72fa935a)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 868be89d-7e08-463c-8dcb-33e6c8f69e94)(content(Whitespace\" \ + \"))))(Tile((id \ + e7c53b17-975b-4397-b6bb-7f4811d6db82)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + d163d4ea-0f31-47a1-aec4-8ae8015d8b51)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + afab5ad9-7a2b-423d-b78a-79c436c4cbec)(shape \ + Convex)))(Secondary((id \ + daa148af-3377-4878-bc2c-d694b57ffbe3)(content(Whitespace\" \ + \"))))(Secondary((id \ + 090d5f42-f40d-40b3-8852-e3df2288f312)(content(Whitespace\" \ + \"))))(Secondary((id \ + 7de52110-c900-4a11-ba4e-037c4505322b)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 3ea7ec25-bb44-4ba0-a941-ec8f0e78e32b)(content(Whitespace\" \ + \"))))(Tile((id \ + 9ccb96b2-2464-4556-9643-4c8f617f7308)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + b961beb3-fa7b-4fd9-b91c-239f69cbcfc7)(content(Whitespace\" \ + \"))))(Tile((id \ + 93a136c6-b09d-4b15-8b00-d4f06bb96300)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + fb29a56a-0ef8-4287-bdfb-8b44145f44f5)(content(Whitespace\" \ + \"))))(Tile((id \ + 88f0e812-40f5-411c-8a59-835cd8fbc13d)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 28d36d6d-a119-43bb-8d70-6906b2dae317)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + f599939a-5936-40bb-89ba-7d21ec9a5f63)(content(Whitespace\" \ + \"))))(Tile((id \ + 97f492eb-a350-479a-a781-5a08d6abe259)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + aaf0812f-7972-41b6-8eac-ef5929e5c3f8)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 34eaa419-274e-4ff5-bfd0-cce8e39cde76)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + d9380579-9c65-4d68-96bf-3abf614f7fe1)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 5caf86f9-67c6-400a-a3ec-80666f040bce)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + ae9cf20e-e9fd-4972-8cd6-17fe70d28f57)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + c7ff1ba0-287d-4225-9e45-8c57f590f6ff)(content(Whitespace\" \ + \"))))(Tile((id \ + 80f77759-243b-4ab5-937f-081e5b14ffc4)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 5a385233-70ca-472f-9efa-868afa2fa920)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 6796dd02-e021-4bf4-9af1-a07ef4b1bc74)(shape \ + Convex)))(Secondary((id \ + d110d938-d497-4c04-8e89-066a813de449)(content(Whitespace\" \ + \"))))(Secondary((id \ + ffe2143a-7389-4770-a4ba-5b0979fbb22a)(content(Whitespace\" \ + \"))))(Secondary((id \ + 06d75ddd-e9dd-4ea4-85a0-9cb33d5e406a)(content(Whitespace\" \ + \")))))((Secondary((id \ + 834a19b1-916e-4db0-8d77-b31479e219cb)(content(Whitespace\" \ + \"))))(Tile((id \ + ca32f0d3-79d9-45cb-baab-9a1a818bc52b)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 49378f89-aa16-44d9-aa6f-6e528ad367ca)(content(Whitespace\" \ + \"))))(Tile((id \ + c2dcb59b-085d-422b-b984-96edb2fe98fa)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + dcbe313a-40c0-4155-89fd-6582504c3f81)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + a1b7d325-6d0e-4afd-a524-d1f2f5e082c0)(content(Whitespace\" \ + \"))))(Tile((id \ + 1dd3c27d-ad8a-4b97-ae84-4a00f750be6b)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 0d8bce72-a5c2-4493-9f8f-b9befeb6d851)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 226181f6-33c1-4475-a7eb-8e4b6d096408)(content(Whitespace\" \ + \"))))(Tile((id \ + d28519f5-0922-4439-9fa1-c5f0c3ebf346)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a1755b32-1b4d-41c7-9f1a-42c71e180ab9)(content(Whitespace\" \ + \"))))(Tile((id \ + e70a5d41-2a81-4b8b-9529-15ada2e2d985)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a4d0485e-9be2-448b-b811-10012453597e)(content(Whitespace\" \ + \"))))(Tile((id \ + 6c05f4c4-ced6-4bac-a9c1-ff0cca03b949)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 2052fc4c-45d1-4ebb-bb45-fc58fe231e86)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + c69713d2-f7da-4b5c-b8e7-8e34eaa355bb)(content(Whitespace\" \ + \"))))(Tile((id \ + bcc0d062-fadd-427a-bbbf-393d2c1453a5)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 73554d67-a033-432c-8893-95c4a1107285)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + f9277e54-1eea-447a-94a2-c46212addbd5)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 1d784b8e-e8e1-4428-9fbd-841578540e06)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f6e71659-ddb6-407c-a44c-fa8ac8b1a95f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + bf419f2f-1813-4df4-8df1-06b6521e381b)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 8a12e1d1-a399-476e-9f36-f029c3da0076)(content(Whitespace\" \ + \"))))(Tile((id \ + ba5af55f-56ba-4c36-b8b2-4763bd1f8403)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 231d72bf-ffa0-407e-9a80-dac8576384aa)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 6349b04a-89c5-48bc-828b-601385c813ec)(content(Whitespace\" \ + \"))))(Secondary((id \ + 300af8fe-da24-4862-a697-9fda2ccd15ac)(content(Whitespace\" \ + \"))))(Grout((id \ + 2e1cb501-4636-43ae-a721-3b06106ca7f8)(shape \ + Convex)))(Tile((id \ + 7a863ad1-643f-4ace-abcc-4625e9ea7713)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 325d83b9-7bd5-4d03-b996-98219a52d07f)(shape \ + Convex)))(Secondary((id \ + 914121e7-476e-4557-9696-e8d677b591cc)(content(Whitespace\" \ + \"))))(Secondary((id \ + 08d4b228-9a88-4fcf-86dd-7581a05b4207)(content(Whitespace\" \ + \"))))(Secondary((id \ + 1662f538-d638-42d6-b647-bf9ae68bb3d1)(content(Whitespace\" \ + \")))))((Secondary((id \ + a5131d05-9af9-48d2-8776-4301cee7e196)(content(Whitespace\" \ + \"))))(Tile((id \ + b1ebce05-efb6-4e07-9255-dcf4b9632bc3)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + ee33ac9f-1e5c-499f-b988-c68f182700f8)(content(Whitespace\" \ + \"))))(Tile((id \ + 7b683cf1-7c30-4818-86e1-ad0102609037)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 7aee4283-eb8d-42f5-bc32-d407f9d046a0)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 6ac93f7c-968d-4bb9-8148-f892ae614c3a)(content(Whitespace\" \ + \"))))(Tile((id \ + 04ec40c2-edc6-40e1-ac4d-f1a949691806)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 3b678b8d-211a-4fa1-9344-729b448d82bb)(content(Whitespace\" \ + \"))))(Tile((id \ + 32608e0e-8fe8-4d33-9b37-28e22c243df5)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a73619dd-e865-4ce1-b758-395688fb1c65)(content(Whitespace\" \ + \"))))(Tile((id \ + 12a9a007-8459-4b89-83f8-b0786a30babb)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f1feb2dc-1c4e-4ccd-a46d-9c44fae706bd)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 377b7b06-2219-44a3-a15a-40eefb2e4132)(content(Whitespace\" \ + \"))))(Tile((id \ + 37969eef-8b95-4739-b8da-f41e471ccfa9)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 596e83c1-9c00-4fdb-b68d-f9384c7b1110)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 555b22e7-eb09-4585-977e-99fc324f2db5)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 9982abb7-950a-4217-be18-20263b12066e)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + b8d5affd-d5a7-464e-a101-458fc8ccbb34)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 52c76936-5dc6-4266-9f1c-50728358a6b0)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + fa9b46a1-4671-445e-ba93-4daf9b41dccd)(content(Whitespace\" \ + \"))))(Tile((id \ + 13fcf121-d1c9-4733-a645-16917683156e)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 3e666899-520e-4d5f-a5b9-741b23fac52f)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + e3916692-423e-42e8-aad0-992b23ba6401)(content(Whitespace\" \ + \"))))(Secondary((id \ + 60a5d2b6-b776-416d-a27a-1f38435c44aa)(content(Whitespace\" \ + \"))))(Grout((id \ + 97f80bde-4e54-4773-bfdd-e1e39bb02e30)(shape \ + Convex)))(Tile((id \ + bdd84f49-6015-422b-bf6b-aa51b66be74e)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 53bd85d3-c103-4f9b-8770-a8581176c6ab)(shape \ + Convex)))(Secondary((id \ + 8aef858f-e556-4ad7-b733-17fb07da11f8)(content(Whitespace\" \ + \"))))(Secondary((id \ + 8a80e9ca-c622-425c-9f32-5fe40508e4dc)(content(Whitespace\" \ + \"))))(Secondary((id \ + 959b2dfc-eb6f-4f46-a02d-7fc57321f8c2)(content(Whitespace\" \ + \")))))((Secondary((id \ + 7db316a0-00d5-41f6-a15b-121345f0a3c8)(content(Whitespace\" \ + \"))))(Tile((id \ + 430e3009-1f1e-4cba-9ad0-67bf501c5d45)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + cb8887aa-ab8c-4ae3-9ad8-1bfce8b545b8)(content(Whitespace\" \ + \"))))(Tile((id \ + be8254b4-1db5-41d9-a1d0-024dc2fe54aa)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 282800ed-cac0-47b3-83ef-ab6843b4ce6d)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 4bd0c0a8-1496-4877-9cb1-f2b5a1ad6f8c)(shape \ + Convex)))(Secondary((id \ + be99f047-d20f-4b32-8c3b-95ae257327d7)(content(Whitespace\" \ + \"))))(Secondary((id \ + 731bf1cb-a888-486e-a008-52cb805d53c4)(content(Whitespace\" \ + \"))))(Secondary((id \ + d734de9f-b9f4-4799-ba57-85b7bd56763d)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 76fe1a22-4d7d-4da9-b93c-723622eb8f52)(content(Whitespace\" \ + \"))))(Tile((id \ + db29a378-12ba-4014-88e2-7b1e8788bc21)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 4e0e88ad-62f0-4f4d-8187-54829cbd9d3a)(content(Whitespace\" \ + \"))))(Tile((id \ + 6b0463f0-e659-45d3-8a5d-478d3eafa552)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 0e2b6a75-5330-4cef-bdf3-c4daba073b70)(content(Whitespace\" \ + \"))))(Tile((id \ + 690f42b0-20c0-41c2-bc14-21afc8e55342)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 07ed1101-e100-4f00-bcb1-351cdb727daf)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + df7bc075-fd66-4d14-9888-c27d2372de72)(content(Whitespace\" \ + \"))))(Tile((id \ + e2909eca-2597-49d2-9b20-eda5cb3bc6f1)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + d4f0cc4a-52bb-43f0-a22d-c5caa759a828)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 2c0ca6fb-edaf-4087-b530-75f284dce06d)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + b03435cc-9239-4a01-9877-8cf2ddbb304f)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + b82930a2-7541-4e3d-9d48-14b74043814d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + f764d69c-d357-4aaa-b10b-80245fe61511)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + e021a7bf-f9fd-49fb-9050-226e8b78077d)(content(Whitespace\" \ + \"))))(Tile((id \ + b4b3dc4f-bcdc-4b56-b1c8-04580c305741)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + ee00a4a4-6dd7-404b-8403-b041de299a00)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 6ee4d23b-cbb3-4c17-9faf-8ac1a858a5e9)(content(Whitespace\" \ + \"))))(Secondary((id \ + 222a12ea-0006-4a36-9e2b-701e74fc101a)(content(Whitespace\" \ + \"))))(Grout((id \ + bfea8648-7604-4e2c-a04c-b701e0bfa12a)(shape \ + Convex)))(Tile((id \ + 3406101e-5b28-4a55-a3ad-b2d2e05fa239)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 3f63a985-4fb1-4411-badb-3a71c88787fd)(shape \ + Convex)))(Secondary((id \ + fd038d1b-0f85-46ac-bfc4-c8936b28fa1e)(content(Whitespace\" \ + \"))))(Secondary((id \ + 061a6f1d-8a6a-437c-958c-ee53dffa6704)(content(Whitespace\" \ + \"))))(Secondary((id \ + e9b8e31f-ef12-4386-ab71-737ecc8bb303)(content(Whitespace\" \ + \")))))((Secondary((id \ + 79f92bf1-8162-4a61-a2ce-5dc11b32f5b9)(content(Whitespace\" \ + \"))))(Tile((id \ + ae51cf87-8075-4f34-bc4b-c04a2509c922)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 13f9a6db-c358-467c-b63d-aa80de578827)(content(Whitespace\" \ + \"))))(Tile((id \ + 53cd4541-4855-4b45-9b57-21a5a55e6536)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 419711ed-f234-4d83-a1de-052392ed4f33)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 0a1c5f44-56fb-424c-b8a8-02be82320d0a)(content(Whitespace\" \ + \"))))(Tile((id \ + b454ce6b-f260-450f-8fd1-5b061fb59b7a)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + b1186b20-55a7-46bb-9e3d-0a2597e8ca10)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + f025b713-4446-41b8-b8a1-b9deec7170ec)(content(Whitespace\" \ + \"))))(Tile((id \ + 6b7eb9e1-a57b-42e4-b4c5-f8c8b7559e8b)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 59076a3b-3dac-452e-bd83-72fddcd63292)(content(Whitespace\" \ + \"))))(Tile((id \ + e5460c69-8e8c-4c6a-9764-6c2899686e42)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f549d916-2c17-452f-94cb-fcd429bd40dc)(content(Whitespace\" \ + \"))))(Tile((id \ + 54695a1c-ec86-4a5d-a698-c870608f6b81)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a5db26f2-f9c0-434c-838c-3e798e9aa599)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + bfdeadd1-583c-48ff-a3cb-6a1e25de8e27)(content(Whitespace\" \ + \"))))(Tile((id \ + b83e4de4-dba2-4277-887d-7e7342cc2d93)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + fa11dd40-1c46-4ad0-8c2d-cf7714a80450)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 1afd78bb-0f0c-406d-8315-5a73551c079d)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 53a67607-e548-47a7-8ca9-eda64d28b744)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + d3bc7420-82b1-44bf-9f96-8a489511a052)(content(Whitespace\" \ + \"))))(Secondary((id \ + 9fea6b9b-a8d0-40ca-9462-9666163ec246)(content(Comment \ + #ERR#))))(Secondary((id \ + 3c8ad85c-d1e6-42cd-bc0e-8dafcb0ef8d3)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 10450a13-ad0b-479a-8e17-72fc85252260)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 8fbbccd0-369c-47b8-a053-4bf41f8a5f5c)(content(Whitespace\" \ + \"))))(Tile((id \ + 847efb1d-395e-4107-a3f2-f00078659bba)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + e4ba3265-8220-49a1-b676-e1b0c7b7e91b)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 8f0f3df3-dae1-4f53-a9cd-cf0fe15fa5c4)(content(Whitespace\" \ + \"))))(Tile((id \ + 18cc88a3-8cbb-4138-ab0f-e21b7e2556b7)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 08f5024b-27a6-4292-b774-150a34a9e35b)(content(Whitespace\" \ + \"))))(Tile((id \ + edd367c7-2d69-4927-a1ca-9de4cac6e1f1)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 12b2b5aa-dfe0-4ed7-a09b-d661786ba319)(shape \ + Convex)))(Secondary((id \ + a030ef24-0415-456a-bc89-543c379922dd)(content(Whitespace\" \ + \"))))(Secondary((id \ + ecf39cd5-ac32-4876-902d-0fc26899d9c6)(content(Whitespace\" \ + \"))))(Secondary((id \ + 9139333d-80e3-41a6-91c8-5048f147651e)(content(Whitespace\" \ + \")))))((Secondary((id \ + 0ed479dd-00cf-48f9-9c9e-3caff02c00ad)(content(Whitespace\" \ + \"))))(Tile((id \ + 973e21b7-9ebd-436b-afc7-0480b31454f8)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + abae88f5-5ff5-4525-8f11-90e09122b78b)(content(Whitespace\" \ + \"))))(Tile((id \ + 4af1e9e8-18d1-4bdf-881d-ad039219bef1)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 3de8793a-102c-430d-a326-119e531dfeba)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + b5635065-6adb-44ff-baff-849222e1f9ee)(content(Whitespace\" \ + \"))))(Tile((id \ + c57cccfe-f3ea-4ff8-b0d0-5557cb6ecc9f)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 33487927-233d-48c9-bfd6-0368813cb10e)(content(Whitespace\" \ + \"))))(Tile((id \ + 33868a11-98b8-47ad-b7ef-cde8b26ed0b5)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + c777cfa2-b327-4842-b6ee-886d567092ce)(content(Whitespace\" \ + \"))))(Tile((id \ + da697965-271a-468f-a241-d2d182c69bba)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 7f5f7a01-d759-4f6a-8658-6ef3e240647b)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + e45018a7-3a31-4a26-bab5-3dea3da77d2d)(content(Whitespace\" \ + \"))))(Tile((id \ + 9b183ee0-efce-4c3f-9b41-e6395eb534e6)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 91fabbec-4dcb-478d-91a1-617f3c0fec09)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 8ead3805-23d3-4ff4-a827-fcb998b0b815)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + d1051422-7f8c-478e-8cea-291b10007dc3)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + cc586bd6-8b7f-40eb-b338-af3e2832626e)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 002eafbf-5cc8-4b0d-ad74-54a1bd7bed62)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 10def638-b735-41b9-a4b4-44958a75431c)(content(Whitespace\" \ + \"))))(Tile((id \ + 34227ecb-5f39-40a3-b527-77e3060fc15f)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 2e4fe4fb-fe0b-499f-95dd-4c18f2c86746)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + cfb7cf79-3941-4e7d-b713-0652acb4798d)(content(Whitespace\" \ + \"))))(Tile((id \ + adedeb3d-6221-44c5-8f8a-96953097d926)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 60eabbf0-6e8f-40b1-9756-c74fb9dfd772)(content(Whitespace\" \ + \"))))(Tile((id \ + 2d940b34-55d1-43d2-9651-6229281f850d)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + ccbe068b-76b5-4c11-a5de-02bf5c12511c)(shape \ + Convex)))(Secondary((id \ + 309ba515-2819-477c-9d4a-63a3820fff4d)(content(Whitespace\" \ + \"))))(Secondary((id \ + 7d0ca20b-3b04-4dec-9e51-f68ecf607766)(content(Whitespace\" \ + \"))))(Secondary((id \ + fa6b22ec-4842-44c5-86cc-053bb5676bd7)(content(Whitespace\" \ + \")))))((Secondary((id \ + bc092c89-6f2b-4334-9d03-33fcbf3bcf92)(content(Whitespace\" \ + \"))))(Tile((id \ + f240ac06-da74-44da-b83d-384293baab04)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + b510947f-7fe8-436a-9896-e92cfc6e95a8)(content(Whitespace\" \ + \"))))(Tile((id \ + 79747594-21f5-4d9c-837f-2db67ce70c0e)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + e534f388-e8b4-43ca-bfc2-9d21ece36b2f)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 356dadee-c7d8-4161-a582-4908e0f40864)(shape \ + Convex)))(Secondary((id \ + 030f1466-5e09-461f-915b-7d8409966d8a)(content(Whitespace\" \ + \"))))(Secondary((id \ + 8a5cbd13-b805-460c-8b27-f403a65f9c49)(content(Whitespace\" \ + \"))))(Secondary((id \ + a7060bf6-c262-43c3-b510-c0d7155c9a77)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 589cfde4-d192-4a10-8d64-2b696c08e274)(content(Whitespace\" \ + \"))))(Tile((id \ + 33459de8-1b3b-4b90-9188-34565416cdd3)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + cf03ebe5-2c1a-4cda-b22d-8aae648ec611)(content(Whitespace\" \ + \"))))(Tile((id \ + 24f7b13f-5702-4682-9271-d55c54c4c1f5)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + bd2dedb1-8524-4186-b94f-27880af5efb8)(content(Whitespace\" \ + \"))))(Tile((id \ + 65e6daa9-88ec-4bc0-85e6-720617dfd875)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + e9e62ff5-7066-41df-aa7f-ac0045157f1d)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + f4e2682f-8ecc-4221-a1de-9ad09065cc20)(content(Whitespace\" \ + \"))))(Tile((id \ + d8a5286d-e3c6-4032-8fda-676d2c62b47c)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 1feb8b74-da74-437c-a190-1b721dccc0d5)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + b029c2d3-b880-44da-846f-783ef7114058)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 58031230-cd07-4bbc-bbe0-8831a15d1739)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + ef306d3d-51e8-45c5-a2e9-06fb5c51c094)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + ce8b6223-a04a-4fc8-bafe-929344732e75)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 540caf79-e72e-4ee6-aa19-5d937511cefd)(content(Whitespace\" \ + \"))))(Tile((id \ + cee423a7-829a-462b-9e9c-6358aa538d77)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 5f386074-6bd9-4dad-ad40-d1c0520a00ae)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + de59295a-8148-40fc-ad40-ba710271d679)(content(Whitespace\" \ + \"))))(Tile((id \ + d639b433-4528-4dab-8cae-32118b2788c9)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + abc9163e-b23b-4a34-bf14-356bf63dd72c)(content(Whitespace\" \ + \"))))(Tile((id \ + 23b041df-c458-40d5-9693-d3069569941e)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 96a1c24e-5803-4601-b4c3-1c5dacd7adf4)(shape \ + Convex)))(Secondary((id \ + e07b7063-17c4-40f7-85b9-613e58020174)(content(Whitespace\" \ + \"))))(Secondary((id \ + d7ec1800-e79e-416d-b565-2ba6f602e882)(content(Whitespace\" \ + \"))))(Secondary((id \ + 88e1b34a-9dc5-49a8-aea3-6ccf72a76c14)(content(Whitespace\" \ + \")))))((Secondary((id \ + 03e17ec5-2a7e-4ba7-beaf-06ce0a8c8bf7)(content(Whitespace\" \ + \"))))(Tile((id \ + 52731693-ca1a-44f8-bb49-c956d5eea584)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + e984ac11-b7db-46bc-a73c-e1bfee8ee762)(content(Whitespace\" \ + \"))))(Tile((id \ + b1320a35-0415-4b66-8741-5f9faabdafa4)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + f4b15672-aa8f-4001-b506-3b0d632e7887)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 78a0d7bc-a7da-4f3a-a46d-2f1ab36651a0)(content(Whitespace\" \ + \"))))(Tile((id \ + 9c67e498-55aa-4221-94cb-12b4b17cb677)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 4cd8a778-6d6e-496d-8cdc-a91177ec34cc)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 1ed08aee-b8c3-46ab-86ef-20c19c1070fd)(content(Whitespace\" \ + \"))))(Tile((id \ + 9e461602-eb6f-4837-ba1f-f1c1aae17d5b)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + e51c2a8d-d47a-4d7b-ba9f-9ce6b11ff755)(content(Whitespace\" \ + \"))))(Tile((id \ + a0a5f279-8b84-4a83-b12a-5398d19d8196)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f1aae1ab-9373-4309-b756-28aa629b5989)(content(Whitespace\" \ + \"))))(Tile((id \ + 33484890-2dfe-4f33-a4bc-cabc060f846a)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + b932b818-c84b-4ca4-8612-ff0cb53b26ee)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + aa3d6c49-42b2-41cf-b8ac-083b693ca537)(content(Whitespace\" \ + \"))))(Tile((id \ + 230c52c7-6470-4756-ae9f-4b9d35485b53)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 807d3924-d03b-445a-b24b-7295b4db0436)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + e8b3278f-6914-46b9-8dca-3dfd5762a5a5)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + a16437a1-ef9f-4168-a489-5024543cf24e)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 7f71fd7c-ad20-4f09-a306-2153a6870280)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + a5a5c919-1120-49b6-8072-0a6f60656704)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 139f8553-a9fa-4ecd-b51c-5f19d4bdc376)(content(Whitespace\" \ + \"))))(Tile((id \ + eb8399c9-8e9b-4f50-8673-15d764bc7429)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 5786939b-f2d2-4c23-81d9-8851344edd85)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + f780a436-b288-4066-ad25-25539b6a4aad)(content(Whitespace\" \ + \"))))(Tile((id \ + 0e575c01-2cda-486f-a77a-bb3ca218c75a)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 2635219c-ea70-4c49-b775-392873cb7458)(content(Whitespace\" \ + \"))))(Tile((id \ + 49004b33-f151-4e09-8d1f-c8fb71fb8e74)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 1771e8b3-6fd3-4ee1-88fa-eda3484af174)(content(Whitespace\" \ + \"))))(Tile((id \ + d6a736ba-1150-4d21-88d0-08ce100d2e9a)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 3dc11eb9-1c13-4155-88f9-7e404000b193)(content(Whitespace\" \ + \")))))((Secondary((id \ + db87b2bd-43e1-44b3-8982-01e87cce4132)(content(Whitespace\" \ + \"))))(Tile((id \ + 8be2a7db-bbe3-4d84-afd6-bd4870c8fbac)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + c7f3772f-596e-4e5f-a152-736896e548cb)(content(Whitespace\" \ + \"))))(Tile((id \ + 8be53eff-63b1-4c09-9265-d4e7b070ca60)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 24418b5b-65c1-4a5d-b21b-10a3ede829ea)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + e5c60fa6-987d-4192-ac64-819873e0e19e)(content(Whitespace\" \ + \"))))(Tile((id \ + 004ff029-4290-4c1a-a043-972e79144369)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 0d8de894-511e-486a-9e68-1348ae2276d0)(content(Whitespace\" \ + \"))))(Tile((id \ + a8b7f3fa-e086-48f0-90c2-fd03eebc1626)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a8335f03-9b62-408c-8b67-1586b1808b0b)(content(Whitespace\" \ + \"))))(Tile((id \ + 843ff32c-c9f3-47ba-9397-134ca2634b5a)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 40d5ca79-00bc-4d8d-b1e7-f51ad765aac5)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 4c634236-d833-4c55-87a8-10a074115af1)(content(Whitespace\" \ + \"))))(Tile((id \ + cb424cc9-8cf6-4bef-9657-c17e2727bf88)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 27795b79-de23-4499-a81d-421966b8dbef)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 483d5d5b-e649-4fda-84ca-e6ea2b3f767e)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + b2f02c29-b676-4de1-975c-847fe2d569d5)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 5bfaf192-0044-460a-bfee-5eb8b975cf4a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + e9052dcd-8da9-43d4-8645-d6fcac723d17)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 353a4ec8-f2ef-4f11-acd3-e00f4f517d0d)(content(Whitespace\" \ + \"))))(Tile((id \ + ff603e69-8b64-47fe-bf43-4214de89096e)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + a83f0099-fd53-41ef-a4cd-243830c35b16)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 58c882c8-817c-44e4-9c5b-d02967d09cff)(content(Whitespace\" \ + \"))))(Tile((id \ + 944ae72f-edfa-4c02-bfcf-143ee540a904)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 949a8619-56d3-4784-ae02-8e5ae1d73040)(content(Whitespace\" \ + \"))))(Tile((id \ + f8b627d7-fd7f-4486-b2d0-47a4f59d2973)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 3ab54a3f-2d2e-4e59-9148-f64309490357)(content(Whitespace\" \ + \"))))(Tile((id \ + 696f179b-9f45-4327-a6d4-878b7d134c8b)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + a2435252-6b4b-4121-8341-78e4fbcccca3)(content(Whitespace\" \ + \")))))((Secondary((id \ + a143f8ac-6c26-4f74-9145-2a74fa041f1b)(content(Whitespace\" \ + \"))))(Tile((id \ + 9ec68868-5105-46e4-9056-5aeb383d4679)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + d3048a5e-9bbf-43b7-933d-be81f39adcf4)(content(Whitespace\" \ + \"))))(Tile((id \ + 210a8714-8e9e-411f-9ae1-5c74bac00093)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 2f5a5a94-c9ad-4824-aacf-1cac8d5361cf)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 2ed40092-401e-4d29-a9a1-1e68171cb073)(shape \ + Convex)))(Secondary((id \ + c63ef644-91e1-4e9d-82c3-4bc7bcde981b)(content(Whitespace\" \ + \"))))(Secondary((id \ + 16217a54-e0f3-4705-a22d-4a19de000394)(content(Whitespace\" \ + \"))))(Secondary((id \ + 36f1e72c-9c4a-4faf-aded-a88a176d4abd)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + eb763170-c55f-47a1-b63b-1e0466b17806)(content(Whitespace\" \ + \"))))(Tile((id \ + d15e3c67-be75-4070-81f8-6293e96755e9)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + da81336e-2f36-4358-a49c-6aa2d5c2a613)(content(Whitespace\" \ + \"))))(Tile((id \ + 79f09050-aa99-4ebd-8195-1e99f7c2c0a1)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a5af519a-a045-43e7-8dcf-e3557a425bcb)(content(Whitespace\" \ + \"))))(Tile((id \ + 133b8fa7-2c8f-4df8-b7e7-2fc18ebcd2f9)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + bd4db6cf-e8cc-4f0a-97f3-88ab28476947)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + f7f5dd63-8fe4-4ad1-86be-7fc537a46176)(content(Whitespace\" \ + \"))))(Tile((id \ + ec8aa607-2390-4953-ba7c-2f5afdfbde09)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 9d2ff58e-d2d0-43be-b2c0-583ccae1ae7e)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + bbc53dcb-5eb8-42f0-b216-c6000d58ce42)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 4364fd68-68e9-4574-9894-16a3956e95ed)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 36328de6-3b6f-4cfa-8b92-39e50750b06c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + e587d340-f37a-4afd-ba21-2cc57548e22a)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + b97a2200-2074-4adb-807f-52356b9fb435)(content(Whitespace\" \ + \"))))(Tile((id \ + 7b53075c-8209-4948-9ce7-776096b5fd82)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 805b9744-3bee-4bdf-b0f2-67b029f95bb5)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 3058802a-3ce1-4d35-9e01-b66285ba12cc)(content(Whitespace\" \ + \"))))(Tile((id \ + 847c44a3-e6b2-4dc1-b2ac-bb75d953921c)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + aa2bb2fb-b9a7-4f6f-979c-22d0c33256ab)(content(Whitespace\" \ + \"))))(Tile((id \ + 6bdfb38f-de93-4876-bbe8-022c27d3e62b)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 353c26c9-5fe4-4e23-90d2-b1a3afc4dd37)(content(Whitespace\" \ + \"))))(Tile((id \ + 7bb6e07e-5595-4d66-9372-56fdef1c0817)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + f89ee9c0-d510-4374-822f-9a5eb871a98e)(content(Whitespace\" \ + \")))))((Secondary((id \ + cb72487c-b3a2-4355-973c-eda6e6629972)(content(Whitespace\" \ + \"))))(Tile((id \ + d93e1d3c-1503-4fd4-9265-469568dc7aff)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 8e9eaa84-1980-49df-a8eb-375256e3a927)(content(Whitespace\" \ + \"))))(Tile((id \ + d5a87173-b27e-4664-b6f6-a5ab393bb0bf)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 98b23989-7819-4d0e-9568-380f4a50c624)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 35022138-f989-47b3-8f71-79ee5281736a)(content(Whitespace\" \ + \"))))(Tile((id \ + e909e184-ef9c-4329-9dd4-768015c862b5)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + dfc0b1b2-b2e7-427b-b2e0-0c0c3a042bf1)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + e25285d2-3ef0-4fc1-a72c-db5ddf07f61b)(content(Whitespace\" \ + \"))))(Tile((id \ + 28c7908c-e262-4380-afc4-db24ef5f8d1d)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 607388d8-3378-4b51-9a7f-8b7d9668dfe3)(content(Whitespace\" \ + \"))))(Tile((id \ + 1e7c7068-6952-4d3a-a24d-cfe1720cd7ac)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 4a80ae70-7a60-42b1-8ee4-906ad68625c6)(content(Whitespace\" \ + \"))))(Tile((id \ + bb91703d-865e-4da7-b4ea-6ab0168bee00)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 87a2590b-ef12-40b8-82cf-831ce54e7605)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 519c4134-b611-4e2c-bc61-1ce1fc037a66)(content(Whitespace\" \ + \"))))(Tile((id \ + 480ec920-3cbb-4a57-8c18-4bfb5f7b7585)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + e9396887-20a0-467f-ba0e-b3ada37e8000)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 4b4482fc-f137-4c88-83e3-14e58f1ccc63)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + f7a9587c-a02d-4cdd-9a8c-4fb3c5713bbf)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + e21366f9-7e34-4cc2-91fe-97b547efaf04)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d3450794-e083-4bc3-8c39-d8bc120cfc52)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 08462db6-6625-4c95-8042-c53c96efd1fe)(content(Whitespace\" \ + \"))))(Tile((id \ + 2fe1d1ee-8b06-4266-8ebb-498e75a798fc)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 79dde745-c7e1-4a32-96ae-c123339e98f2)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 22664132-0459-4655-9515-f67ce37b3e07)(content(Whitespace\" \ + \"))))(Secondary((id \ + 75be864f-c108-4c59-bd87-096f8d494334)(content(Whitespace\" \ + \"))))(Grout((id \ + 527d475f-3dd1-402a-840a-d61bb10bb04d)(shape \ + Convex)))(Tile((id \ + b7b6082e-0469-40ec-a80f-a7a34c2aa61d)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 0b9c3818-d16c-412b-86af-335c4ce351b3)(content(Whitespace\" \ + \"))))(Tile((id \ + 4da3cd0e-7dd5-46d4-b9b1-d031b7ea89c6)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + b0c1483c-8d31-47bf-8f2f-f43aa5884c22)(content(Whitespace\" \ + \")))))((Secondary((id \ + 3eab2831-982a-44e3-a1d8-09b8b659ac3e)(content(Whitespace\" \ + \"))))(Tile((id \ + 6d4d20a4-a534-49c5-9a32-76e09040eb1a)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 7a04c6e0-2b87-470b-8593-609afeda4b4c)(content(Whitespace\" \ + \"))))(Tile((id \ + b2dbb36a-f170-4317-9006-bb355cb2f29c)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 2d891a66-59e5-47bf-8d5d-4e81fd885dec)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 772da6b2-4737-40aa-9814-cf8e6a301175)(content(Whitespace\" \ + \"))))(Tile((id \ + 1b7cf3d2-9b01-4ada-b516-3cb6d7385476)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 379f6e7b-a8c3-4660-8303-9c3b0858d87d)(content(Whitespace\" \ + \"))))(Tile((id \ + 873dff3d-0bea-4edb-ac34-db16ac06ef8d)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + db991128-d193-4847-8938-4f806c8665fe)(content(Whitespace\" \ + \"))))(Tile((id \ + b9d56fe7-3f54-4534-8bcd-49e2ef006a26)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 6a81ab4a-7186-474b-beec-0805abdbdbf8)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 1abe8e0c-f549-4125-ba51-5981e8fdc4ec)(content(Whitespace\" \ + \"))))(Tile((id \ + d9596c34-ab5b-4f96-8d74-5858bf8e8152)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 5a4fa3c7-7607-4774-b8a8-18986dc89193)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + e3950884-d2b0-40e7-b32a-01065fd32331)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 4f32e87f-a0e8-405f-a291-e397d64767a3)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 05ddc6cc-87c6-48c0-9626-94a4efa6b933)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 694066b4-70c4-4f4a-b6fa-bb51de900106)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + a3cb892d-00ba-4546-ad7b-7a0d789c7d51)(content(Whitespace\" \ + \"))))(Tile((id \ + 97ef53ac-fd0d-4bdc-a808-e9088abeffde)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 56b028aa-38c5-4edd-99f8-79e7759b8a1c)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 17052864-ee4c-412e-8183-77ff429eb1b5)(content(Whitespace\" \ + \"))))(Secondary((id \ + e6307017-fc25-4f2c-8c4e-af9eb418e95f)(content(Whitespace\" \ + \"))))(Grout((id \ + d1d34494-d503-42b3-b8a2-7df3e596d360)(shape \ + Convex)))(Tile((id \ + c18f12e6-5888-4299-969b-72b72a2fb3be)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 528c0513-d586-41db-804a-3b2951462da0)(content(Whitespace\" \ + \"))))(Tile((id \ + bbbfda1e-9479-4d8f-8d81-5e3947c324d9)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 7558a507-f539-4c5b-a3ac-8549007de485)(content(Whitespace\" \ + \")))))((Secondary((id \ + fbc4b010-7a1a-470c-96f3-aaaad440f714)(content(Whitespace\" \ + \"))))(Tile((id \ + 61ed8466-1264-49b2-aadd-6908f1a9d1f8)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 1754e748-c92c-4a85-877b-933e6bf784ac)(content(Whitespace\" \ + \"))))(Tile((id \ + f56d749f-e0d7-4a1d-b695-8920cf16663e)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + aba41e3d-8cc2-4126-8254-0afa3d63c274)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 75a04d71-ee98-4080-b655-0ab4fdab1634)(shape \ + Convex)))(Secondary((id \ + 358eb656-bf64-4f3c-8644-3a3ae97941b0)(content(Whitespace\" \ + \"))))(Secondary((id \ + 133f9e97-f882-4ddb-883b-7ca1638b7c19)(content(Whitespace\" \ + \"))))(Secondary((id \ + 7ac0a147-6efa-4d75-889e-ac486cf80490)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 48cd780a-78aa-41a6-b5ef-b6a4037a943d)(content(Whitespace\" \ + \"))))(Tile((id \ + 4c72163e-7684-4e80-bbc9-155f9b7267a6)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f998ac7b-9b23-464a-9cd9-1af495c9e983)(content(Whitespace\" \ + \"))))(Tile((id \ + f0cba194-e7a6-42ba-b4ba-0b095fff8574)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 3d42b016-55e9-4e64-9db0-0f9337180909)(content(Whitespace\" \ + \"))))(Tile((id \ + 457f8f99-9f11-4c61-9d85-8ceeb02c5973)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + c768e601-28f5-45c3-b14c-e6f70ed32ff5)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 808aff3e-ddc0-4f41-8471-8828d3304850)(content(Whitespace\" \ + \"))))(Tile((id \ + ca7da666-83be-4b0a-b52a-9d30e756a956)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + d154ac67-5709-4d9c-8fb4-b5519a268524)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 104ec290-6e09-4845-9b66-1e5dd0a27643)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 8de6cf6b-df21-42dd-a0a4-a00867eb53c0)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 9ca66412-77c9-4ecf-96fb-b4a0c7a886cf)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + f3edd654-9d34-46d4-917a-a7913eecdb81)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 48b45298-851b-47ba-9bbd-886e14b38a6d)(content(Whitespace\" \ + \"))))(Tile((id \ + 0c2cd033-a38f-49bf-8f57-8879c4a74478)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + dd92c069-4f1d-4349-bbea-0bb3b22c5edd)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 9492e529-df90-4edd-b524-1d2fb30369a2)(content(Whitespace\" \ + \"))))(Secondary((id \ + 2e2cf058-e06d-4bf7-b828-190af11f6642)(content(Whitespace\" \ + \"))))(Grout((id \ + 15ccf080-e782-45af-84ad-f78c9de1ea15)(shape \ + Convex)))(Tile((id \ + f18005d4-f5ca-4b9c-83ed-283b798c5c98)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 39c1ad08-f549-4d38-a0b9-9ddbbc2a5f57)(content(Whitespace\" \ + \"))))(Tile((id \ + 35096049-b682-48bf-9450-9fb44612578a)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + e2220176-cec9-4e88-bcc0-acd6bad55f9c)(content(Whitespace\" \ + \")))))((Secondary((id \ + 1fdf07c6-0e73-4189-9cce-afc15dd53309)(content(Whitespace\" \ + \"))))(Tile((id \ + 55c8a7f9-eac9-4edb-bf31-adf6688b9c49)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + a358e631-40da-40ff-920e-82620cf0e895)(content(Whitespace\" \ + \"))))(Tile((id \ + 18328c4a-5078-475d-bb8c-d4e90a1b0497)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 7ce5810b-541f-460d-9476-252c7e65ff28)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 93b31a11-1151-4f2b-8e4e-0a6b37d7d740)(content(Whitespace\" \ + \"))))(Tile((id \ + 48f0b576-c989-4659-bb0b-4273c9b9d310)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + e067f2d6-080e-4645-9b29-844db6dee9a8)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + c9253d66-4faa-474e-a6af-b66d3424b61f)(content(Whitespace\" \ + \"))))(Tile((id \ + a72a1cfc-45b0-43ab-9836-b088e976abe9)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 7157f70b-705b-49f8-9d25-ae2f34ec0334)(content(Whitespace\" \ + \"))))(Tile((id \ + 42e8023c-f381-489f-88b7-706cb8eb8f4a)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 638378c9-b559-46ec-b39a-1d3583d613ff)(content(Whitespace\" \ + \"))))(Tile((id \ + c8c3c6ca-c1a6-4cbd-98fc-88970d20e004)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f5e324ec-914b-44ff-9be2-84edcbbe4e83)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + eb3d2f44-a836-4d7a-9a09-36b6fbbcc3c9)(content(Whitespace\" \ + \"))))(Tile((id \ + d22c1b02-a31c-4df4-a4c2-054a58c409b9)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 71ca34e9-9611-4e2a-821f-ab7b4c75c2fc)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 6eab7e2a-5b54-4189-897a-d703a254dd37)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + c74ac4bf-c8e1-4cb0-aecd-951a46b6f2ed)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 1e4cb0f7-0b78-4ce6-ad15-b3fe169e1eee)(content(Whitespace\" \ + \"))))(Secondary((id \ + 24f901a9-f6da-4a53-a22f-5f05c0e30da9)(content(Comment \ + #ERR#))))(Secondary((id \ + 93a274cd-cbc9-49fd-ae6d-3f87e7f7015c)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 8106b070-02e2-447a-8409-2156ceb7128f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 9edc746b-d54c-4cf0-9576-68bf4e5ca2e0)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + b1972565-5233-4b9f-91c9-a2fae3c6a59e)(content(Whitespace\" \ + \"))))(Tile((id \ + f87ffd56-048d-404e-aa36-d0de2fd4e5cc)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + b438fd18-ba07-497f-b4f3-777060017d7f)(content(Whitespace\" \ + \")))))((Secondary((id \ + f5cff6cf-3e3e-4bf3-b5d4-78928ec0b317)(content(Whitespace\" \ + \"))))(Tile((id \ + cbbd8d0c-e584-4c09-b213-894971bc1faf)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 1127e605-9044-46c9-bb28-f6852d7947d7)(content(Whitespace\" \ + \"))))(Tile((id \ + 12846edd-8ef2-486f-a3dd-465462fe4a6c)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + f6613404-b691-4a7b-b752-bb166bbdcdb0)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 00003fe7-fc85-4b35-9f62-18293b2cbda0)(content(Whitespace\" \ + \"))))(Tile((id \ + b4d0244e-e948-4235-892d-ac5bf023ce66)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a80b2c39-eb3c-48a0-a2e3-17923969fe44)(content(Whitespace\" \ + \"))))(Tile((id \ + bddcafce-7849-45b1-af50-889c78a390f0)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + aa1221e7-143d-4d1c-b409-a06055fd5761)(content(Whitespace\" \ + \"))))(Tile((id \ + 5ba03980-b852-4885-a04e-cfa57275e8d9)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f8bc12af-f910-4824-b77e-366be5909df2)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + fb7af25f-7598-4f40-802e-a8f1d57365c4)(content(Whitespace\" \ + \"))))(Tile((id \ + 820cd996-1610-4f5e-a266-540960f4c4dc)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 1333bb7c-855b-4a5d-bcd5-827171f09e6e)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 1afee2ad-9ad4-4767-822d-d87e99720936)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + e967f122-900e-4e89-8a01-57ff820ee1b8)(content(Whitespace\" \ + \"))))(Tile((id \ + 232cd412-63a5-4d1c-98e6-c5bb5ffb5eee)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + c3b0d2f8-eb19-4af3-af20-17633157c84e)(content(Whitespace\" \ + \"))))(Tile((id \ + de6ced50-9af1-424e-809e-cbf7e7e7e24b)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + e643707e-b4b7-4f3a-9f1c-e7936f41e676)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 883179cf-135d-4b83-8d12-d2409f8a21cf)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 3b2da582-d9f3-4e55-8e2e-1508daa5b3b5)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 0a555ee8-3ee1-4228-bf5b-0d7db686e897)(content(Whitespace\" \ + \"))))(Tile((id \ + 14bd7839-8eee-43ad-a004-dedecf68e840)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 6d5e0294-eb7f-418a-a349-a2bbe3a42a20)(content(Whitespace\" \ + \")))))((Secondary((id \ + 4f240250-1391-4dff-bb8a-1d3f48478741)(content(Whitespace\" \ + \"))))(Tile((id \ + c8f0ad05-abb6-49bd-91cf-d0a16b72fd75)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + d66d5683-d914-4dc6-b7d5-a19bbc0af995)(content(Whitespace\" \ + \"))))(Tile((id \ + 142a2136-43c7-4518-905a-4a31ef1833db)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 77c57bb0-6a06-474e-bc0d-ee283bb8c8ad)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + bd14c4ae-02a8-42d9-b247-2e5547436b33)(shape \ + Convex)))(Secondary((id \ + 1b30100a-435d-447a-bf76-f4f09d78eec1)(content(Whitespace\" \ + \"))))(Secondary((id \ + d0e81340-778c-4ba5-81bd-7f05a8afdde2)(content(Whitespace\" \ + \"))))(Secondary((id \ + 44d45046-c1de-447a-a6ab-6d6b8d4a854d)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 62fa65ea-81cb-4476-88b8-a4bde7674ceb)(content(Whitespace\" \ + \"))))(Tile((id \ + e43f4d29-9356-4316-9034-81bd15301d71)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 8019195d-613e-4a8e-a0b3-a7c577861ea9)(content(Whitespace\" \ + \"))))(Tile((id \ + b75f7bf5-e751-4ab3-9d71-3937cef6fe1c)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f48e9313-1406-4f84-846f-03b25a473d67)(content(Whitespace\" \ + \"))))(Tile((id \ + bc344eca-3cf8-4f71-9b80-9cbefd835a21)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + fa5b2245-39df-4d97-b5f5-80ccd7615228)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 4f2129ef-0318-4ca6-b5e0-655b969854d6)(content(Whitespace\" \ + \"))))(Tile((id \ + 4a4ed116-ca13-4cfc-b767-a231cd11b1b1)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 5f2b05eb-a2de-41fc-b7d2-9dab487365e7)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + a94f2393-025d-4798-b63c-48934ba349c8)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 2cb9581e-59ac-43e1-8cb7-2556aad2954f)(content(Whitespace\" \ + \"))))(Tile((id \ + 1f4903a4-e48f-40a3-bd5b-974a07b9c5f4)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + d8c418aa-ab2d-40a4-90c8-f26b9c337273)(content(Whitespace\" \ + \"))))(Tile((id \ + 87d4c21c-3df7-4b91-a381-e8ba84591c1d)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 9cf3d798-b10e-45f4-a5b2-7d268897692f)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + e4075d1c-28d4-4166-8291-de1d3af67fb5)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 6f2165dc-3f61-4e1e-8789-0330f088b39d)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 839c814b-e1f0-415d-a7d0-672f3253a2b7)(content(Whitespace\" \ + \"))))(Tile((id \ + dfc577dd-8a74-4879-adde-0aa4ae95c94d)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + aa3a36cf-6347-4722-a5d1-09711312efd4)(content(Whitespace\" \ + \")))))((Secondary((id \ + 06ddb22b-3499-457f-91ed-05add3c22ee0)(content(Whitespace\" \ + \"))))(Tile((id \ + 29786d68-5467-47af-b47d-0e740f4c9a16)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + f37e9a6e-4bb1-4e67-8d50-6fb2a14a8bf4)(content(Whitespace\" \ + \"))))(Tile((id \ + f3ed678e-f223-4cff-9b59-8b8a7a6b9cd3)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + f57a1cef-e80b-40c3-8d30-c57c67d720d0)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + dcdca7df-b2ef-4e82-aded-efcc9fae3b6a)(content(Whitespace\" \ + \"))))(Tile((id \ + 758f83e9-d647-4d54-a6d1-35deaa585f05)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 0f584200-d83e-4110-aa0c-9e52a2b137c9)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 504dec65-6792-43c3-8321-1ab79125297b)(content(Whitespace\" \ + \"))))(Tile((id \ + 31c5e7ae-c7a9-44a7-ba7a-78bcf230dd5b)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + feb1b848-deaa-4736-99f0-4beccf61a5bb)(content(Whitespace\" \ + \"))))(Tile((id \ + ac41ac6f-2360-481c-9e37-7bf709f793f0)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 353887ee-58db-4778-a1f4-292626241948)(content(Whitespace\" \ + \"))))(Tile((id \ + cee49f88-02ea-419d-b943-5b1d94c2165d)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 6c317419-f723-4623-99f0-078dbaeae142)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + babf0e4d-228d-4726-9a14-ae21b5edc6c0)(content(Whitespace\" \ + \"))))(Tile((id \ + 2e2eea74-5c81-4fe0-b987-f952f86e01ed)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 10511c27-d376-4ed7-a46b-113b5b6a9dfd)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 888ba43d-2657-4274-a150-e3ec98013f10)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 50cd1923-dda8-4f7f-8f5b-d320681cc050)(content(Whitespace\" \ + \"))))(Tile((id \ + 5d023581-7000-44d8-902e-884f0ebadeb3)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + ba1de608-148d-4189-b19b-7f4c638f2685)(content(Whitespace\" \ + \"))))(Tile((id \ + 277903d5-b80a-4d2c-966f-74cf8859bbe1)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 2355d66a-e991-40e3-bfb0-ba8a19f25b30)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 8cd62e8e-a681-4e84-9392-c4fadbec7779)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + e919bc9e-238e-4e1e-b7a3-b36d823a844a)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + a264266f-c818-4800-987f-8f159a22edd9)(content(Whitespace\" \ + \"))))(Tile((id \ + cb8746e0-8bb3-46c3-abd0-139e174dff49)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + a33ede3e-f25d-4bf2-b792-3b362e7ffe53)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 366cce6a-e675-412a-8dfa-6f649470c506)(shape \ + Convex)))(Secondary((id \ + 08c165cb-2e48-4998-a60e-1cc513301278)(content(Whitespace\" \ + \"))))(Secondary((id \ + da19d4c1-9f19-4e7c-b57e-1e1e3952eab0)(content(Whitespace\" \ + \"))))(Secondary((id \ + 4ccc0f28-a241-4e7f-b2d9-749160995066)(content(Whitespace\" \ + \")))))((Secondary((id \ + 4c9cab9c-b008-4dfc-b736-063873ed49d6)(content(Whitespace\" \ + \"))))(Tile((id \ + 1e8b20ae-6b08-4fe5-9f4d-984426b53013)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + a5497755-fe99-4b6e-bfa4-2b506ae94ed3)(content(Whitespace\" \ + \"))))(Tile((id \ + 32898186-883f-4598-bf5b-ba99c4fd7441)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 31b7f030-673a-46d2-91a5-802c5d5c0050)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + e02d502c-b1f9-4ffd-b24e-048db75550fb)(content(Whitespace\" \ + \"))))(Tile((id \ + a01655cc-bdbe-453c-a35a-81012be7c308)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + c1a0baed-c8a2-429d-833c-6ed12fbebbb2)(content(Whitespace\" \ + \"))))(Tile((id \ + e57b24c2-2862-4bbd-a3ea-b16447fefea4)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + c4a4a8f9-4449-4923-9065-f12099c43b50)(content(Whitespace\" \ + \"))))(Tile((id \ + 479d118a-5d4a-48c6-bf47-03364c601277)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 3ed7c3c5-9c9b-4b8c-a6cc-e5d38f0884f7)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + b8b607d6-5e91-4166-9030-e6062c5bdfde)(content(Whitespace\" \ + \"))))(Tile((id \ + 09f543ad-eaf3-4890-8f00-364e65bbeb9c)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + b1f15536-570c-4dc0-9549-dcb2b230feac)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 064cc832-ce4d-4774-ba20-f8ecf0a48b37)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 4c73ec7c-d01c-41f3-8a0f-11412cd6a732)(content(Whitespace\" \ + \"))))(Tile((id \ + fc65cafe-9149-4468-8ea0-f92ebe2d968a)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 5c9ee7ae-9db7-4924-93c1-1a8418513aee)(content(Whitespace\" \ + \"))))(Tile((id \ + e7cad16e-7d7b-4115-9a8c-af93f221acb9)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + fa8e5241-13ec-4c4a-8e28-4699b23444a5)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + e779d1de-c381-4048-8509-32d2a4fad77d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 78024387-9521-4a53-ae68-0ede50bf3755)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 9b5f8ce4-8a09-4d4f-aac9-3b1669efe5ee)(content(Whitespace\" \ + \"))))(Tile((id \ + 050ad0bc-cd58-4ff3-9517-1d272cfb1dc6)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + fabc0073-2285-41f6-90a3-748f83b2f6fc)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 60502944-c980-4eba-9d89-b341dfaa767a)(shape \ + Convex)))(Secondary((id \ + e3656e85-0260-4a63-9c23-b0fe822eaaf0)(content(Whitespace\" \ + \"))))(Secondary((id \ + a0800885-7858-470d-b5c6-f7350dc5a52b)(content(Whitespace\" \ + \"))))(Secondary((id \ + 22fdd3e9-c9fe-4d4a-96ed-e18661b9f453)(content(Whitespace\" \ + \")))))((Secondary((id \ + a80d307d-9238-49c1-9a6d-114d8cd618b5)(content(Whitespace\" \ + \"))))(Tile((id \ + 3e95229c-1e09-4428-ab3d-778449bfacd6)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 345d959c-c0e3-4325-856a-03b451afb788)(content(Whitespace\" \ + \"))))(Tile((id \ + ad7d9601-3b12-4f28-9d0a-4edb752606e8)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + dd65c356-1ef7-4512-9ab9-eea9984c1092)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + b0782794-c9d5-4083-baf1-32e183dbeff9)(shape \ + Convex)))(Secondary((id \ + e0c1bec2-69ca-4a42-8a3b-be53a3eee8ef)(content(Whitespace\" \ + \"))))(Secondary((id \ + 4f9a74ca-94d8-473f-8e1f-7d9e81720c6f)(content(Whitespace\" \ + \"))))(Secondary((id \ + bcf86e8b-7f81-45ea-a4af-f991a8286ec4)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + da2a3eb5-e4cb-4596-ba40-b29ee4fafed7)(content(Whitespace\" \ + \"))))(Tile((id \ + befc9916-b11d-46d5-847a-875ee9a25659)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 419fd78b-a064-4bff-85e5-7a58faec7fe1)(content(Whitespace\" \ + \"))))(Tile((id \ + e93b830b-4890-490c-82c6-1fc52ab97cea)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a54cd696-f9b0-4928-bba6-ce8d008cf0b8)(content(Whitespace\" \ + \"))))(Tile((id \ + ee86723f-2eb0-4801-b190-3da7822b3246)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a93e8247-9329-4e31-ab36-bd4fb103c31d)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 6bc7a8f1-a5e1-4c83-95ce-47ab12734e9a)(content(Whitespace\" \ + \"))))(Tile((id \ + 922d00aa-39a9-403f-9e2d-9006299c0089)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 0cbfc86c-62a2-4e35-846c-419445841b20)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 7e1a34cf-d41e-4581-ba52-4bc25e1e3d49)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + a949f8fc-26c9-434f-9b99-db5150203e1e)(content(Whitespace\" \ + \"))))(Tile((id \ + 6f9b120a-b758-4553-b9e2-4c0c979ed6d0)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 74ff733f-c95f-4053-9369-e5d4bfa47efc)(content(Whitespace\" \ + \"))))(Tile((id \ + a4713350-3b6a-4c4c-8976-8773fcc47b4d)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 62f78eda-a670-4b8b-a9de-d6804c10abe0)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 3c34799e-b421-4e12-91b9-8f73492669bc)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + f1cddc20-e71c-4d62-bff2-2c79bb66d03b)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 9845f59d-6345-444b-b86f-dab9a738fa2e)(content(Whitespace\" \ + \"))))(Tile((id \ + 59cd16e1-b021-48b8-a31a-3eedff49c12f)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + c765c652-21dc-4c5c-bc0a-9e2bf54c8d4c)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 01b55507-fc6e-4f9b-b7fe-2de70d68ae85)(shape \ + Convex)))(Secondary((id \ + 60a8198b-7d3b-4ae5-852b-1b9279a22496)(content(Whitespace\" \ + \"))))(Secondary((id \ + 63db4e70-84e8-4ad7-a912-6a10b549edb6)(content(Whitespace\" \ + \"))))(Secondary((id \ + 67dc3deb-0f65-4199-b01b-c4d08bc2ede9)(content(Whitespace\" \ + \")))))((Secondary((id \ + c91a4785-3400-4d3b-a807-8ec7cca6fe42)(content(Whitespace\" \ + \"))))(Tile((id \ + 4f49d514-2780-4f49-99b5-cdc6c21c42da)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 13abf15a-a4f0-4319-9d0b-77645ad48137)(content(Whitespace\" \ + \"))))(Tile((id \ + 2f03b79a-01f2-40cc-8619-7ae5d08848d1)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 587eb7c5-6cc7-4678-a196-2808537549d8)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 56a345e3-90b2-4bfd-9cb5-9c47541b310a)(content(Whitespace\" \ + \"))))(Tile((id \ + 5553baea-93f2-4356-8029-cdbac97a9fbb)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 454bcfc8-ecab-47c0-ac70-506d96ae1ada)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 218987e9-922f-4609-822c-314279d863bf)(content(Whitespace\" \ + \"))))(Tile((id \ + 7465bb73-9f4b-464a-9f9a-8405eb57c91b)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 369da5af-5f2e-4f1b-a50f-1515222357ca)(content(Whitespace\" \ + \"))))(Tile((id \ + 90512813-86e6-469b-bcac-0267834646e6)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 758cb590-8371-4bff-991d-e69e9dc51bab)(content(Whitespace\" \ + \"))))(Tile((id \ + 97d8cfc9-65e1-4658-957e-8527db8230f8)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + cf1feb8c-9f0c-4fac-8457-ccec09dd7719)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 4a041d67-9016-4ca4-9dce-11ad319cca96)(content(Whitespace\" \ + \"))))(Tile((id \ + c9680e92-4454-4a3c-9e82-23375259b15c)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 4bae0ba8-e49a-4e03-8514-633fe6f9fd1f)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + c8aac4c9-6fcf-4edb-999e-a956693ee999)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 549eacb0-6d86-46cf-9249-e243a9a4fdf4)(content(Whitespace\" \ + \"))))(Tile((id \ + e694950f-4597-4e61-b9fd-a05c746abe4e)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 9c2868d5-7874-47b8-93d2-9c506244e763)(content(Whitespace\" \ + \"))))(Tile((id \ + ddfbe440-e3f8-479b-81ff-3080a5c7b70f)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 84d65640-d9d2-419c-aae8-d6b04c12bf7d)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 902afcdb-68b6-47f4-af98-7e843ac1fa0e)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 0559dc24-ae2b-4e1c-9be6-3ac5e82e36a8)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 81499aa1-a36d-4fbe-9411-4d82b5501efb)(content(Whitespace\" \ + \"))))(Tile((id \ + 49a4b0f8-81cf-49d4-9766-a99963214b85)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + a66248b4-bd53-42c6-96d1-0440d70abe68)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + f8502677-bd6f-44b5-a1cb-ab7912281602)(content(Whitespace\" \ + \"))))(Secondary((id \ + 0ccd9911-9e15-42f8-9efa-2e24bb3f9d9f)(content(Whitespace\" \ + \"))))(Grout((id \ + 334adc6c-9f26-45b0-8561-5045b4d7d5fb)(shape \ + Convex)))(Tile((id \ + b2743f3c-ed5d-4a2b-b554-d08eedad8478)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 463a0555-bb7a-4506-9009-8854f2e89e34)(shape \ + Convex)))(Secondary((id \ + c7f29ef8-b541-4037-84a5-905e00927df4)(content(Whitespace\" \ + \"))))(Secondary((id \ + 0b2edba7-987e-4278-8767-db5bf683bb2d)(content(Whitespace\" \ + \"))))(Secondary((id \ + b10e02cc-08e1-44da-afc7-c6be0cd97ad6)(content(Whitespace\" \ + \")))))((Secondary((id \ + dda0be53-ad2b-4e53-930b-0cb7e6f7948a)(content(Whitespace\" \ + \"))))(Tile((id \ + 3f616dd7-2e1c-4994-bba7-3ff2ae2d009f)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 0f5af089-9bbc-49cd-9265-ee3ca2cf6ace)(content(Whitespace\" \ + \"))))(Tile((id \ + cb0f9f2d-7e60-4990-ac6f-16760eb105c5)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 6636c11c-4be6-4b48-8c28-aa2a07cc7295)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 7c664c94-7dfc-4767-8ccf-a6e76913edbd)(content(Whitespace\" \ + \"))))(Tile((id \ + 81eb253a-5e19-4b4d-804b-f3eaae9d08aa)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 4e458e97-f12d-4915-8bde-a822f8d14a49)(content(Whitespace\" \ + \"))))(Tile((id \ + 333b9d71-ac78-4403-830e-fcd058dc6a56)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + deb814fe-e232-4f27-b98d-7a2ea24c082c)(content(Whitespace\" \ + \"))))(Tile((id \ + 5d3b1805-c4bc-4ba8-9706-f5ea459434c7)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 79732f22-2121-474b-9db4-46e01e01e900)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + acc847ff-b677-4327-8def-4345e13297f4)(content(Whitespace\" \ + \"))))(Tile((id \ + bdb4ad16-b715-49e7-9594-6630dec245b4)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 00958786-584d-4a6e-b5c3-61ebb8af0fd8)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + ca939cd1-4dd9-42ef-9ab4-a4292d3042f5)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 196a55c4-004f-4997-9a82-4c116c44f58d)(content(Whitespace\" \ + \"))))(Tile((id \ + 45530c89-21b9-4da6-a411-be788347ff05)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 19ccad19-db00-4012-8cd9-090e58e34d2f)(content(Whitespace\" \ + \"))))(Tile((id \ + 65269777-d11f-44d2-a3a8-2bd0703d931b)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 1f58078f-b848-4839-bebf-8aae0b139a85)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + e45cc210-7d11-4115-8e0a-19aa91b5cf85)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 95711e32-58c5-494b-b912-0cd1da1944ab)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 05d683a4-b423-4906-b626-95272e089863)(content(Whitespace\" \ + \"))))(Tile((id \ + 19b1c876-def7-4ff4-a273-83a47cec3faa)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + c80439ea-f422-49be-bb47-44ce041545bc)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 7c5999b8-ed2e-4914-90e7-883585f46fa6)(content(Whitespace\" \ + \"))))(Secondary((id \ + b66ca63f-d073-4e34-b5cb-5c6a50be38c9)(content(Whitespace\" \ + \"))))(Grout((id \ + 92c3c219-ac9f-4f4d-af39-7a87433ee68f)(shape \ + Convex)))(Tile((id \ + d5a45e15-9eca-41ee-bd0e-91cf154473de)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 9fd54931-31d4-4074-af43-f92faa65f163)(shape \ + Convex)))(Secondary((id \ + a51d6bbe-db2b-470e-a677-c5d553674981)(content(Whitespace\" \ + \"))))(Secondary((id \ + 70408414-c362-4277-974d-5fd9979c2215)(content(Whitespace\" \ + \"))))(Secondary((id \ + bd381de5-1ece-4e62-a2b9-3bcba8736c27)(content(Whitespace\" \ + \")))))((Secondary((id \ + 6fd64089-30ea-4435-9635-168ceefce138)(content(Whitespace\" \ + \"))))(Tile((id \ + 199a5e0e-7724-468b-b556-44a91bd42ec3)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + ce3db5ad-adb4-4b1e-aadc-17e112447cfc)(content(Whitespace\" \ + \"))))(Tile((id \ + 9579cd24-36b2-4cac-9bbe-c79e73be06de)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + c47ca04c-8e09-4d04-8690-81d8362a407d)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 514b0fa4-cc73-4f80-958f-7a191a068d88)(shape \ + Convex)))(Secondary((id \ + b7aa5bde-8384-49d2-aff4-ade2cd61d341)(content(Whitespace\" \ + \"))))(Secondary((id \ + f77eaa78-6d27-4e18-b77c-593396192565)(content(Whitespace\" \ + \"))))(Secondary((id \ + 314d6e20-a3cc-4b14-a048-fbd76c4134e9)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + de1bb128-289c-45a2-858b-1b625fb2df55)(content(Whitespace\" \ + \"))))(Tile((id \ + 53c7c075-ff4e-40c7-83f0-9aef4ece7934)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + c0ac69f0-46de-4ac5-a592-0259cf25c098)(content(Whitespace\" \ + \"))))(Tile((id \ + a72518dd-352d-47a4-b054-3778e2240920)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + cf693380-0cfe-46db-bf12-02c17a2aa5d1)(content(Whitespace\" \ + \"))))(Tile((id \ + 6df1647e-2f6c-4350-b6be-ee0a149948d0)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 1e5d2feb-aeaf-4b5a-990e-721741af9415)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 82f4bbc0-c3a7-4905-8bcf-24e6dfd3587e)(content(Whitespace\" \ + \"))))(Tile((id \ + a602693d-8766-4acc-a621-b6bc94edff92)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 7efbc47f-66e6-4e95-b592-ca445a855202)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 158da482-bbcc-4b98-abb5-ae7240ca085a)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 32241379-1075-4aca-9656-f326aaae6f99)(content(Whitespace\" \ + \"))))(Tile((id \ + 37f36a46-08be-4e43-9d0b-d0cc4670f173)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 33d9fa38-98e4-410f-96ef-3814cda0ca91)(content(Whitespace\" \ + \"))))(Tile((id \ + ee9cacdc-1f65-46b1-ace9-c3563f8d198c)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 5d7527cc-81a6-4a4a-b0ba-2fe9d9aad62b)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + c4cfa363-28dc-4c07-8388-89511e2b021d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 20243ab7-fdd6-4be4-849e-084f814706a4)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 195a02a3-1cc1-4584-b028-c6adab8678d3)(content(Whitespace\" \ + \"))))(Tile((id \ + 8914e2c3-7ed0-4184-9de9-c8c71bc84ded)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 45dadb48-ba95-4353-826f-10544c399bac)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + afde939f-0fe4-46cd-9044-7190b86fb63e)(content(Whitespace\" \ + \"))))(Secondary((id \ + 9e5b265f-aaa8-4aad-9014-3f91abd0f1fd)(content(Whitespace\" \ + \"))))(Grout((id \ + f43f1d26-9790-40e6-8c26-d559056442b8)(shape \ + Convex)))(Tile((id \ + e6f2d81e-74cf-46b7-9b72-224b017542f1)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 2c8885b0-9e83-49b0-9bb6-eac06b6b1dc6)(shape \ + Convex)))(Secondary((id \ + 678bd368-85ae-4b6e-8f8a-a2106b84d126)(content(Whitespace\" \ + \"))))(Secondary((id \ + 722a324e-a9e2-4819-bdc3-0aa7b19e1a67)(content(Whitespace\" \ + \"))))(Secondary((id \ + 5940e2d7-b76c-40b8-b3ca-2f4e83d89c10)(content(Whitespace\" \ + \")))))((Secondary((id \ + 6257d75d-660d-4574-abe8-e7af6b9d1b42)(content(Whitespace\" \ + \"))))(Tile((id \ + d357e807-390d-4e1d-a4c6-a258a74260d3)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 53d32836-c517-497a-9c8d-4dd4166d72d2)(content(Whitespace\" \ + \"))))(Tile((id \ + bc43d610-5d39-422c-90c1-99c19b61185a)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + ea17cd76-456c-4f64-865b-97b0809a04e5)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 9db87b7b-1787-4164-ada7-be267ad1c889)(content(Whitespace\" \ + \"))))(Tile((id \ + e7b890a4-c153-4935-86ba-712f9b6fb293)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + f60a55f3-2c3d-4805-b2a5-6aa5180e1634)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + a98d7c92-73d5-4dc7-aa1a-698d699c254f)(content(Whitespace\" \ + \"))))(Tile((id \ + 13163b9a-c8a1-4018-ac8b-f82e9aed7a02)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + c379e843-e2e5-44fe-a233-224a671d9cbf)(content(Whitespace\" \ + \"))))(Tile((id \ + f5eff3f0-1072-4f8d-87bd-624091b2182b)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 079d9993-25ab-46e5-ba58-99e1e13d5730)(content(Whitespace\" \ + \"))))(Tile((id \ + 36d45045-38b3-49fe-ba96-21a0596aef7b)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 57684621-723f-40b5-b736-65f23b7a539f)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 06c16dfe-8fd9-4672-afa3-f1de2f342e30)(content(Whitespace\" \ + \"))))(Tile((id \ + 0af9c58d-aba1-4edb-9a80-5d2e3d3492e5)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + f57502b2-6858-4af7-bcd5-d899d462eb36)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + d67bea13-16e7-410e-8473-cc9ebcbeea7e)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 2a06fdca-dcc5-492a-a9eb-b51e87a91fb9)(content(Whitespace\" \ + \"))))(Tile((id \ + b7ee1179-4557-454f-bb83-05a493d357f8)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + e14b3dc7-b3e6-47a7-a734-fcfedc9ae80b)(content(Whitespace\" \ + \"))))(Tile((id \ + fc1a8228-d9a8-4aca-b279-383684bdbe05)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 7867277d-b26c-4ac1-901a-5560bf448222)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 81f3dcd8-5598-45dd-b0ac-dc3aa27ebc1a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + e5615653-8302-4f02-9aaa-79e7601a810c)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + beb40d29-9522-4c9f-b342-9e626d359fec)(content(Whitespace\" \ + \"))))(Tile((id \ + d8571f2b-0932-4396-bee6-337d02c5d442)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 97fd33a0-7de7-42f3-ab59-ee519aafa0fa)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 2c0875ff-6419-4b2d-989e-35bc2a1a3036)(content(Whitespace\" \ + \"))))(Tile((id \ + de8c86f9-72b4-41a2-8e49-2ae5bd904c34)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + f5359fcd-929f-49ac-acd3-cb4e468e95b8)(content(Whitespace\" \ + \"))))(Tile((id \ + cba7e26e-5324-45ee-a040-b99f74a6345b)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 92053cf8-4aca-482b-9a75-feaf27038833)(shape \ + Convex)))(Secondary((id \ + cbedb124-6ad6-4594-8995-48b938280662)(content(Whitespace\" \ + \"))))(Secondary((id \ + 92b22cfa-fcd5-4e64-b1eb-42350efa6005)(content(Whitespace\" \ + \"))))(Secondary((id \ + e92bba3a-02e8-49ce-933e-608106fa1d5d)(content(Whitespace\" \ + \")))))((Secondary((id \ + 20d12cd7-8150-4900-b429-ada033c245c5)(content(Whitespace\" \ + \"))))(Tile((id \ + e31eafc0-adae-4acb-a0e7-dc70ce82d66e)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 92e6efec-ea3b-4263-bb24-790ccfaadfa1)(content(Whitespace\" \ + \"))))(Tile((id \ + 763f4ad4-9606-4a1a-a5e0-92902c767d9f)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + dd4eec56-8f3a-42f8-883b-617269d33edb)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + d587040f-8fdc-44c3-bcaa-a2d3673d573b)(content(Whitespace\" \ + \"))))(Tile((id \ + a8c46661-9b28-4712-8e26-4a5bfd32070c)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a75b25d8-23e0-4a7d-be44-026f8ac16c8b)(content(Whitespace\" \ + \"))))(Tile((id \ + 3c325158-7e37-4ce7-8851-04b86f9ef104)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + fd54c5ca-e661-4d82-8153-491bdd93efd6)(content(Whitespace\" \ + \"))))(Tile((id \ + 629d7054-84b0-4df5-827d-a53d1d9fcc3c)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 45157d16-447b-4148-b709-d756534e56d0)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + d9102e0d-7373-423f-b803-06bd4bbfa12e)(content(Whitespace\" \ + \"))))(Tile((id \ + 640ccec8-05de-4d42-8463-99b80258070e)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 17d54597-59d6-4e72-bddc-544c46818c04)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + aa80ef64-4be6-443b-a6f3-1e61ed8069fd)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 0830394e-ba5d-40e0-98b0-132c96adf0a7)(content(Whitespace\" \ + \"))))(Tile((id \ + 133b206d-3940-44b1-a424-7f8244505a72)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 35a3cfb3-0761-4bbe-b332-25bb83b35310)(content(Whitespace\" \ + \"))))(Tile((id \ + 0e6f463b-c79e-44ed-af9b-544e8e6ee43a)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + d355c1e9-d709-4fbd-9f06-08c518077346)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 2ce5c0a5-2431-49c5-9d55-4eed5b2cbd52)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + dc86465f-5c0a-48b5-aef1-51dae9a80e31)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + ea6e7924-e38c-4ba0-8acd-622db92a1d3e)(content(Whitespace\" \ + \"))))(Tile((id \ + 6546cc92-3d5a-4a40-af7e-f081c2b83470)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + eb1aeb12-f9cf-47bb-8a69-c26b20a3779b)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + c9602d72-4ccd-42b1-8542-7b5c8cb8e7ac)(content(Whitespace\" \ + \"))))(Tile((id \ + 704a5137-6382-4a53-8776-c36c02b40863)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + a90dd745-12b6-452e-a3a9-f052298fd2de)(content(Whitespace\" \ + \"))))(Tile((id \ + 4266fd4f-6ea5-4dac-9610-97cae7ebb411)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 9adbdab5-f905-434e-a6bf-791180566e08)(shape \ + Convex)))(Secondary((id \ + d8c438dd-8c59-4c3d-b05f-961580fbacf7)(content(Whitespace\" \ + \"))))(Secondary((id \ + 1004425b-ab5d-474d-93c4-1911af40434b)(content(Whitespace\" \ + \"))))(Secondary((id \ + 368965ce-b2a2-46bc-987e-d30c517601fd)(content(Whitespace\" \ + \")))))((Secondary((id \ + ffd37850-24e1-4703-accc-aca35365a4bd)(content(Whitespace\" \ + \"))))(Tile((id \ + 1f86e198-5228-4a1a-afe3-20887f3b3bcc)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + d4a9281e-b622-4a07-83e4-95836388416c)(content(Whitespace\" \ + \"))))(Tile((id \ + ceaa600f-332a-4512-ae7d-ccd431312463)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 0c01a344-f1c9-4c7e-8ad3-573c45ef2a08)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 31b2b80b-fd60-4a15-8201-9fd3775e2356)(shape \ + Convex)))(Secondary((id \ + 3b8d624e-7cbf-4806-88a0-790cc43db5e9)(content(Whitespace\" \ + \"))))(Secondary((id \ + eade9501-66a6-49b4-837b-a005cd7b2674)(content(Whitespace\" \ + \"))))(Secondary((id \ + c0696d59-61ed-46f0-9fab-7577204d5e8a)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + a5b77b0a-dafe-4e5c-ae2b-95b835546eb4)(content(Whitespace\" \ + \"))))(Tile((id \ + 7406966c-01c1-40ae-8438-894d1bd59a01)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 97504d19-0589-43ad-9def-8eefdf693b19)(content(Whitespace\" \ + \"))))(Tile((id \ + b24017a8-1060-45de-8438-0cb0f0c69baf)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + dbe84fb8-9cde-4815-8f5b-68370e14c05a)(content(Whitespace\" \ + \"))))(Tile((id \ + 235d8af6-52e2-4b8e-bf91-009e4447eb50)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a9d0e871-e802-414e-bd30-bbc48f9f6dc9)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 2a7c5668-e30e-4e8c-b140-dc0e219c3a94)(content(Whitespace\" \ + \"))))(Tile((id \ + 742b6c6f-3db9-4d16-9914-a5d914ad92f9)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + a0091632-5ca2-4a0a-8693-af46c964b707)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 900e40c3-df7f-43de-868e-529a722d69b6)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 7f669310-1611-4150-9484-022033cbbc76)(content(Whitespace\" \ + \"))))(Tile((id \ + aa13d4f2-71e1-4dd8-b9c8-523e1a2cd552)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 906bec45-5fa8-4910-b1eb-0bd172b39cff)(content(Whitespace\" \ + \"))))(Tile((id \ + b493b63b-3673-4cf5-9fc6-bebb42db1396)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 2e133c45-2e48-4006-b0ed-ca719e6d9ddb)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 871541cf-13ed-4348-9a2f-b93f45dca05d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 4d10f655-2634-4c1b-9762-63ed6a7780de)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 45785c6c-5f7a-4373-b7cc-f67910580015)(content(Whitespace\" \ + \"))))(Tile((id \ + bc8d814f-86c6-4f6c-ae4f-3cdf5b2c049c)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 50bc8550-04dc-4d90-a4a9-be8df5d98a3f)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + ee84e1a7-15a8-40db-8a5a-4d9870cb2edd)(content(Whitespace\" \ + \"))))(Tile((id \ + a368cd1a-a7f6-4903-b2f7-d3beb1537bdd)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 3d1c071c-bfda-4037-b178-019b06488b8b)(content(Whitespace\" \ + \"))))(Tile((id \ + 0fe78a55-a7de-4ff0-8787-ecd69bc9e239)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + ec97cc38-d201-44ca-ae64-28806c5d8d48)(shape \ + Convex)))(Secondary((id \ + 369b2741-2397-4f99-acdc-460eb71dcc12)(content(Whitespace\" \ + \"))))(Secondary((id \ + 8d566925-4560-45ce-af57-70d001f7af47)(content(Whitespace\" \ + \"))))(Secondary((id \ + 2f590b5e-aa3b-4967-b0c4-f7cc737b8d5c)(content(Whitespace\" \ + \")))))((Secondary((id \ + 435c918e-b179-42f3-85a8-1c2de3f745a5)(content(Whitespace\" \ + \"))))(Tile((id \ + 162de82e-a946-4fb9-9526-1019b2dc13dd)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 19beca4b-cce6-4ab2-b079-15e467628ba7)(content(Whitespace\" \ + \"))))(Tile((id \ + 7e2e4f39-845f-4a7b-82cd-571ec45b852d)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 673c44a7-ac40-4ed6-8b0e-90e7220f4134)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + feceacc8-a63c-48bf-82ab-7b0b97d47a90)(content(Whitespace\" \ + \"))))(Tile((id \ + 9478b03d-b2c3-4714-88cd-76863e56b029)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + feacb768-8686-440a-b28b-9e33df74853a)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + db49bbf6-b497-4ba7-bc17-5a1971908944)(content(Whitespace\" \ + \"))))(Tile((id \ + dfde7bb5-0af1-4d93-bcd2-d90bdf3d04c7)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 1cea4d62-89da-4bdd-b13f-7dcd4608ece3)(content(Whitespace\" \ + \"))))(Tile((id \ + ae82c61c-e474-4d87-9bf1-f9931d692738)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + dd934033-111e-46e7-aaae-b0df65816e53)(content(Whitespace\" \ + \"))))(Tile((id \ + 9a69136a-bcab-4cf0-8da5-f535f7e26d27)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + e90533d0-3cce-4094-92c5-72dfcb56abdd)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + c6226fbd-11f6-4419-85ff-ab3c2498e170)(content(Whitespace\" \ + \"))))(Tile((id \ + 41bd500b-631c-4c81-9c59-55f283d35d0f)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + c5598d7f-05d1-4f6d-bda7-d4418e1a4093)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 52536945-61d2-4a8a-b34c-0f97f74678ca)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 74bfea44-e314-4b68-aa4e-8624bdc8ce7a)(content(Whitespace\" \ + \"))))(Tile((id \ + a263c68f-6725-4707-b6ad-7dd38477d1ce)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 5fb52d35-62b1-4553-95ec-908a25026114)(content(Whitespace\" \ + \"))))(Tile((id \ + dd524143-3ef6-4d77-a5aa-1d1607996ea3)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 7e8e6138-15f6-4d0a-a1c2-9a8bbc2408f5)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 6015d050-9f6f-4c94-aab9-b6beb618f94b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 9271a2da-695c-4a84-a5f1-782b6d1a0aa3)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 34844e16-5aed-43ae-a080-46a40717dadc)(content(Whitespace\" \ + \"))))(Tile((id \ + 7dee8226-5eba-4a93-a598-fe1c5f7f7320)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 2e94a4f6-50ea-417f-bf87-9b38816eb882)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + ddfb9fe2-8c13-4c32-a518-c81106179548)(content(Whitespace\" \ + \"))))(Tile((id \ + 83327e64-693f-4bb9-b698-87a789323c9a)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + d466c4b0-bfee-4b81-a549-29ff26e5be9d)(content(Whitespace\" \ + \"))))(Tile((id \ + ad3e8603-24bc-42ef-a50c-25f61ba914a7)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 7a253466-e174-446b-ac4b-1033e9f6b871)(content(Whitespace\" \ + \"))))(Tile((id \ + c0fa1d45-e9e0-4a59-9bf7-a5043d8cc002)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 10fd4c96-baa1-4e8f-a53e-100cb36aee6c)(content(Whitespace\" \ + \")))))((Secondary((id \ + 6aa641dc-56bb-4b33-82e3-1cbb94491d1f)(content(Whitespace\" \ + \"))))(Tile((id \ + 2efa7e74-501b-480d-9be2-0b91ab400b25)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + bbb4dfea-a227-493d-8320-effb69611423)(content(Whitespace\" \ + \"))))(Tile((id \ + d7d6b45e-36f9-4c77-87cc-9564261d6fff)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + ac7ab096-53ba-433c-94b6-c05d8703f2cc)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 8325b5f5-d41a-4dff-8114-99b59ecd3e85)(content(Whitespace\" \ + \"))))(Tile((id \ + e8f221da-21e6-4912-9914-31697964caa5)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f5bf4238-4163-4d18-8580-2313d921959c)(content(Whitespace\" \ + \"))))(Tile((id \ + ce6a2eb1-970d-4e35-96e5-ce797fa6aacc)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 59e29b21-17c5-4c1a-8b3c-54189c96e778)(content(Whitespace\" \ + \"))))(Tile((id \ + d52afa68-cf8e-4632-a745-24e9d0a5253c)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + e71e9c30-311d-43e3-8dc5-a28b95f9efd6)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + a8749f93-4f77-497e-b667-a20333ac73ef)(content(Whitespace\" \ + \"))))(Tile((id \ + 9101bfb6-4ca9-4ff0-94dd-98f16a638608)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 16a464ee-12de-4725-bbfc-30139156c5b2)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 026be924-3fc1-4243-ab59-d413f936b923)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + b53dda25-5f7a-4033-bf2a-cf2d81e6335c)(content(Whitespace\" \ + \"))))(Tile((id \ + b65ae5ba-d37b-4317-81b0-b9dd36d60103)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 9d106574-4e8c-4fae-94b5-2c2464948b43)(content(Whitespace\" \ + \"))))(Tile((id \ + a8c8b27e-2262-43a1-ad3e-9ce34e3eeedd)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + b4e87bb7-2370-4ec5-91a1-e7fba20e2b96)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 8ecd5c16-c27b-4db8-841e-7a7d84b56783)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 56f5b307-ccbd-4055-a5d0-e15d2eee7c3b)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 91762bf5-6066-440f-98de-eedf468d2efc)(content(Whitespace\" \ + \"))))(Tile((id \ + b10c2aeb-2def-4842-909d-39519641905a)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + b5dfa606-edd8-4917-b5e8-e167cb639daa)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 70c3fcf2-0d68-4f7b-ab6e-77544c8ec3bb)(content(Whitespace\" \ + \"))))(Tile((id \ + a8e10085-b0db-442e-8e0e-36280840e81b)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + e333d71d-9fda-41db-8e17-86e23097d28e)(content(Whitespace\" \ + \"))))(Tile((id \ + 1404d298-b539-42aa-b1f7-2e3d7d4c24b0)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 1a889cc4-fe72-42d2-bea1-e2f61e37ac87)(content(Whitespace\" \ + \"))))(Tile((id \ + 5ecb8198-c2a0-4664-b928-3c703caf0add)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 8ba66779-25d9-48b1-926e-5a34765c312d)(content(Whitespace\" \ + \")))))((Secondary((id \ + bd6d0014-9e77-4225-9ff8-c0a7de2825b7)(content(Whitespace\" \ + \"))))(Tile((id \ + 29dfd12a-2d87-4df6-aece-53cf6bba0c52)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 4294c873-5c21-4a94-bf88-758b5fdf2f7f)(content(Whitespace\" \ + \"))))(Tile((id \ + d466322f-a8b5-47c0-9dc6-bbc7a28d284a)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 8b147a7a-1da4-46c6-a28d-091fa16861c1)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + e5d814f6-aa9c-47a9-b63c-42fd335f953f)(shape \ + Convex)))(Secondary((id \ + aaa67ede-7822-4cf7-9f19-303fa33f8aba)(content(Whitespace\" \ + \"))))(Secondary((id \ + 6e552c40-4071-4359-b9e9-37aa5802101e)(content(Whitespace\" \ + \"))))(Secondary((id \ + f5a43ffe-b44b-4887-a2f7-c7ad2c748a8f)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + afb4920e-7c70-4c30-80a8-b59dda228ee5)(content(Whitespace\" \ + \"))))(Tile((id \ + bf7732e5-78e7-40c8-a9c2-a8ecb70093b1)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + ad412ee5-7ba6-43fc-a25d-326aab9770cc)(content(Whitespace\" \ + \"))))(Tile((id \ + 0ca89b07-36d4-48f6-8290-1c8b24c034be)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + cb3c95fb-ae39-4615-973e-ec79808abb70)(content(Whitespace\" \ + \"))))(Tile((id \ + a6f26646-3b0d-46ef-bbec-37d88efc98cf)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 205acc81-396b-4654-a205-a613a8eec959)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + a47cbbe4-adb2-4be2-aab0-61f00f9562e1)(content(Whitespace\" \ + \"))))(Tile((id \ + cec4d937-3598-40f2-9397-c6a8e97a8685)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 481fb687-e80b-4b1e-ad16-d118f96518d3)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 8bec8bab-36e3-4f51-a0ea-e1c25b102bc4)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + c515d61f-d2ee-4687-aa95-d27c345d9124)(content(Whitespace\" \ + \"))))(Tile((id \ + 2987470d-5adb-4c4b-b833-a6053464f507)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 921d2a1d-8b94-416f-9310-896690875100)(content(Whitespace\" \ + \"))))(Tile((id \ + 1e9ee143-0c04-44d7-9377-b00d030d9e8d)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + e0eb56a9-fe68-4c96-a5bb-1d4dd7699c0d)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + ce674ccd-c248-497a-be93-2d1827321580)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 77df4c7b-d395-4223-9069-a41ccc5bbcec)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 37e216c7-b5bf-4c84-94e2-809bf6f37566)(content(Whitespace\" \ + \"))))(Tile((id \ + 6ba77d63-777a-4ea8-8e2a-b749252fc99e)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + e7b23270-f09c-49d9-99c9-63cfb246bf84)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 0a0f7a4c-5607-4b44-8f2f-7d7fea49ad79)(content(Whitespace\" \ + \"))))(Tile((id \ + 43c8c778-7a13-45ca-84b0-7f325e56c3aa)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 3d7b8db2-5f04-432b-8e91-08dcb9396fc1)(content(Whitespace\" \ + \"))))(Tile((id \ + 46647b2a-ce9e-433b-b19a-34524e8a3936)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 2948e58b-e983-47f2-99d0-ee3888d9dd2d)(content(Whitespace\" \ + \"))))(Tile((id \ + b321fb83-884e-48ab-9f0d-821af55f2875)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 319dd3f4-27e9-49fc-9cc9-c1061871c35a)(content(Whitespace\" \ + \")))))((Secondary((id \ + 0bd2e23c-685d-4f29-bfe7-a69b36196188)(content(Whitespace\" \ + \"))))(Tile((id \ + acbfef52-103f-477e-bb21-04b4d1bdffa7)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 41fb3d84-8b61-424e-804d-ec69c303fb6e)(content(Whitespace\" \ + \"))))(Tile((id \ + 9b5d610f-0469-4739-aca7-5119fecf545b)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + c410566c-dabb-4c16-a9d3-529919c4aed7)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + f58d88f3-e73c-4460-af33-c98310bcf84c)(content(Whitespace\" \ + \"))))(Tile((id \ + 74f034a8-1c62-4a1b-949d-3d5d9ab06300)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 457e1f7b-6d2e-4f14-ab9d-ffdd7504178d)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 068412e9-a2c9-453a-9471-5c85ca109a50)(content(Whitespace\" \ + \"))))(Tile((id \ + c9e91907-caf6-439b-a853-daf48c23c644)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f2c60bb1-7cf7-4e8a-a851-b2777cefe181)(content(Whitespace\" \ + \"))))(Tile((id \ + 377c0269-ab26-471d-82ed-240201592a29)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 9c093f60-be9d-4cb6-a5eb-1da93f0e2024)(content(Whitespace\" \ + \"))))(Tile((id \ + ef606d34-8568-40f3-9202-3c38e4be1b75)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a4529399-1837-4eec-b112-9938302ef97a)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 22922dfd-dafe-4fda-9d42-5edb7349ef5f)(content(Whitespace\" \ + \"))))(Tile((id \ + d60e887f-7cde-4ee3-bee9-380b0c41f4c8)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + bebd0d47-8506-427e-bed4-9246a8fa3621)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + e8d45f5f-4215-4eb2-9887-f5ec0c765f36)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + a1fec6ee-8077-4339-bd56-4ad81eb6f9f1)(content(Whitespace\" \ + \"))))(Tile((id \ + a821160b-ec97-4f7a-9998-ff6f05d1ed41)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 7f093f83-8c79-4361-ad05-6c8f5abd5b59)(content(Whitespace\" \ + \"))))(Tile((id \ + e1640f07-6616-4e3b-984b-dc450a6bd185)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 3c27e8eb-4eec-4d0e-a200-069eea15262e)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 231b5583-44e9-4949-a331-b28a92cd214b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 454d0a65-bb35-4776-a9ad-eb5f8e46878e)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + eaddf229-c03c-456d-92ba-61829c5734ca)(content(Whitespace\" \ + \"))))(Tile((id \ + 3ab0bf37-42ac-4125-8e53-97ffa6cfa810)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 9adba8ee-9969-44f3-8b85-d43128748f9a)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 98c65d51-bfe5-4013-a0a8-51f782896775)(content(Whitespace\" \ + \"))))(Secondary((id \ + bfd8acf7-a1e9-47a9-8fb2-5c081e0b2792)(content(Whitespace\" \ + \"))))(Grout((id \ + 06b65df5-0379-4b3f-aecb-8bf155c70e95)(shape \ + Convex)))(Tile((id \ + 5cbf5af7-2983-4b7a-b9e2-97d2bd4f0d0c)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 80529a17-bc7e-4717-a0f5-aa7139bc6ec0)(content(Whitespace\" \ + \"))))(Tile((id \ + c8ccd9cc-6cfd-4669-80d9-65d5b3366014)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + b35aca9b-0125-4534-baf8-a3c52144bbc3)(content(Whitespace\" \ + \")))))((Secondary((id \ + 1788e3ac-e9d2-4997-8700-1619e77b4c1b)(content(Whitespace\" \ + \"))))(Tile((id \ + d3debcd2-11b8-4475-820d-10af6ec26e85)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 2af4105d-3a26-4ec1-affc-268540239e73)(content(Whitespace\" \ + \"))))(Tile((id \ + 676d9a2a-d045-4e30-aa75-08aacceaeda3)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 7b4b3bb9-0ab2-49bb-9535-13a4dc5aa33a)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 2b90b3a2-7992-46d0-85c7-564d7220d786)(content(Whitespace\" \ + \"))))(Tile((id \ + aff6e94c-0622-4fc0-aef8-d37dd2c054ac)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + bee3c868-d07f-4ea9-ac8e-114e44b4238a)(content(Whitespace\" \ + \"))))(Tile((id \ + 57a107f3-350c-4caf-90d2-f9b19caf3dd2)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 92398e33-19dd-42bc-ba65-f748223fdf19)(content(Whitespace\" \ + \"))))(Tile((id \ + 79ba26a3-029e-42ce-a5f6-e608849dfb20)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + d275d071-0005-43ff-a9c3-f60932cc73f5)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 69a16adb-2f59-496f-8a9e-a7f9a4778ab6)(content(Whitespace\" \ + \"))))(Tile((id \ + 4cddd64b-aad4-4393-a692-1229aad0d708)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 31699a11-f0f3-4bbe-835c-2d9a0547c923)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 246914bb-94b5-4385-857d-15a9c726ca94)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 9ac692e8-fd99-4364-8fa9-d900a79de82b)(content(Whitespace\" \ + \"))))(Tile((id \ + 56b9fd19-52bb-4f4f-bef4-de4cae06ddc5)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + aad6e147-4ced-4e41-9521-29dd02ca74fb)(content(Whitespace\" \ + \"))))(Tile((id \ + bee762ec-aa9d-4543-aa94-8780dcee6ceb)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 937d88fc-8b2c-486b-9533-462f90c13af9)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 209d44df-86f3-47a7-bde2-71f302b90fd2)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 59d846d3-03cf-452b-9725-f9c2a788049a)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + e18f7773-c0d1-4f56-a7a3-595ee339c11c)(content(Whitespace\" \ + \"))))(Tile((id \ + bdcfa538-d94a-474f-bf0d-a59aa8e41531)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 8573f11e-bd23-4638-8864-ab61cc09d5f7)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 2d10e49c-cc56-4a48-ac01-2b7ab70bf0cf)(content(Whitespace\" \ + \"))))(Secondary((id \ + 93713604-8132-4740-bfe2-f91f72612180)(content(Whitespace\" \ + \"))))(Grout((id \ + b2ac825c-c14e-41d5-b475-0af2705abf9f)(shape \ + Convex)))(Tile((id \ + ed7d0ae5-2e08-4d63-998c-316da7727a3a)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 6f194494-9a99-4d40-9500-2f07c3f9b9a1)(content(Whitespace\" \ + \"))))(Tile((id \ + f9578f84-93f2-49ba-9361-184e182cd368)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + a7b14fde-e4f7-48f0-ba87-cf4519b613be)(content(Whitespace\" \ + \")))))((Secondary((id \ + 16db7155-34e2-4ab2-a55a-21336cbc8ec5)(content(Whitespace\" \ + \"))))(Tile((id \ + bf9a5376-28d0-4a89-9a35-ff5398c40061)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + fab475ce-6534-45a1-b664-32cacf8ebc4b)(content(Whitespace\" \ + \"))))(Tile((id \ + eac01f24-a260-421e-9b9d-29de30d8fda8)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + e8603777-8e85-41b1-98b9-188469481100)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + b31c69e3-0aee-4628-a3d2-37fc8cc998d2)(shape \ + Convex)))(Secondary((id \ + fc7d961a-a770-42bc-ad2c-0752044409a1)(content(Whitespace\" \ + \"))))(Secondary((id \ + 2af44ecd-cf04-4504-8892-763831adf8c7)(content(Whitespace\" \ + \"))))(Secondary((id \ + 5f47194e-e532-4f25-a499-cb5a5b98f79b)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 4a0ea005-9236-45cd-913b-8e19c02bad26)(content(Whitespace\" \ + \"))))(Tile((id \ + 77b9aa74-7611-4159-89bc-55f3a1e036c9)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 3f713165-a7c3-40d2-9a13-10386afc489d)(content(Whitespace\" \ + \"))))(Tile((id \ + 422853f0-6b86-426a-9b6b-573f627c4314)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + fb69c827-bacd-4b12-a1ec-75aed8dc3c8d)(content(Whitespace\" \ + \"))))(Tile((id \ + 697fcbee-c3e7-4381-b3ba-dadc5121e8ea)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 5e9c4dac-6fcc-465c-b41b-e23c7207a212)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 5137a4dd-0105-466d-a6b1-004906ce67af)(content(Whitespace\" \ + \"))))(Tile((id \ + 87121951-34c8-4ff8-aa35-d1bcf4cbad6c)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 38c7acb0-cc5d-4637-b5ed-4829ba4d553c)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 39add059-c1fd-4ae0-9c04-915ae75755ad)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 6bd28861-5fa4-4c01-ac8e-2cc4bd0ebff7)(content(Whitespace\" \ + \"))))(Tile((id \ + 10cf3a56-0d60-43d9-9f29-472c0a9d0f90)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 20e31d77-bfa3-4c0a-9089-7ddbc5acb42b)(content(Whitespace\" \ + \"))))(Tile((id \ + 11752607-8680-4bb6-918f-9f4facdd03e4)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 7cf700c7-61b1-4da4-9cbe-80dd6b6ea35d)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 32735b5e-86ff-401f-8f0b-465d864fba23)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + a0f39e86-b682-44a7-bb34-187bba6375c4)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + ccfe7ff3-74a4-41b8-a225-ac872f661848)(content(Whitespace\" \ + \"))))(Tile((id \ + 1b827ef7-8ba2-492b-aaff-51d0b08ad64b)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + ea96e86d-1e1d-4f9a-8e0a-e1bbbefede1e)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 13a7fe84-18b7-43c0-85b5-8231c0292f99)(content(Whitespace\" \ + \"))))(Secondary((id \ + cddb13f6-712a-4f37-8118-d9df403cc909)(content(Whitespace\" \ + \"))))(Grout((id \ + 06164e6c-0ca8-4628-97a3-ce5f03f898a8)(shape \ + Convex)))(Tile((id \ + b84ab32d-27ff-4bea-a65b-e1406ec1ff30)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 047ad6e8-8204-43f4-ac8d-f51e5d516363)(content(Whitespace\" \ + \"))))(Tile((id \ + 189542d6-5784-48e2-9bde-bc3a1ac46935)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 16f3e09a-cd27-4c8a-bae8-8d8dda88b10e)(content(Whitespace\" \ + \")))))((Secondary((id \ + d27e1b79-0ff3-4ec6-ad1c-fa91837a5db6)(content(Whitespace\" \ + \"))))(Tile((id \ + 82eb621e-3141-41bd-b780-54d4fe318d40)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + c30f6128-442c-4625-bd51-6b207dbd2bdb)(content(Whitespace\" \ + \"))))(Tile((id \ + db25fbde-03f0-4fde-a532-fce4ee36c9d3)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + f0e23317-b8d0-4b14-a5dd-62255e38dba4)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + cbf2e344-bc2b-4988-86f1-ad2ea49ffe74)(content(Whitespace\" \ + \"))))(Tile((id \ + 0a7bf2b0-1e40-4c82-8b80-119f187ddaa6)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 2f1ea14d-6e80-43af-adb0-ba76c9b97f77)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 5fa8455c-642a-48ac-8e63-9d6ecaa92e58)(content(Whitespace\" \ + \"))))(Tile((id \ + 541d68bf-b628-4eae-9209-ea46219eaa14)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + bedbdee3-8633-46e8-bb14-fcef7a175066)(content(Whitespace\" \ + \"))))(Tile((id \ + 105d38e5-d35a-40a7-afc9-9c3b508a711f)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 70b7a496-5161-4b21-b196-9ae260847a90)(content(Whitespace\" \ + \"))))(Tile((id \ + 33de37fa-e7a3-46d0-9887-5c970f204d05)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f3222076-490c-48e3-9b8d-f54df590d9ee)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 3a2578d7-b939-4ee4-a634-dc8059abede5)(content(Whitespace\" \ + \"))))(Tile((id \ + 4d6390c4-d52d-4204-97a1-30f0e0521f0d)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 74708d45-4c6f-4811-93de-4523189e4366)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 04dfbcc9-1f39-49c5-969c-eb07e2587306)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + dc6bc0a1-9b0e-4567-b1e3-260aded8f84c)(content(Whitespace\" \ + \"))))(Tile((id \ + 213076fe-ad6d-47f6-9c71-41b1120cfa7d)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 60fb9e75-75ff-405c-be95-45bd10a55acb)(content(Whitespace\" \ + \"))))(Tile((id \ + 3460ed7f-7888-49ef-a6c9-0a9880c01706)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + cdbea899-1534-4944-8e68-6205942615bd)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 341dfd2f-b694-419e-82f3-42b57a0ab5c9)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 1fe0bd69-7327-4bfa-a88a-0f435a111ad3)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 58c25d88-386f-4029-a5ce-9a66cd7f3861)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + de4ab77e-dcb1-4e71-86c6-c3beb4dc4402)(content(Whitespace\" \ + \"))))(Tile((id \ + ddbfd7c2-71f2-4287-a290-7b1ddb64c0f6)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 562ba7d0-49f0-433d-90a2-23878c49f43c)(content(Whitespace\" \ + \")))))((Secondary((id \ + d3b4654d-2960-46e0-95c2-257bbb7cf4aa)(content(Whitespace\" \ + \"))))(Tile((id \ + 2e04c8c8-2563-4a75-b537-9148ae8df736)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + b7615011-85f7-44e3-9639-c42a9ffe4770)(content(Whitespace\" \ + \"))))(Tile((id \ + ae6bd94c-e8ad-4d2d-8d91-6f1fcfa88725)(label(a))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + f5f77bdc-330a-438f-a0f7-c360c0fff8be)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + d9e63c3c-f72f-43a0-b96f-080430114f0e)(content(Whitespace\" \ + \"))))(Tile((id \ + 86d5cf2c-52e7-43f4-9010-0c4c94d70751)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + cdf4c3bb-f419-46e4-a64b-41c4c1333f3d)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + bbe7464b-c3cb-421a-8618-b5aa0d0edab0)(content(Whitespace\" \ + \"))))(Tile((id \ + 3e4b0bdd-3e68-4f12-8bc2-d17f6056ee2d)(label(a))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 418df9ee-b794-4953-9cbe-f3279474e4b8)(content(Whitespace\" \ + \"))))(Tile((id \ + 61a97d93-48d8-402b-9f67-5a283b18c5d9)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 09e88407-5edb-4bac-8ee4-1ad7df50e0a6)(content(Whitespace\" \ + \"))))(Tile((id \ + c61d45ed-cec4-42fb-abcc-f4a5f125950e)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a917be30-7c5f-4298-aee6-38851c2660cb)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 7b259183-e434-47b2-812b-db9642bd94c5)(content(Whitespace\" \ + \"))))(Tile((id \ + 9301cf6a-70a8-41bf-a622-49c49fd00754)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 7b9ee891-5f0f-4a58-a32a-e9db8f1ac4f0)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + dda4c579-0408-4a51-b1dc-6f97ccdd2e05)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 27b1be15-9e4a-43aa-87f5-26de83265103)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + fd081940-f5aa-43bd-8a30-720800cddeb0)(content(Whitespace\" \ + \"))))(Tile((id \ + f6192cc1-0d1f-4ea4-bb9f-3666c704a62c)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + dff5f94f-934b-4588-8789-dfd06aa0fdb9)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 6a653547-3323-48ae-8e53-9da33293859b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + a18871d7-6f65-4b54-a155-4618c6093206)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 21140476-577b-466e-b4d0-34c4817295a8)(content(Whitespace\" \ + \"))))(Tile((id \ + 031c0681-9ef4-416e-9061-b617ef8b6043)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 1fa066e4-b63b-4947-807e-63ba8187294c)(content(Whitespace\" \ + \")))))((Secondary((id \ + c4cf3db8-07b6-48e9-badf-0fefbd343a40)(content(Whitespace\" \ + \"))))(Tile((id \ + 8d0afd46-38a8-4d86-ae34-f16e7127521b)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 47cc914b-c68b-44e5-abd4-66cf763e18d9)(content(Whitespace\" \ + \"))))(Tile((id \ + 35fe143c-210c-4fe4-818b-2b6d2ad67057)(label(a))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + bc6a873a-8e9d-4901-970e-4e769873040a)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 2fdf6d92-bf05-497d-b1be-082ae2bfc752)(content(Whitespace\" \ + \"))))(Grout((id \ + 08fd8118-cf68-46df-9f4c-e60d517fcb32)(shape \ + Convex)))(Tile((id \ + 7c634ee5-b6ad-4e60-a1ac-8f56da4145c7)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + a63a12dc-947d-454c-b1b1-7161215aa674)(content(Whitespace\" \ + \"))))(Tile((id \ + 0f9334ee-1bdc-40cf-9b6f-58fe6bdc93ab)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + df144b08-6d20-4e11-8a10-0af0c509eb9e)(content(Whitespace\" \ + \"))))(Secondary((id \ + 54d73ad5-4629-4898-8a74-12e979918871)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 31c6a068-93b2-42c9-a71d-b16d3c7f048f)(content(Whitespace\" \ + \"))))(Tile((id \ + 3f505df7-a328-4d45-a811-2c6c355cd953)(label(a))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 11ee247a-91a9-4169-a85c-0a13c293b2de)(content(Whitespace\" \ + \"))))(Tile((id \ + 34ca9c74-f656-4b8c-8afb-6433b3488aba)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 05af1d13-4d8a-4b67-85d5-501c72bc0d2c)(content(Whitespace\" \ + \"))))(Tile((id \ + 0fd4bd7c-33b0-42ff-ad0e-7b041c6a4854)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 7b8c4ad6-43ea-4219-a589-b62c7573826c)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 9410ff28-6598-4d54-a937-8d528a4d52f5)(content(Whitespace\" \ + \"))))(Tile((id \ + cb3a4fbc-6ac1-4633-9873-5182610424ff)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 20263dd0-e85b-4840-9b0a-5ea37bf300b5)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 8e8285c8-a16e-4c6d-9c58-180436ca454d)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 08e08e23-695a-4f12-ace7-e7f27ecb372a)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f7f40d1f-9c7f-4f5a-8509-4651a853ee11)(content(Whitespace\" \ + \"))))(Tile((id \ + 1a5f1393-c37c-4e56-996e-1b896672296b)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 9ce44ffd-32dc-4159-9f2f-6d71d7fe5657)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 708a3c9e-7292-4e02-a2e2-3debb4ae1184)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + f99b4fc8-4211-4b61-953d-b345391a2dfa)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 79116db3-94b8-4afd-8ed6-c05838975946)(content(Whitespace\" \ + \"))))(Tile((id \ + f4b8b596-cf5c-4544-be05-8f4076334668)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 93fcc7e9-2ccd-4dad-b55b-932bf474735f)(content(Whitespace\" \ + \")))))((Secondary((id \ + 8c38d970-3c9f-4c85-aeb9-48cddfbcf8d8)(content(Whitespace\" \ + \"))))(Tile((id \ + c0cdf1c5-37e0-4f27-9d65-1f7e8b7974b4)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + a4aaa32d-e542-49c5-af81-0f83b813893f)(content(Whitespace\" \ + \"))))(Tile((id \ + 96f2f3fa-666e-4636-a17d-cf906d747c29)(label(a))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + a2ba97d7-5816-4de0-bfc7-bccecf3f7e1e)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + e90d08d3-4008-47f8-9719-8e5850767521)(content(Whitespace\" \ + \"))))(Tile((id \ + 1df5e4a9-efbc-446f-b348-e2729fa7bbc1)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 9c17b513-e699-4468-b715-e4b3bef16d7a)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + dc6fe2ac-0844-4831-a69f-8268fee4cd5d)(content(Whitespace\" \ + \"))))(Tile((id \ + c7a314cb-ce89-4011-814e-cafb5de89929)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + ecd17226-2fde-4fa3-8ac0-3c5f2b26c782)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + f35b75f3-dbcc-48c9-944c-c64cfa85c0cc)(content(Whitespace\" \ + \"))))(Tile((id \ + 399863c2-7096-4af6-bb8b-69906019eb47)(label(a))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 113a25c0-9431-4175-932c-78c5f11b03af)(content(Whitespace\" \ + \"))))(Tile((id \ + c9c0de07-5476-464b-8e92-b9a68cb7994e)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + bf427820-4f8e-45f6-8284-73d63c6b617e)(content(Whitespace\" \ + \"))))(Tile((id \ + 359007d5-6cd8-441f-9c23-05b0e723cb23)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 9282171f-8148-467b-ad22-90e959765351)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + e00be104-2058-4558-81be-4c95e7dba78c)(content(Whitespace\" \ + \"))))(Tile((id \ + a58bd02c-1452-4a03-9c84-f6bddd6119dd)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 2deb153f-02e6-49b0-97a2-7fa27e44684e)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 08f00ed0-7003-47db-b330-939913302b0a)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 6e29a81c-3bae-4035-8877-6e2e7c4d1951)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 596659fb-ee22-4335-b1f4-01f31c811ecb)(content(Whitespace\" \ + \"))))(Tile((id \ + 6500abfb-77d1-4b10-8d77-721c7e37c19d)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 51053908-2b8c-4779-b9a4-b02be031e7ea)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 59c89ff7-2830-4fcc-9d7e-fa6772eada69)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + fe420401-4767-4801-a917-8196ec3b9195)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 6c023ff7-7387-4969-9430-7a5f358234d2)(content(Whitespace\" \ + \"))))(Tile((id \ + fb4ad5d8-8a71-4cb9-a6bb-e886aafebc1e)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 4e30b722-84f1-4351-9558-3b22b4138087)(content(Whitespace\" \ + \")))))((Secondary((id \ + 07bd7835-aba9-4576-a6b0-5b215203f830)(content(Whitespace\" \ + \"))))(Tile((id \ + 734c36fd-3278-44fa-a630-27c45846ad45)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 28c0b0f3-1d07-4291-b94e-84c3edb8411a)(content(Whitespace\" \ + \"))))(Tile((id \ + be3344ab-13f0-4196-a242-d58ddedb4086)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + 74bca819-f017-4337-9415-6c7abcde4ccd)(label(a))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 433b7881-2167-4c49-b41f-34eedd90a1f5)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + c90e84a5-c611-4465-abe0-f4a0f0dad107)(content(Whitespace\" \ + \"))))(Tile((id \ + 8a2c42e1-3f6a-4f9a-afa9-d8544edeaeb3)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Tile((id \ + b2e834b5-ed02-412a-a5ef-34a5c16b9847)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 892d9e90-2a2e-48ec-8487-8695555e6dc3)(content(Whitespace\" \ + \"))))(Tile((id \ + 1888f269-f7ef-45d2-8512-8d395f78f772)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 2640ea25-cae1-4f62-bfeb-0ee5e6e2429a)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 66c241fc-9f12-42ec-9efd-d0695cf61f8f)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + e70a85e3-9a91-4a5b-8464-6757d36b6cb5)(shape \ + Convex)))(Secondary((id \ + 4a5a880c-1ee3-48ad-912b-5d7ca04bd101)(content(Whitespace\" \ + \"))))(Secondary((id \ + ec8115ee-947b-4f7e-8bf4-9ecc99e9e230)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + e97f099b-5db0-4e16-995e-0e9f35f7d7b1)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 5e268789-9fbc-49bf-a7c8-be69e68b3bdc)(content(Whitespace\" \ + \"))))(Tile((id \ + f96c361c-d526-466b-84c8-7de23fbafafe)(label(a))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 78de6f1c-120f-4090-a3cf-b6970752ec5e)(content(Whitespace\" \ + \"))))(Tile((id \ + e0463001-bf12-421f-b5cb-c2aeb6be4e0a)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 0433e19e-1b31-4c8f-aa0e-bbcdc08ed996)(content(Whitespace\" \ + \"))))(Tile((id \ + 21d714f3-d2a5-4ac0-9488-b3db501e68cc)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a71562c6-dbdd-4ba9-a72a-e27d48aa24bd)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + a8ea80c4-6496-4ce0-a907-98037672582b)(content(Whitespace\" \ + \"))))(Tile((id \ + bef81cac-3090-4851-b59e-4034bf3f7e9e)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + ac4038f0-7de1-4828-9dea-d81b7ff60c8e)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + ea845820-5614-4597-b0b8-34e9b1de2e3d)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + f35a801a-8a84-431d-a9df-544c86be377b)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 8313aa88-1111-4b7f-a9cd-b56edca2aef1)(content(Whitespace\" \ + \"))))(Tile((id \ + 5de2a053-2140-4836-8e14-224bbbf67cc0)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 74dc559d-c97e-41a4-a44d-9ef55f467189)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 4f8e4039-136f-4377-89e5-0de00c9c5cf6)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 4ba7d136-2a5d-414d-955a-8f66fce3bd2d)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 89151a29-cce6-4e8b-9c00-6faf9e160b4a)(content(Whitespace\" \ + \"))))(Tile((id \ + 4dd75df6-e379-4371-9ffa-34f0c9ff7b61)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 514bdbff-46e9-4315-94b4-97783bd08e1b)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 48378b91-cc9f-406a-98a4-8d74ac57e788)(shape \ + Convex)))(Secondary((id \ + 67d6ed9b-e49a-439d-b198-b354334ac8ef)(content(Whitespace\" \ + \"))))(Secondary((id \ + d6f626ee-ef80-4947-894a-075e9b008492)(content(Whitespace\" \ + \"))))(Secondary((id \ + 071e4f9e-9bc8-424c-a944-1c5899681627)(content(Whitespace\" \ + \")))))((Secondary((id \ + 5394fd6d-55cb-4d03-985c-02b3d8961366)(content(Whitespace\" \ + \"))))(Tile((id \ + a0186f29-bd0a-43f1-a0f2-22d73a560b5d)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 7c2b3512-7912-44e7-ac9a-799ca399e4d2)(content(Whitespace\" \ + \"))))(Tile((id \ + c1f22398-3f61-47eb-9d20-ba339a9a8d2c)(label(a))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + c4bba7fb-230c-4b77-9cef-718a198e2327)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + d1c3d11f-29f6-4d60-8b8c-c11cf055c178)(content(Whitespace\" \ + \"))))(Tile((id \ + 4f933492-4ade-4884-a3f1-4ba1eee9297f)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 5680848b-ce89-44dc-8028-81bd8dfe6e45)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + df436f74-5947-456b-9981-9e3018118299)(content(Whitespace\" \ + \"))))(Tile((id \ + fa6a29ae-3613-4579-bacf-2e07389c09fb)(label(a))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 6e6f3ba2-8ead-4042-b51f-c7bcdaa4c458)(content(Whitespace\" \ + \"))))(Tile((id \ + e56f5829-3e0e-4a9d-9631-85f007248a66)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a327b0a0-b24b-466f-82fe-4ea35b4b617b)(content(Whitespace\" \ + \"))))(Tile((id \ + 3c4f6c56-8f8f-4d2c-911f-958798355c0d)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 981d6f5a-a9e0-466f-a4c0-d4618c137a0f)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 9b237eee-32e0-4ad3-8e5e-5f3f4d7d5f6d)(content(Whitespace\" \ + \"))))(Tile((id \ + c758ecb8-91ae-4cf2-b482-eb2c61f6a4d5)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 7c826751-a5ac-49ea-925d-a49796671502)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 78c75c87-1bf3-49ef-a53a-efe6fd959f51)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 4a884c1f-cf71-47bf-a614-19d345ffd1ca)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 160f714e-76b5-4219-8495-8bbeb9896f8a)(content(Whitespace\" \ + \"))))(Tile((id \ + 3b8fcb74-e9f0-4169-b6d8-b695a45fdcae)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 0e13eb73-fcf5-4568-a51e-5a41c56a73f8)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + cc9fccbc-dc1c-46fa-9aae-36da349cdff1)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 2664e9ba-80c0-46ef-ab8c-05c6eb8d2ba9)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 886f81a1-cd66-4790-992a-faef2daf7824)(content(Whitespace\" \ + \"))))(Tile((id \ + e91fdad4-82bd-47f7-a425-881b8b422fce)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 68599205-45d7-4614-94a9-ac84b48fc937)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 59c65e10-9a81-4070-ae86-44ff5b9ce289)(shape \ + Convex)))(Secondary((id \ + 5fe21479-94f2-414c-92ac-a938e4fb0062)(content(Whitespace\" \ + \"))))(Secondary((id \ + ccafed6f-a493-4e20-9dc6-d8e2669a5ac1)(content(Whitespace\" \ + \"))))(Secondary((id \ + 1dd7b3fe-4b2d-4933-8ca4-ccaed398f740)(content(Whitespace\" \ + \")))))((Secondary((id \ + 51e9905b-6f53-4cf3-8ca6-52fda987cb48)(content(Whitespace\" \ + \"))))(Tile((id \ + 94630f19-e1be-401f-9b44-076440cb1a9e)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + f44f94cb-b2a0-49fb-b71c-b9baf92c9f24)(content(Whitespace\" \ + \"))))(Tile((id \ + 4622dd39-aba3-4668-adaa-654ed961417b)(label(a))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + ec32b24b-c1f6-483b-b5d5-fd06024a933e)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 5ce24499-96ae-4a74-b2a9-13cddb41f580)(content(Whitespace\" \ + \"))))(Grout((id \ + b08c9fee-9e36-4b3b-b30c-b0cf238462ee)(shape \ + Convex)))(Tile((id \ + c003c497-f096-493f-9b4a-9c7b547de3b9)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 6ff0b2a2-3cf4-44e5-9db4-5dd98f4f9ca7)(content(Whitespace\" \ + \"))))(Tile((id \ + 34f536d8-c020-4dbc-a269-1f7f0ecfd398)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 13599e43-14f1-445b-840e-51d3be3f6e7b)(content(Whitespace\" \ + \"))))(Secondary((id \ + 3fd11cea-d5c4-4ef9-b938-6d0d036ee281)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 1b3b4787-4bb2-4274-9835-95747fd0f36d)(content(Whitespace\" \ + \"))))(Tile((id \ + 577ef5ff-24ed-488b-ab2b-9047226f4990)(label(a))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 51fdd1b6-69bb-4df6-aa37-b305c5876e34)(content(Whitespace\" \ + \"))))(Tile((id \ + 15ab0441-624a-4370-8461-c15ff7c5aa2b)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 6a0db09c-6038-4b14-9689-ea0e3e922284)(content(Whitespace\" \ + \"))))(Tile((id \ + 53b13857-d843-47ff-a268-05d4b137f48b)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 6ffb31b7-7893-468c-be10-c1ca3aeec81b)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + aaac161f-e37b-458c-8db6-fb176d656910)(content(Whitespace\" \ + \"))))(Tile((id \ + 1a524a9b-dd67-429b-845d-e3eebc20f9d3)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + d52eafd1-b439-4155-a06f-af8fa57c3c01)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 8806bed7-7e74-4ad7-bd03-908bb6b92d3a)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 8d70c9ef-3c5f-4ce8-8852-c887d0df6bbd)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 588413c7-9a41-4dcd-a663-ce8a71232787)(content(Whitespace\" \ + \"))))(Tile((id \ + 0918c04c-58ce-4b4a-b674-ddd13bdc9088)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + f2fdd943-38a4-49be-868f-551b5e4e8a62)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + ff95314a-2a59-448a-91cb-1ea41665a5c8)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 46068684-be56-47ea-8364-a9470099dad6)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + fb5080a6-f268-4d34-b2b3-cf14ee08ee6f)(content(Whitespace\" \ + \"))))(Tile((id \ + de1823a7-a2f1-4a51-9b4e-8912840e67ef)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + b0c9f1c9-5a83-45b2-8431-4d761a9a398a)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + f52d917a-eebb-4dc1-9a76-ec3ac7e334c8)(shape \ + Convex)))(Secondary((id \ + e1ad7bdd-d270-490f-9393-e6788840d8b3)(content(Whitespace\" \ + \"))))(Secondary((id \ + 1949e9c6-c52c-439e-bfbc-3b7e841d9d2d)(content(Whitespace\" \ + \"))))(Secondary((id \ + 769bfcb9-ccc4-487d-bf49-c06aaf82ee64)(content(Whitespace\" \ + \")))))((Secondary((id \ + f9524197-e261-4db8-9fb6-7d93bb19b088)(content(Whitespace\" \ + \"))))(Tile((id \ + db72b634-32b9-43e7-98c2-6184a6c83281)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 547ecae3-5664-4e03-9bff-75a7af435cca)(content(Whitespace\" \ + \"))))(Tile((id \ + e8a65c89-9c1e-4ad4-af3f-4a337006262b)(label(a))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 22e73070-01e2-446b-94b8-41464ff24175)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + d5481b05-3f3f-4592-b1cc-7ca6727dc526)(content(Whitespace\" \ + \"))))(Tile((id \ + 6bdc3740-20b1-4041-b82d-db05a12f27fa)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + a41d0624-2d7a-4ce4-9b2c-00f5ab93b6a3)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + c54283cd-ab5a-4296-a20c-668605ffd54c)(content(Whitespace\" \ + \"))))(Tile((id \ + 38ad3d7c-9721-4a26-a60b-a480602c2ba0)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 26a95aa0-4916-41c0-9f6e-bdd8b5dd2517)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + c587fda8-04cf-48be-be91-f59793b2a1b3)(content(Whitespace\" \ + \"))))(Tile((id \ + 5e438c36-f9b9-4a1a-bd1f-a951182bd756)(label(a))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 2ad47140-867e-4613-907f-b7238c41b8ad)(content(Whitespace\" \ + \"))))(Tile((id \ + 1305879a-485e-408b-ae05-1ab69c10e83c)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 223dc1e1-8647-4ce7-8e0e-87e75c67b413)(content(Whitespace\" \ + \"))))(Tile((id \ + b2669416-0e2b-46be-b416-3df1ad01ae8a)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f3d88687-5683-46f0-bb0e-e675637a38ab)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 00f23ebe-6645-4707-a8d3-a068bafc36cd)(content(Whitespace\" \ + \"))))(Tile((id \ + 6a4c26e1-181d-4001-8334-582e4251021a)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + f5254ea2-ae5a-49da-965c-354479138abb)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + e14346e0-4390-48d6-8257-df82e4c47054)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 395462c3-38fa-43c9-8436-8ea9f4b3ef97)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 8530fc8b-b0d6-4dae-9ec4-c4734ef4f3ba)(content(Whitespace\" \ + \"))))(Tile((id \ + b4f9b65e-c96c-4453-9ee5-c4c7f4d56ac5)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 7c160907-2dd9-4ae2-8995-8aa6880e79bf)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + eab922a5-0028-4211-a2c4-4abeae1b9db1)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 12674297-fbe5-4c49-9e96-2abf3ec9640e)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + b2dc47f3-8ae7-4d5c-ba85-f3e34b255a2c)(content(Whitespace\" \ + \"))))(Tile((id \ + 806579a2-5f5c-4db4-bb44-c9b1e47cdbdd)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 7ad3b972-787b-4d59-beee-cc1e3c4f9488)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 2841681d-6b54-4be4-95ec-4616f4efcfa3)(shape \ + Convex)))(Secondary((id \ + 04ead003-9194-4751-8ae8-b1cf86b01ae5)(content(Whitespace\" \ + \"))))(Secondary((id \ + 9a86e8e2-094c-449d-81a8-63e0b970d42f)(content(Whitespace\" \ + \"))))(Secondary((id \ + 969a0f33-e384-4ac0-aeb0-5feaf54ba650)(content(Whitespace\" \ + \")))))((Secondary((id \ + a7e7f5cc-cdf7-4fc9-8f2c-f0e7d777928c)(content(Whitespace\" \ + \"))))(Tile((id \ + 302b82b5-b847-4354-a263-83cafbaade46)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 54fde547-0723-484e-a2c0-cfca6293af04)(content(Whitespace\" \ + \"))))(Tile((id \ + 080384ee-1937-4627-b9c3-1d44a1039bad)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + fe621d18-a199-4044-99a8-9e5af1cd5c5f)(label(a))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + bddd4394-5867-4787-ad0f-6bc42af709f1)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + e9e027f3-f9b2-4dbb-8013-00e9c9e7f64f)(content(Whitespace\" \ + \"))))(Tile((id \ + 8879a754-5312-42b7-8a5b-611b7606e66e)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Tile((id \ + 034fedcf-7741-4990-b024-1b18224cab51)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 9462a388-8f09-4d9e-8d8d-5320871f0948)(content(Whitespace\" \ + \"))))(Tile((id \ + 120a403b-e816-4400-8da5-17a770d9b144)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + b46908ca-f7a4-44f9-90e0-bed59a3f4438)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 6f9cf9da-85a7-4b98-b51a-bbcdbfaf3472)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 49e768ef-d4fe-4182-bf9c-32fb501c9006)(shape \ + Convex)))(Secondary((id \ + c3b1e2a1-420c-4b3d-89da-c590b7d57cba)(content(Whitespace\" \ + \"))))(Secondary((id \ + fa5c7b61-fe69-4f7d-a85f-408d2c19f2d7)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + a712a55d-a172-4460-a2e3-de391f93009a)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 3c1ccce6-3740-41a7-9714-61494d59a8f4)(content(Whitespace\" \ + \"))))(Tile((id \ + 8c08f5b8-a312-4d43-94b3-e8f41d64ea56)(label(a))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 6006a74c-f6b1-4c70-8106-51763d2b8a88)(content(Whitespace\" \ + \"))))(Tile((id \ + d2e37fa9-dbfe-4597-9805-ab213a208b41)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 3756b5a0-2564-41b4-aa59-612c18b37f73)(content(Whitespace\" \ + \"))))(Tile((id \ + e46d27fa-0dae-4f5b-a5af-9a39e5fc86cb)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + e228e125-3501-4076-b6e4-ba2680d12417)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 22ae36c3-b80f-4728-bd82-928629215942)(content(Whitespace\" \ + \"))))(Tile((id \ + 71a4157f-8ce9-469a-bab7-65f5c72f6b01)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 64af3b09-a5a3-4800-bbe8-eca9cb2fda11)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 8f1813e0-521d-46b1-9881-4d4b34f153ed)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 92484a79-9c21-4583-b55d-bca83fb35382)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + ec4c1a18-6700-4f65-81b1-1746daf0050b)(content(Whitespace\" \ + \"))))(Tile((id \ + 7effe18c-56ea-40b4-8fb4-a18108acbeb6)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 849cbcf1-5025-45ce-bccf-acf86d3d0c8f)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 445a7d03-d6eb-4fcc-a222-038aed01e048)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 5d926892-1a99-4f8b-ae7d-2ba3a482fc9d)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 78227439-828d-48e7-aa75-2576047cce62)(content(Whitespace\" \ + \"))))(Tile((id \ + 73d41a68-3175-4104-9c11-356b5278aa3c)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 6bf2d999-641f-4ea7-9688-d338adc5d4b5)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 2167d358-4a0f-4a69-b711-d2d00fd6b460)(content(Whitespace\" \ + \"))))(Secondary((id \ + bf4be0e0-b6b7-40a2-9936-5b30c72c55af)(content(Whitespace\" \ + \"))))(Grout((id \ + 4abf0c94-cc8d-4cf6-9a4f-596b77886b83)(shape \ + Convex)))(Tile((id \ + 080e0fba-f3b4-406a-bc52-1fc9790f8247)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + fcd27852-8867-4366-82ab-8a86f14df4d7)(shape \ + Convex)))(Secondary((id \ + 71c84ce2-707c-4eef-9331-2e42187d70d0)(content(Whitespace\" \ + \"))))(Secondary((id \ + 649ff12d-0f5c-4c94-a545-c0d935d5cfff)(content(Whitespace\" \ + \"))))(Secondary((id \ + f3019b50-c74f-4a23-8e00-9ac6b6b1de53)(content(Whitespace\" \ + \")))))((Secondary((id \ + 3d97d579-5011-4e31-8694-1e5e76b459db)(content(Whitespace\" \ + \"))))(Tile((id \ + 8b7e5e00-3489-460a-aab3-c9a458041674)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 49ac90da-d790-4480-bd4c-33bc5d4fa016)(content(Whitespace\" \ + \"))))(Tile((id \ + d6c67aab-bb93-4805-ae55-37c283d8ad7b)(label(a))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + fdd53596-ea98-4510-b997-f2d53ce4561e)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + af47a325-997d-4f97-a611-c82df473381f)(content(Whitespace\" \ + \"))))(Tile((id \ + fb2b1f51-3298-4121-8cbb-134507d84091)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 541cef2f-c9df-496a-a353-876f96bce8b4)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 69bd9432-f733-4df0-af4e-07e6ea9825be)(content(Whitespace\" \ + \"))))(Tile((id \ + 25fe1452-68e8-4b6c-ad91-87bef4266c69)(label(a))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f6cef768-dc51-4ae4-b5f5-69f1026a3731)(content(Whitespace\" \ + \"))))(Tile((id \ + a31e74e4-30f0-4328-85d1-686cd2954c91)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + b3f5a747-7a61-4393-9da4-953a89ea697b)(content(Whitespace\" \ + \"))))(Tile((id \ + 130d4823-80b7-4e70-b9c1-53c8464cc96e)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 3a0a21b0-0441-4afd-9bd9-d2883ea6985b)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 92d3dc42-f5f0-4df8-98e0-5473fab1b249)(content(Whitespace\" \ + \"))))(Tile((id \ + 79b45272-de5b-4471-b893-b71f6a38e306)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 9e3a1f40-64cc-4ce2-ac49-3679b5fe35e2)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + ae29e4d4-7dd9-4765-b2c5-b286db3e9ca1)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 501efae8-0d02-403a-b43d-4b96c6cd5cdc)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 45db7ca5-2d7d-478d-b678-71059ee0bf82)(content(Whitespace\" \ + \"))))(Tile((id \ + b0be5df8-cfa0-4dd2-9833-b0154c70dfc8)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + ea02bd03-e77a-46ce-9402-3d18a13500a1)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 61fc7047-e4b5-41ab-9349-51804a5dad2b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d625be96-fb0f-4ec1-965b-b36a310356c5)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 3346918c-5de4-4380-b7bf-983770dbdf55)(content(Whitespace\" \ + \"))))(Tile((id \ + 86a0461f-0286-495d-a979-f9a153bf440b)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + dd7fe18a-ecee-471f-a879-b26e3d233dc2)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 015a5ce2-d221-4141-9119-a9dd23ce66b5)(content(Whitespace\" \ + \"))))(Secondary((id \ + 3748be85-000f-4b4e-ae7b-eae258f8cec8)(content(Whitespace\" \ + \"))))(Grout((id \ + 84a4dbd8-f6a2-40ee-934a-0c4b2fa73545)(shape \ + Convex)))(Tile((id \ + 40f12435-4cb3-4ada-881d-eb1bd59e1677)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + f09063ab-291a-4d0c-9357-5bf017bd4ad1)(shape \ + Convex)))(Secondary((id \ + 697f6c93-47fc-4e43-a210-699c5a91ae1e)(content(Whitespace\" \ + \"))))(Secondary((id \ + a8cff37f-d20d-47c2-8c42-6dcbbb58ebec)(content(Whitespace\" \ + \"))))(Secondary((id \ + 19748f4f-bff1-46b2-9a5a-3a398b5e8e04)(content(Whitespace\" \ + \")))))((Secondary((id \ + 9f778a0c-0fce-4deb-935f-7c8a5f4ed963)(content(Whitespace\" \ + \"))))(Tile((id \ + 239d2509-e0db-4696-950d-a17acd4746e4)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 2b87fc41-faf5-4f43-a5ae-3a953f6bb3c8)(content(Whitespace\" \ + \"))))(Tile((id \ + 170ed6f3-180d-422f-9ec3-1fe79a017bac)(label(a))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + c403741c-61e1-4a7d-bf8f-aab2714035fb)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + a456d165-1014-4ece-8ff3-65d980754c5d)(content(Whitespace\" \ + \"))))(Secondary((id \ + a5dd89a3-6bfe-473d-be59-2d8510084b87)(content(Whitespace\" \ + \"))))(Grout((id \ + 9a5a57ba-7fd1-419e-88c9-9d678c421528)(shape \ + Convex)))(Tile((id \ + 4b72b557-625f-4bd0-a3e6-1d893a913fe2)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + ea5dad31-fa71-4ed0-bb9b-3729cc6c60e8)(content(Whitespace\" \ + \"))))(Tile((id \ + 2f75b5d2-dac8-4e96-b1fe-fb20661e815d)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 293b37af-4fe1-4822-9640-41696a0d5dcb)(content(Whitespace\" \ + \"))))(Secondary((id \ + 1c542d7d-962f-4558-a39d-a666ad67bf44)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + fe71147b-6655-46ab-b0a7-845eb47fa595)(content(Whitespace\" \ + \"))))(Tile((id \ + 9261fb87-4189-4b5f-a4e6-1e21b0b4729a)(label(a))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 8eb5744b-358f-41d3-a484-9d1be69a6fe7)(content(Whitespace\" \ + \"))))(Tile((id \ + e0b93445-c49e-4af2-bae9-7260f5f0494c)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + d403496b-ccbb-48b1-8a6a-79994e331142)(content(Whitespace\" \ + \"))))(Tile((id \ + 628d219b-3844-497d-acf3-d6906e71ad5e)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a3a0da08-2979-4421-9acc-fc8c9f1bf9bf)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 906625c3-05ce-4adb-b987-bc3931798668)(content(Whitespace\" \ + \"))))(Tile((id \ + 2d5f3fc3-72f2-4e4c-b3d8-8e34e966ee17)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 62c113a4-2abd-47ee-9cb1-49dc00f1ba0d)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + c1ac6161-d471-4523-9b42-1a39ed0a18bc)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + af1131ee-b56f-4503-978e-1c5fa6af9e9c)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 5ac33347-e517-4b9f-84c0-ba3a3201b496)(content(Whitespace\" \ + \"))))(Tile((id \ + 51ee0c63-a223-4cf4-9335-585535f92f12)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 0081d95b-b438-4f2e-adeb-b7b797627447)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + e14f57ab-f267-45c0-85b3-b07e5d856269)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 295028a2-3ce4-49c3-91f4-8421256d5aac)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 193e459a-6a83-4d20-a445-d0ca3e0aa711)(content(Whitespace\" \ + \"))))(Tile((id \ + c1eabaf8-2eb6-4f07-a16b-7e0321ab34f6)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + dd895c62-5adb-4ce0-88ed-7db656306bbf)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 4690664a-f922-4620-99c0-a13c45a973ae)(content(Whitespace\" \ + \"))))(Secondary((id \ + 123a2b5b-b75f-4e75-a50f-4e049db0a787)(content(Whitespace\" \ + \"))))(Grout((id \ + a2e478ba-36a7-41d9-9a39-7831ceb93168)(shape \ + Convex)))(Tile((id \ + c4842cac-e5e1-4b12-8190-ae237261948a)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 11b87ab0-b173-4c7f-904c-3f0f6cd38a6c)(shape \ + Convex)))(Secondary((id \ + a5e5e515-0398-4227-bae3-7e1d3ab4088d)(content(Whitespace\" \ + \"))))(Secondary((id \ + 78675615-c06b-493c-bdc7-31c9e1a71f64)(content(Whitespace\" \ + \"))))(Secondary((id \ + 0f12b2f5-a0a3-42eb-9841-65fcd4b17622)(content(Whitespace\" \ + \")))))((Secondary((id \ + ef873d46-5e64-4393-b815-f85d09aaf097)(content(Whitespace\" \ + \"))))(Tile((id \ + adeaa9a8-f7c0-491f-a86f-6f4e573119fa)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 480cbf26-7bf1-4dde-a11d-cd9a3c784307)(content(Whitespace\" \ + \"))))(Tile((id \ + 7685fb4c-98c5-4cc2-a8af-0333ec41b51f)(label(a))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 7d960d16-91c6-4d23-8e9a-ed26f4be9801)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 4f83eecc-b187-45f8-9784-877665a45a90)(content(Whitespace\" \ + \"))))(Tile((id \ + d0eaf2fb-0ce0-4a2a-a7e7-5129fb36a9ae)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 13616c24-d14e-4503-9f2d-24311f7142c5)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 08c5bfc2-9989-4ba5-b33d-83c0ad686d8e)(content(Whitespace\" \ + \"))))(Tile((id \ + f34dc9f4-43f7-4b4d-b87a-2280cb6e68c8)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + bdac8a5e-eb25-4418-b076-6d20660bf23a)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + a65a5fb4-f650-4b44-b6e7-65d69db483e7)(content(Whitespace\" \ + \"))))(Tile((id \ + 36735ffe-8a40-429d-aef1-f28220fc9548)(label(a))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 62fae7b1-a85f-406f-b42a-c9d23e11f27a)(content(Whitespace\" \ + \"))))(Tile((id \ + 942bad54-7d36-40c8-b83b-89559a6ce004)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + e7baa58c-aae7-4e4b-9b8a-912d761cb415)(content(Whitespace\" \ + \"))))(Tile((id \ + 05f965cd-de14-4e61-9afe-eafa91fb6526)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 73625cb6-76b2-40ea-ad68-cd5b1ddf9c5c)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 34985849-d438-4551-9962-d8076805220c)(content(Whitespace\" \ + \"))))(Tile((id \ + ba2667af-5b5f-4cdf-bf28-b2ec7d910143)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 74d59911-c7fb-445c-b808-f8f6ca292a0f)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + ae7b522f-710f-4ee0-89ba-4d7656b7a569)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + d8ceb537-4e43-498f-ad8a-aa8018986ddd)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 075edc4a-286d-450b-8e34-ad506c9a8e24)(content(Whitespace\" \ + \"))))(Tile((id \ + a6a5be6d-b11e-4492-9297-b076924e611c)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 1b91d7d4-689d-4758-9ab4-849c73a95988)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 5801334c-7b19-43ec-9a23-a57cd91dfef5)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 4784be6b-aac8-4074-8fb5-c2d56d922642)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 01ac6af9-3fd8-457a-8309-02eedc9357fa)(content(Whitespace\" \ + \"))))(Tile((id \ + e81fa8bd-0208-4d16-b5c2-070574775b37)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 16792ef2-b245-4c35-af9d-b850563dd853)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + dea95d53-1e5a-4435-9ee9-8b5ea379d672)(content(Whitespace\" \ + \"))))(Secondary((id \ + 1087164e-19c8-498a-9049-80f5b349f791)(content(Whitespace\" \ + \"))))(Grout((id \ + 20e37104-d952-4bbc-b6be-4c2f6e5ed58f)(shape \ + Convex)))(Tile((id \ + f32cf633-09b0-4ea7-8a54-0137c0af4835)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + e03c3ca9-0c90-494b-9f41-23bce1b882b5)(shape \ + Convex)))(Secondary((id \ + 216f6702-fc94-4f2d-b957-95df48f24ffa)(content(Whitespace\" \ + \"))))(Secondary((id \ + a68f2ba2-b02f-4e2d-9ff3-59db489401c5)(content(Whitespace\" \ + \"))))(Secondary((id \ + 0824765b-7b74-4ff7-bbd9-60471f543c4f)(content(Whitespace\" \ + \")))))((Secondary((id \ + 3f96ff97-8384-4e35-b711-43f834e66941)(content(Whitespace\" \ + \"))))(Tile((id \ + 677b6530-a329-41cc-8731-9c2b8695cf3f)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 65182407-4ede-4942-8b97-6d5c3a15dade)(content(Whitespace\" \ + \"))))(Tile((id \ + 71de9629-e701-4c79-99a4-8ba69db8431b)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + 4c07c419-2a10-4668-96fc-aa784e388c59)(label(a))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + e9af1d9a-0b31-4c71-80c3-6013787e024b)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 904078a4-049c-4047-b96c-e66b938e76b7)(content(Whitespace\" \ + \"))))(Tile((id \ + 63fdef68-cc87-4060-a166-fa2108be6d90)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Tile((id \ + d46777a3-c613-450a-a8d2-0381e4387950)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 6f206cdb-a76a-46a1-af12-e859c5584980)(content(Whitespace\" \ + \"))))(Tile((id \ + 087add82-77eb-44bf-800b-a0c4d350fd3b)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 638a72da-e2f0-40f2-b9f9-b3e0177663e5)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + a02e4530-703e-4392-8b25-a63a6116c984)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + bf5dc96f-2fba-4b50-a441-2b201a061500)(shape \ + Convex)))(Secondary((id \ + 653c65da-53be-45cb-9da4-dd484fd7a703)(content(Whitespace\" \ + \"))))(Secondary((id \ + eea31b95-8506-481f-92a6-cba41a19247d)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + bc23a34e-bb24-4dcc-9fd5-16531dcd2f43)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 77374c90-5488-4be8-a13d-5ada491fd096)(content(Whitespace\" \ + \"))))(Tile((id \ + 171572bb-446f-4e67-ab14-9a757706f5f2)(label(a))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 3705eb7f-991a-402c-a12c-333b9f8e83df)(content(Whitespace\" \ + \"))))(Tile((id \ + ec6e4dbc-4b5a-4547-9792-342b79568cd0)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 72eec4ad-1779-468b-98d9-11e9dffbddc2)(content(Whitespace\" \ + \"))))(Tile((id \ + 51ba0778-4c11-46f3-b6d8-c72feb736cfe)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + cb88c4ba-1178-46e8-9221-9fd4f4f4dc45)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + e8f4ded3-3731-4656-951a-ec3e8d4bc07e)(content(Whitespace\" \ + \"))))(Tile((id \ + 557d9194-e948-4d44-a147-26245b0841f4)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 4ab0085b-ae43-4a0b-a5bb-82fcc89d1c16)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 44811b93-d85d-4822-9c16-3fd0a0557bff)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 33d8f49e-8b26-4bbb-84fe-64b520a6c7d1)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 8a8ce6d2-f2a8-4e34-8c20-42bf2ffa68c9)(content(Whitespace\" \ + \"))))(Tile((id \ + 7a4c3917-381e-4fa2-b933-65b610b9faf7)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 578f4bbf-4d56-4507-81c5-0c21160d6d73)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 5a31cbd0-f9a4-4038-a7de-cffb1628f225)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + e91ab766-2e5e-47df-9880-416186f304e5)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 6448c51f-80d6-4afe-a297-c75b7e468a99)(content(Whitespace\" \ + \"))))(Tile((id \ + a46da087-3433-4654-88e3-4a7f6d422821)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 072d6af1-94a4-4032-a8f7-3def69d0a07c)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 3038b770-0df1-4212-b762-95cbde5f327e)(content(Whitespace\" \ + \"))))(Tile((id \ + 6fb025a5-c0c1-4613-a067-3866714cbf40)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Grout((id \ + abb26a18-8364-4e16-90df-6547f7cffe5d)(shape \ + Convex)))(Tile((id \ + 914d5f5d-efc8-4fe5-9986-2388663820a1)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 061bb903-58e8-456f-938f-739acda10415)(shape \ + Convex)))(Secondary((id \ + d1fac0d0-8273-4b40-bd3c-80540dbb49bf)(content(Whitespace\" \ + \"))))(Secondary((id \ + 10e3fb0e-9faf-4a89-b2e8-ee95afebf1ba)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + af376a6f-dfde-49d7-af95-47925e3f6206)(content(Whitespace\" \ + \"))))(Tile((id \ + 6f68afc5-fee7-49d2-a36c-3a47f8b3ac2f)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 9613b237-74cc-45ea-b5c8-2b17bdd9618f)(shape \ + Convex)))(Secondary((id \ + 0b31ee1d-0ad9-474b-bddf-00154d216769)(content(Whitespace\" \ + \"))))(Secondary((id \ + b410dbb1-fabd-41ca-b784-b99cdcfc5eba)(content(Whitespace\" \ + \"))))(Secondary((id \ + 8fd5f496-31bd-4e3f-b51f-0b6a51ca2dcd)(content(Whitespace\" \ + \")))))((Secondary((id \ + 3282d800-60dd-4de9-a28e-bf7e684d9b8a)(content(Whitespace\" \ + \"))))(Tile((id \ + e7f2229a-768a-4ad8-b720-4dc50f88daca)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 5b0edbcc-38ea-4108-9bdc-4c6b8394ac8b)(content(Whitespace\" \ + \"))))(Tile((id \ + 9c9f5baf-4414-4d97-8160-774712d7f699)(label(a))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 8a3ef432-cd29-4937-b9bd-312829df51e5)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + e83f627b-0105-41ab-aa9b-980231731d2b)(content(Whitespace\" \ + \"))))(Tile((id \ + 9751b2c6-b35d-43cb-b986-c3c138ffc44d)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + e8b29464-2ce0-47c4-97d1-045478b68af4)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + c4caee35-a182-46b0-8c31-ab1f14865df3)(content(Whitespace\" \ + \"))))(Tile((id \ + f89c6f23-2126-47bc-bfbf-03a141f18881)(label(a))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + c8b42539-e3db-4527-92ca-a28898cc31a0)(content(Whitespace\" \ + \"))))(Tile((id \ + 793e3c7f-1a50-4f0e-9e3d-a954b62ebb3b)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 506ee6ac-f965-4695-86fa-4b6f65c40880)(content(Whitespace\" \ + \"))))(Tile((id \ + cf41bcdc-fdb1-4fba-9c9d-d9a095157908)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a2fcc73f-c20e-46ba-a083-d59bf02a54be)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 01c8a13d-464f-493d-b285-b6884c9cfe6e)(content(Whitespace\" \ + \"))))(Tile((id \ + 27fa1b9e-1c83-4366-813b-59aaf302a5ef)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + de6c5fd3-529b-4805-83d9-5b123615c295)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 32184568-a8fb-4504-ad5f-4e79abb70bc1)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 7625ed65-dc23-481d-8cf4-7bec9ce2d61b)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 2d64477d-0af4-4e4b-9fc5-6759029362a4)(content(Whitespace\" \ + \"))))(Tile((id \ + eac776ea-6d34-4d5f-8b0a-a5bc742778da)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + fb93ade1-a5bb-4e65-9f2a-f7ce945af7ae)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + b48b8eae-4690-4248-a8a9-e00392cc76a3)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 249e737b-7462-4cda-987f-dbd1c040a305)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + ab2e61f8-918a-4a8e-804b-6b8258d068ea)(content(Whitespace\" \ + \"))))(Tile((id \ + 239b9b3a-655b-40e0-ba7b-21e7731d12a8)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + bcb33fbd-3493-4e9f-8a95-362ec76b082a)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 855d053d-78ea-4ebc-b206-5d5400dfee1c)(content(Whitespace\" \ + \"))))(Tile((id \ + 5a9ac697-149d-4cbf-b476-aab022ee05e1)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Grout((id \ + 8f5dd867-a41e-4363-926f-c989367cd3bf)(shape \ + Convex)))(Tile((id \ + a6c7aebb-51f2-4b36-ac15-be1668105a95)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + e4d0ad35-d7d6-4bf1-8ee3-f5e39a905fe8)(shape \ + Convex)))(Secondary((id \ + ab7b2100-5e43-4d55-b7bb-f742bb65f8ab)(content(Whitespace\" \ + \"))))(Secondary((id \ + b393f5db-c3c4-4e85-86ff-0fb0662bc978)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + f9757c3e-4bc4-449e-822c-9035e2e36eb8)(content(Whitespace\" \ + \"))))(Tile((id \ + 74f56b23-6fb8-4e03-96b2-06ea9e7040ed)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 6d983f70-23d1-463d-adc0-a3709a640952)(shape \ + Convex)))(Secondary((id \ + 196b58a4-63de-4642-85bb-175c2ea9fd1a)(content(Whitespace\" \ + \"))))(Secondary((id \ + 1329bb91-6f9f-4c47-9109-da58bb468bee)(content(Whitespace\" \ + \"))))(Secondary((id \ + ffada2ab-fc36-4533-86ab-de10f916869f)(content(Whitespace\" \ + \")))))((Secondary((id \ + f40d6acc-e229-4f0e-9184-83d9349dcf7b)(content(Whitespace\" \ + \"))))(Tile((id \ + 4c338a43-8850-43e6-afc9-be37ae180fdc)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 534da083-b8ce-459b-b75f-88af8447cd42)(content(Whitespace\" \ + \"))))(Tile((id \ + 6ba8154a-1771-4256-b396-678df94f8799)(label(a))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + b1250a41-9d06-4016-936a-951599368c67)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 776456c4-5444-4a55-841e-3c9ad0e0620b)(content(Whitespace\" \ + \"))))(Grout((id \ + 0ed1f5e7-1207-4b48-bde6-af2b757e9f71)(shape \ + Convex)))(Tile((id \ + 649ce7e2-8418-495d-a672-b758cdece86d)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + fff13e2a-4465-4e20-b5ba-25100a3b1c34)(content(Whitespace\" \ + \"))))(Tile((id \ + 820aa7a6-d0ef-4680-845e-05ae7b496bd1)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 43a7d8c9-79c2-4a16-8504-4ce744835909)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 072b6626-4224-438a-8153-083b3b5cf909)(content(Whitespace\" \ + \"))))(Tile((id \ + 7d4ca940-d58b-4a51-b2a4-6c46f63bb321)(label(a))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 61afc556-4ad7-44f8-aa2f-a9ccf2777603)(content(Whitespace\" \ + \"))))(Tile((id \ + aaad6f7a-5f9c-4d97-93f3-60736e0e1b34)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 9d2e0609-d39c-42d6-9115-6f55f381ae68)(content(Whitespace\" \ + \"))))(Tile((id \ + 10dbe8de-b23d-4d56-a5bd-195980d3e27e)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 2681e2bf-4a97-4b26-adba-f80d88129390)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + bfb0bc27-e706-49ed-bed3-343d8fe52c92)(content(Whitespace\" \ + \"))))(Tile((id \ + 4c2b5934-01d6-4447-8b62-e1243765a918)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + c312395a-d53e-4841-973c-2f70d81bd841)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 31a6bc96-cfde-4df5-b3fb-b35b53bb45f3)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + d773d0fe-76f2-4e64-b241-48a9802190c1)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + bf8dd4e7-b0b1-4926-8d19-b6cdea0b4c4a)(content(Whitespace\" \ + \"))))(Tile((id \ + 52c87b39-533a-41a5-b2d3-ecb7b7e09b9d)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 77fc0afc-64b0-4b62-9923-01c233655640)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 3d4f21cb-318b-44eb-8f72-efddcfe42c3f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + c497a148-10d9-400f-803c-e5548b970239)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 4e5f892c-5624-4ba0-877c-ccf641e44ada)(content(Whitespace\" \ + \"))))(Tile((id \ + 87f24316-5f4e-414a-a979-eae897c60f04)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 020719c3-8271-4308-924e-17d12fc562dd)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 901e7b31-f793-4763-af03-e436ea2169ba)(content(Whitespace\" \ + \"))))(Tile((id \ + 856c69d4-5ede-4311-a698-b6f151ed6b92)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Grout((id \ + aa044aed-35a7-41fd-9251-d9e3b1964b62)(shape \ + Convex)))(Tile((id \ + f34cf6f7-bbfc-48de-b5bb-a95a084b32e2)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 35351958-a081-4ba3-8102-519ceaa460dd)(shape \ + Convex)))(Secondary((id \ + fbb9e319-e64d-482b-bd3b-daef1c8e800a)(content(Whitespace\" \ + \"))))(Secondary((id \ + b6383ff0-91b5-40e4-a7e2-c6b5c46e4890)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + a0e9f0c3-86c5-401d-b475-59d17c414966)(content(Whitespace\" \ + \"))))(Tile((id \ + 72657097-7b58-4dff-bc2c-83d73f538d45)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 9bfde24d-4ef0-4dc2-ab96-ac55fb65de8f)(shape \ + Convex)))(Secondary((id \ + aa2494e4-13cd-4758-8a46-2597daf09c41)(content(Whitespace\" \ + \"))))(Secondary((id \ + bfe5e1c9-9c69-43ca-ba16-ae36fe57904b)(content(Whitespace\" \ + \"))))(Secondary((id \ + 04cbb703-fe6a-431d-a7c2-326e4e6fe519)(content(Whitespace\" \ + \")))))((Secondary((id \ + 9fda2313-41ed-4929-b39d-d2e819057b01)(content(Whitespace\" \ + \"))))(Tile((id \ + 93bc7e43-afa4-4f4c-9862-e580158dc828)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 0ac577f5-b8b5-40ef-9d08-173792993634)(content(Whitespace\" \ + \"))))(Tile((id \ + ae0d121d-1143-436a-9741-a763b0dfdf00)(label(a))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 6aaea59d-b0a5-4e34-996c-5a21aa20bc76)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 33f126bd-42a9-4371-b630-847dc42755b9)(content(Whitespace\" \ + \"))))(Tile((id \ + 493f02cf-9ceb-4e21-afab-d3b601c47b18)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 6b92ff6d-971c-4992-9f64-bc8c4451b443)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + cc01eba7-de02-448e-ada4-74122754b6cc)(content(Whitespace\" \ + \"))))(Tile((id \ + 0d10179e-353f-4668-829d-d7f9efaa9009)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 39136aae-8579-4a60-b784-83b9564d6ad5)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 8fdf301d-12bc-4cda-8a96-b655327d22e3)(content(Whitespace\" \ + \"))))(Tile((id \ + 06316225-a915-46a7-8a46-2c2a41ab5c6e)(label(a))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + b1f396df-c42b-426a-af63-e32ad23c66b6)(content(Whitespace\" \ + \"))))(Tile((id \ + 393997ef-d898-41b1-8ea5-77ccb7688570)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 3ea85289-f845-48d3-9215-1e6c6deaea89)(content(Whitespace\" \ + \"))))(Tile((id \ + c8ccff99-0b00-41a4-a306-5035cddb3693)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + ce407ed0-d44c-4e84-ad83-8934db80e6a4)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 90af6c58-0b3d-4556-b921-12f1eb895618)(content(Whitespace\" \ + \"))))(Tile((id \ + 3668e811-b918-4386-b78d-2dd800c9c0b2)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 680d3017-66a5-49d4-9337-35bfd56d9c42)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 21cdc7d6-400b-422f-b6d8-87863509eda8)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 4db36db2-d937-469e-8501-5c4a6627a282)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + d5fb6cf3-2516-43dd-881a-a13c85df28b2)(content(Whitespace\" \ + \"))))(Tile((id \ + 76602b5a-9369-4d20-90b5-1eebb367c4bb)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + c243a46a-10bd-4f86-a80b-3b6f94db9b89)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 90b1ad9e-a0ab-4b09-b59d-50124a8a9b0e)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + def5d21f-6b1e-458e-a61c-3839eaa2df48)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 63279d89-32a6-4c9f-a91c-b5707e335bd9)(content(Whitespace\" \ + \"))))(Tile((id \ + 6ad6b968-b933-424b-b840-581a0165cc98)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 9bc7a73f-aa25-496c-b777-e0b11ab6159d)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 13760f56-38e7-4641-8187-d77e1462bf17)(content(Whitespace\" \ + \"))))(Tile((id \ + da0c998e-d726-4174-ba68-20936cf2f251)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Grout((id \ + 3669c5a2-0c11-469a-b91a-93575fa3afba)(shape \ + Convex)))(Tile((id \ + 5a694cf5-1c13-49af-8fd5-876c64002b6c)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 24a8484f-e471-4bdd-93a5-4aaf6f44e9d2)(shape \ + Convex)))(Secondary((id \ + f04be29f-40d3-4bf5-b424-99c06bf3095d)(content(Whitespace\" \ + \"))))(Secondary((id \ + e18df519-621d-428b-955a-28f5648c3d42)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + fa73b247-4f0b-4fd8-9690-51f0249d4144)(content(Whitespace\" \ + \"))))(Tile((id \ + de246edd-2272-4f7c-af68-19bc4414c199)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 22631d33-fb4c-4978-816c-e2af9acfef79)(shape \ + Convex)))(Secondary((id \ + cfded247-2e57-4a79-b472-95d5a8600d15)(content(Whitespace\" \ + \"))))(Secondary((id \ + 3cfbb36c-12b8-4430-a2a4-b133cfc3974f)(content(Whitespace\" \ + \"))))(Secondary((id \ + bfaab898-1775-450f-882a-3dd08f985489)(content(Whitespace\" \ + \")))))((Secondary((id \ + c7e883b3-42e3-46b1-9dfc-97656d7be54a)(content(Whitespace\" \ + \"))))(Tile((id \ + b3140d37-9cea-4dbf-93ba-6134296486ce)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 7c4a3fc1-3a07-4ccd-9faa-908668202e26)(content(Whitespace\" \ + \"))))(Tile((id \ + 1d0414eb-36be-4862-a175-e4d6a7cec02f)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + 369c17c8-794d-4aab-8bc6-8a7c7ba854b5)(label(a))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + ab148e68-bafa-4082-b20f-b4163ff35892)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + c07e8d76-a161-4583-b953-ca7d9bf2a0c0)(content(Whitespace\" \ + \"))))(Tile((id \ + 7a7bfb79-5e3c-4591-88f6-22e5df3e33ef)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Tile((id \ + acb3da75-9cd4-4baf-b2d9-45c8ec3b39e1)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + bcb74525-4b49-4270-aac7-7aa74cf41f67)(content(Whitespace\" \ + \"))))(Tile((id \ + 600185b8-e4f6-4983-b503-5c67dbfb394f)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 825efdd7-2e52-4613-8ea0-23f1f08a5c8f)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 416a3ca4-5560-488a-a774-be822a2a7e32)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 15708ed5-f452-4958-a896-ea9fae8491b0)(shape \ + Convex)))(Secondary((id \ + 37fb9d0d-9315-4c67-987c-236d46a1b702)(content(Whitespace\" \ + \"))))(Secondary((id \ + 9e538009-4c7e-4c7f-b695-3bdc6befaffd)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + e0631ef1-e8ca-444d-baf8-463265173097)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + eba08687-8d35-4697-af6b-2812d6461973)(content(Whitespace\" \ + \"))))(Tile((id \ + 7c5b8c16-96d3-46da-b8ea-afceae9437d5)(label(a))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + b91ff2ee-f8ee-4c61-b0f5-9115f6c0f230)(content(Whitespace\" \ + \"))))(Tile((id \ + a006a807-6a04-4f10-87ec-54487587aadd)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + ba3ef35c-d7ea-4e3d-a353-5715c665edbb)(content(Whitespace\" \ + \"))))(Tile((id \ + 08f3255f-fb50-4034-b5b3-9de9e8a1375b)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 8628da55-6d68-428d-8067-26879297a915)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + abf3eb4d-ca65-45a5-9113-fefba16ac490)(content(Whitespace\" \ + \"))))(Tile((id \ + 97122918-d74c-4094-b55f-07f8f9d3fb5b)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 3007137a-f275-4b2d-aeba-fdc5c734e34d)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + da501029-8b89-483d-b62a-1035209f21ae)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + fb3441c0-a2d6-45b3-ba4a-fad65d2cffcf)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 6974d029-9697-4cb9-aee8-8a2fc801adad)(content(Whitespace\" \ + \"))))(Tile((id \ + 6f02e6fe-3354-42ce-af69-36f1c2411215)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 915fbcf2-5371-450c-9b2e-67e891528a3a)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + d9be22e1-cbbe-4821-bd9f-26608d605971)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + bf560209-22f4-4ee0-bd63-569256e742e7)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 80ac1a50-c17b-4403-a0a6-bcb3b464e877)(content(Whitespace\" \ + \"))))(Tile((id \ + b36b16ef-cf98-44f2-a266-72ad615a819d)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 54b60b1b-fb9b-4159-9699-b283f3c8b73d)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + ad030d34-b50d-4247-8c95-ee49be92279c)(content(Whitespace\" \ + \"))))(Tile((id \ + bd41a1f4-e654-41f1-a9aa-44c2caf97687)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 1602a4a2-e4cb-4f9c-91cf-99fdfed14c92)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 0d544688-8378-4763-973d-0142b040ef3c)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + d9d067c7-ae3e-46cf-9520-f92e45e3bd90)(shape \ + Convex)))(Secondary((id \ + 607a5271-42e8-4f70-8d7d-7265f5a37e11)(content(Whitespace\" \ + \"))))(Secondary((id \ + 425cbee2-8599-4d9b-9bb8-7d4b74e07400)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 31e910a3-4e72-4adf-b897-e52c3b081c11)(content(Whitespace\" \ + \"))))(Tile((id \ + b7a4ac2c-7706-4377-8143-58a9c0dddc05)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 13c642f2-d87b-455a-9803-fa66c8f68c70)(shape \ + Convex)))(Secondary((id \ + 620216db-24ef-41a9-93e5-7f4c86674e2d)(content(Whitespace\" \ + \"))))(Secondary((id \ + 2e0af26d-3f9a-492d-9511-120e00c895f9)(content(Whitespace\" \ + \"))))(Secondary((id \ + af907e4b-a3a9-487e-bb69-6c6bcfae8c26)(content(Whitespace\" \ + \")))))((Secondary((id \ + a07a4037-3c49-444e-9406-ac293aa962ae)(content(Whitespace\" \ + \"))))(Tile((id \ + f01f6941-3084-4711-9593-85eaadad4101)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + e4e8a34f-56f5-4bd6-a10a-3e6b46fa24e2)(content(Whitespace\" \ + \"))))(Tile((id \ + 32161cc2-6f99-4954-bdd7-34cf8f0ca2d2)(label(a))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 9274b0d6-af2f-4ae2-8cdf-fe3678efa264)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + b7ca123b-74f0-4d2e-9c29-8284e2afe6b7)(content(Whitespace\" \ + \"))))(Tile((id \ + 0575a076-e79c-411e-83ef-a100b0917804)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 37f0e61d-c395-44f7-ab59-bdb9b162b1f0)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + f1640ff3-9870-48f8-800e-ca5f4ec1ad9e)(content(Whitespace\" \ + \"))))(Tile((id \ + 38d71e64-e6cd-4040-a7f9-4342a7632a7d)(label(a))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + d2ceb287-f66b-4499-9b64-445ef3f32c07)(content(Whitespace\" \ + \"))))(Tile((id \ + 04053ae5-9986-43e7-8081-c00a8f699105)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + e16a258f-cac7-4e38-b790-a7e57addc69a)(content(Whitespace\" \ + \"))))(Tile((id \ + 788d35a7-8e52-4b3d-ae51-82e464d5815b)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 219ca7c2-32c3-46c4-88c8-c07a44f70546)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 69ed07ee-5be8-4064-84fe-b37022365ea7)(content(Whitespace\" \ + \"))))(Tile((id \ + a17a73c2-0f68-49f7-bbb7-550085684c5f)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + b1ae580a-12f9-4106-a59c-86c97ac196ef)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + d1409192-3c6e-4276-820c-5ac263859192)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + ee65c7d4-9367-480f-bc8a-42714e9e771a)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 9f0c9bf1-ec71-460b-92fe-7d6f8ae80037)(content(Whitespace\" \ + \"))))(Tile((id \ + 391c7891-6ee0-413e-b61d-ff4b533485a1)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + bf8fa20c-d917-47ce-916d-b4ad8a624d01)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 26afcff3-cf21-480b-b10f-11b60d0f7314)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 859b9124-2bd1-4ef0-a9b0-440c5346fc51)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + a4fa0510-6ae2-48e6-8b02-0443d33bddce)(content(Whitespace\" \ + \"))))(Tile((id \ + c29e4914-8d49-4e69-be7a-c07f72f9de4f)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + c015d488-3679-442b-a2f0-fb95ec525321)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 15c2b6b0-297e-4582-97d3-369dc2a80d7e)(content(Whitespace\" \ + \"))))(Tile((id \ + 2bc80c4d-768e-433b-926e-c1e6f16c2e40)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + bfd24439-663d-4705-8273-e29b751604f3)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 09a3fdf8-a96b-48a3-9ed6-eda73c65a277)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + dff36c0a-c494-4773-85d3-22dc40828194)(shape \ + Convex)))(Secondary((id \ + 82a71844-313e-46dc-ab39-2168277862cf)(content(Whitespace\" \ + \"))))(Secondary((id \ + 8d216058-fbf1-496d-9743-0c5e0cd76feb)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 14415fb7-a422-4548-819e-44934a15fbaf)(content(Whitespace\" \ + \"))))(Tile((id \ + 2bf97cb3-fa08-4a66-af35-19f80ebbf18c)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 361a98e7-250c-4a8a-894d-3c142b544a3c)(shape \ + Convex)))(Secondary((id \ + afdf67f8-ca10-4975-a82b-cee627045d6c)(content(Whitespace\" \ + \"))))(Secondary((id \ + 1d7ea360-85de-41a0-8d28-2560fce817d2)(content(Whitespace\" \ + \"))))(Secondary((id \ + cc3932d6-ddb5-4b38-bed5-0f804b30c249)(content(Whitespace\" \ + \")))))((Secondary((id \ + 0646a454-d94c-4a32-86e5-e945b7ba3281)(content(Whitespace\" \ + \"))))(Tile((id \ + 1376e637-b0fe-4c0a-ab2e-2e3668294b2a)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 00d6aabb-0632-418a-991d-3244cbac05f3)(content(Whitespace\" \ + \"))))(Tile((id \ + bc3da52c-3df7-4024-bbed-ccfbc627a7b0)(label(a))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 2a8f19a0-cfc7-40af-b6b9-3348b68b8339)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 9f76cd87-b09e-4a77-ace3-b7b950b35b5a)(content(Whitespace\" \ + \"))))(Grout((id \ + ba54939c-0b30-45f6-b043-9b78bfc61ccc)(shape \ + Convex)))(Tile((id \ + a3d1bf28-0582-4434-8016-7e16d9c49168)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 5224a37d-a8cb-434c-8296-c6848f946521)(content(Whitespace\" \ + \"))))(Tile((id \ + 4a059766-ec30-4672-8936-beb7b9222bd6)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + c1602bc9-19c5-4170-82e8-577d85ed7754)(content(Whitespace\" \ + \"))))(Secondary((id \ + 8d33d61f-552b-4d9f-8ee8-be0441e23a97)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 890ff4a2-a745-448b-8115-b2934cc0b80e)(content(Whitespace\" \ + \"))))(Tile((id \ + bf14169f-746b-4146-8c4e-e59d02155bbd)(label(a))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 0df42a3a-eda0-4448-89eb-767d22428d00)(content(Whitespace\" \ + \"))))(Tile((id \ + 33cd3314-9af9-4322-97aa-077b7aee80b8)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 36b0afb8-4162-465a-ba53-dadc8ea48eec)(content(Whitespace\" \ + \"))))(Tile((id \ + 7acfd26d-e427-4492-8b93-486f2ef7056e)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f7e38c4e-9f89-4a5d-9d29-8fc5c23f2cad)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + fb9d57c8-fe4b-4cc1-acbc-0d1a9892bab8)(content(Whitespace\" \ + \"))))(Tile((id \ + ef1b1b01-cf68-4b48-b7b9-46acb5e163b2)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 6e190c88-1aee-4ec5-8e4e-8a19928c9bd1)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 78705e87-a0b1-4251-8446-d6b43ef044ce)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 690f7619-8921-4e38-b639-16560567cb1e)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + eca2e22d-e738-4f42-a208-0ee61aa75be9)(content(Whitespace\" \ + \"))))(Tile((id \ + 0acc0b7b-5590-4de1-8ebf-ce7ce50f99c0)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 5e7aa6a5-67db-452b-bc45-bc6613713567)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + c4a2663f-7fea-4727-8ac4-10ef3933c70b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + f85f8f98-196c-4aea-a519-ea1002fea7d2)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 7a1d296d-ddf2-4800-b920-f4116eb01eb2)(content(Whitespace\" \ + \"))))(Tile((id \ + 9897f8ff-41ce-4364-a5d7-b366ec0bb8bc)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + ce2d263e-6278-465a-8f81-e831b766b1e5)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 967f4497-6a86-4dd7-a089-2f18712a0d67)(content(Whitespace\" \ + \"))))(Tile((id \ + 416de460-73cd-4105-9a1d-676283260d75)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 38e4b386-735b-48c4-8a0b-ff4cfdd52bcb)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 51976577-6ffd-4315-bc7b-cd2d54f8a710)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + fa144b5b-e12d-4105-af0b-621f0d0ab9ae)(shape \ + Convex)))(Secondary((id \ + 37d11023-6ee0-42b2-aa34-e0c2821a1f46)(content(Whitespace\" \ + \"))))(Secondary((id \ + e3009bd1-94cc-4f72-9d97-3a936ddd965b)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 78c11afd-7779-41ba-847b-bf00b2cd0e23)(content(Whitespace\" \ + \"))))(Tile((id \ + 0ab478a8-af38-4bdd-91bc-b042c8fc1a28)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + ac0f5375-8a7f-45fa-883f-22598fb49e4f)(shape \ + Convex)))(Secondary((id \ + 71e88bb0-162f-4acf-b4cd-2d8dfcb98676)(content(Whitespace\" \ + \"))))(Secondary((id \ + 16f969cb-615e-4d0c-a454-9ab748dd889c)(content(Whitespace\" \ + \"))))(Secondary((id \ + 30bd0a7e-1b39-403d-9d29-314fa4015d6f)(content(Whitespace\" \ + \")))))((Secondary((id \ + 63214078-2ba6-41de-ba10-3e4c34a44258)(content(Whitespace\" \ + \"))))(Tile((id \ + 09178b2f-ef8f-4ad9-a4e7-832c67204695)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + d5cf9139-9af8-4179-9e1c-7d101750015c)(content(Whitespace\" \ + \"))))(Tile((id \ + 3cbc7411-534c-4f04-ad2f-4c62642f92bd)(label(a))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 2712059c-cdcf-41d9-868f-3b47a023519c)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 357f64ca-739e-452c-ac34-6e86af829339)(content(Whitespace\" \ + \"))))(Tile((id \ + 1ef6e3ed-b83d-40d9-80c6-ce7bd066a3cf)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 714e50f1-382c-4b30-ad8f-14a29d00eed9)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 0eeed07e-8ecc-4400-a0f8-648a08060a9c)(content(Whitespace\" \ + \"))))(Tile((id \ + d0ad4dfb-81fd-4ea6-9436-34e9aa10d2e0)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + c11d7f64-46a7-4dbb-9ce6-d5e65854762e)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 4196328d-f970-4e72-89de-d3dc5a3b800f)(content(Whitespace\" \ + \"))))(Tile((id \ + 0ac8ba99-28b0-4c20-b6dc-fdda5208130c)(label(a))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 2701275f-0054-49cc-a806-e50b5a1d9407)(content(Whitespace\" \ + \"))))(Tile((id \ + 5c928d16-9a42-44a8-9599-e9a2ef7cb4a9)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 3992ab52-0322-4a10-8993-9bbc73b4a47d)(content(Whitespace\" \ + \"))))(Tile((id \ + c7dee409-5099-439b-9479-cb196bf85da9)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 7f472026-0d8e-44fc-bf53-183b363fab7f)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 93ca28dc-c1ad-4310-8917-b968a2a3ba0b)(content(Whitespace\" \ + \"))))(Tile((id \ + d8799670-d6a5-49df-a740-89c175fdb36f)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 14eb48a9-3e23-4e76-92bc-3c43c7fff444)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 997a2997-4ad4-4248-b9f1-c96ff5941789)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 43a93d20-b827-4f0c-a3ee-c695e5df9e95)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + bcb0c02d-7357-4984-9fbc-f93897b4492b)(content(Whitespace\" \ + \"))))(Tile((id \ + 4736d2f7-5fa5-4544-b6b0-30cbda4b5b62)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 3ab4ec30-9a09-4644-8841-92e7f6cb8847)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 487472ef-1212-4ed3-88f2-63c4ab35afbe)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 3d02d2c6-650e-4442-b1c7-67b32cf9b8ad)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 6191f40e-7c16-452e-8c76-6f33eba1d329)(content(Whitespace\" \ + \"))))(Tile((id \ + fa4b8668-df61-4e1b-8cec-341034c7a3a7)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + ec67395c-ef7f-4eff-83d1-feb53acd6054)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 466da28c-9cf0-4722-8957-eaf632a6cd98)(content(Whitespace\" \ + \"))))(Tile((id \ + 7f79e5b3-e434-4b06-9b0b-3877b56986f4)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + a79ba610-804c-4e2e-994a-155e1833c2c3)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 64a932ef-9cd4-45ae-af2f-390ae7392104)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 8b753d04-627b-46e9-8d0e-98d66a31dd4c)(shape \ + Convex)))(Secondary((id \ + 600dac5a-52dd-4c54-8858-a4c872fa3317)(content(Whitespace\" \ + \"))))(Secondary((id \ + a800be14-da4c-403d-907c-b550055bc6c9)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + fa75fd51-22af-47fe-b374-4bf058b6aeab)(content(Whitespace\" \ + \"))))(Tile((id \ + 5f527de5-501f-4c14-b543-a9512e1869ae)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 053b4322-a3a3-42e2-9188-0287bd43e17b)(shape \ + Convex)))(Secondary((id \ + d85d2f27-47ea-4ad0-bd9b-cf6d50ae2b89)(content(Whitespace\" \ + \"))))(Secondary((id \ + 8029ce44-a191-477b-9785-fa6eb2dc427d)(content(Whitespace\" \ + \"))))(Secondary((id \ + d9665998-b692-44b5-8d1b-97ed7eebd24c)(content(Whitespace\" \ + \")))))((Secondary((id \ + 3cfeee66-ca95-4f7c-8969-dd92161cde90)(content(Whitespace\" \ + \"))))(Tile((id \ + 1203feeb-b475-4294-ba3a-71af647f676f)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 25158f94-7af8-4d68-9abb-4a365a130b55)(content(Whitespace\" \ + \"))))(Tile((id \ + 4b7d5c04-3e4c-4369-8917-f6bd1d93c9dd)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + db0db77e-bbb1-4738-b207-c118cced483e)(label(a))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + ff1961f4-9798-4200-b14d-fa9ed8c23a3e)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 73fdb448-3691-42ae-ab3c-c35be7f073d1)(content(Whitespace\" \ + \"))))(Tile((id \ + 4ab4a56a-4cc3-40cc-9609-3dfa2e644314)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Tile((id \ + 50cbfb20-0b9a-4cfd-b962-0e061a417c0f)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + ff8c1605-b9e3-419a-9aab-f66d51fb7478)(content(Whitespace\" \ + \"))))(Tile((id \ + 8e68bb74-bf64-44f9-9385-d1f66367770e)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 857912e5-bd11-4c26-b394-dd2cd928636b)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 7b50ab67-1a8d-4cb2-bae8-1ec785e3c8f4)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 4ccb8f1c-c712-445f-96f9-7f746b28e6d8)(shape \ + Convex)))(Secondary((id \ + a90928e0-4dc2-4a78-af9b-e03da908d2f3)(content(Whitespace\" \ + \"))))(Secondary((id \ + 677fa960-7bed-4e08-ba47-baed1f64c898)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 187239a0-573c-4dd4-a576-2c9b9f5663cb)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + eaed48a1-3bee-459b-b7d6-a039e99046a2)(content(Whitespace\" \ + \"))))(Tile((id \ + b925b8b3-6174-407c-8d0a-2c403a01379a)(label(a))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 314d702f-4312-443a-ab9e-57da31954acc)(content(Whitespace\" \ + \"))))(Tile((id \ + 79584246-2c43-4cdd-a2a1-3ff950621fb5)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + eb20decf-03e9-4149-82e6-d53e2798b851)(content(Whitespace\" \ + \"))))(Tile((id \ + 26e66a82-4bd0-4c87-bd53-fc3ab14145cf)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + db3c2d25-3ecd-4d1e-8a7f-0cb819336a6e)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 78255577-7358-4a9f-b7dc-bcbbc258d278)(content(Whitespace\" \ + \"))))(Tile((id \ + bd3c7ccb-c3a8-400b-bbe3-3b97a27bf604)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + b0902f59-30f9-453f-a11c-f9e0a116cc65)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + c22f8cf5-6891-4ec6-bf3f-d8006cdf2c86)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + c33216ef-f39a-4f55-a05e-5301d5c8d934)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 29bc4824-fa3c-4e22-a1d3-c0f603df933c)(content(Whitespace\" \ + \"))))(Tile((id \ + e8dd7c29-5f0d-4c00-82a0-711e5bacd6f5)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + da788c99-cf8c-425b-9960-ba7e8d1b3ce4)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 2e1ed404-00e5-4130-bd00-654f0cc85eba)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 41a5d82c-8d38-4453-bf1b-0daa6ee4fc98)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + fc64a15a-4665-41bf-8ed8-9f586450d3e4)(content(Whitespace\" \ + \"))))(Tile((id \ + df06f73a-d19f-41f0-a65e-85f120aaa148)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 17834340-4fe8-46df-833b-c36aa06f86ec)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 7f43728c-3ef8-4792-b7e1-d5bf79a8f422)(content(Whitespace\" \ + \"))))(Tile((id \ + 6983e2cd-73a9-44b8-afaa-a3889253a938)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + d26b4c0c-a3f0-46dd-96ca-790b4589772a)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 156f371f-f261-412b-a0be-cd01f8a543fb)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 88a30c1e-2bd2-4106-b502-ab0183a76da1)(shape \ + Convex)))(Secondary((id \ + 655329c9-8f7d-4667-b71e-dd487c4298ad)(content(Whitespace\" \ + \"))))(Secondary((id \ + ab32ae5e-ca30-489f-be79-3265e7e1ed7c)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 431d79db-199d-4e48-8ff3-b61ac052050d)(content(Whitespace\" \ + \"))))(Tile((id \ + 6ac15623-b03a-4c10-990b-f31481532ee8)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + b3f6b8e8-5b1e-4f84-8891-d5591f5696a4)(content(Whitespace\" \ + \"))))(Tile((id \ + 107bc734-b12c-4d40-91a3-132fcc830136)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 5a9b1828-9af8-4675-a9b9-c056ba86fae3)(content(Whitespace\" \ + \")))))((Secondary((id \ + 1a0fd972-a9c4-419f-964a-8a2b633f33dd)(content(Whitespace\" \ + \"))))(Tile((id \ + bd8afcd8-74a2-4004-8b4a-7026fef058ed)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + c63a1bee-7e32-4ecb-afd0-a724aef0b98c)(content(Whitespace\" \ + \"))))(Tile((id \ + 850fb734-647f-4343-8fbe-52636f374c6e)(label(a))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + c04c80f3-4064-4c68-acc1-ca5c299bbd77)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + dd4462f2-7949-4878-a142-a2283001ad6c)(content(Whitespace\" \ + \"))))(Tile((id \ + 2cb05f48-5922-48e6-9256-e013f5793cf1)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 339ee181-b96d-46bb-8a43-f3ff8229c30d)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 2061e785-5a18-4a0c-a4de-c1492b30e278)(content(Whitespace\" \ + \"))))(Tile((id \ + c811f868-2b43-468b-94c7-bf3bf1456409)(label(a))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 1a797da7-7c1d-441f-a6e9-5e4d028213d1)(content(Whitespace\" \ + \"))))(Tile((id \ + b099d96b-e2de-41e8-bf2d-58c1d7f0f0e4)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 584a877b-b2ac-4742-a979-3005537901fb)(content(Whitespace\" \ + \"))))(Tile((id \ + c6077bfc-7116-4a05-ace0-ad4834261381)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f9963f7f-6ae9-4027-9ede-0b3e538aecbf)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 3f2145ac-3415-4d74-9576-5563fe64e77e)(content(Whitespace\" \ + \"))))(Tile((id \ + 59a6b6f1-80d8-45e4-9b6d-67fb47835905)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + b2efdfc0-231d-41cd-8358-d88497d7c6ce)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + ac6c8e5d-e4f5-4d7d-b0cb-199a2d89e8c3)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 47d49893-385d-47eb-8f79-932412df8120)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 1dffae48-7e03-4120-8147-e8e1c71f051d)(content(Whitespace\" \ + \"))))(Tile((id \ + 4407083a-71c2-4a70-be60-1415bf0a1c57)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + f8cafdb9-5115-454f-8301-cadc935954e6)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 186a5f65-820e-4718-9aaf-89d16d38edb1)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 9bc20274-fb1c-4393-ac92-808ff1b94a79)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 13991968-82b9-4964-90e5-0359a90e47fd)(content(Whitespace\" \ + \"))))(Tile((id \ + 5b8c99b5-3e5a-4934-944a-ffd97749442f)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 80a93c7e-384b-4dd1-b4bb-d9a3911a3ae5)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 1d9f52b1-a850-490f-a292-b47fb7a96138)(content(Whitespace\" \ + \"))))(Tile((id \ + 0816d375-1b2a-460a-a84c-4c5aefa58e81)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + e5f9862a-51f0-4e5d-8ae3-dfb0d14e36ac)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + b758d84b-d213-4a78-9b35-18bf57006721)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 7f9a1bde-138c-48a0-a74d-66c75ed7ab5d)(shape \ + Convex)))(Secondary((id \ + f872865f-46a1-4c40-880e-77586055f9ab)(content(Whitespace\" \ + \"))))(Secondary((id \ + 8b11e4a1-23b7-4cdc-8cfd-403715695b01)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 8eec57c4-abb0-4311-b0cf-e092c09d06e4)(content(Whitespace\" \ + \"))))(Tile((id \ + 2b6083c1-baec-4672-8a01-f6c99b160e64)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 036ccb48-b246-4a19-9742-35c7ad061176)(content(Whitespace\" \ + \"))))(Tile((id \ + 76481d4c-d3b4-40be-8cea-2cadfe14df89)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + e5c48255-c736-4d2d-891e-fef414217d00)(content(Whitespace\" \ + \")))))((Secondary((id \ + fe4cc3df-ecf8-406c-b9be-0a377d0d7813)(content(Whitespace\" \ + \"))))(Tile((id \ + 8502085a-73f8-4d1e-8e33-1dc2223a63fd)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 1dc44d66-5a48-4ec9-924f-411b68da14c0)(content(Whitespace\" \ + \"))))(Tile((id \ + e3962dae-fd33-47b5-bdf0-82c72409aa11)(label(a))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 5dd93d5d-b656-45b5-ad37-d49fe0ea23ec)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + a10f02bb-a200-4a01-89a1-39e27bb8162b)(content(Whitespace\" \ + \"))))(Grout((id \ + 281e77a2-ba43-482c-a93e-cfe10259989d)(shape \ + Convex)))(Tile((id \ + 23de4bdc-0af1-497e-83e0-cc5bca1b3855)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + e64bc015-5917-4465-904f-8af5124b9bcd)(content(Whitespace\" \ + \"))))(Tile((id \ + 95ce2ef8-d860-4f18-85d3-9822fc8d459a)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 21cd3096-d858-4ec9-9007-2b1ace927c03)(content(Whitespace\" \ + \"))))(Secondary((id \ + 005f8b6e-a906-429e-beb9-439d29d3a76f)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 7cb7b539-3bb6-4782-a60e-b06fe71c43ac)(content(Whitespace\" \ + \"))))(Tile((id \ + 5be6ea6d-0754-467b-9327-5f1578911f06)(label(a))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 8698ee48-48d4-4696-994e-17077bb11986)(content(Whitespace\" \ + \"))))(Tile((id \ + c360a076-4dd9-45c7-9db2-2b3c60c0303e)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 6e979b62-9763-4e7d-bdae-d0ffb58c60d8)(content(Whitespace\" \ + \"))))(Tile((id \ + afa9df4b-9fa9-44bc-8ba3-f77e81e75310)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 79d79ed8-f8cf-4f3a-9a1b-475b14198afa)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 27f19fbb-97a5-4ed4-8afc-6de00791df62)(content(Whitespace\" \ + \"))))(Tile((id \ + 3c514af7-2182-4b0a-a4ea-19e14d9fae32)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 88dcb230-1f6b-423b-a117-d05d9d446f3f)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 690e9897-85c7-4922-991e-0f942c89dc0b)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 70533e9b-4c3e-4ce6-a86e-384267c022b3)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 8730d036-9d20-45ec-b09c-daaaec74ce03)(content(Whitespace\" \ + \"))))(Tile((id \ + 9f0be8c9-658a-421f-baa1-8a502712cd2c)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 5719931b-6b7d-4eb4-b867-e9eabb4db935)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 4bdc2209-c2eb-4db7-aa63-043d96e5686e)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + a872ee48-4669-43c4-bec3-1186db91148b)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 17434130-d1d1-413e-afa1-6998cc68025d)(content(Whitespace\" \ + \"))))(Tile((id \ + 1bec817d-8b8a-478a-af31-abd16028b864)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + c25eea0b-ab19-4c02-8578-87a0d9ab7f31)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 8e40e986-1715-4e9f-8fa2-8473bf0d1468)(content(Whitespace\" \ + \"))))(Tile((id \ + d634c2c3-b754-4067-b7e2-0f8207ced53c)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + b04350a6-808a-49f8-9e1c-fdc388772171)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + fda74513-a1b9-432a-82b8-e3544b49cb04)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 6fe3a505-3d3a-4db2-a2a0-d6c3be91ca71)(shape \ + Convex)))(Secondary((id \ + 4b53b9aa-7664-41ae-a400-e0dd16b62509)(content(Whitespace\" \ + \"))))(Secondary((id \ + 92b30817-375a-433b-915a-1c006150cf4c)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 9de55cbb-b6bd-4c57-ae4b-fdad96a970cf)(content(Whitespace\" \ + \"))))(Tile((id \ + afda7489-fbc7-4d45-9a54-ff7dc065dcf0)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + da2edaf2-06f9-49b0-9c52-0692d36feb1e)(content(Whitespace\" \ + \"))))(Tile((id \ + fe5903b2-837a-4bcd-9ef5-1c2428f8a2f1)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + d0cfffab-e8d2-47c3-a805-8674d049622b)(content(Whitespace\" \ + \")))))((Secondary((id \ + dc042fb4-d72a-4240-828f-dd621adbc20b)(content(Whitespace\" \ + \"))))(Tile((id \ + fa4a9b14-7e47-493b-b496-b6e38e830ad8)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + cd361305-ba60-4635-9bfc-33eb27e07c44)(content(Whitespace\" \ + \"))))(Tile((id \ + b14bc419-8dce-4fcf-b8bb-82dd99c04dd2)(label(a))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 8a72a69a-b947-4054-8244-0388911347f5)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + d44000e9-2c1d-4260-af86-dbef475879a8)(content(Whitespace\" \ + \"))))(Tile((id \ + 6b3a34ab-f687-410d-b155-b117acda0886)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 07f3c1ff-5677-4ba5-bbb2-a9eea1932cd8)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 2b485099-40a8-4b37-991c-c13947cfdcf4)(content(Whitespace\" \ + \"))))(Tile((id \ + cb881fc9-3ea5-4207-aa2b-e23e634e7bc1)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + a415c809-2799-4852-bffa-0cf66d2afaa0)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 45e22326-9dac-4eb5-8835-9da95894cb0b)(content(Whitespace\" \ + \"))))(Tile((id \ + 4b9ba7f3-6159-4020-960c-6c725c45c9c6)(label(a))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + ce206ee6-866e-4bc8-96d6-ad8a58194a73)(content(Whitespace\" \ + \"))))(Tile((id \ + 1112cc54-8977-49a9-896c-f45d78bc0c01)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 53909189-4422-49c1-863d-60707bf196ae)(content(Whitespace\" \ + \"))))(Tile((id \ + f76561a1-0b5a-4482-8716-e7bb3a4745ea)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + fbe2251e-9b29-4a4f-8f50-eef65cd19f3c)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 4386e434-302f-4fcd-8350-8b97d76d32b0)(content(Whitespace\" \ + \"))))(Tile((id \ + d0b49131-03e8-4b32-a97f-d8903d8b8248)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 0348cc19-de1e-4a2b-ac72-fde8ea77dcf7)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 0d196b4e-3689-4ee2-a64b-0115793d6302)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + a428c920-3772-4cd4-a9c2-9bfeb9e2954a)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 43ffb69a-14e6-40ed-9038-8fd652c5e9f3)(content(Whitespace\" \ + \"))))(Tile((id \ + 6a1223e4-df11-4025-9411-567efebb5f3a)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + d44c175b-4647-4a1d-92b2-95084289ba26)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 3896cd69-a0f5-4781-ae0f-7b90b3924dee)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 0c77a664-2b94-4237-83c2-e3eea15490e0)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 7c706dfb-7bc0-4154-a062-491cdd811036)(content(Whitespace\" \ + \"))))(Tile((id \ + f63ce723-9ddd-41ef-986b-97f097c7bd89)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 74336659-23c4-483a-9d57-8661f8289701)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 6b4a8b16-3250-4f2a-a66f-2c63da6f26ed)(content(Whitespace\" \ + \"))))(Tile((id \ + 5c0e2f73-2e73-48d1-8b68-6c7b20076c9c)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + f9dacf8a-5014-47ce-ad50-8c8deddfc5e4)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 9bed43c0-a447-4aa8-b21f-50da595d633b)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 613b9ada-fe18-4369-b5d9-70d3f1e53514)(shape \ + Convex)))(Secondary((id \ + c1b1ee36-9ce6-47da-95df-3bd2fabb54c7)(content(Whitespace\" \ + \"))))(Secondary((id \ + 3f8dd0d4-b5c3-4a00-be38-632c75924975)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 210586ad-11cb-4fdc-8598-b61597743070)(content(Whitespace\" \ + \"))))(Tile((id \ + 2411959f-40b1-45a2-9a26-78b2966fe759)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 8468a458-1d6e-4688-b961-30b672c7b784)(content(Whitespace\" \ + \"))))(Tile((id \ + 9636cf6a-c36b-4a1a-ae3a-088c1fa1a615)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + af7b6ff1-4b4e-4353-a76a-34423b12789c)(content(Whitespace\" \ + \")))))((Secondary((id \ + df973686-43a2-49e2-afee-a50d321ec924)(content(Whitespace\" \ + \"))))(Tile((id \ + 7b0dc971-354a-4109-8088-cbcb76976b4a)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 2a59225e-0206-442c-8cb7-d473bdefa5f4)(content(Whitespace\" \ + \"))))(Tile((id \ + f035d365-b3db-4c44-b821-75267fa9e43a)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + 3e446bad-6497-4089-a3df-cd18e6bf487e)(label(a))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + d31d780d-e1f7-484a-a4df-948428a8be88)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + c9906747-28ce-448c-b32c-460c1fbfcba0)(content(Whitespace\" \ + \"))))(Tile((id \ + f26eca5e-f6f6-488d-bb10-84359f8cfff6)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Tile((id \ + f6304be2-2391-41f4-b07c-8577d6723ea6)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + a97d9656-ba87-48a5-9236-16057c6c8db9)(content(Whitespace\" \ + \"))))(Tile((id \ + 668b47f7-32b3-41da-aee9-67e935ad47ce)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 4a6eb5c5-2492-4036-ab60-2ec5236e63c9)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + d59e589c-fe70-49e1-a8d7-616b473740c0)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 4ad3a1e2-6569-4caa-afe4-da4da9fe3d1a)(shape \ + Convex)))(Secondary((id \ + d796506c-840e-408b-a08d-0ad475707e48)(content(Whitespace\" \ + \"))))(Secondary((id \ + 8b2e5ede-ec8b-4884-a35c-bfc00af45040)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 95f218f6-5291-4bb1-939a-d2c9c8dce1c0)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 25d47725-d6db-4a27-adf3-41610dd615b4)(content(Whitespace\" \ + \"))))(Tile((id \ + e450962c-c9cd-4836-af1d-53fa57875af1)(label(a))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + fd4721fa-fa6f-4ed2-bb0f-54c0a151fec6)(content(Whitespace\" \ + \"))))(Tile((id \ + ff6dbec8-5267-488a-b3b5-80ab0d700c44)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + e5be275a-a1bc-4ade-b700-b97349739cb9)(content(Whitespace\" \ + \"))))(Tile((id \ + 033a3db3-6138-4464-a9b4-c4869961146c)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 94eda17a-ad4c-4393-ae10-8302b53e2d7c)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + c7067830-b673-4dd0-8655-5f4d97c2aabc)(content(Whitespace\" \ + \"))))(Tile((id \ + 4f724995-67b6-4b4b-bb5f-fcf1893a916d)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 67493c89-eb02-46da-a207-711ea889fdd5)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 6e16ad8d-fbee-4c7b-8fe3-80c0dc66454e)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 52bb5578-b1f3-4d68-a8b0-9dab84317f20)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + fd6ae394-4a3b-412c-bc4e-281e3aaeb2f5)(content(Whitespace\" \ + \"))))(Tile((id \ + 894d7f45-79e1-4d32-a6bf-b51d97b102b8)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 25bf6d42-5a8f-4449-a3bc-ad9bbfbde8f3)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 65967ee6-68c2-4430-bc4f-4fe243a7f89c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + bf5cdf3f-9ed1-4e43-bd7a-833e2c043ab4)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + b6207fe7-e2ff-440f-b49d-f772f54a8a4d)(content(Whitespace\" \ + \"))))(Tile((id \ + c5fd7629-2245-4de3-ad4a-e43577f378d4)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 8b77b9a3-da5a-49d3-89d9-2389716d38a9)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + da6cf85e-784b-4688-b4bb-a5de6895cb9e)(content(Whitespace\" \ + \"))))(Secondary((id \ + c9436d2f-9525-4014-81e0-13627c84fed3)(content(Whitespace\" \ + \"))))(Grout((id \ + f72daea4-0e1c-46d4-a577-11dc663c4c3c)(shape \ + Convex)))(Tile((id \ + 3f04215c-9c0b-418a-9fed-5a345edc51ae)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 4505142a-ee63-4255-b9a1-45967d536e7d)(content(Whitespace\" \ + \"))))(Tile((id \ + 850f1156-171d-450d-a697-2d7426fef890)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 4c43eaeb-6058-41ea-9175-5593ce489446)(content(Whitespace\" \ + \")))))((Secondary((id \ + 4ac2e2d2-5e2c-483a-8419-90979d2acb87)(content(Whitespace\" \ + \"))))(Tile((id \ + 45721068-5191-41c0-97d7-0ecec60d398c)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + a10f8fd9-bcf7-44d9-aeef-b09b800ef4e5)(content(Whitespace\" \ + \"))))(Tile((id \ + 72f6c14b-dbe3-4b2a-bc68-c3b77326634e)(label(a))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 9a531af1-8ffc-43f1-b926-4dc9f2c11e75)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 1e8944ec-aed0-4ae0-9f09-dcadc92e3a1e)(content(Whitespace\" \ + \"))))(Tile((id \ + ef3da217-434a-4bd8-8fe9-d314eeebd0b2)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 8fd1e860-a469-4bbb-9ba0-a21f39f8a73a)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 34aea284-bd45-4f35-a7ca-dabfac1a7c40)(content(Whitespace\" \ + \"))))(Tile((id \ + 9b3e623d-741c-4c2c-8792-9e1cb669ec9b)(label(a))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 7ea12851-27c9-438a-a64e-60d23f7d2fdb)(content(Whitespace\" \ + \"))))(Tile((id \ + 68c7ad7c-cb45-4e5e-95fb-62e8b057459a)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 4b02ca6c-e206-4d48-ac79-e586dacf95c2)(content(Whitespace\" \ + \"))))(Tile((id \ + 590fbd3a-dc13-4b98-8b16-cff8ede68c0c)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 855f8c1d-1b60-4b7d-b241-00508971446a)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 6d3a220e-5996-4892-8c80-3a1a2f0db1f2)(content(Whitespace\" \ + \"))))(Tile((id \ + 93989e5e-b66c-4af9-b823-b4c08c5f4fc5)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 424566f7-fea8-497b-be94-cecbf4bad21f)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 870675ce-55e5-49ca-a65b-dddca83a5ae6)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 1187b178-0c2a-43d5-a21d-e143d9341953)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 0cb654fb-692c-45d3-ad49-91eb6b083f7f)(content(Whitespace\" \ + \"))))(Tile((id \ + 40aacc49-f016-4522-8928-3acda44d7542)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + a2a6aadf-7f5b-41f7-8171-6779ec582301)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a8d850ee-6980-4d7b-92f3-36da569100ce)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 61c23189-a6bd-423f-80d0-1835a313ccf1)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + db64bd98-a11e-4305-b7f3-b452b1888ba7)(content(Whitespace\" \ + \"))))(Tile((id \ + d67f7404-2ac5-4079-ae12-a9ed9fb85d31)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + f69341bf-96a7-4961-9a5c-2d3f200f22fc)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 20e3841b-6918-428c-a2af-1bad8782d4bf)(content(Whitespace\" \ + \"))))(Secondary((id \ + b724bbf3-7f25-4669-ad55-bb9bbf4e8115)(content(Whitespace\" \ + \"))))(Grout((id \ + cf84f16e-f166-4b51-b4e6-049b1ce1dec9)(shape \ + Convex)))(Tile((id \ + 0abbf0b4-2348-4efb-aacb-52012081dc37)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + d46fa747-5e85-489d-9d69-059a7f07f977)(content(Whitespace\" \ + \"))))(Tile((id \ + a0a02c22-c092-4ceb-b17a-450331c8d17f)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 639db5f8-2ee5-4660-b6d4-5852f63d6b99)(content(Whitespace\" \ + \")))))((Secondary((id \ + 6fa1692e-f4dc-47f6-904a-f6efc37a65b2)(content(Whitespace\" \ + \"))))(Tile((id \ + cdf83aa5-2b6b-4e42-97ab-f6c922a3b3f6)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 3fe95f8a-f9d1-40c6-bb91-d31bea6aafcc)(content(Whitespace\" \ + \"))))(Tile((id \ + a1ebc17b-a578-4ebd-bda3-8fcdaa59d3eb)(label(a))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 9d1ddd32-a36a-4514-970b-4d6651f8c4ba)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 51f2df2f-b75e-44fe-abdf-5f5e0179e334)(content(Whitespace\" \ + \"))))(Secondary((id \ + 67fb4d36-10b1-44d6-a3e7-21dd1060c696)(content(Whitespace\" \ + \"))))(Grout((id \ + a7fb5a73-2ad4-45be-9217-a15421b94b51)(shape \ + Convex)))(Tile((id \ + 17a41687-b08f-4ff2-98af-2fea47f95f24)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + c406ea25-c689-4fc6-9a0b-a86d384636bf)(content(Whitespace\" \ + \"))))(Tile((id \ + 16ca4023-75c3-4218-878c-8f629b0dedd4)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + d926a732-ae87-4767-a100-e9858bd52605)(content(Whitespace\" \ + \"))))(Secondary((id \ + b640f897-88a9-4dce-b9e3-7473d6e85e22)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + f0f645d4-8e99-42a1-ac9e-69bd4f9cd1b5)(content(Whitespace\" \ + \"))))(Tile((id \ + 35053850-23f5-4acd-bf45-2f1258d00b66)(label(a))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + ce99772e-caa1-4d3f-ac59-6d4ad3a887dd)(content(Whitespace\" \ + \"))))(Tile((id \ + 963ab1b4-4cfb-4718-bb45-9dabf362279b)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + e58ebe60-aa42-4470-925b-062afaa8f755)(content(Whitespace\" \ + \"))))(Tile((id \ + f9dc59ff-5f53-4d2b-8633-516f300f2be5)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + d66d2f4c-5c43-4cbe-9fcc-b9839b8c81b3)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 357f7de3-fa55-47cf-a63e-546895193402)(content(Whitespace\" \ + \"))))(Tile((id \ + d85833ba-41c6-4a25-9b63-4b8b3a2fc33c)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 09900b61-5baf-4d89-a9d0-a211fcdbaf30)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 3a620d4b-f98c-4e09-90e2-edc51467b958)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 54ed2b3a-d7ed-46a5-b5e9-6062e3d706b4)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + fa59e47e-78df-4f99-9887-513007871ab6)(content(Whitespace\" \ + \"))))(Tile((id \ + 20aed684-0a33-4837-9c91-b6f388a392a4)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + c3ec9096-55e5-4952-a2dc-c38d9a1934e3)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 4a957aeb-2c1f-4f0a-8186-0e897c718626)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 0068b781-4219-4451-8db5-cae8ea87da2d)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 7748ffc0-75ef-428d-9b58-4580dd7c3b78)(content(Whitespace\" \ + \"))))(Tile((id \ + 5b1744c1-7cc5-4cab-95c6-c805bfb455bd)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + a9b7c3da-34fd-4c13-ba76-8d12eaf8b013)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 668fe660-3748-42f2-8750-1d9233647860)(content(Whitespace\" \ + \"))))(Secondary((id \ + 792a7fe1-914a-41ec-8e3c-6946087ccb17)(content(Whitespace\" \ + \"))))(Grout((id \ + 09163549-d4c0-4420-8fde-0ee1b95a3e00)(shape \ + Convex)))(Tile((id \ + f21a218e-97b1-4cb9-a0a5-e5f1548d6c1f)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 1b95ea63-2f0a-4cd3-80ae-4e148633c82c)(content(Whitespace\" \ + \"))))(Tile((id \ + c1b4fac6-c1d1-42b0-b94e-1f77eef60360)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 661f88ef-101a-4467-875d-74cc19f532ff)(content(Whitespace\" \ + \")))))((Secondary((id \ + 0c5f4384-d374-490e-baf6-73c6fba62014)(content(Whitespace\" \ + \"))))(Tile((id \ + b0a61c54-5ce1-4d07-b2aa-0c24d8d47304)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 03c97a1e-5e63-43ff-9f90-9fb5071cefc4)(content(Whitespace\" \ + \"))))(Tile((id \ + a269e135-5e34-40cd-bbaf-5d7ca7264d07)(label(a))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 7085914d-118c-4596-8040-01e10f0c7a3b)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 38face3d-4e38-4679-b334-0641b60b839c)(content(Whitespace\" \ + \"))))(Tile((id \ + 21029f89-c5b9-4076-aa4c-f2dcfcd21835)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 705b9a88-adf6-46d4-b9a8-5bbc2648d9aa)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 75f847fe-c467-438e-b118-f885dfe12d11)(content(Whitespace\" \ + \"))))(Tile((id \ + 48befa9f-1d82-43a0-8a9f-b4a551b4f538)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + f8e72f0b-089c-4495-a457-0d036c53b27d)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + b6019a27-ed9d-46e4-a071-aac0a9f7c1fa)(content(Whitespace\" \ + \"))))(Tile((id \ + ee76ee53-6f9c-4531-92ff-d337918caa29)(label(a))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 776ef91f-ca17-4184-a363-23134f2301f2)(content(Whitespace\" \ + \"))))(Tile((id \ + 7f03b0d0-5251-4546-ae2d-c920f979d361)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a84bf77d-1b35-4af4-99e4-57dd207e2da7)(content(Whitespace\" \ + \"))))(Tile((id \ + 8d0a816c-0467-461b-addc-9f0d300a86bb)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 7e60b9c4-2c25-4122-9031-34457a0806ff)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + ddbb24ed-5566-4c35-95b5-860a12dd5248)(content(Whitespace\" \ + \"))))(Tile((id \ + 0cf8366e-ca71-475b-8399-e9d2a34c9a0f)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + a0c66c4d-d74c-4be8-b2e4-964ebf05472e)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 44160bdc-9ad4-44a8-89c4-6f50038919a0)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + b34e08c3-7662-496c-96df-e9111bd1f643)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 4853538d-a2c9-4fbd-ad15-1d72ee2b3cc4)(content(Whitespace\" \ + \"))))(Tile((id \ + 56533393-9f93-4caa-80e8-59db930e67e1)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + d2ca34fe-412e-47e4-b04a-41ad670be882)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 94500cf2-356a-48b2-ac6b-86ccaab5b10a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 36893a4d-0c01-4b09-a92c-59fc51e0fe57)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + ebd1fe9e-621b-49d5-a3a1-fd8d35b79b76)(content(Whitespace\" \ + \"))))(Tile((id \ + 46873372-79aa-46af-8ad8-a39a129c39e0)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 54a7084b-48ee-4a0f-8ef8-147037d2a9c7)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 40a726b4-63f5-477b-a0bd-e2b03a68185c)(content(Whitespace\" \ + \"))))(Secondary((id \ + e2bb9e20-2b1a-4334-960e-72614d04a5a4)(content(Whitespace\" \ + \"))))(Secondary((id \ + 38119e9c-e593-47bd-88f3-c67c7f07eada)(content(Whitespace\" \ + \"))))(Grout((id \ + 1039458f-6394-4c7f-b3fa-21bf51f0f87f)(shape \ + Convex)))(Tile((id \ + 6dc643c3-18a1-437f-88ae-150eb3ac249f)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + ec6c3bba-8579-42ad-b386-2c2ce60b5abf)(content(Whitespace\" \ + \"))))(Tile((id \ + f95ad0a8-1d39-4985-9d77-a9a93b7efeb8)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 689ea5ce-5b0e-4a75-b13f-b09246c6a669)(content(Whitespace\" \ + \")))))((Secondary((id \ + e920b192-de5e-4855-ace7-75ba3208fddc)(content(Whitespace\" \ + \"))))(Tile((id \ + b6495520-5564-40e9-bbea-d38a193c72ac)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 0e052a09-7aba-466c-bfb4-81468b12f9fc)(content(Whitespace\" \ + \"))))(Tile((id \ + 2daa0ef8-d29d-48ae-a138-61fc401ad950)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + be490e19-a602-45dc-b654-6715e590f251)(label(a))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 22e34140-165f-4fac-9ec4-d8e7ab2a3c6f)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + e768b6ff-d460-4807-8e1a-576f981d6fe0)(content(Whitespace\" \ + \"))))(Tile((id \ + 76dde3d8-37bc-4d08-adad-a0c2bb6ca9b9)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Tile((id \ + 7e067617-dee0-4e7e-9bef-685a9c58dd46)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 28a0ef59-40cb-436c-b2f4-ca6fcfcaa5db)(content(Whitespace\" \ + \"))))(Tile((id \ + 8da29f2d-2d2b-46e2-94b6-aabbaf1d97ae)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + f5353b7f-ffe4-4905-a0dc-1ccd0ae837d1)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + f30a6544-8281-4ce8-84f0-74b01fee295e)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + 36b63b80-40b3-4279-9a52-c4ebc96ef1b9)(shape \ + Convex)))(Secondary((id \ + 90dac9a3-cfd2-40e8-bc28-60071381900c)(content(Whitespace\" \ + \"))))(Secondary((id \ + 763d28e2-674b-430d-b1c0-542d17ea7b09)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + a8eed44c-5714-46bd-8ba6-e588a046a98e)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 5a58bc3a-ca4b-4d00-81bd-45b88acc6ab8)(content(Whitespace\" \ + \"))))(Tile((id \ + 92f7f67d-26e0-425d-8322-757c09aa842f)(label(a))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 2d14adb7-a543-4fbe-8716-dde2b18f1cb5)(content(Whitespace\" \ + \"))))(Tile((id \ + 0a8920a0-6a21-4b0d-af8b-b051f64a1706)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 60571abd-7342-438a-bd31-f359378027cd)(content(Whitespace\" \ + \"))))(Tile((id \ + c8fda687-4976-4c47-a208-15ebb62dffdb)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 0b01d85b-d751-4392-824d-6b52b3b6aea1)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 7860cae2-6f31-4aa9-b131-39cec4057ea0)(content(Whitespace\" \ + \"))))(Tile((id \ + 0ca76690-1cf4-41c4-8da5-d4360b4f861f)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 1fe1d913-15ab-4a15-a3f3-81ea684b4397)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + ff2435e9-c2e0-4316-ac4c-5fe3d2fb687e)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 6d0b606c-d057-42b3-9d3d-33679988a5a0)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 617a93e3-6dd3-46e4-9def-86803cd285d2)(content(Whitespace\" \ + \"))))(Tile((id \ + b7f7bb7b-95dd-4cb0-9f3d-b119c4e00b2f)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + c9999f9e-81e5-457f-bcf4-6fe7400c3e28)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 726577bf-09ce-4f2e-beae-8218ea89f6ef)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 52fbcb6c-95d9-4124-85d3-f3ce3a042329)(content(Whitespace\" \ + \"))))(Secondary((id \ + 177b5c85-7c56-4a83-a5f7-51cdd52cbba7)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 12f1f2ad-fae3-4ca3-a8fe-fa6fe4b1b167)(content(Whitespace\" \ + \"))))(Grout((id \ + 2b4b41a7-f15e-4558-a584-c0cdce779d18)(shape \ + Convex))))))(ancestors())))(caret Outer))"; + backup_text = + "# Internal Regression Tests: Function literal casting #\n\ + # None of the below should trigger runtime exceptions \ + #\n\n\ + let g: -> = fun _ -> 9 in -g(1);\n\n\ + let f = fun b -> b && true in f(true);\n\ + let f = fun b: -> b && true in f(true);\n\ + let f = fun b: Bool -> b && true in f(true);\n\ + let f: = fun b -> b && true in f(true);\n\ + let f: = fun b: -> b && true in f(true);\n\ + let f: = fun b: Bool -> b && true in f(true);\n\ + let f: -> = fun b -> b && true in f(true);\n\ + let f: -> = fun b: -> b && true in f(true);\n\ + let f: -> = fun b: Bool -> b && true in f(true); \ + #ERR#\n\ + let f: Bool -> = fun b -> b && true in f(true);\n\ + let f: Bool -> = fun b: -> b && true in f(true);\n\ + let f: Bool -> = fun b: Bool -> b && true in \ + f(true);\n\ + let f: Bool -> Bool = fun b -> b && true in f(true);\n\ + let f: Bool -> Bool = fun b: -> b && true in \ + f(true);\n\ + let f: Bool -> Bool = fun b: Bool -> b && true in \ + f(true);\n\ + let f: -> Bool = fun b -> b && true in f(true);\n\ + let f: -> Bool = fun b: -> b && true in f(true);\n\ + let f: -> Bool = fun b: Bool -> b && true in \ + f(true); #ERR#\n\n\ + let f = fun b -> b && true in f(true) && true;\n\ + let f = fun b: -> b && true in f(true) && true;\n\ + let f = fun b: Bool -> b && true in f(true) && true;\n\ + let f: = fun b -> b && true in f(true) && true;\n\ + let f: = fun b: -> b && true in f(true) && true;\n\ + let f: = fun b: Bool -> b && true in f(true) && \ + true;\n\ + let f: -> = fun b -> b && true in f(true) && true;\n\ + let f: -> = fun b: -> b && true in f(true) && \ + true;\n\ + let f: -> = fun b: Bool -> b && true in f(true) \ + && true;\n\ + let f: Bool -> = fun b -> b && true in f(true) && \ + true;\n\ + let f: Bool -> = fun b: -> b && true in f(true) \ + && true;\n\ + let f: Bool -> = fun b: Bool -> b && true in \ + f(true) && true;\n\ + let f: Bool -> Bool = fun b -> b && true in f(true) \ + && true;\n\ + let f: Bool -> Bool = fun b: -> b && true in \ + f(true) && true;\n\ + let f: Bool -> Bool = fun b: Bool -> b && true in \ + f(true) && true;\n\ + let f: -> Bool = fun b -> b && true in f(true) && \ + true;\n\ + let f: -> Bool = fun b: -> b && true in f(true) \ + && true;\n\ + let f: -> Bool = fun b: Bool -> b && true in \ + f(true) && true;\n\n\ + let f = fun a, b -> a + 1 in f(1, 2);\n\ + let f = fun a: , b -> a + 1 in f(1, 2);\n\ + let f = fun a: Int, b -> a + 1 in f(1, 2);\n\ + let f = fun (a, b): (Int, ) -> a + 1 in f(1, 2);\n\ + let f: = fun a, b -> a + 1 in f(1, 2);\n\ + let f: = fun a: , b -> a + 1 in f(1, 2);\n\ + let f: = fun a: Int, b -> a + 1 in f(1, 2);\n\ + let f: = fun (a, b): (Int, ) -> a + 1 in f(1, 2);\n\ + let f: -> = fun a, b -> a + 1 in f(1, 2);\n\ + let f: -> = fun a: , b -> a + 1 in f(1, 2);\n\ + let f: -> = fun a: Int, b -> a + 1 in f(1, 2);\n\ + let f: -> = fun (a, b): (Int, ) -> a + 1 in \ + f(1, 2);\n\ + let f: ( , ) -> = fun a, b -> a + 1 in f(1, 2);\n\ + let f: ( , ) -> = fun a: , b -> a + 1 in f(1, 2);\n\ + let f: ( , ) -> = fun a: Int, b -> a + 1 in f(1, \ + 2);\n\ + let f: ( , ) -> = fun (a, b): (Int, ) -> a + 1 \ + in f(1, 2);\n\ + let f: (Int, ) -> = fun a, b -> a + 1 in f(1, 2);\n\ + let f: (Int, ) -> = fun a: , b -> a + 1 in \ + f(1, 2);\n\ + let f: (Int, ) -> = fun a: Int, b -> a + 1 in \ + f(1, 2);\n\ + let f: (Int, ) -> = fun (a, b): (Int, ) -> a + \ + 1 in f(1, 2);\n\ + let f: (Int, ) -> Int = fun a, b -> a + 1 in f(1, 2);\n\ + let f: (Int, ) -> Int = fun a: , b -> a + 1 in \ + f(1, 2);\n\ + let f: (Int, ) -> Int = fun a: Int, b -> a + 1 in \ + f(1, 2);\n\ + let f: (Int, ) -> Int = fun (a, b): (Int, ) -> a \ + + 1 in f(1, 2);\n\ + let f: -> Int = fun a, b -> a + 1 in f(1, 2);\n\ + let f: -> Int = fun a: , b -> a + 1 in f(1, 2);\n\ + let f: -> Int = fun a: Int, b -> a + 1 in f(1, 2);\n\ + let f: -> Int = fun (a, b): (Int, ) -> a + 1 in \ + f(1, 2);\n\ + \ \n\ + \ "; + }; + hints = []; + }; } ); ( "ADT Statics", { - zipper = - "((selection((focus Left)(content())(mode \ - Normal)))(backpack())(relatives((siblings(()((Secondary((id \ - 8f545503-9ccc-4a1f-9570-51cc80ed498b)(content(Comment\"# \ - Internal Regression Tests: ADT Statics #\"))))(Secondary((id \ - 7df37433-694f-49e1-bd34-5e440ddce095)(content(Whitespace\"\\n\"))))(Secondary((id \ - f1af6a08-8b94-424e-bf1e-94bb5efddca9)(content(Comment\"# All \ - commented lines should show errors as described \ - #\"))))(Secondary((id \ - 19de118a-4634-458e-ab3d-fa2ddd45182a)(content(Whitespace\"\\n\"))))(Secondary((id \ - 94a20bbb-796f-4b4b-b587-ad228fc451ed)(content(Comment\"# No \ - other lines should show errors #\"))))(Secondary((id \ - e3134ee0-6c81-431e-a0e9-019b4a005233)(content(Whitespace\"\\n\"))))(Secondary((id \ - ced5b603-67a5-4d6b-8c60-e20d3dc77d8e)(content(Whitespace\"\\n\"))))(Secondary((id \ - bfd76574-e632-450b-8129-cd813c164e53)(content(Comment\"#type \ - definitions: no errors#\"))))(Secondary((id \ - 5bbfdda1-e2fe-4fe2-97b5-8e83fe230690)(content(Whitespace\"\\n\"))))(Tile((id \ - e9e303cd-7ef7-4fb5-8cde-6a1951181563)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - a72a561d-27a9-41f2-8ef3-8065d19a5fde)(content(Whitespace\" \ - \"))))(Tile((id \ - 850533e9-4d0b-46dd-ba43-5be3eef2406a)(label(?))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - fadcfc44-7cdf-4c69-9f56-1a64ce2ae893)(content(Whitespace\" \ - \")))))((Secondary((id \ - fb0ed68b-3058-49d0-a2d0-658170c04016)(content(Whitespace\" \ - \"))))(Tile((id \ - 1e0c1cb1-d251-4e7b-86c2-e7b1cc089924)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 606fc561-7a9f-4c4c-81ab-f4b09c51a78a)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 90da604d-57b1-465b-b94e-da7571018abb)(content(Whitespace\"\\n\"))))(Tile((id \ - 5b223b93-1ca6-43d1-a140-1d1f9d2e3757)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 44600d02-12bf-4611-b2b2-dfaf8c4f73a6)(content(Whitespace\" \ - \"))))(Tile((id \ - 25749c0b-386c-48e6-aced-da78f71607a0)(label(SingleNull))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 9c55ef7a-f168-4466-95e6-cf2e96e9c35e)(content(Whitespace\" \ - \")))))((Secondary((id \ - f7222135-1e0a-47d8-9768-4a2b3d5b3e41)(content(Whitespace\" \ - \"))))(Tile((id \ - 093b56c5-d1d7-4ba8-87ed-36e778e18b0a)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ - 11))(sort Typ))))))(shards(0))(children())))(Tile((id \ - 6297bd3a-a4c4-42c6-8d3d-7235cb78a5e3)(label(One))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 5e9d7baf-7bc1-4d27-9dd8-805d474e307e)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - bce476d9-96e7-420b-aa17-a10481fd5513)(content(Whitespace\"\\n\"))))(Tile((id \ - 38657977-bb27-4f27-b328-eac29facdc1f)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - cbc3f8f9-1bcb-4982-8560-19c6f2033323)(content(Whitespace\" \ - \"))))(Tile((id \ - 0e48e761-87ef-4c15-8414-430c07a0394a)(label(Single))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 40acbb91-7ae1-4440-aa80-7e9db8847fd1)(content(Whitespace\" \ - \")))))((Secondary((id \ - 273f1a10-a364-43ae-9db2-1f9cf1530b06)(content(Whitespace\" \ - \"))))(Tile((id \ - aa249f07-8299-4dca-abd1-d1e7102410fd)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ - 11))(sort Typ))))))(shards(0))(children())))(Tile((id \ - eebac9c4-570b-4c43-8afe-d12787a0b613)(label(F))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 1cff1dc4-0d8c-4419-b45e-74800a59f801)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 2))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 2438e51a-a325-41a3-bd4b-80d5eda4baa6)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 705a3f01-40fc-409e-81f4-60a687da58ce)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 1fd480bc-ad4c-421d-ab12-fb3de2efa08b)(content(Whitespace\"\\n\"))))(Tile((id \ - f3fb89fd-da2f-4ea5-a873-0e6ea51f7686)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - a1d9f6ad-6108-4538-84bc-9a180eb438b0)(content(Whitespace\" \ - \"))))(Tile((id \ - 9ea2359a-3961-497a-addc-e22277787da0)(label(GoodSum))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 1092282e-966b-44e8-bf8c-945357a3cc3f)(content(Whitespace\" \ - \")))))((Secondary((id \ - 7ba4f93b-19ce-4ec6-aaaf-7d58d797054f)(content(Whitespace\" \ - \"))))(Tile((id \ - 3c887993-bf3a-415e-9ea0-89b1fd7fbfa4)(label(A))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 75df5c25-26cc-415d-8499-47e9b3600101)(content(Whitespace\" \ - \"))))(Tile((id \ - 1b27d94b-d652-40da-8cce-e7b2189adcfe)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 11))(sort \ - Typ))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - a250a98e-aca4-4877-bab2-bcef86ee67d0)(content(Whitespace\" \ - \"))))(Tile((id \ - 96094693-c7fc-4383-82b6-577a3cbcf77b)(label(B))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - ea434234-d808-4877-8316-a333f6bb3569)(content(Whitespace\" \ - \"))))(Tile((id \ - 4b1fded6-5bb6-4c85-807e-962dd99e69fb)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 11))(sort \ - Typ))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 6476f6ba-2b42-45db-83c1-ceba76a59a71)(content(Whitespace\" \ - \"))))(Tile((id \ - 282335bf-c355-4b0e-8326-d44bca6d1a41)(label(C))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - d759ff34-5570-453e-8ec8-87014426ef87)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 2))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 97b4d24e-63a5-40ac-9fc5-ee2dded33c16)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - da11db79-7646-478a-93d3-7b2aae1321c0)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 9e98c17c-260d-4a3e-855e-1bbc0ade62fc)(content(Whitespace\"\\n\"))))(Tile((id \ - 3234a4fa-88d6-4747-b851-0f64ed1d53f2)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 8b90c0d6-41fd-4f20-aba6-f5c804258112)(content(Whitespace\" \ - \"))))(Tile((id \ - 500a71f2-abf0-45fd-a7f4-70cea3d59ec2)(label(Partial))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - eb010edf-9908-438c-9c25-af7d412cc0b5)(content(Whitespace\" \ - \")))))((Secondary((id \ - 8283b850-34d4-48ea-9b2a-663d9fcb7292)(content(Whitespace\" \ - \"))))(Tile((id \ - e2b74d99-c07e-46ba-904d-7f5c699cc458)(label(Ok))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 23ae11d9-84ba-4845-856c-a6ae7bfd231e)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 2))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 25765f53-2720-4ddb-b92f-01e30b090d2b)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - a3fbdb78-95db-4b70-9085-2b346153bc9d)(content(Whitespace\" \ - \"))))(Tile((id \ - c9c8b322-afcd-4739-ad8b-d91db8b9b9fd)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 4))(sort \ - Typ))((shape(Concave 4))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 4156bc1b-fa1f-410a-b4c1-2ce7c746e3f1)(content(Whitespace\" \ - \"))))(Tile((id \ - cff577c5-d75e-4b4d-b9de-4e60864398b9)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - e55f0796-7068-490e-8de1-3f3c58002c3f)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 114869ba-22a8-49c8-9c73-a3fe57060dc9)(content(Whitespace\"\\n\"))))(Tile((id \ - e5c55242-63a8-4cb5-8e95-1fdb58a10b7f)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - cbc14084-5dd4-4efb-b4fb-6210346bafed)(content(Whitespace\" \ - \"))))(Tile((id \ - e5096ae9-33b4-4725-9848-480b6860d80b)(label(DoubleAlias))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 9a886244-fd66-4b8b-9c1f-fa80b5e46baf)(content(Whitespace\" \ - \")))))((Secondary((id \ - dcafc866-530b-449d-89ca-fe43873db8a6)(content(Whitespace\" \ - \"))))(Tile((id \ - c9ac785d-96dc-4bf2-aaaa-97ab942a5efd)(label(GoodSum))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - c7b80047-311b-4153-aa1b-803f990d0efb)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 47eac0d8-d8b1-4c4c-832d-4014d5744812)(content(Whitespace\"\\n\"))))(Tile((id \ - a665ab2e-2e67-4c71-9289-6c2f901f8528)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - b3ed006b-88b8-475e-8246-059f0963e8b2)(content(Whitespace\" \ - \"))))(Tile((id \ - 9c3a5271-84e6-460a-a195-9bcd098804cd)(label(VerticalLeading))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - ca7977ef-64e8-47a5-a112-53afc400788c)(content(Whitespace\" \ - \")))))((Secondary((id \ - 98521797-da85-45ce-bf2e-4b3fe7f96b0e)(content(Whitespace\"\\n\"))))(Tile((id \ - b2a63a1f-2688-4dcc-8782-f925d6b3d3e0)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ - 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ - d11152e3-a36c-445b-9535-d43bbd2ce4ad)(content(Whitespace\" \ - \"))))(Tile((id \ - 207a47c3-ae84-4ff6-9d06-9e1c93ad092a)(label(A))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 6ab9c507-8c80-4da8-b18a-87d203ba5a79)(content(Whitespace\"\\n\"))))(Tile((id \ - 10e3b054-9c7d-4c1b-bb3d-5f92086ffd9a)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 11))(sort \ - Typ))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 8622b766-c2d9-4373-8a98-e0816392af05)(content(Whitespace\" \ - \"))))(Tile((id \ - 4c846cd0-efd1-452f-918e-951d53257907)(label(B))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 5e702525-8caa-48bb-8b05-a040df4feeb1)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 2))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - af22edeb-5ad1-4335-8169-7734317f43d1)(label(GoodSum))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 05a0f029-d61e-478e-8dd1-aa49da039942)(content(Whitespace\"\\n\"))))(Tile((id \ - f5f27106-f728-424a-bb07-15ce11337657)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 11))(sort \ - Typ))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 9c5937c6-d774-4d89-9ae9-56fd4e82ce1f)(content(Whitespace\" \ - \"))))(Tile((id \ - ca286fac-9afd-4b52-9b2c-69fdae486a24)(label(C))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 27fadc50-d16c-43db-a863-944dbb0b04b1)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 2))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - b5fe7d27-c744-42ea-922e-caba356871d2)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 40de0ab6-2db4-4168-b17e-b43bf92712ad)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Tile((id \ - 967acf6e-dc2d-4b97-8cb4-5bf5eaf9986b)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - d4f393e4-197c-4f5d-9992-9273a2230d42)(content(Whitespace\" \ - \"))))(Secondary((id \ - 8c283036-2528-457b-8f84-4917ce721da3)(content(Whitespace\" \ - \"))))(Secondary((id \ - 1dff48cf-d5db-4ca5-8e97-1a87f837ca91)(content(Whitespace\" \ - \"))))(Secondary((id \ - 03b2a113-7e4b-43d2-9db7-66e5b018ac80)(content(Whitespace\" \ - \"))))(Secondary((id \ - 45705bc6-5bb1-4392-b2e8-3631305c9ca0)(content(Whitespace\" \ - \"))))(Secondary((id \ - 191bed93-83d6-4e87-9a28-5a654c14a84b)(content(Whitespace\"\\n\")))))))))(Secondary((id \ - b637ddf4-6636-4263-9d49-a7614a1e6f5b)(content(Whitespace\"\\n\"))))(Secondary((id \ - 15c3bd9b-901a-4765-b0ae-2321e7367199)(content(Whitespace\"\\n\"))))(Secondary((id \ - fec3d60e-028e-4a0c-8796-d5fc09e3da83)(content(Comment\"#incorrect \ - or incomplete type definitions#\"))))(Secondary((id \ - 489eb08a-1e8a-4ec9-9c5b-03752b32bd3e)(content(Whitespace\"\\n\"))))(Tile((id \ - 7558ae1d-c2d2-4189-88a6-12ff215a1bee)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 6b2fa0dc-76c5-40c1-8a12-9434217efb46)(content(Whitespace\" \ - \"))))(Tile((id \ - f149a8bb-910c-4022-a578-92dfd9d66bc1)(label(badTypeName))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - a7d39551-cdfc-4990-9f97-923c226ca6da)(content(Whitespace\" \ - \")))))((Secondary((id \ - f43043f5-2d04-47f9-8c63-f7d6a2ded9f3)(content(Whitespace\" \ - \"))))(Tile((id \ - 845cc059-2fe3-44d1-9fa3-25eb07e67e41)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 35957e0c-336f-4eca-bad5-41e410c3e733)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 62c1a220-7594-4725-b900-92624aee8c45)(content(Whitespace\" \ - \"))))(Secondary((id \ - 2f2977d9-316c-41e1-98c8-bfd503b77a35)(content(Comment\"#err: \ - invalid type name#\"))))(Secondary((id \ - b6e233d0-cb62-4f6a-ba0c-f8d1db0cc567)(content(Whitespace\"\\n\"))))(Tile((id \ - 888f016c-d7c0-4c93-a18f-f5c834c9593b)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 2a6d65ad-d513-4e19-ba4e-ca19cd2524ff)(content(Whitespace\" \ - \"))))(Tile((id \ - 417bcb5d-9cb2-4517-9ecd-8b4b4bd4953b)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 4ebd01e6-6e0d-48e6-be97-7e9b9e3023e7)(label(?))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - ffab4ae0-0982-43d4-9142-646be82ce4a0)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 831e5d76-6628-4ac5-832d-a5d0973f9cfa)(content(Whitespace\" \ - \"))))(Tile((id \ - 1152135c-eb19-4e21-9a70-6705b8eb3c01)(label(?))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 226c107d-b679-4359-b700-0af5fb9c0fef)(content(Whitespace\" \ - \")))))((Secondary((id \ - 9a69480f-3749-46b7-b006-3782a8a22bee)(content(Whitespace\" \ - \"))))(Tile((id \ - 3e670739-b668-428b-94bd-89f9357a6c93)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 560d14c8-767f-4b3f-bf8e-4262f4e955d8)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 2f5b0d39-8a13-4ddb-8ba5-e2835d9098c8)(content(Whitespace\" \ - \"))))(Secondary((id \ - f5a63c87-020d-44e8-9cf1-1cf2ba871078)(content(Comment\"#err: \ - invalid type name#\"))))(Secondary((id \ - da7ce790-90ae-4d95-a9cd-cff65cfe54c7)(content(Whitespace\"\\n\"))))(Tile((id \ - f2cfc44a-3702-4143-8cb4-019ec2a2c620)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 7003d5c2-5b64-4a4e-885d-9920ef0ff644)(content(Whitespace\" \ - \"))))(Tile((id \ - 827977a7-08d5-4025-b655-27cc3f0e00e0)(label(?))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 2cbc15af-8797-4931-8a58-70050e5d26d4)(content(Whitespace\" \ - \")))))((Secondary((id \ - afedc638-2702-4c31-880c-49e842d7f452)(content(Whitespace\" \ - \"))))(Tile((id \ - 93bce54a-4065-4016-a4b5-1d15f708a2d8)(label(badTypeToken))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - a72c322a-fe7c-41ca-bfc2-54d2364a63c5)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 8bc487c7-e4b4-4ff2-b8be-7b588c67660b)(content(Whitespace\" \ - \"))))(Secondary((id \ - 4b8f7eb8-e810-406e-9cc3-50ab038b4b98)(content(Comment\"#err: \ - invalid type token#\"))))(Secondary((id \ - 8a476536-be07-4be4-8146-0d8c81610946)(content(Whitespace\"\\n\"))))(Tile((id \ - 4c8d3376-d0be-44f8-bbfe-c641ce6b59cf)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 673e7954-6578-421d-a70b-21447b7bb549)(content(Whitespace\" \ - \"))))(Tile((id \ - f2b11e88-da5b-4726-8d82-e3005b81346a)(label(NotASum))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - faf0684c-a771-45df-b295-72f9356a2e46)(content(Whitespace\" \ - \")))))((Secondary((id \ - fc1e4372-cf3c-4dbe-8f98-802f11b882c1)(content(Whitespace\" \ - \"))))(Tile((id \ - 39854dea-8bdb-4fa6-9f10-446ff45a80af)(label(NotInSum))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - f587e15e-acad-4996-aaf9-27a513104173)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 2))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 6b9a7e4f-eec6-42f7-8f29-9287a34e2e24)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 21c07099-370a-45e5-9bdd-31ae5da95622)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 6b7811b8-66ed-4179-8cd9-7e1a22227120)(content(Whitespace\" \ - \"))))(Secondary((id \ - abba8456-f770-4b21-b4ff-67fd687eac02)(content(Comment\"#err: \ - cons not in sum#\"))))(Secondary((id \ - 064d2987-ae17-4864-8575-c9100308435c)(content(Whitespace\"\\n\"))))(Tile((id \ - fbd98944-622e-41b7-95a7-bb7078744918)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 28135f7e-a78d-4845-9f04-862039a4e609)(content(Whitespace\" \ - \"))))(Tile((id \ - f711c7c8-ab69-4969-9b01-cfe6842f118b)(label(Bool))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 2d1cfbbd-67cd-45cd-8fb1-ffa8aaf9606a)(content(Whitespace\" \ - \")))))((Secondary((id \ - 712836fd-f2d8-4ae8-b834-2a5aa6b977aa)(content(Whitespace\" \ - \"))))(Tile((id \ - 6ebc6774-4004-4a73-b437-2fced0dd6e1d)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 9fc204c2-7649-4f75-a90b-14786125145d)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - d9987d7d-53c3-4a6a-bfd9-381501eb8fab)(content(Whitespace\" \ - \"))))(Secondary((id \ - 5d07411f-534d-4a78-9711-33221ba5e1f3)(content(Comment\"#err: \ - shadows base type#\"))))(Secondary((id \ - 3776f836-6b87-4867-8a6c-66f2fc169050)(content(Whitespace\"\\n\"))))(Tile((id \ - 8aa7fa01-948d-4c05-99f9-04cb40145e7d)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 5d0ad717-41f3-4334-97ac-991ef377dc85)(content(Whitespace\" \ - \"))))(Tile((id \ - edf15f0e-fbc9-46b4-b65b-866ff4a0b469)(label(Dupes))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 333d60a4-e8a2-4ac8-8ea1-49ab56a3463b)(content(Whitespace\" \ - \")))))((Secondary((id \ - 8e14082b-8052-494c-99b9-a57524671756)(content(Whitespace\"\\n\"))))(Tile((id \ - ee19dcaa-71a2-4c91-b05d-ac96faab20cc)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ - 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 8e965307-1027-4a51-b2a6-08e37ecfd206)(content(Whitespace\" \ - \"))))(Tile((id \ - b5bc14f1-e275-4212-bfd7-2589e0b8b725)(label(Guy))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 6ba5f098-b3b6-4b70-a3c0-2e69db74db7d)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 2))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 862f4151-b0a4-4db2-8f90-acdf96709681)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - ceb028b0-c0d7-44d8-be8b-6c3f585ba993)(content(Whitespace\" \ - \"))))(Secondary((id \ - dd51ee1d-84b7-4b04-bee8-a99ce3e56807)(content(Comment\"#no \ - err#\"))))(Secondary((id \ - a901b57c-69b7-45df-b69e-b21c0450a157)(content(Whitespace\"\\n\"))))(Tile((id \ - 3cd85ba6-17b3-4c71-a2a2-f54c3427a32e)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 11))(sort \ - Typ))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - c8470ef0-70ed-4753-83ea-edaaf49503df)(content(Whitespace\" \ - \"))))(Tile((id \ - ed69a782-cffe-4064-9481-3425c8cd4b8d)(label(Guy))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 8185ed69-8f1c-48fa-b3ec-220316630eea)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 2))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - e7493c3a-23b2-45b0-937c-100e294c19a4)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - ccc73854-35fa-4755-bf66-0b841830108e)(content(Whitespace\" \ - \"))))(Secondary((id \ - 15e3ca84-9d18-4355-b07f-485f3928f0aa)(content(Comment\"#err: \ - already used#\"))))(Secondary((id \ - 90cb768f-ee69-46da-85e9-02bdf81188bf)(content(Whitespace\"\\n\"))))(Tile((id \ - 908ca012-d4ef-460a-99b7-bbfbb3c8d082)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 11))(sort \ - Typ))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - ea87f61f-56f5-4bb7-96e1-a2a5a0d1068f)(content(Whitespace\" \ - \"))))(Tile((id \ - e0c22a11-1546-4c87-a199-a5662d0eabde)(label(Guy))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - e52f1b9b-5946-4f70-a3d7-9d5512ca7832)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - cef7901f-0389-4ba6-a5e9-6520626a378d)(content(Whitespace\" \ - \"))))(Secondary((id \ - 83d2b79a-91b6-4ac8-b769-845f1c62733f)(content(Comment\"#err: \ - already used#\"))))(Secondary((id \ - fa95b24d-693a-4f12-81de-fe1c4c53ab2e)(content(Whitespace\"\\n\"))))(Tile((id \ - cf385365-40b7-45eb-ad57-2021c268f397)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 824f2d46-1063-4c08-9778-b3efae1d6b64)(content(Whitespace\" \ - \"))))(Tile((id \ - 3ec9ae2a-cbed-4c90-814a-d211077d49f2)(label(BadCons))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 96fd6772-8725-4875-b5de-c9a15b8f5973)(content(Whitespace\" \ - \")))))((Secondary((id \ - 2dcafd6c-e8f2-4304-97c5-9b36d13d932c)(content(Whitespace\"\\n\"))))(Tile((id \ - 002acdc1-a61a-4ed9-a081-b8230078dd44)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ - 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ - b78bcd1e-362b-44ce-9d85-a480eba224a9)(content(Whitespace\" \ - \"))))(Tile((id \ - c6f91064-ec82-4995-8bc5-db8ee018a756)(label(Um))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 7c9464b5-3b7d-45d2-80eb-d91ab8cfd62e)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 2))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - fa5518e3-4eb3-4be6-8364-c39ef2608c95)(label(Unbound))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 99e81a33-186b-457a-bfce-f5145b9bd050)(content(Whitespace\" \ - \"))))(Secondary((id \ - 8592d68d-3e53-46c0-935b-16d1c836ba58)(content(Comment\"#err: \ - unbound type var#\"))))(Secondary((id \ - 204f4073-1e00-4bdd-bd93-385d46f05b13)(content(Whitespace\"\\n\"))))(Tile((id \ - ca0c6033-2ddf-4f79-b055-b48b89831a05)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 11))(sort \ - Typ))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 2d6e17bd-d828-47e3-b4be-350c0b73bffe)(content(Whitespace\" \ - \"))))(Tile((id \ - e5e19711-bab1-44c1-b80a-558676c264fd)(label(notvalid))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 5b817dd7-3b08-4638-bc49-927e1191e4d5)(content(Whitespace\" \ - \"))))(Secondary((id \ - c329adb2-8abb-4f15-a2cc-54e1a9666062)(content(Comment\"#err: \ - invalid#\"))))(Secondary((id \ - 1f6b7a3a-6544-4793-bd5b-2cedcedd362a)(content(Whitespace\"\\n\"))))(Tile((id \ - 47e1980c-6bcb-4d35-917b-0aa366e82a00)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 11))(sort \ - Typ))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 71915789-4894-45a2-89e0-aaff76f7afce)(content(Whitespace\" \ - \"))))(Tile((id \ - e1df3e66-0559-4e29-a642-fb9249ce3a79)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - c0d5da6d-8291-468f-9811-17af4efba571)(content(Whitespace\" \ - \"))))(Secondary((id \ - a7dec1b9-aaf6-48ed-92b9-48f6aceef004)(content(Comment\"#err: \ - expected cons found type#\"))))(Secondary((id \ - 540ed3f5-7525-42a5-b484-c71a160b49ad)(content(Whitespace\"\\n\"))))(Tile((id \ - bd587c31-7fb5-4d25-8723-596f77315616)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 11))(sort \ - Typ))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 5eefc185-3a52-45c2-ba3a-5f4b13d8dbb7)(content(Whitespace\" \ - \"))))(Tile((id \ - 8f4a1a30-5205-4374-b4b3-63fb25420490)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 71d3afac-3e1a-41d9-984e-e5ea6da607bf)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 2))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - c5a4bce2-945a-4220-ad1b-f4dcf6c3149c)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - e2d76872-4c0a-4466-8156-a165ff424b2a)(content(Whitespace\" \ - \"))))(Secondary((id \ - ef25dfa1-8d2f-4eb0-8610-d032e6e75600)(content(Comment\"#err: \ - expected cons found type#\"))))(Secondary((id \ - c4609ea8-b2d1-4650-b0eb-543cc0b23a83)(content(Whitespace\"\\n\"))))(Tile((id \ - 8a9fa4fc-41ba-43bc-9a11-d971243df488)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 11))(sort \ - Typ))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - eb8dad38-7aae-4245-b33a-59a5a8dcb957)(content(Whitespace\" \ - \"))))(Tile((id \ - 71968b46-dda7-41c3-bd0c-ec1ae8e9d8e5)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 4d687c4d-078a-447f-89e2-de2bfaf42ddc)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ - 976267ab-9b5c-4220-846e-1b135314b98e)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 2))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - de8c7cfb-4375-4637-b416-844c9e54d7f7)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - ea0e5687-1874-4236-8834-272136dac6f3)(content(Whitespace\" \ - \"))))(Secondary((id \ - 7468b44f-805c-4e0c-ad77-c4cb4f848e6d)(content(Comment\"#err: \ - expected cons found type#\"))))(Secondary((id \ - 4a153c35-5ce5-43fc-bbcd-7e43cbb18953)(content(Whitespace\"\\n\"))))(Tile((id \ - 18c08f07-6b58-4a22-8f4d-682810773cb3)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 11))(sort \ - Typ))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 7cd788b7-0236-40ae-b1da-2f20ab6a8cf4)(content(Whitespace\" \ - \"))))(Tile((id \ - f1feabaf-5ddb-4db9-b69a-b7e6eca70bf9)(label(A))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 8d82ae98-be0d-4f2f-beb9-3fcb2490a4a0)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 2))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - ffadc84f-e2c3-4bae-b968-b9ca33bc496c)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ - 2f1dab86-7106-4f52-a424-32ff23639a18)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 2))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - ba7db097-40b6-4d66-b4a1-2059036739f8)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - bd06261b-be63-4826-8c7a-2e82956837f5)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 3ebb1024-ba7f-4a31-87e6-e023edacceae)(content(Whitespace\" \ - \"))))(Secondary((id \ - 76dd8410-d31d-4d22-ba0f-50559b87f636)(content(Comment\"#err: \ - expected cons found app#\"))))(Secondary((id \ - a4f7906a-e44e-4c54-822a-2839c0cdb322)(content(Whitespace\"\\n\"))))(Secondary((id \ - cadf4e99-f2ec-4447-b970-7f972a395d06)(content(Whitespace\"\\n\"))))(Secondary((id \ - 98cb10d1-3207-476f-9e61-2af22fc00094)(content(Comment\"#sums \ - in compound aliases dont add ctrs to \ - scope#\"))))(Secondary((id \ - 685006ca-8fa3-4967-b9ba-183f7f154ecc)(content(Whitespace\"\\n\"))))(Secondary((id \ - 33f054b4-f4a2-40b2-8783-394a2d1299c6)(content(Comment\"#but \ - compound alias types should propagate \ - analytically#\"))))(Secondary((id \ - 80dcf596-5dfa-4e32-ba56-a72707cb677c)(content(Whitespace\"\\n\"))))(Tile((id \ - 9642e332-c9b2-4f1a-9692-bd1569f5a63f)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - ecd9880d-5dd7-4f39-a08b-9b91d584ebbc)(content(Whitespace\" \ - \"))))(Tile((id \ - d1adeb5c-ab3f-4494-97d5-607502c6b76b)(label(CompoundAlias))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 61dfd748-f518-464f-a1e1-b9652cb0def6)(content(Whitespace\" \ - \")))))((Secondary((id \ - 81f58e1d-3115-422a-be90-01d086075c5f)(content(Whitespace\" \ - \"))))(Tile((id \ - e5325ade-d364-4f8b-9a04-bc74b904f07d)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 40fef070-2b38-4421-beb6-5c8f2c6a308b)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - e4d6f8f0-6d32-4a70-956e-9b656b7c6d2b)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - bbb249de-9308-4a5e-b8d4-9101cf6102ac)(content(Whitespace\" \ - \"))))(Tile((id \ - a029348c-f2d0-48e4-999f-ed821dce66f1)(label(Anonymous))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 03d4c0a6-1e17-4343-9428-9d215e96d0a2)(content(Whitespace\" \ - \"))))(Tile((id \ - 43fc2bdb-d0e4-46b2-babd-5429c35a9e9c)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 11))(sort \ - Typ))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 8be1ea2c-fd19-41e8-a831-dfee3966e1a2)(content(Whitespace\" \ - \"))))(Tile((id \ - 81dec1b6-4128-4881-bcd9-50e3a3e428c7)(label(Sum))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 6235a423-f744-439c-8353-fb9c24e1691c)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 29066f68-1f40-44db-9c83-efb0ba7a84c4)(content(Whitespace\" \ - \"))))(Secondary((id \ - b632fcd7-4568-42e4-ac0e-594cd4bb40db)(content(Whitespace\"\\n\"))))(Tile((id \ - d716fa00-7df4-413e-9916-3a0a6e640604)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - ea39fa11-773b-423e-81d5-3b02f76bd085)(content(Whitespace\" \ - \"))))(Tile((id \ - 5d57e03a-351b-41ba-ad6a-ace053f8968a)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 87bb2a66-42f1-4be7-89e6-bb9556f13fd3)(content(Whitespace\" \ - \")))))((Secondary((id \ - 0f036fb7-2f6f-4758-8aca-d454055eec0c)(content(Whitespace\" \ - \"))))(Tile((id \ - 1917ca65-db0c-433c-a8a0-0f5051b124be)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - caf1b5fe-02ce-4776-93b5-83ee336cb24e)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 8ec33430-e0e9-499b-aa7f-37d478bb31b9)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - a6561beb-8516-40ed-b30c-d79e85b5a1cf)(content(Whitespace\" \ - \"))))(Tile((id \ - f26865be-cfc2-4eea-9a3d-ccb233775511)(label(Sum))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 52415178-0882-473e-81b0-85dfeb97fbb8)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 4fc6a41a-cbab-4ee8-831d-f483c05d51fb)(content(Whitespace\" \ - \"))))(Secondary((id \ - 75d63fc9-22a0-4b25-b03d-c8c60d01cdef)(content(Comment\"#err: \ - not defined#\"))))(Secondary((id \ - 5902d467-dad9-4d76-9289-cff3d2d908a8)(content(Whitespace\"\\n\"))))(Tile((id \ - 13e603bf-456c-4a68-a4f8-081ab1f27467)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 9e33f211-e11b-4123-a996-98e3b239b091)(content(Whitespace\" \ - \"))))(Tile((id \ - c419a6c2-109d-473e-b10f-4f86044ab502)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - cdd7be54-b091-494b-90f2-4f33a24f36c3)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 8fe7c565-b854-4710-adf5-93e4e8435308)(content(Whitespace\" \ - \"))))(Tile((id \ - 8f2faaad-3556-4dd4-a893-34427cf0f0e2)(label(CompoundAlias))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 1a941975-2d17-4e9d-b59e-03a046859a51)(content(Whitespace\" \ - \")))))((Secondary((id \ - 27b694ae-7a7c-4b1d-9ba6-9d1765ad3d35)(content(Whitespace\" \ - \"))))(Tile((id \ - d86c44c8-d177-4816-ad64-e2a102636bf5)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 5df66e2e-0f4d-4712-b312-8a8f4270717e)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 1463a015-88ce-4310-8732-2674b62f0269)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 976861eb-837f-4057-90cc-423961503364)(content(Whitespace\" \ - \"))))(Tile((id \ - 660a30f5-d516-464c-9f00-27468adc7df4)(label(Sum))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 6991618c-9ca3-4a66-9320-8cbb1033e337)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 7af72e22-e007-4afa-84f7-1129f90e471b)(content(Whitespace\" \ - \"))))(Secondary((id \ - b0520746-880f-4eb9-8d0b-62b8ce50c5fc)(content(Comment\"#no \ - error#\"))))(Secondary((id \ - eca69d84-ccaf-4136-b2b7-aee3aff06565)(content(Whitespace\"\\n\"))))(Tile((id \ - 9c7e2a19-1253-4730-b97f-41371b0b2633)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - d9b31d92-3b25-43f3-8a46-1e8fb77a9ef1)(content(Whitespace\" \ - \"))))(Tile((id \ - 8215a985-87cd-4eeb-b453-019c74ddebc6)(label(Yorp))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 2827e281-ad0b-4392-a3d3-3697aedc866b)(content(Whitespace\" \ - \")))))((Secondary((id \ - b03f72ee-9893-4b0f-919b-167c8ff201c7)(content(Whitespace\" \ - \"))))(Tile((id \ - 97e12b1d-da88-4adb-af7f-02f2cb0a955b)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - d704f7a1-04b8-4bc9-a9e9-b2ef79f39b3c)(content(Whitespace\" \ - \"))))(Tile((id \ - c05204ce-ae3e-43d2-b444-335cc6009080)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 9fd48464-2d3b-4c89-a74e-842fec231177)(content(Whitespace\" \ - \"))))(Tile((id \ - 968a2ab4-cddb-443e-85d5-f239af736833)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - d32c9b60-af33-4ad7-b306-bc5e609399bc)(label(Inside))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 9223590b-d737-4178-97d5-ecd925664de0)(content(Whitespace\" \ - \"))))(Tile((id \ - 81131e9c-b78a-44f4-94af-d1f420b664d7)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 11))(sort \ - Typ))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 5d6e9cb5-37df-492f-a934-aa0d860d6c4b)(content(Whitespace\" \ - \"))))(Tile((id \ - 4d419704-0928-43ed-9a67-75baf0450c7b)(label(Ouside))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 683ec632-064c-4ce2-bb3b-db1f40743bc9)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - b764ddf1-4e23-4e43-9262-25a977d70164)(content(Whitespace\"\\n\"))))(Tile((id \ - c5ef6303-8e2d-4e18-9460-d9fce711a99a)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - b7ecad3c-1945-40a4-bff8-104c3980e9d6)(content(Whitespace\" \ - \"))))(Tile((id \ - edf1b2b6-a5cd-4598-b1bc-62abfc8f8471)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - b55e4ea6-81c8-46d3-b9ed-fb88e8b44dc3)(content(Whitespace\" \ - \")))))((Secondary((id \ - 06c6d274-c0e0-4a72-9157-64143d5d0f5c)(content(Whitespace\" \ - \"))))(Tile((id \ - 64e7b454-4aa9-4c96-8426-bf8cbd295349)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - cd07032c-3d70-452f-bef9-5fdec314dbf3)(content(Whitespace\" \ - \"))))(Tile((id \ - 0d0bd496-2b14-41d6-abcb-892da1b50942)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - bf3bdc70-f358-433f-a0a3-b73129be9db0)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 069d87f2-30b4-4343-aa89-452af86019d1)(content(Whitespace\" \ - \"))))(Tile((id \ - a8f6e316-23fe-43d6-ae87-da77a0e18daa)(label(Inside))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 2742564e-af1e-4eac-8903-ed5bf573e87c)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 15277889-0200-4dde-91c5-71ec68eadc99)(content(Whitespace\" \ - \"))))(Secondary((id \ - 2f15e27b-2392-4415-ad40-7e8379abf40b)(content(Comment\"#err: \ - not defined#\"))))(Secondary((id \ - 4df8184e-4312-4e2c-acb8-c5ee10245bad)(content(Whitespace\"\\n\"))))(Tile((id \ - c9f910cb-2fd2-47d6-8168-5fc7fbc22eed)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - c58180a2-e049-43d9-9bad-f92c834a3985)(content(Whitespace\" \ - \"))))(Tile((id \ - 4062b7bf-5df9-4c00-9402-610143ee006c)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 3d8c91f2-1199-4f2b-8be0-4df8f0c5e7a8)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 08df780b-4967-4ae6-b8f7-835b9a1123e3)(content(Whitespace\" \ - \"))))(Tile((id \ - 360ff087-6ce5-44ed-8278-6eb5c71de0e6)(label(Yorp))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 25804b46-4434-43af-9d40-9586e09e1ce5)(content(Whitespace\" \ - \")))))((Secondary((id \ - 8dec9189-efa4-4ce3-9077-9d6106c3c6bc)(content(Whitespace\" \ - \"))))(Tile((id \ - 84422b9e-b9e7-43db-ada4-8a2177cc8901)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - e18535e2-f9f1-483c-9517-83078bc5ee2e)(content(Whitespace\" \ - \"))))(Tile((id \ - ef219832-75e1-441b-8242-dfd0ccfaa943)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 3198f7fd-fcee-4d60-8d8d-c4ae93b689e1)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 9676f68c-e9ee-435c-8426-55fb03b74826)(content(Whitespace\" \ - \"))))(Tile((id \ - 11c55eaf-752e-434c-8205-aa0979c70a1e)(label(Inside))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 3be6bd7b-123b-401e-b91a-cb0b02b0eb7c)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 4272fc24-30cb-494b-a5e9-60979153011d)(content(Whitespace\" \ - \"))))(Secondary((id \ - 3bdb9f62-9fbe-40e1-a936-0b0684424ab8)(content(Comment\"#no \ - error#\"))))(Secondary((id \ - c1d66da1-2de4-45f8-b572-9526f49a365b)(content(Whitespace\"\\n\"))))(Tile((id \ - f3eb8a20-1606-466e-80ee-1f088bb340e1)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 9c360795-0f31-496e-a2ab-a77bc0920ed1)(content(Whitespace\" \ - \"))))(Tile((id \ - 2f503192-c953-40cc-b196-1d1214f905ef)(label(Gargs))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 359fc616-3a4b-4fed-a987-4d7807047de7)(content(Whitespace\" \ - \")))))((Secondary((id \ - 3d54b95d-6b3b-4b1a-8a3f-331e9388cc0a)(content(Whitespace\" \ - \"))))(Tile((id 53ae9864-aca9-4018-a3cb-76662425bb1a)(label([ \ - ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ - Typ))((shape Convex)(sort Typ))))))(shards(0 \ - 1))(children(((Tile((id \ - ba0cf0d4-6a4f-4826-a6a0-457bf5fd4209)(label(BigGuy))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 7ce7f928-26b8-4c47-b868-b942afe727bd)(content(Whitespace\" \ - \"))))(Tile((id \ - c4805da2-317a-420e-b323-9bd9eb774057)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 11))(sort \ - Typ))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 0b36e8bc-f4fa-45b1-b3f6-11bb5fef5c0d)(content(Whitespace\" \ - \"))))(Tile((id \ - a3d1a1dd-4eb6-4815-b7ca-baad6d12848f)(label(Small))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 72286b6c-144d-466a-9b7b-dcac3b30df97)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 6f508128-be53-47d7-9740-eef28d7f19d3)(content(Whitespace\"\\n\"))))(Tile((id \ - 6bce35d6-75ee-4d08-b9c3-e2a5327f2485)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - cad7c8a9-49c1-4f5a-9251-58a59b2c7705)(content(Whitespace\" \ - \"))))(Tile((id \ - da19fbb2-f967-4b5a-8161-914738d791d7)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 12f4c6f4-5e75-4676-8fc1-a4190972d660)(content(Whitespace\" \ - \")))))((Secondary((id \ - 153ec2cc-a592-4bd9-8bca-f5ca2f0c32f5)(content(Whitespace\" \ - \"))))(Tile((id \ - ab7ae389-6044-4351-97c6-2bee09c2166e)(label(BigGuy))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - b1ee7f84-e4bc-4268-800c-c049640e7bda)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 66a51d54-e827-4852-94db-1370f29bb85e)(content(Whitespace\" \ - \"))))(Secondary((id \ - 980a8c78-aa73-4018-9bfc-0e207bdba09a)(content(Comment\"#err: \ - not defined#\"))))(Secondary((id \ - c7a0c81b-b344-47ba-9245-773a86757cf9)(content(Whitespace\"\\n\"))))(Tile((id \ - 53dfb2bd-bad6-412c-b6ab-78879e4403ca)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - d81c625d-ebb9-426b-86f7-13e8bc98c6a2)(content(Whitespace\" \ - \"))))(Tile((id \ - 85617da9-8478-469b-a8e7-cda34854c231)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 7297dfc4-5962-4253-bcb6-d309acfcfb7f)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - a7c09e56-d6ef-4c42-9ca2-2eb8ca5deda2)(content(Whitespace\" \ - \"))))(Tile((id \ - fccc6f0c-3f02-41c3-81b7-ad93aea8dbed)(label(Gargs))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 49451f76-6cd9-48d5-a581-278713aaebea)(content(Whitespace\" \ - \")))))((Secondary((id \ - 0ed843cf-0d95-459c-8fb7-e58e27a324e5)(content(Whitespace\" \ - \"))))(Tile((id db1c004c-7614-4977-9da5-7085a98e4b62)(label([ \ - ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Tile((id \ - cc1be8b8-7922-4929-af7f-ff1e4da6688f)(label(BigGuy))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 32e124dc-cbc0-4262-a5fe-0c1b168fbb97)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 7e8879d7-3d03-414d-a3a8-0de23660d184)(content(Whitespace\" \ - \"))))(Secondary((id \ - a5f8a52f-0f56-4bd4-bec6-b4e7591c342d)(content(Comment\"#no \ - error#\"))))(Secondary((id \ - a86b7b7d-6fbc-4fab-98f9-e189251fcde1)(content(Whitespace\"\\n\"))))(Tile((id \ - bcb8b7b5-d04d-4468-b57b-8a8fe8346bbb)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 892fe1b4-bc15-44ab-a8ac-d9b3e0fc3cfb)(content(Whitespace\" \ - \"))))(Tile((id \ - 9760067d-18d9-4e53-a3a7-83063c46471c)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - e0d9c8f9-26e9-4468-9c53-ef358b7375a9)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 76a580f6-97bf-4f8f-b092-6dc14c007099)(content(Whitespace\" \ - \"))))(Tile((id \ - 74dcfd27-8e04-4048-9af6-8f7faa3c6205)(label(Gargs))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 744ac54b-7d7a-4a77-9671-afa4377e0da7)(content(Whitespace\" \ - \")))))((Secondary((id \ - 7a45b4c7-1be5-4b93-a83c-063816ecc75a)(content(Whitespace\" \ - \"))))(Tile((id \ - 2210880b-3ca7-4fb7-8ba4-cdf2370fd5e7)(label(BigGuy))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 87f1fdb2-694c-429f-8182-2f4d8afa5fa7)(content(Whitespace\" \ - \"))))(Tile((id \ - a5af65b7-739b-4450-a82a-8abfae4ef5e4)(label(::))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 7))(sort \ - Exp))((shape(Concave 7))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 5b7e41a8-9c5b-4057-9e85-2d91e682f321)(content(Whitespace\" \ - \"))))(Tile((id 1b855c82-2dca-48f8-80ec-f170ee04cc98)(label([ \ - ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Tile((id \ - d390eba9-9726-4f6b-9f8d-ae0134346520)(label(BigGuy))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 5fbb51d9-4772-4a81-beba-43f39d796d34)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 6f3fe04b-7b9c-4748-b084-da7657bb7cb0)(content(Whitespace\" \ - \"))))(Secondary((id \ - 98fed9d3-9bbc-491c-ad55-49794b84bfdb)(content(Comment\"#no \ - error#\"))))(Secondary((id \ - 071ab1ab-da5f-4d4f-94d0-a0b69ab6ec3d)(content(Whitespace\"\\n\"))))(Secondary((id \ - b16d13cb-4267-4304-8b52-755c370859d2)(content(Whitespace\"\\n\"))))(Secondary((id \ - 5a95e82b-b85b-4723-8b24-bfc5f5e2994b)(content(Comment\"#unbound \ - tyvars treated as unknown-typehole#\"))))(Secondary((id \ - d2cf3c36-b459-43d8-aa91-ae0221ff256c)(content(Whitespace\"\\n\"))))(Tile((id \ - b9e7ec75-0c3b-466b-bb1c-b6b6215f7727)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - b5419758-62d3-4051-8954-1173793960cd)(content(Whitespace\" \ - \"))))(Tile((id \ - 856b4cb1-a394-4709-a2d0-036af0f19670)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 4f2ce133-7e82-4eaf-9e1f-031b5fe7fbf0)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Tile((id \ - 2153f84b-2abb-4b57-a8be-5d1fc665615e)(label(Bad))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - a17fefb5-1e4d-41fe-929e-fbce980b67d6)(content(Whitespace\" \ - \")))))((Secondary((id \ - f23000bf-b847-42cf-b29d-69a356970fae)(content(Whitespace\" \ - \"))))(Tile((id \ - de8d5585-a42b-460a-9796-915ca91c4356)(label(0))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - d8858983-ce84-463c-a302-c45b539cbf7c)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 7bd09626-9b70-4fdf-a296-ebb4af0dd9e0)(content(Whitespace\" \ - \"))))(Tile((id \ - 02df711b-d66d-4835-8335-fdd3f524712e)(label(a))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 8ec22496-f1bf-466e-8993-45fed884410a)(content(Whitespace\" \ - \"))))(Tile((id \ - 6fc53113-fb3a-42c7-819a-be8d9649012b)(label(==))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 26ab1f83-fce3-46cd-8c21-44013553f7ac)(content(Whitespace\" \ - \"))))(Tile((id \ - fe6adff9-71b5-4800-ae43-9ae4f588a231)(label(0))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - b7d331ee-30f0-4a40-a640-ddd610dc52aa)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 86c66d93-4bd9-472e-829a-c115e17106c2)(content(Whitespace\" \ - \"))))(Secondary((id \ - c1a9a07f-fc20-4e71-b95b-c5b424a23210)(content(Comment\"#err: \ - not bound#\"))))(Secondary((id \ - 8f4f0f64-2f3b-42b4-b20c-d0a9ebbb56cb)(content(Whitespace\"\\n\"))))(Secondary((id \ - a8fae9ba-bd75-44d0-be17-06bba380ccc5)(content(Whitespace\"\\n\"))))(Secondary((id \ - 668a740b-bdd1-4180-9d7b-25471ec9226e)(content(Comment\"#non-sum-types \ - cant be recursive#\"))))(Secondary((id \ - 52a8a716-06fb-44dd-b635-3472a9792d61)(content(Whitespace\"\\n\"))))(Tile((id \ - 3f4bef85-fc5f-49e0-b818-cba9f0778272)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - ce58cc68-cd82-4524-9d4c-4d1d5047e395)(content(Whitespace\" \ - \"))))(Tile((id \ - 5d934397-aaec-4a28-8c44-eacd648fda6d)(label(Lol))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 4849bc0a-a3ce-450d-b289-ee60cbe65069)(content(Whitespace\" \ - \")))))((Secondary((id \ - 573ad4ad-4e13-4420-a6f1-a66f43279941)(content(Whitespace\" \ - \"))))(Tile((id \ - addad050-0502-4c05-b6f1-5fce268bb700)(label(Lol))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 0553f523-a997-4901-bb0b-87a05b432b03)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 9a819086-2078-40ee-9a1a-21606d02b8a1)(content(Whitespace\" \ - \"))))(Secondary((id \ - 4e27451a-40ef-4ba0-a12a-44643e57fa65)(content(Comment\"#err: \ - not bound#\"))))(Secondary((id \ - 676e00de-3544-4f33-95aa-e7e322b86be9)(content(Whitespace\"\\n\"))))(Secondary((id \ - 43cd4830-f9d7-48a8-8a40-85f79433fd39)(content(Whitespace\"\\n\"))))(Secondary((id \ - 731b69d8-dd1a-4ff7-9163-7ce9e016d7a6)(content(Comment\"#no \ - errors: analytic shadowing#\"))))(Secondary((id \ - fb9de40b-6639-4a0c-be97-ca55eee77bc0)(content(Whitespace\"\\n\"))))(Tile((id \ - 39502d12-2289-4cb5-aa7a-85f2e1d9b629)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 42b4daad-1a04-410c-a934-c396cc336feb)(content(Whitespace\" \ - \"))))(Tile((id \ - 1a31b4d3-44dd-4bbd-bd16-8f516ad4c165)(label(Tork1))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - a77ad622-e03d-4625-8513-3ce6c86c213d)(content(Whitespace\" \ - \")))))((Secondary((id \ - bc4a9379-e76b-4f6a-ae51-6c03368cd39d)(content(Whitespace\" \ - \"))))(Tile((id \ - fab7bf8e-aa55-4fd3-9bb9-73e89e845a54)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ - 11))(sort Typ))))))(shards(0))(children())))(Tile((id \ - 267c0915-83c3-489b-b8c9-34f72da1a4b7)(label(Blob))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 1578116b-1db5-45e7-b9ec-22154096c988)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 8f69102f-a33c-4164-8e74-fd20ed811617)(content(Whitespace\"\\n\"))))(Tile((id \ - 5494416a-7f58-4f45-9c5e-6b3bcd96984c)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 14171c46-0000-4f49-a18d-5e0685e098b3)(content(Whitespace\" \ - \"))))(Tile((id \ - b12148ff-2252-4d1f-a498-18ff70f482a2)(label(Tork2))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 30f486e0-9a72-467e-b01a-c88c92b6c5e2)(content(Whitespace\" \ - \")))))((Secondary((id \ - eaf29043-93b7-4b43-a6d4-9d84dced4e6f)(content(Whitespace\" \ - \"))))(Tile((id \ - 4bdb6b0b-11f0-4f48-97c0-00f3b611a4f3)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ - 11))(sort Typ))))))(shards(0))(children())))(Tile((id \ - bc845647-1464-4956-950a-fcefa5cfa454)(label(Blob))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 4bd9bccc-858d-4fc8-a1e1-45dd6c674c2a)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 5941d2b6-3311-485b-a367-186680ce45a2)(content(Whitespace\" \ - \"))))(Secondary((id \ - 30b9b699-1c26-46ee-9d6a-cdb083508986)(content(Whitespace\"\\n\"))))(Tile((id \ - 63873fc6-b24c-474c-8451-f0319ea31c48)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 8a5a4915-58e6-4f9e-af2a-dd5a6ec31e74)(content(Whitespace\" \ - \"))))(Tile((id \ - 44aef16a-7cc6-4170-bb27-1bdd1b46699f)(label(x))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 84f3b1af-624b-43c9-909e-2ff6c15f324a)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Tile((id \ - 563d7c82-ad90-4b47-afed-b9cbdf4f12a1)(label(Tork1))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - a6011ca4-93c4-419b-a67d-75e9c863fd9b)(content(Whitespace\" \ - \")))))((Secondary((id \ - 10f0588d-7294-40e8-9840-f9826db9e133)(content(Whitespace\" \ - \"))))(Tile((id \ - d0ff59ed-ac6c-4d3b-bbfd-8ace04c855fd)(label(Blob))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - ebd81c08-01af-4e2a-be8f-6610e2df9b5a)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - e8fea8d3-bde2-4255-9da9-6b90e611d582)(content(Whitespace\"\\n\"))))(Secondary((id \ - 5b5026f2-8cb9-49ad-9e5d-ea4d14c0c035)(content(Whitespace\"\\n\"))))(Secondary((id \ - 00e9c695-8e0c-4ff9-acb4-d7c5024c3479)(content(Comment\"#exp \ - tests: happy#\"))))(Secondary((id \ - 9f913f02-d26b-41a2-9a8a-0aedeeb827cc)(content(Whitespace\"\\n\"))))(Tile((id \ - 4182a900-50f0-4321-9cd9-c31e262f6cec)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - c469b0c2-9808-49d9-8de4-2859a73e7d98)(content(Whitespace\" \ - \"))))(Tile((id \ - 5b48c769-1d49-4aec-ba7a-782b729ec0c2)(label(YoDawg))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 9df2cff0-9acc-441c-95bb-62b62988d87b)(content(Whitespace\" \ - \")))))((Secondary((id \ - 88a87e8c-1f6d-4afd-bae2-501813299849)(content(Whitespace\" \ - \"))))(Secondary((id \ - d71f5c70-8e84-4fe4-8487-f0a372363384)(content(Whitespace\" \ - \"))))(Tile((id \ - 6ec93fab-9058-4dd5-a7f5-bfaaebc268cc)(label(Yo))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 20e367dd-ed59-48cf-a9f2-d83f26fc98df)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 2))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 217d5faf-873c-4015-ae58-f7a9678c0e31)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 24adf632-92fc-4100-8f64-4e1a408953f2)(content(Whitespace\" \ - \"))))(Tile((id \ - 4a4a927f-90d2-464b-a95d-5bbafbd24056)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 11))(sort \ - Typ))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 9587ea62-dee9-4b1e-9ad1-ddea2b529084)(content(Whitespace\" \ - \"))))(Tile((id \ - 4df62e34-08fa-470e-b792-e1c4cc6acbf0)(label(Bo))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - b284f0c6-7f23-4625-a3ca-65858679d9d2)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 2))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 0e485ec7-96b2-435f-9331-d55870bdd079)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ - a548fa6f-b407-4b99-80ce-3c47d53886bf)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 11))(sort \ - Typ))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 0741c58d-7c84-4eac-938e-c9ec2fb17845)(content(Whitespace\" \ - \"))))(Tile((id \ - ed51fcf7-2b2e-4822-8b12-c6bf2d325112)(label(Dawg))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - d7b0d16d-ef67-4086-8797-317f1f927b7c)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 2))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 518d24c7-158e-468d-8727-271691e8e966)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 3a411ead-118d-4d09-8221-5b0008492ded)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - ba581f63-51bd-4ea8-9ffb-9b7112c94ac9)(content(Whitespace\"\\n\"))))(Tile((id \ - 7ea2869b-d8dc-4d26-80b9-dcf8dd905ebd)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 8611ee0f-e191-4ed6-b93b-0694008bc466)(content(Whitespace\" \ - \"))))(Tile((id \ - 3deebda3-10c9-4729-9e69-94f502d90a44)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - c07c68e0-cb81-46c8-a113-3cf234300050)(content(Whitespace\" \ - \")))))((Secondary((id \ - 5633aeb4-fabd-496e-a88b-481a77aed6b6)(content(Whitespace\" \ - \"))))(Tile((id \ - 0609b923-6418-4c8c-aaca-eb1f494e84a0)(label(Yo))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 018de1d3-a5f4-4082-a5ad-a42bea8c06f4)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 23e547bd-dee0-4773-a433-3866a7267348)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 69d8352c-9acb-4a0f-b1c7-0e3752a0cf57)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - e6934fe0-6183-49f2-bcb9-fb2617ca934d)(content(Whitespace\"\\n\"))))(Tile((id \ - 758d4f0d-2bff-40a0-bf73-1e3caeaa1fa2)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - a576f3a1-8c9a-4961-9e11-94b0e2883a03)(content(Whitespace\" \ - \"))))(Tile((id \ - efa64c22-a5eb-4860-894f-6f746b51ba7a)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - a8239952-bdb0-43ef-9064-9bd523f851dd)(content(Whitespace\" \ - \"))))(Tile((id \ - 8b547667-485f-4402-99f4-9d83fe051555)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 29fa8cba-2a39-46ab-bb61-e3cc1dc81acc)(content(Whitespace\" \ - \"))))(Tile((id \ - 3a05b5c2-008f-4806-b0bb-c5bc1b07bd04)(label(YoDawg))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 36d9b47a-0198-438a-b69c-5c2a1ee4197d)(content(Whitespace\" \ - \")))))((Secondary((id \ - 7afb0598-72b4-499a-a91c-97f43295d956)(content(Whitespace\" \ - \"))))(Tile((id \ - 374f4d02-c663-48b7-898a-05a756f90058)(label(Yo))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 88135158-74e8-49e5-8c6b-1e04b4e6e0dc)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 27c7b963-af6a-4a2f-b844-90d93e5b34d5)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 7c0175a7-f9eb-4895-8691-4efe369afc92)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 8903a4ef-12cf-49aa-abce-50c0e1a680ce)(content(Whitespace\"\\n\"))))(Tile((id \ - a0d5fac0-2b33-4cf9-8752-2d290ebbd037)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 80490997-4865-40fa-a3dc-9a7227828f75)(content(Whitespace\" \ - \"))))(Tile((id \ - a54667e7-1a73-4819-845b-9c5fb6847209)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 901300c2-00b0-4a66-8d60-bf855b4aa00c)(content(Whitespace\" \ - \"))))(Tile((id \ - 3c36dca3-d1a7-41b4-9c24-23510cdec65a)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 7b209393-e207-49f4-888d-0d0fbee59b76)(content(Whitespace\" \ - \"))))(Tile((id \ - c32e1882-e0c2-4233-9d70-e0fc62430d98)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ - 11))(sort Typ))))))(shards(0))(children())))(Tile((id \ - 5000688e-60b7-4a42-ac2a-614df5411e40)(label(Yo))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 80ad2888-082c-4a46-b9bf-263fcc096af9)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 2))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - ef6f8c87-edda-43ec-92ac-4958593d3718)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - cc9762f8-ee24-4e48-b515-6a1838cdd558)(content(Whitespace\" \ - \")))))((Secondary((id \ - 2c7b046a-bbff-45af-8630-a70df49318ce)(content(Whitespace\" \ - \"))))(Tile((id \ - e22785da-8071-460a-8bd5-468c24fc33c6)(label(Yo))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - f2d4cc0a-29f9-40ca-ba5c-d80ac5b1e925)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 717ddcd0-da26-4e94-9418-bf511b61d000)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 75a9a7cb-4c09-428e-a033-4e54a5ddb080)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - f415e599-9f2b-49ce-b1c5-a1e09e83bc0f)(content(Whitespace\"\\n\"))))(Tile((id \ - 00629c83-c79d-48ef-a1d3-0d6a6e48e4fa)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 2ac253e2-e1c6-4bc8-a084-5ed0735d9dd9)(content(Whitespace\" \ - \"))))(Tile((id \ - d9870e6e-925a-4928-b300-3f3177886a4b)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - b5cc3ada-64a5-41d9-943c-b1eb5738ae18)(content(Whitespace\" \ - \"))))(Tile((id \ - 08f2a947-1887-4801-a7ff-4047a16decc5)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - c4390cfe-f6b7-40ca-b069-e2b2a31c1a76)(content(Whitespace\" \ - \"))))(Tile((id \ - 658cc676-c304-4f97-a8c9-b4f8dd78ae1c)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 8e68bd7c-4aaf-442f-8d61-89a54b44a86b)(label(Yo))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 77020cad-e77b-470c-9205-5b34a8db8000)(content(Whitespace\" \ - \"))))(Tile((id \ - 88c2074c-0d6f-48d8-a589-8e5a9e5ea5f6)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 11))(sort \ - Typ))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - cf4afd65-2f04-4915-b7a0-8f8c8adbc659)(content(Whitespace\" \ - \"))))(Tile((id \ - 7e4de056-3b42-4d31-a720-e4b8a9123b53)(label(Dawg))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 6e0e60db-d22e-47c4-a504-2a866757356e)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - c78001da-a824-4f52-b50f-b5c4196f2fe9)(content(Whitespace\" \ - \"))))(Tile((id \ - db833a2d-eef8-4f61-bf48-b887257553ff)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 18825e56-2657-4e8d-84d7-d84eb4cd5b1a)(content(Whitespace\" \ - \")))))((Secondary((id \ - b36fb0b8-1f59-475a-97ce-6d6c52223de6)(content(Whitespace\" \ - \"))))(Tile((id \ - 3a3bbd7f-51bc-4970-a7ab-6d31bc2b2e4f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - fddaa12b-c8f2-4607-87d1-ef1a04d1a286)(label(Dawg))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - d8e4e469-a96e-40b2-bd84-c8b633c7f347)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Tile((id \ - 305f396f-76b2-4e64-ad37-32f8f9416252)(label(5))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 8e266bfa-c793-4582-89ad-3bc2de0f7c0f)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 3077ea8d-15af-4e8f-bc98-fd2351906844)(content(Whitespace\"\\n\"))))(Tile((id \ - c5851048-c074-4a28-8ca2-505dfaac422a)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - e1ba212d-5d7b-4c20-8a00-24b5f09726a0)(content(Whitespace\" \ - \"))))(Tile((id \ - 1dab764a-2cbe-41c8-b6a0-f3db9d2798fb)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 59644349-255f-4870-adbf-0372eb23bd1d)(content(Whitespace\" \ - \"))))(Tile((id \ - e844b36c-30ed-4bde-b77f-6fe477eb02e1)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - d02658d7-525e-49fe-b351-31a488012226)(content(Whitespace\" \ - \"))))(Tile((id \ - 40d0f545-f344-49f9-bbfa-b57a3d6d2dd6)(label(DoubleAlias))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 97e21d03-4db1-4046-bc4e-1525a2f8264d)(content(Whitespace\" \ - \")))))((Secondary((id \ - e86ed589-e41c-46dc-a54e-6222bfdae78d)(content(Whitespace\" \ - \"))))(Tile((id \ - 26303c5c-343a-40e5-9cc6-7a40a8e508af)(label(C))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 3b509558-816c-4984-b3f3-91be6bed0933)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 0ebe4931-5b86-4c04-a89e-038e093b7fa3)(label(4))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 9da434d0-9649-457b-9a10-77a0c2230f0f)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 172ce5e5-a9ba-4be3-99e4-d9930c8e581d)(content(Whitespace\"\\n\"))))(Secondary((id \ - 1729d413-62ce-4ae0-8641-87c9f7d21b55)(content(Whitespace\"\\n\"))))(Secondary((id \ - db0ad058-8fe9-4579-9648-b9b254a65481)(content(Comment\"#exp \ - tests: errors#\"))))(Secondary((id \ - 10a117eb-4654-4278-9757-988a7ded611d)(content(Whitespace\"\\n\"))))(Tile((id \ - 73babe77-0cd0-4838-85f3-90e3d6552f96)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - c85965d9-d8bd-44ee-abb2-c14b5d8b2854)(content(Whitespace\" \ - \"))))(Tile((id \ - 88f05cc5-882e-4aeb-9a69-aec8f1c834a0)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 3b358b26-043c-4014-b2b3-17427d0e9e28)(content(Whitespace\" \ - \")))))((Secondary((id \ - 902be936-0f0d-4eae-aac4-bb1520f9e5d2)(content(Whitespace\" \ - \"))))(Tile((id \ - e7a77377-dc0b-4e16-9887-10d80eca58a6)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - c06f9e60-5269-4a80-8c3f-a619ed8583ff)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 17de1940-b64d-43b9-b345-f0e8e0d116dd)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 61b30a2c-2b2a-4051-81bf-8132887f7407)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 2d920922-a509-4841-aca0-54b087f60540)(content(Whitespace\" \ - \"))))(Secondary((id \ - 6fcdb14c-abde-4932-95d7-72e7c13ac08b)(content(Comment\"#err: \ - incons with arrow#\"))))(Secondary((id \ - 39442e53-9274-4324-85dd-6cf5bce6b5fc)(content(Whitespace\"\\n\"))))(Tile((id \ - 0c223090-20f3-4f22-8efc-fee48df2781c)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - c9b02368-418b-4df5-99d1-0ad69958dadd)(content(Whitespace\" \ - \"))))(Tile((id \ - 5b39fedf-37cc-4f43-838b-39b0f9f1c2f1)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 3065ec16-72f3-4023-9bb8-445a97f78bc6)(content(Whitespace\" \ - \")))))((Secondary((id \ - a0343f13-c93d-4819-9511-ea92cde2096a)(content(Whitespace\" \ - \"))))(Tile((id \ - e73e8c8f-3edf-484c-9b9a-f05f00143378)(label(Undefined))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 16dc6341-d18b-4d97-988a-669f78d198ce)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 2e2e7a3c-fe6d-4bd5-b56e-b5702fb5c1d2)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 85dc7c8f-21d7-4b7d-a9a1-57fd1798aa22)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 2c75819e-5ccb-4557-8137-cbbe09c142e6)(content(Whitespace\" \ - \"))))(Secondary((id \ - 0b1fcc6e-1bb1-4906-9aa3-a2cc51f12a56)(content(Comment\"#err: \ - cons undefined#\"))))(Secondary((id \ - f9753fda-7c14-44e5-9887-2da79acc4ef2)(content(Whitespace\"\\n\"))))(Tile((id \ - e56f3824-4687-4784-882a-57d25e7b7736)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 39e56916-37bc-4e7c-975a-08b2bdcae0d7)(content(Whitespace\" \ - \"))))(Tile((id \ - 94c7474d-c5a7-4649-a426-f940639f2da2)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - cd1b4bb9-c519-4160-bc92-74fc716c7834)(content(Whitespace\" \ - \")))))((Secondary((id \ - 78456efe-a8cd-4942-801e-7c1c568c5ceb)(content(Whitespace\" \ - \"))))(Tile((id \ - 9aaecd1c-de39-4dde-bf86-80ff9b121174)(label(B))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 26947d51-19ac-4960-b331-87eb064a9b12)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 2d7ea60c-4cd9-4605-9cb0-aa1f40ea8912)(label(\"\\\"lol\\\"\"))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 6f41caa4-e793-43e5-950b-2451a5cefb75)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - ac53eca5-8625-407e-a1ad-2281ac35cbb2)(content(Whitespace\" \ - \"))))(Secondary((id \ - 229f231e-9a04-4fd8-bde1-80cc909c2d64)(content(Comment\"#err: \ - type incons#\"))))(Secondary((id \ - 9ffa0c85-ba8a-4a2b-82fa-ecd84cce8827)(content(Whitespace\"\\n\"))))(Tile((id \ - 060d0018-0184-4097-a885-3d64cb237f16)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - dbab8e3a-df62-4f50-bfde-c7f9e0765a00)(content(Whitespace\" \ - \"))))(Tile((id \ - 0cf71d90-72c5-40d0-9894-55d940a94d15)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 02e6f5ad-23e9-4d1f-a220-4943fbea949e)(content(Whitespace\" \ - \"))))(Tile((id \ - c5bcec1f-7b5d-4f51-b75b-357c4ec79be6)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - fc764113-9280-4631-a4e0-d3ca3851a486)(content(Whitespace\" \ - \"))))(Tile((id \ - 894ababd-404e-4611-ab5f-63bc2e441f55)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ - 11))(sort Typ))))))(shards(0))(children())))(Tile((id \ - c7a0147e-f286-464f-b21a-3cfc2939722d)(label(Yo))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 42a145b5-d264-4ba6-995c-5e91e7e8b217)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 2))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 79ea25ba-5b88-4f75-88a9-707f7e6f056d)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 7e96eda6-a731-44e5-9ab4-5fdd5c6ec3db)(content(Whitespace\" \ - \")))))((Secondary((id \ - e4e86da3-8591-4b82-bbf2-6c0100bc5cac)(content(Whitespace\" \ - \"))))(Tile((id \ - d35f6618-a0f1-43a6-bbc3-01f05160ed11)(label(Yo))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 69962f92-29b4-4699-8b9c-067e1719a34e)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 0cf81286-de18-4452-954d-4c45b694da7f)(content(Whitespace\" \ - \"))))(Secondary((id \ - 8ad0ef5f-8824-4367-92bc-6ae3b1602b24)(content(Comment\"#err: \ - type incons#\"))))(Secondary((id \ - f46d36e4-93ab-4763-b967-324c23c0a4fb)(content(Whitespace\"\\n\"))))(Tile((id \ - dc8cd3c7-4a48-4fd9-9174-851a4d1923df)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 0a2bac0e-f13e-4ac5-9e09-729cb92d6f0d)(content(Whitespace\" \ - \"))))(Tile((id \ - 6462ed56-8be1-4d25-93f0-87f27edf0cda)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - a7b6f370-8124-49c5-8231-95a396b3f505)(content(Whitespace\" \ - \"))))(Tile((id \ - 3ca81a8a-8b09-4be1-8a31-acea0f5a7247)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 06d04220-7fda-4d1e-bb35-6f0bb6360d1c)(content(Whitespace\" \ - \"))))(Tile((id \ - fc476958-fffc-45af-9b54-080e46c48471)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ - 11))(sort Typ))))))(shards(0))(children())))(Tile((id \ - 04ec44aa-b941-4879-8fd8-849548703d55)(label(Yo))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - bc5b26e8-6ce5-490e-8ced-3e7fdc202999)(content(Whitespace\" \ - \")))))((Secondary((id \ - 45285b00-e55b-4680-ba77-388c0febbd96)(content(Whitespace\" \ - \"))))(Tile((id \ - f83ed236-3162-4d6a-8941-f997d85a42c8)(label(Yo))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - c33ccba9-5882-4b71-85ac-eb442083ad44)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 0229a695-22ed-452f-ab17-c69dbd835997)(label(\"\\\"lol\\\"\"))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 2c3a9067-6693-4c96-998e-028a49f3bd3e)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 11029e14-4ee2-4690-88ac-1dc1a96caa7b)(content(Whitespace\" \ - \"))))(Secondary((id \ - 7e89a745-73eb-45ae-8a63-0d2f6fc70a39)(content(Comment\"#err: \ - type incons#\"))))(Secondary((id \ - 3b1c7a5f-0e33-49a4-a91e-a6f5fd788e1f)(content(Whitespace\"\\n\"))))(Tile((id \ - 89221aec-def6-4533-b1d9-d77d394bc462)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 59b6c4a4-38cc-453e-b0ae-d1148a78f1e3)(content(Whitespace\" \ - \"))))(Tile((id \ - 281014c0-b42b-4f20-848f-4e0cc7023d09)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - aa72d88c-aabe-451c-8efa-8187361eadfa)(content(Whitespace\" \ - \"))))(Tile((id \ - 5b8e13ec-459b-438d-adfb-a154a2982f19)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - a3692277-0f9b-4f8c-abd4-b3d2090ce140)(content(Whitespace\" \ - \"))))(Tile((id \ - f56867a0-f29e-457a-a3c5-bcdb758aba49)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ - 11))(sort Typ))))))(shards(0))(children())))(Tile((id \ - 52e1f681-b546-47c8-b19d-6471ee733d1b)(label(One))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 8a891615-85d0-4a08-9215-cb462624c741)(content(Whitespace\" \ - \")))))((Secondary((id \ - 2fb4da19-cebc-46b7-bb09-b3098a576148)(content(Whitespace\" \ - \"))))(Tile((id \ - 923d34de-ec8a-420c-9590-a36fa2801243)(label(Yo))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 66f5633b-93ab-45aa-8e11-1b8375729418)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - b4b082d1-ece0-43ab-9db8-bbb7f2cfeba4)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 51432b32-38d5-44d6-ae42-02a0d3575bec)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - a3864107-bfc6-4b34-9f08-ab6571694a12)(content(Whitespace\" \ - \"))))(Secondary((id \ - 5b226d35-d4db-471f-a332-633e5e84fc28)(content(Comment\"#err: \ - type incons#\"))))(Secondary((id \ - abec3962-ea64-427e-8a56-3570e446a099)(content(Whitespace\"\\n\"))))(Secondary((id \ - e38dafb5-0007-4aeb-a7cf-20ae51aff3f3)(content(Whitespace\"\\n\"))))(Secondary((id \ - 98367f9a-54e4-4638-b9de-e29f9e3b72b2)(content(Comment\"#pat \ - tests: happy (but refutable patterns so \ - weird)#\"))))(Secondary((id \ - 82419db0-dbb3-41fa-881c-a0b395420c6f)(content(Whitespace\"\\n\"))))(Tile((id \ - 74ee3271-d727-472c-9b7a-755a81b148c4)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - c37e3135-8c25-4079-983b-7e6d11553e4b)(content(Whitespace\" \ - \"))))(Tile((id \ - c6c45579-718b-4fbf-b5c2-eb0cb2581e75)(label(Yo))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 934de2cf-33f9-4073-90e9-2d99cb12cf2f)(content(Whitespace\" \ - \")))))((Secondary((id \ - 2ba42a3d-ac18-49d9-b5ee-22aad89796d1)(content(Whitespace\" \ - \"))))(Tile((id \ - 09942f4b-696f-4933-9f40-963c1bbc22f3)(label(Bo))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - a3d4bf99-e1c5-4fac-85d4-0167384467c0)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 29e781b4-6d3c-407c-b6d1-33d81b2bb7e8)(content(Whitespace\" \ - \"))))(Secondary((id \ - d92291d1-a349-41e5-b7b0-015b0a846d58)(content(Comment\"#kind \ - of a weird edge#\"))))(Secondary((id \ - 04065439-22c2-4a92-a291-1dc6779ccfdd)(content(Whitespace\"\\n\"))))(Tile((id \ - 2987f3c5-988a-4315-a6d9-d6d6b242051c)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - d296d3c3-63e5-4481-8c2a-07696d29853e)(content(Whitespace\" \ - \"))))(Tile((id \ - cf24cf90-884f-4d6f-ada6-2b46a8ca6dfc)(label(Yo))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - e17631cc-a217-455d-abca-8b35898ef3a5)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 2))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - c040ae99-c01b-4f13-a1fc-1bb028d9f085)(label(1))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - 474c6eee-bb86-4fad-92e6-9ba03ab18537)(content(Whitespace\" \ - \")))))((Secondary((id \ - e58d09f8-58b1-498b-96d0-dea2fe449ece)(content(Whitespace\" \ - \"))))(Tile((id \ - a3613d82-5366-45e7-94f1-b4d43d832ad4)(label(Dawg))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - c6acc4c6-f532-454b-8ae1-3bbb69270eb9)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 21399fe0-e53e-4011-9ab2-01b7a3be3ad4)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 1f0d94c0-bd67-4102-9d6f-57e08fa18f6a)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 4668e4f7-6556-4105-9e88-e3d624fed446)(content(Whitespace\"\\n\"))))(Tile((id \ - 4a5e94c4-e144-416b-b7f4-9e9c35a78871)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 552c30fc-8f6f-4e2e-bf18-7b605a87163a)(content(Whitespace\" \ - \"))))(Tile((id \ - 05f3167a-e7bc-4fff-9189-522d2c7748c6)(label(Yo))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 885ed06b-03d1-4c10-a904-a19cba98c39c)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 2))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 14e90ca6-5af1-46dc-bbe6-9de949619595)(label(1))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children()))))))))(Tile((id \ - 7369e8a4-18da-47d4-9f71-797f291e12ae)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 9bf05f8c-dd06-4b49-afde-8cbff13591ce)(content(Whitespace\" \ - \"))))(Tile((id \ - 3006e375-d4b9-49b3-8ab9-8c70f8e6f00f)(label(YoDawg))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - f029e25b-76f2-4dbb-86af-58be1c8134bc)(content(Whitespace\" \ - \")))))((Secondary((id \ - e6ff0d3d-10c2-4a5a-b29f-ca16071b5cc8)(content(Whitespace\" \ - \"))))(Tile((id \ - 10cc07d5-3f39-404a-9d8f-9ac3d642e79b)(label(Yo))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 49435d1e-8f89-43c5-b7db-61a04e4050b3)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 043825b9-ea6c-48b0-8063-0e21512dc15a)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - dd5d2c31-5b33-4b17-bd03-3e2f7636b4e3)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 6d83b889-d239-44e8-a807-e4e2f8b58e84)(content(Whitespace\"\\n\"))))(Tile((id \ - ac60c582-7bb8-4778-9559-252d39c7e120)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 0497a41c-c55b-44af-99c2-319db9cf2ced)(content(Whitespace\" \ - \"))))(Tile((id \ - e18d8293-00c5-4588-b6d2-3f6da8ee5de5)(label(Yo))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 0ea19010-bf72-4bb6-b0ee-2fd4cfc3e3dd)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 2))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - eb35e362-1ddb-4e09-b9d2-07067677f998)(label(1))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children()))))))))(Tile((id \ - 93560007-02f0-403f-b96c-5dfd77520c84)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 0aa1fd45-6160-4f96-a5d8-008246fc1e39)(content(Whitespace\" \ - \"))))(Tile((id \ - b73b1762-d5c7-4662-be47-efd98f8bd301)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ - 11))(sort Typ))))))(shards(0))(children())))(Tile((id \ - 1605fb6c-33de-4f58-9074-c5c6804afb4b)(label(Yo))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 379c2c3d-f2d2-475a-81ab-23d638698db4)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 2))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - c5657013-c7c4-4c6a-989a-e10af52d755b)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 65e051b4-cc5e-411f-8958-74ad48ab1440)(content(Whitespace\" \ - \")))))((Secondary((id \ - 1cfa6465-d43b-4daf-885e-7ccc598f5e90)(content(Whitespace\" \ - \"))))(Tile((id \ - d3f0f888-1c3b-4c7a-a868-14332a85da75)(label(Yo))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 6a0d4b17-d652-43bf-adff-47286219adc9)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 6e0b7827-3503-4a32-81de-7480f5e13f65)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - e5ea7a3a-4f95-4eed-ad98-32596b62c0bf)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 291f46e0-9178-4976-9e86-7b2f332d0ebd)(content(Whitespace\" \ - \"))))(Secondary((id \ - 0557cefb-0a67-4225-a091-ef042e9bd8d0)(content(Whitespace\"\\n\"))))(Tile((id \ - 2400981a-a21b-435f-b4c9-74c170410a3c)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 5e3af61c-abb6-4ed5-983b-f5ed29403cf4)(content(Whitespace\" \ - \"))))(Tile((id \ - 5f1904d3-2c7f-494a-9581-50247918f776)(label(Yo))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 6cc139e1-2196-47bb-a063-6d0c65a0fde2)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 4ad5c266-b9f2-49d1-85c0-fa5214b13875)(content(Whitespace\" \ - \"))))(Tile((id \ - 7e6b4d8c-e8f9-4dc9-bb72-d279f9c241eb)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ - 11))(sort Typ))))))(shards(0))(children())))(Tile((id \ - f147dc6a-5763-4703-9573-c7f83cc62d19)(label(Yo))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - c74b0fd0-aa83-4d16-a69b-7040a205c28d)(content(Whitespace\" \ - \")))))((Secondary((id \ - d24b98e5-8b67-49e1-a8f2-8c6a158dadff)(content(Whitespace\" \ - \"))))(Tile((id \ - bc8c255b-06df-46ff-a2df-5b95c0c8d15c)(label(Yo))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 66ecd51d-2c4c-4871-8d6f-290292f2676c)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 47579907-86de-4297-8471-432930da4e96)(content(Whitespace\"\\n\"))))(Secondary((id \ - bf7e940d-b5f0-4b41-94fe-dc8edb452e0f)(content(Whitespace\"\\n\"))))(Secondary((id \ - ac272e0d-2b96-4409-9bc4-7e6df47d7326)(content(Comment\"#pat \ - tests: errors#\"))))(Secondary((id \ - a6780edf-171e-42ee-8f60-2a36c35a243a)(content(Whitespace\"\\n\"))))(Tile((id \ - 747964a5-983b-4661-849d-0f45ad0c6372)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 7b4d5727-bb7d-4f18-9fc1-f654732af2c6)(content(Whitespace\" \ - \"))))(Tile((id \ - b4c15fde-eb2a-40a4-873c-090daa97b5ad)(label(2))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - e3354125-74e9-4ff4-94c6-cd8061f28f44)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 2))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 7b7c99a7-82fa-4b6b-8e15-cbab5b13c31c)(label(1))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - aa274e10-27b5-4c20-b297-f6212a305db1)(content(Whitespace\" \ - \")))))((Secondary((id \ - e18d3fe8-0830-4b6f-a595-01f119415633)(content(Whitespace\" \ - \"))))(Tile((id \ - ff6f023e-de31-4350-b2a6-d6f1e611f521)(label(3))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 2f9d628d-f7c5-4071-bdd4-2619ab225306)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 7a38b925-1325-45c4-bb69-0a36b8d0cdb8)(content(Whitespace\" \ - \"))))(Secondary((id \ - 3a387dcf-0e09-4d30-a83f-a1818624741b)(content(Comment\"#err: \ - incons with arrow#\"))))(Secondary((id \ - 68d5dcea-8c23-485e-865a-69fb7d2d0cd5)(content(Whitespace\"\\n\"))))(Tile((id \ - 1cfee09b-9e29-4c55-a3bb-5d82a4654443)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 45f6c185-2057-40e6-a7b2-f993dee36b38)(content(Whitespace\" \ - \"))))(Tile((id \ - 24fcb149-2bc9-4224-ab03-4b73b789c75a)(label(NotDefined))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - a3194e38-6789-4ccf-aa76-9e30d81bcaef)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 2))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 6a56fd51-2c30-42f4-aca4-2b6f2001bad3)(label(1))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - 2ee595e2-a45e-44fa-944b-a5c5a3980f12)(content(Whitespace\" \ - \")))))((Secondary((id \ - 097341b1-0662-4d31-b275-7a3250d6df9d)(content(Whitespace\" \ - \"))))(Tile((id \ - 59f9db5d-6597-4b10-bd72-8c4376dd57f3)(label(3))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 552bfeb6-0c14-4e09-8697-f954043641be)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 6e34c413-854e-4e4e-8e7c-a75d5ad9eccd)(content(Whitespace\" \ - \"))))(Secondary((id \ - 6d8ed302-ad46-4a6c-af7d-cf01d4dd8634)(content(Comment\"#err: \ - cons undefined#\"))))(Secondary((id \ - 1477b677-d5bb-4ef9-a13d-b87c8b91a8e0)(content(Whitespace\"\\n\"))))(Tile((id \ - 3c79f252-7420-4763-8237-112308e155d9)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 1dbefa01-f9e5-4e22-b8de-10bd967bd27b)(content(Whitespace\" \ - \"))))(Tile((id \ - 4bd1289b-aee7-4514-bbe1-cd35485b60be)(label(Yo))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - f0c94efb-b145-41db-885a-23f645e73f2c)(content(Whitespace\" \ - \")))))((Secondary((id \ - 496132cd-7941-4aec-8191-6ecaac65c6ef)(content(Whitespace\" \ - \"))))(Tile((id \ - 0740a149-b697-4026-9e9b-ec29c4a7aa66)(label(Dawg))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 5b1d44c6-9417-4d04-bf10-97cbe162afcd)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - ef158770-1bc3-4173-b611-b8fbd1f27729)(content(Whitespace\" \ - \"))))(Secondary((id \ - 56d60993-c631-40fa-93bb-4f3b5d79e0d6)(content(Comment\"#err: \ - type incons#\"))))(Secondary((id \ - 5467b9d2-f344-4488-8e3b-fa31d1e9fdfb)(content(Whitespace\"\\n\"))))(Tile((id \ - fd3189c7-ec41-47d4-924d-722f367814e5)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - abbad808-aeee-4dfd-835c-6242b07d3a66)(content(Whitespace\" \ - \"))))(Tile((id \ - 4ded6b0c-2ffc-466f-a1d9-f1838f88daaf)(label(Yo))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - a66a61bc-f07f-4f4d-b2c5-9443c3b92ef8)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 2))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - e3793a27-2fe8-4fe5-8012-f6f93ee0282c)(label(true))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - 4e2b1df2-acdc-4220-a8d8-bec2da6e8dc6)(content(Whitespace\" \ - \")))))((Secondary((id \ - c70d9704-e535-414b-88e9-b2f12a9ff81d)(content(Whitespace\" \ - \"))))(Tile((id \ - 1838c569-5adf-4504-885b-dc4f2d886cb8)(label(Dawg))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 645e6d17-5158-430d-94e1-2a793fdccf1a)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - ae692be0-b769-44db-ad29-aea36deb7bb2)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - af8963d1-1dc4-4f9f-97ff-ac5005522868)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 7972f163-be4e-4604-9db6-5beb9262aa8d)(content(Whitespace\" \ - \"))))(Secondary((id \ - 6cf2575d-0cf6-4514-a0da-412b6ff330fc)(content(Comment\"#err: \ - type incons#\"))))(Secondary((id \ - 371c71ca-ce1f-4445-a32e-8cc0d9c787ea)(content(Whitespace\"\\n\"))))(Tile((id \ - 4678bd74-a463-4330-9673-bebaa7171afe)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - f7722f08-3f4c-47e6-aa34-f74de83df240)(content(Whitespace\" \ - \"))))(Tile((id \ - 957b7080-04cf-4239-a808-66bce517a27a)(label(Yo))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - a47e1438-766d-422c-bbac-6485cac8ff5b)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 3ddd4701-a255-4a9c-9559-a1310a8cef99)(content(Whitespace\" \ - \"))))(Tile((id \ - 57b1e5c6-1cfe-47cc-af6e-8fa24d2c4dbe)(label(YoDawg))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - fdf155d4-47ba-40f7-8b0d-af84ec5ff4e3)(content(Whitespace\" \ - \")))))((Secondary((id \ - 5af81087-c4fb-4c6c-b7ef-186ac975dafd)(content(Whitespace\" \ - \"))))(Tile((id \ - 283431e9-9b8f-437c-b2e6-0b28dd6e03d2)(label(Yo))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - e2546fa0-3f81-4b31-91a2-5b26a8cff08c)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - a125e9a1-dc78-4a84-88b7-c88624ab287a)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 51b8f15d-1a4e-41ce-a8cd-11b414c0495b)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 47c794f7-9830-418c-8408-eb4644359bfb)(content(Whitespace\" \ - \"))))(Secondary((id \ - 2fe2672c-a1eb-4422-91c9-28f96189e086)(content(Comment\"#err: \ - type incons#\"))))(Secondary((id \ - a21c7c06-d846-4ffd-a66d-0cb8dd3943b3)(content(Whitespace\"\\n\"))))(Tile((id \ - 4a29d2ca-b4fc-4218-81e1-e00d703f1caf)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - aac398e8-d04e-43a6-82bc-4d6c5b8b01e2)(content(Whitespace\" \ - \"))))(Tile((id \ - 78c85bb7-d49a-4cd0-9fb1-4504e6a1574e)(label(Yo))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 0419619e-aca5-4a6a-be3b-8713b65ee9de)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 2))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 239b648d-0d54-47e1-8d64-52f65ea5caab)(label(1))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children()))))))))(Tile((id \ - d6d46558-6953-4184-8116-29ee654d7f2c)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 27d85969-1b27-4022-8122-98fea5b240f8)(content(Whitespace\" \ - \"))))(Tile((id \ - 8f0a8f1a-27fd-45a4-8780-bafc5a81adec)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ - 11))(sort Typ))))))(shards(0))(children())))(Tile((id \ - 44958aa4-27c6-46ee-acda-3795393e0304)(label(Yo))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 3e45e42d-7d1b-44ef-ba8d-8292d76a4f97)(content(Whitespace\" \ - \")))))((Secondary((id \ - d0bfaf87-69c7-4620-9a8b-eaa2a2aa9b79)(content(Whitespace\" \ - \"))))(Tile((id \ - ba988a26-e1fe-483a-89a7-e582b5930976)(label(Yo))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 23da4a46-5a55-485d-bf49-ca9cb37f9b8e)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 65b76e43-e90f-4949-a8dc-3f65d02cf433)(content(Whitespace\" \ - \"))))(Secondary((id \ - 4a5337ad-ca72-4bb9-a06e-13d7c445baff)(content(Comment\"#err: \ - type incons#\"))))(Secondary((id \ - 8f1a8e25-ed7c-41c1-93ac-315c7d1b78a6)(content(Whitespace\"\\n\"))))(Tile((id \ - 6ebabf70-eb4a-4cd1-8dd0-9a5011ea543c)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - de134bc5-85e5-42ab-b577-641580301cd7)(content(Whitespace\" \ - \"))))(Tile((id \ - 372c9949-0bb7-416f-887f-cdbbc82974cb)(label(Yo))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 4b5198e4-8521-44a1-b72f-f1937d92b857)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 2))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - da8e6a05-ae9f-43a6-a9a5-749eb1b35ccc)(label(1))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children()))))))))(Tile((id \ - 69107009-8a96-46f6-b78a-1ec6433104b6)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 5ef53553-c599-4f7c-8006-52b176e08cbc)(content(Whitespace\" \ - \"))))(Tile((id \ - 664e8b1b-5445-48fc-bca8-5e13ee6a1d14)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ - 11))(sort Typ))))))(shards(0))(children())))(Tile((id \ - e23ff446-f4c4-41f6-84ea-22d262787f42)(label(Yo))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 8e254e29-b385-4d76-bf22-db4319416fb5)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 2))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 999c4101-8ebd-4d93-9906-b556bb305e2a)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - f0238c1a-3945-4c7f-9966-2545926eb26a)(content(Whitespace\" \ - \")))))((Secondary((id \ - 800201b5-5580-49dd-ad62-99ce0b47c89d)(content(Whitespace\" \ - \"))))(Tile((id \ - 5f57a0cd-5a53-4ada-9763-8140b101bb3a)(label(Yo))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - fb796612-8216-4817-94fb-3f09f8795f2f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - b76aa6bc-00a8-4153-89bf-3a9e8789aaf8)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - e8e11231-b230-4b90-b83d-cfdb94b2d52b)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 5f4d8d62-4c94-45cf-8386-31cfcfb681ce)(content(Whitespace\" \ - \"))))(Secondary((id \ - 60550c2e-99ea-4d67-a46e-7bfd21e3c12f)(content(Comment\"#err: \ - type incons#\"))))(Secondary((id \ - a324778b-19b4-4577-b891-afd8d0a8ed6c)(content(Whitespace\"\\n\"))))(Tile((id \ - c2c4604a-ea41-48ed-954c-d825082fac69)(label(\"\\\"Thats all, \ - folks\\\"\"))(mold((out Exp)(in_())(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - f321b9fc-2601-4ac4-a8e8-49860032d8b9)(content(Whitespace\"\\n\")))))))(ancestors())))(caret \ - Outer))"; - backup_text = - "# Internal Regression Tests: ADT Statics #\n\ - # All commented lines should show errors as described #\n\ - # No other lines should show errors #\n\n\ - #type definitions: no errors#\n\ - type ? = ? in\n\ - type SingleNull = +One in\n\ - type Single = +F(Int) in\n\ - type GoodSum = A + B + C(Int) in\n\ - type Partial = Ok(?) + ? in\n\ - type DoubleAlias = GoodSum in\n\ - type VerticalLeading =\n\ - + A\n\ - + B(GoodSum)\n\ - + C(Bool->Bool) \n\ - in\n\n\ - #incorrect or incomplete type definitions#\n\ - type badTypeName = ? in #err: invalid type name#\n\ - type (?, ?) = ? in #err: invalid type name#\n\ - type ? = badTypeToken in #err: invalid type token#\n\ - type NotASum = NotInSum(Bool) in #err: cons not in sum#\n\ - type Bool = ? in #err: shadows base type#\n\ - type Dupes =\n\ - + Guy(Bool) #no err#\n\ - + Guy(Int) #err: already used#\n\ - + Guy in #err: already used#\n\ - type BadCons =\n\ - + Um(Unbound) #err: unbound type var#\n\ - + notvalid #err: invalid#\n\ - + Bool #err: expected cons found type#\n\ - + Int(Int) #err: expected cons found type#\n\ - + (?)(Int) #err: expected cons found type#\n\ - + A(Bool)(Int) in #err: expected cons found app#\n\n\ - #sums in compound aliases dont add ctrs to scope#\n\ - #but compound alias types should propagate analytically#\n\ - type CompoundAlias = (Int, Anonymous + Sum) in \n\ - let _ = (1, Sum) in #err: not defined#\n\ - let _: CompoundAlias = (1, Sum) in #no error#\n\ - type Yorp = Int -> (Inside + Ouside) in\n\ - let _ = fun _ -> Inside in #err: not defined#\n\ - let _: Yorp = fun _ -> Inside in #no error#\n\ - type Gargs = [BigGuy + Small] in\n\ - let _ = BigGuy in #err: not defined#\n\ - let _: Gargs = [BigGuy] in #no error#\n\ - let _: Gargs = BigGuy :: [BigGuy] in #no error#\n\n\ - #unbound tyvars treated as unknown-typehole#\n\ - let a:Bad = 0 in a == 0; #err: not bound#\n\n\ - #non-sum-types cant be recursive#\n\ - type Lol = Lol in #err: not bound#\n\n\ - #no errors: analytic shadowing#\n\ - type Tork1 = +Blob in\n\ - type Tork2 = +Blob in \n\ - let x:Tork1 = Blob in\n\n\ - #exp tests: happy#\n\ - type YoDawg = Yo(Int) + Bo(Int)+ Dawg(Bool) in\n\ - let _ = Yo(1) in\n\ - let _ : YoDawg = Yo(2) in\n\ - let _ : +Yo(Bool) = Yo(true) in\n\ - let _ : (Yo + Dawg, Int) = (Dawg,5) in\n\ - let _ : DoubleAlias = C(4) in\n\n\ - #exp tests: errors#\n\ - let _ = 2(1) in #err: incons with arrow#\n\ - let _ = Undefined(1) in #err: cons undefined#\n\ - let _ = B(\"lol\") in #err: type incons#\n\ - let _ : +Yo(Bool) = Yo in #err: type incons#\n\ - let _ : +Yo = Yo(\"lol\") in #err: type incons#\n\ - let _ : +One = Yo(1) in #err: type incons#\n\n\ - #pat tests: happy (but refutable patterns so weird)#\n\ - let Yo = Bo in #kind of a weird edge#\n\ - let Yo(1) = Dawg(true) in\n\ - let Yo(1): YoDawg = Yo(1) in\n\ - let Yo(1): +Yo(Int) = Yo(1) in \n\ - let Yo: +Yo = Yo in\n\n\ - #pat tests: errors#\n\ - let 2(1) = 3 in #err: incons with arrow#\n\ - let NotDefined(1) = 3 in #err: cons undefined#\n\ - let Yo = Dawg in #err: type incons#\n\ - let Yo(true) = Dawg(true) in #err: type incons#\n\ - let Yo: YoDawg = Yo(1) in #err: type incons#\n\ - let Yo(1): +Yo = Yo in #err: type incons#\n\ - let Yo(1): +Yo(Bool) = Yo(true) in #err: type incons#\n\ - \"Thats all, folks\"\n"; + title = ""; + description = ""; + hidden_tests = + { + tests = + { + zipper = + "((selection((focus Left)(content())(mode \ + Normal)))(backpack())(relatives((siblings(()((Secondary((id \ + 28357f24-0bee-423a-8233-69bbb2cfd787)(content(Comment\"# \ + Internal Regression Tests: ADT Statics \ + #\"))))(Secondary((id \ + da7d803e-5f91-4afc-b529-fbd0ec0eaafd)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 505df48d-38fb-4b63-8962-c4aa88f70e50)(content(Comment\"# \ + All commented lines should show errors as described \ + #\"))))(Secondary((id \ + 70e54a1b-8e3f-4e8a-a0f2-f132102dcca2)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 0c97d2fe-e4fa-4699-889c-26f406fc97b7)(content(Comment\"# \ + No other lines should show errors \ + #\"))))(Secondary((id \ + d99dce2d-ee04-4e13-bcef-375f0608d8c9)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + e13aaf5d-7c93-429f-93ff-47ddd45609b7)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 545d83f6-f159-4fe2-9fb6-f9514dd064b8)(content(Comment\"#type \ + definitions: no errors#\"))))(Secondary((id \ + b8fe9b8a-9e2e-4774-8e8d-c5202e4d567c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 54e23d33-2b44-4416-baa9-b82dd9d49fcb)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + db084c97-20fe-487e-8d52-80bc76bd2ede)(content(Whitespace\" \ + \"))))(Grout((id \ + 7273a907-7f31-458a-b84a-ea0a5f3bcab0)(shape \ + Convex)))(Secondary((id \ + 1b874263-3f04-4e50-8ea6-a6a6631c789d)(content(Whitespace\" \ + \")))))((Secondary((id \ + 540a9dc5-a060-46f2-987e-8c45d8a3d040)(content(Whitespace\" \ + \"))))(Grout((id \ + 99c6cef7-771c-4b30-afc6-648a2a9b52eb)(shape \ + Convex)))(Secondary((id \ + 67a07a9c-618f-4947-87a0-229733d058e4)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + e7b21ff9-855f-4af8-b136-61cdf82cb732)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + bbd37bb2-75f6-4660-bc03-060f3fcb88d3)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 28baacf9-b184-4689-89d2-5898e15b4425)(content(Whitespace\" \ + \"))))(Tile((id \ + a215e8bc-91aa-4d2a-864f-8779cd29c147)(label(SingleNull))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + 5f8c6a8b-efdc-4ae1-a9e1-34ce7faad82f)(content(Whitespace\" \ + \")))))((Secondary((id \ + 6689bd94-617b-47c9-807e-08b9cf84b8c5)(content(Whitespace\" \ + \"))))(Tile((id \ + f98d916f-8631-461e-a64e-95d75cccc6fe)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + ae3f938a-935c-46ea-b4ca-e8fb41f6e001)(label(One))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 50a7b73d-2fc8-4357-ae31-b83c1f5bd467)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 41b177e8-90f3-4af9-8186-cda93d46bc46)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 5d191c2c-9036-42a0-bdcb-92b382e55d8d)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 7a6b25d9-e7d3-4b55-b5e5-404c4c2ae4f5)(content(Whitespace\" \ + \"))))(Tile((id \ + a7de9e4b-174d-4958-9e7f-7d36445348e0)(label(Single))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + d45238b2-8b1d-4f18-a077-3827151dc45e)(content(Whitespace\" \ + \")))))((Secondary((id \ + 0425820e-04bd-4c29-8adb-4124b681d57f)(content(Whitespace\" \ + \"))))(Tile((id \ + 01b63189-aee2-41a6-aa07-ffd4bddc1a49)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 0f58b71b-37d1-4270-8ce3-21eeb577bfb7)(label(F))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + fa9a4146-4da4-469f-a26e-81cf3f45b2ae)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + d110cf17-d811-464f-8726-e6dfc9f8b6bb)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + a109dce3-009c-4f4c-aefe-7cab4536d392)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + b7cdb552-04a7-48b4-9cfb-998bf9d18055)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + f54c8ce4-d565-4704-b224-8e252cb8cbd3)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + cfdef333-8e4e-4e5e-8fa9-58da5cb2bbdd)(content(Whitespace\" \ + \"))))(Tile((id \ + e0846c5c-ed48-4e17-8047-68e9d0bfd72d)(label(GoodSum))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + 16a4fa3b-9c47-432b-baa5-e268c973baf5)(content(Whitespace\" \ + \")))))((Secondary((id \ + 967321aa-0d95-49e6-89e0-9d388d6da469)(content(Whitespace\" \ + \"))))(Tile((id \ + 149bf644-2adc-49e6-8d53-81b03ecf4d49)(label(A))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 6c0d12c7-17a4-44f0-a149-19aa3f780d21)(content(Whitespace\" \ + \"))))(Tile((id \ + 7294404d-be7d-4cb7-ab89-fa2b0d214512)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + faac7e2c-4caa-46ff-b72c-fd1b78b76f75)(content(Whitespace\" \ + \"))))(Tile((id \ + 4e5dcc2f-b3f6-43fb-a906-5184199c86df)(label(B))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 37516c52-36a1-4c80-99b1-a0d857c1dda7)(content(Whitespace\" \ + \"))))(Tile((id \ + 86c8fa45-1c54-4752-9ffc-c889dc6a8e52)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 45cd1be9-10c7-48e1-979e-6549e563f9b9)(content(Whitespace\" \ + \"))))(Tile((id \ + 2a3ba33f-56e2-4b87-99c7-733ca87a6dce)(label(C))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + ee980372-17e2-419f-bb0f-a575cf8e7fc2)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + d95d1829-297a-4db4-8e52-fea95862c74a)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 6bc9a1c5-257c-4cd4-80b8-236a3ae60b01)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + ca4f5031-e534-43f7-87b2-d78f8cda1acf)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + e7ed2a86-c44c-4a31-ba4b-608de76fd6a2)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 69656e33-f418-48a4-a438-00db04b42210)(content(Whitespace\" \ + \"))))(Tile((id \ + 3218a5c6-c361-4146-be25-3bfb3d172ea3)(label(Partial))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + 0e2357e6-9d96-42ef-bef6-f72319502c77)(content(Whitespace\" \ + \")))))((Secondary((id \ + 2b2cdc66-752f-428d-965f-1a79b080ea98)(content(Whitespace\" \ + \"))))(Tile((id \ + b8972117-909f-48c0-8f59-7a51b7cf5db7)(label(Ok))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + febdbbdb-4585-4803-9e84-bcd3304ffb1f)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Grout((id \ + c7b12338-0a19-4fe2-820d-1cb076b6dca3)(shape \ + Convex))))))))(Secondary((id \ + eab5c8f9-998a-4cc3-b3d7-f453b90dbe8e)(content(Whitespace\" \ + \"))))(Tile((id \ + 319b516d-0c4c-4a26-976b-bf76cd5c0ada)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 24ae6999-d0e6-426f-86d6-dc39fa14c86a)(content(Whitespace\" \ + \"))))(Grout((id \ + 5fd021dd-31d5-4767-8e92-1c1526e9d3c0)(shape \ + Convex)))(Secondary((id \ + 7448de20-a1c9-4b99-8495-60e37df82175)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + ed8aed8b-a1d6-438b-a7a4-ed310d325dbb)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 10a6df79-02e4-412b-b1d7-f4690c81ccbf)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + d77a36ab-5548-4eca-8db5-66b91ba8b3f3)(content(Whitespace\" \ + \"))))(Tile((id \ + 8a111ed2-1c78-4c10-bac2-2e855f655112)(label(DoubleAlias))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + 1b510d24-fb50-4d72-982c-3b584ef54135)(content(Whitespace\" \ + \")))))((Secondary((id \ + 8c5b5b7c-6f48-4730-a1cd-23ad4911baae)(content(Whitespace\" \ + \"))))(Tile((id \ + 765c6668-f5f8-4fa6-8c23-46cbf50a2169)(label(GoodSum))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 8ab02e4d-1f40-4182-b669-3002e91971d8)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 2f94abb3-22ba-49ed-b336-378757f564dc)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 8d517f36-a20a-4cd2-a280-8a24d56a2b25)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 9ed73f0a-2269-4eb6-a371-a8710e4f9a1e)(content(Whitespace\" \ + \"))))(Tile((id \ + d78a7e50-97e1-4487-94c5-7620f7057b62)(label(VerticalLeading))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + d0fa2c86-1a80-4489-8dad-0864eac411ce)(content(Whitespace\" \ + \")))))((Secondary((id \ + c550f4d9-2252-459d-881c-1ea2d5113920)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 48ec824c-86ef-419c-bea4-01af75ab209c)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + a3f051cd-9ac0-4f5e-a687-7436f35311fa)(content(Whitespace\" \ + \"))))(Tile((id \ + 110f994d-9f94-435a-a662-650195526a66)(label(A))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + de227626-c88d-4f8e-9b7d-8d239bc6b7a2)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + b7b57d94-9f0b-41ff-8805-383757288c54)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + e76c4cf4-6b52-4f61-8613-8418c2b54e04)(content(Whitespace\" \ + \"))))(Tile((id \ + 4de6fd61-26fa-4770-842d-f6c40b502f33)(label(B))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + e0d70e07-aba6-40e3-897f-ac02915c5454)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 375f169b-7f67-4190-b980-3292822c286a)(label(GoodSum))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 226a9d4c-109f-4813-aee7-94e2ad45fae2)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + a38444fb-d2c4-470c-b660-47c92bb89991)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + c587c505-748c-41c1-8279-71522de8cec6)(content(Whitespace\" \ + \"))))(Tile((id \ + 974020d7-e351-4812-9397-5018920e0a45)(label(C))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + d080e933-5349-49b7-b35b-2e5f24d3b007)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 78af8147-201f-46f3-b58d-4bcf7bfdf0bf)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + d873c642-102b-4997-bac4-f1f0b75a1624)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 3676c2d8-c573-497e-b7cb-d61cae5b5da6)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + f1e2ccb2-8186-4934-a292-57abb525d91d)(content(Whitespace\" \ + \"))))(Secondary((id \ + 546c1a20-e58f-4db5-88be-c29ff7e117e2)(content(Whitespace\" \ + \"))))(Secondary((id \ + 2f7eeab0-c2c0-462f-8a7f-6dce1a9479ec)(content(Whitespace\" \ + \"))))(Secondary((id \ + cc3e6a4c-73de-4450-97b7-d622e501a65d)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ + 50745623-8820-453c-bc0f-62ef453d38f0)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + f71ed59f-f6c7-4b69-a8c4-e12a77a9b82e)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + dec0a291-91c0-413e-942e-2cf40b652dcf)(content(Comment\"#incorrect \ + or incomplete type definitions#\"))))(Secondary((id \ + ff85a206-092e-4b47-8496-75171a46cb21)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 2a29b5e5-296b-423e-8876-ea638cf99c39)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 88097564-6cb6-40df-9dbf-8726f15e8023)(content(Whitespace\" \ + \"))))(Tile((id \ + bc56b1af-baac-4afa-927b-5b260ef9528d)(label(badTypeName))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 06bec89d-de70-42d6-85ac-73cd1ddc86c7)(content(Whitespace\" \ + \")))))((Secondary((id \ + 46400187-d912-4ba4-a220-7326db747f86)(content(Whitespace\" \ + \"))))(Grout((id \ + 71cde0f8-e7ce-4994-9f73-381e4eeb7e3d)(shape \ + Convex)))(Secondary((id \ + bbd999fc-99d6-4022-beec-290ae2883829)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 06fea02f-7527-4678-b8d4-23eb2895fced)(content(Whitespace\" \ + \"))))(Secondary((id \ + b76fdcc0-e6df-4bc1-a494-6c22207a0088)(content(Comment\"#err: \ + invalid type name#\"))))(Secondary((id \ + 8557100e-b121-44a6-9904-88d04e14afe2)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 037ed10b-ec8f-4e74-91ab-8b5ac06d43e4)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + d07a788d-e8bd-4292-815c-c1b2aeb50ce8)(content(Whitespace\" \ + \"))))(Tile((id \ + 0fbc61fe-ea41-465c-8229-5c191b82ad22)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Grout((id \ + bd55016e-8768-4ffa-9206-24cd3b8ea73b)(shape \ + Convex)))(Tile((id \ + 5e281346-8c28-4270-9131-df8eadaa2d7a)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + d70d0656-a8c7-4daa-9f47-f63a09e7581a)(content(Whitespace\" \ + \"))))(Grout((id \ + f61afea0-f3fd-4f9c-8917-0aa5e600782e)(shape \ + Convex))))))))(Secondary((id \ + 6f6d1712-ed54-43e9-bfcc-2aca0a93ceca)(content(Whitespace\" \ + \")))))((Secondary((id \ + d2d9a292-469b-401f-b5bc-525561ca82da)(content(Whitespace\" \ + \"))))(Grout((id \ + 18cb0921-300c-4001-8c45-e4950ce6b20b)(shape \ + Convex)))(Secondary((id \ + 4dec9e0d-5df5-4954-8107-2d3a56728db3)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + e16bf39c-26cb-47fe-89f4-33a1a9970651)(content(Whitespace\" \ + \"))))(Secondary((id \ + d950efef-1383-4e50-a303-aff3be6cfa78)(content(Comment\"#err: \ + invalid type name#\"))))(Secondary((id \ + df4aa51e-b18e-4cd1-98f1-446b1c9d721d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + e93edd08-38c1-4e34-afd9-33525f28d292)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + e3a09bfa-b86c-4849-be8b-7c9929b754ed)(content(Whitespace\" \ + \"))))(Grout((id \ + bb1bee1a-abe7-47aa-993f-85fa842b6fbd)(shape \ + Convex)))(Secondary((id \ + e5a4c884-61e0-46e0-ba51-aa8027c03b75)(content(Whitespace\" \ + \")))))((Secondary((id \ + b245fa5f-585b-4a67-94e2-2510e636670e)(content(Whitespace\" \ + \"))))(Tile((id \ + 52ac5bf6-1b0b-4acf-9c46-e099e018c4ee)(label(badTypeToken))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 7c99b199-bb9f-42d3-b28e-3940e92a3533)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 248b83b9-3ed2-4889-b3a9-4728d8345ad7)(content(Whitespace\" \ + \"))))(Secondary((id \ + a561938e-1e8d-485f-92f5-0976d7377be1)(content(Comment\"#err: \ + invalid type token#\"))))(Secondary((id \ + d7d0d95b-1e27-492f-91a5-97176f237c71)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + bbc7927d-aa81-4f04-8190-92349f23e545)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 5c927f79-7c3e-49bc-afc5-355081fc688e)(content(Whitespace\" \ + \"))))(Tile((id \ + 4f7eda69-8e88-46f6-af92-18e977fc4e57)(label(NotASum))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + 514b34b5-fae2-434a-b5ad-3c180fc704e1)(content(Whitespace\" \ + \")))))((Secondary((id \ + 2158eae1-2f2a-4df9-a342-b5fa191925cf)(content(Whitespace\" \ + \"))))(Tile((id \ + ad1bd59c-b07c-4854-878b-fb73b714bb34)(label(NotInSum))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + acb6b1d5-bda5-45c2-aab3-b9bc747ceb49)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 553dfa61-d24d-4394-ac50-4aa83e07bb21)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + c55a91f3-69b1-4505-b31c-ac9db253b5f2)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 51fb312c-cdcd-4db6-9a97-c06f9349262f)(content(Whitespace\" \ + \"))))(Secondary((id \ + bdcdee76-a147-457c-bdc5-911d1b51a26a)(content(Comment\"#err: \ + cons not in sum#\"))))(Secondary((id \ + f2cd045f-7c64-4ea8-8452-c4ab758dec7a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 4221a1d8-bcd9-4132-9916-5bec3de4a625)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 9d96a3ba-2e82-4741-a739-916745c2095a)(content(Whitespace\" \ + \"))))(Tile((id \ + 1fe95f07-86f7-4ba0-83ca-ecfcca5215f8)(label(Bool))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + 7fe1273d-e45b-4e86-ad79-a9a30cf0afd6)(content(Whitespace\" \ + \")))))((Secondary((id \ + 290c38f5-c4da-4a8e-b556-8503adc36c8a)(content(Whitespace\" \ + \"))))(Grout((id \ + c27057f8-540d-448e-855e-692824076cb2)(shape \ + Convex)))(Secondary((id \ + c77c2cb7-8f94-4093-9dc1-3dc1c76202b0)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + e93265b2-2163-4c24-a77b-75e0743fdefc)(content(Whitespace\" \ + \"))))(Secondary((id \ + cd8907a9-81d2-40cf-a12f-cdf75f85ecae)(content(Comment\"#err: \ + shadows base type#\"))))(Secondary((id \ + ce97e91b-7183-4964-9dad-5248b847cb2b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 524585ce-43ab-4dc4-a476-d2be15591182)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 033bf566-1b52-4a6c-966d-45efa4175c0d)(content(Whitespace\" \ + \"))))(Tile((id \ + 41911e97-fb92-4173-b3cf-f5d4eed85938)(label(Dupes))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + ff3b3be2-040d-47a2-b628-d957c263c18f)(content(Whitespace\" \ + \")))))((Secondary((id \ + de16dd5e-f90f-4941-b9b8-232e569d9078)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 94ecd3bc-97eb-403e-9563-421273cac80f)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + adef1e3d-eab2-4810-9a16-263d1a6d36bf)(content(Whitespace\" \ + \"))))(Tile((id \ + 4d3a0426-5dbe-4845-a282-d11a40094d78)(label(Guy))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + b710d3be-0810-42a3-89d3-358051f7013b)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + c9d5f791-f9bf-4844-9869-3c064b839810)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 9058a038-a0f4-48ee-b778-3fc60e5c9fb7)(content(Whitespace\" \ + \"))))(Secondary((id \ + afea3bbf-04a5-4e37-972b-6c9f976e7a4d)(content(Comment\"#no \ + err#\"))))(Secondary((id \ + f837183a-06ad-4583-b423-4d17dbbc4aae)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + cfde56dd-4d78-48db-b5b9-e3349e8ba3dc)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + d81137df-f2cf-49dc-bb0e-fe21538e3a64)(content(Whitespace\" \ + \"))))(Tile((id \ + 02201697-1922-4a2e-9180-4dcea7428a5c)(label(Guy))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 4868483e-5f32-49c6-adc4-6630dbe6ced7)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + fc54a64a-a135-44c8-9cf6-a7ce8a527315)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + fadea698-7c37-48a8-8c95-2787e6e3b20a)(content(Whitespace\" \ + \"))))(Secondary((id \ + 9571f9ca-05e9-4a77-accb-b92d6f3b5368)(content(Comment\"#err: \ + already used#\"))))(Secondary((id \ + 55aa05ad-0b6a-4f64-ac40-113f79ffe7f1)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 8c570671-41ed-4e52-a50b-3cf2809fbbe0)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + de416faa-f1fa-4900-9ad2-f32009445925)(content(Whitespace\" \ + \"))))(Tile((id \ + 7feec638-5149-4401-92cc-65748cf149ff)(label(Guy))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 1e3d16ab-a72d-4342-b2f9-0b8b1fe14657)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 5a84c480-9a4b-47c7-9d5f-cf03b1112f4b)(content(Whitespace\" \ + \"))))(Secondary((id \ + 79a4e032-0c92-41ac-b21f-198802c8ed00)(content(Comment\"#err: \ + already used#\"))))(Secondary((id \ + 3c76eb37-d0d6-4e5d-8b6d-fe3e0a29815d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + dc4a691d-60ff-4962-96b6-9f50d0fee6d7)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 6f82cfca-5b64-4104-8719-e56652b83ca8)(content(Whitespace\" \ + \"))))(Tile((id \ + 55211581-d61b-4ea6-8c0e-43853ab7088e)(label(BadCons))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + 541a269d-3b0c-4c6b-b421-cf2757f096d6)(content(Whitespace\" \ + \")))))((Secondary((id \ + f24cb71c-259a-4d1f-8a4b-04e51ed80b23)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + a034eadb-e82a-4983-b0da-52deba544b92)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 0ae1f486-6b64-49f1-9839-a3071a4d5e26)(content(Whitespace\" \ + \"))))(Tile((id \ + 576f5861-9df1-465d-aa6a-02b20f6e63c4)(label(Um))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 8b8364bd-ddbd-470d-95ca-8d3eca892887)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 327a32a4-b4b8-4537-a4a4-ff819776b7d8)(label(Unbound))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 4f4387fc-fbdc-41b3-90ad-1def00e5713c)(content(Whitespace\" \ + \"))))(Secondary((id \ + 8892cd2c-0885-4957-80ab-3e2675f4bb75)(content(Comment\"#err: \ + unbound type var#\"))))(Secondary((id \ + 80d01050-b2ce-4ac8-9ec6-0170deda3533)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 2b1798d7-13de-432e-95a5-48bf480f4831)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 469c772a-6cdc-4419-bb66-aaee9d260caf)(content(Whitespace\" \ + \"))))(Tile((id \ + 18f0f427-bf66-4c29-8220-dce417a0dad5)(label(notvalid))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + c1667cf8-ac3a-4b57-a1af-5add1cadbdec)(content(Whitespace\" \ + \"))))(Secondary((id \ + 7a66d06b-fdbc-4a07-8f9c-fb0cab06be80)(content(Comment\"#err: \ + invalid#\"))))(Secondary((id \ + 9b1ca2ba-300f-4f4a-a664-85b57811b1c6)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 78cee115-8bb2-4e76-b6c6-3f104bfe0764)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + d54d1a84-8d14-486b-a4e7-a47e9a71bbe8)(content(Whitespace\" \ + \"))))(Tile((id \ + 688f920e-c2a2-442b-b6be-4fd3aaa2bfe9)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 42a13800-3507-4688-b610-92bd8f40b64a)(content(Whitespace\" \ + \"))))(Secondary((id \ + 3f5bc604-c1a1-4b28-b62a-f379cb00bf13)(content(Comment\"#err: \ + expected cons found type#\"))))(Secondary((id \ + fac092ba-b3ca-4bfe-b67f-7b1712db8cf6)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + a34b8831-ac9c-4b15-9f36-bad3a9623bea)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + a744ef23-572f-40e9-835f-814d1ced928f)(content(Whitespace\" \ + \"))))(Tile((id \ + 0658f89a-28ce-4de6-a50b-dae44302c439)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 98717293-02df-4aa6-9b0c-0c4adee6cf7d)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 57276d63-e061-4585-9e5f-3c0a07471900)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 32f93082-70cc-490a-bd9a-8b1b863ea1c4)(content(Whitespace\" \ + \"))))(Secondary((id \ + e4902f69-d522-4a3d-9480-c4bf75b44cba)(content(Comment\"#err: \ + expected cons found type#\"))))(Secondary((id \ + 5df67ca1-51f1-4f0a-9e42-60b4955d7370)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 3723b143-134a-4d1b-9482-e3db9ca2b754)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 4c7b2401-fc05-4a9a-8005-5a731405d897)(content(Whitespace\" \ + \"))))(Tile((id \ + ee423a74-19f5-4331-96ec-32fbec96ac1f)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Grout((id \ + 69b680ca-10e8-4999-a9ac-cd35c530f38e)(shape \ + Convex))))))))(Tile((id \ + 4127b3bf-d6f0-4328-a943-09f3937d4335)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 4b70551f-8d18-404c-abc2-7be85297eaeb)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + c162b951-60e2-40c5-b2ce-7fcf5abb6129)(content(Whitespace\" \ + \"))))(Secondary((id \ + 1f35f928-4a5e-4d0f-83f0-f92ad23e37e8)(content(Comment\"#err: \ + expected cons found type#\"))))(Secondary((id \ + e11318ea-b24e-4c36-bc1e-48f0cf45a6ab)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + bb584618-cce6-4fde-9fd5-d7664d50a6ac)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + e3341aa8-5447-4345-b26e-771ef6594422)(content(Whitespace\" \ + \"))))(Tile((id \ + a89f44e0-6c1b-4392-aa86-a40eb1ad7d60)(label(A))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + cf28523c-f133-4218-ae35-7036d973c1d5)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + d5667e50-e604-4129-a70f-12d796a23781)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Tile((id \ + 1e352928-e4c6-4fca-ba2e-11cef32fefe4)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 1ed09b61-a337-4e8a-a34d-2ab888561c24)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 7da994bf-6340-45c4-8599-a03ca2341769)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 671e969b-0148-4345-b52f-d953506f9225)(content(Whitespace\" \ + \"))))(Secondary((id \ + a99ba882-d549-424a-8bbb-e6bb6cc14f5b)(content(Comment\"#err: \ + expected cons found app#\"))))(Secondary((id \ + dafc64b1-0620-41c6-88cc-4d3700a91400)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 63fd0ca5-5526-4d63-8602-7dc819005e93)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 56d28a0f-2244-4055-97e7-d87e504f59e6)(content(Comment\"#sums \ + in compound aliases dont add ctrs to \ + scope#\"))))(Secondary((id \ + a292fd1c-d0c3-4aff-aea6-54fb47db6aad)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 4df5e4d4-8390-4158-a53e-ff75907deb30)(content(Comment\"#but \ + compound alias types should propagate \ + analytically#\"))))(Secondary((id \ + 3fda8862-fca6-41ca-a9e4-bc4154218455)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + c6539017-bac8-4921-b1a2-dbd7686fd99a)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + c9219eb3-0e7a-447a-8e35-254101e3dd24)(content(Whitespace\" \ + \"))))(Tile((id \ + db95f67d-acf2-475a-ab91-4fa87ab97edd)(label(CompoundAlias))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + e6628e78-f477-4bab-a09a-929b617b2083)(content(Whitespace\" \ + \")))))((Secondary((id \ + 4a64ac40-4679-4366-91a0-b89dca268279)(content(Whitespace\" \ + \"))))(Tile((id \ + 34933335-7008-497f-9d8c-b31135833d16)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + c218a674-f28d-4146-930b-eb6f796111e0)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 76077180-868e-4535-9870-6f45077f1279)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 2fdfc791-1dbd-4794-ac3d-acb08e108b1d)(content(Whitespace\" \ + \"))))(Tile((id \ + 660b1ff5-f543-4a94-9e0b-040501cb6950)(label(Anonymous))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + ca0b24b7-26e4-4f18-a5ac-03da0194292a)(content(Whitespace\" \ + \"))))(Tile((id \ + e54319f0-eba4-46ba-8904-e80e9db0b1da)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + b5119751-b957-4a65-a4c2-ccdc1ab2bc89)(content(Whitespace\" \ + \"))))(Tile((id \ + 148914d3-99cc-446c-8bb2-3422cc4a553a)(label(Sum))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + a3295e9c-3446-4e30-81b6-f9ea31d00099)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 85cfca79-ca13-4d16-82c1-5f9b090483d0)(content(Whitespace\" \ + \"))))(Secondary((id \ + 3addc8b5-77a2-4d3f-b240-a42a1bdbacea)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 4250cef5-a35d-47b8-97c5-c92a48b1c8db)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + f2a63b3a-1ebe-4375-9749-4f12edd18d35)(content(Whitespace\" \ + \"))))(Tile((id \ + 714cbc78-0a5e-42e9-a83d-41a301f4dd1d)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 6724882b-9190-4687-9383-cacd82d63928)(content(Whitespace\" \ + \")))))((Secondary((id \ + fd8b2b27-0be7-4768-a187-fe62a0a02300)(content(Whitespace\" \ + \"))))(Tile((id \ + 2da8f63b-a4ba-4fe2-9e78-af2a352f2036)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 503e30a9-aeeb-42d7-a42f-c02ef125b0e2)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 0d92f21e-fd16-4b4b-a512-afae726117e3)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 0fd5bd23-a708-4b48-98a0-4e4b9fa05c32)(content(Whitespace\" \ + \"))))(Tile((id \ + f9d77557-184b-4f52-acde-16f41d4166fe)(label(Sum))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 0f2dbf7a-c881-4050-ad37-0ad7f6d6a7b2)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 917c166d-0721-45a6-bed2-681f750485ca)(content(Whitespace\" \ + \"))))(Secondary((id \ + bbefa4fc-0966-4f39-835f-64d3516e5f53)(content(Comment\"#err: \ + not defined#\"))))(Secondary((id \ + 60bc2aa4-0b81-4356-943c-e68f7ac510ad)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + c01847f6-15bb-44ff-9f05-209367f03f7d)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 591380d8-d43c-47cc-94ca-249f078a157e)(content(Whitespace\" \ + \"))))(Tile((id \ + 3fd95373-6092-40e3-b2bf-8f178061f9c0)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 4fdc4342-3d28-4d46-a063-da90e9b4d7bc)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + cd43dede-f632-4f59-9e54-d8ad47755667)(content(Whitespace\" \ + \"))))(Tile((id \ + e1c2481f-fa45-4215-8081-d2eef4f8e8b5)(label(CompoundAlias))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 6188a6f5-c684-4af8-ab9e-3256c23b7c1d)(content(Whitespace\" \ + \")))))((Secondary((id \ + 016923aa-5b98-4d44-9372-e16836d64f36)(content(Whitespace\" \ + \"))))(Tile((id \ + f705a020-a72d-4355-a982-13faad65a8ec)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + eefcbd7f-aec0-4db9-a17a-b9ff21d5bc95)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + cbdd1550-c48b-4dcd-95f4-bce1f98a6d1d)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 98a3cc68-afee-4809-aba5-75e733c673cd)(content(Whitespace\" \ + \"))))(Tile((id \ + 37d16e1e-6da9-47f9-a9fa-50cdc3cd94a5)(label(Sum))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 4ae0a91d-b46b-4c3b-8f85-52bd7748fedf)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 40bb855c-6b45-4476-adb8-20151c081ee9)(content(Whitespace\" \ + \"))))(Secondary((id \ + 39500a9e-b189-468f-9103-b24cf76f040d)(content(Comment\"#no \ + error#\"))))(Secondary((id \ + e7eb628c-3fa7-495a-a51b-e110980554fe)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + a1406680-cf51-4b14-8f13-9a43b73fba46)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + f98204ac-7408-40ef-8189-a32946d1c192)(content(Whitespace\" \ + \"))))(Tile((id \ + cbc36712-eb03-4be1-919b-c80e5bf9822a)(label(Yorp))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + fc7c8c66-f357-43de-9b25-a108f59d2910)(content(Whitespace\" \ + \")))))((Secondary((id \ + 14ab2d99-a891-4eb9-b55c-0b38ab4fcb0c)(content(Whitespace\" \ + \"))))(Tile((id \ + 20f829db-22e2-431e-ab11-8eddaa088129)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 4fce041b-ac8c-434e-af8e-391e3ae60d74)(content(Whitespace\" \ + \"))))(Tile((id \ + a301e74b-6e03-4455-9cc3-2e325e942fa2)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 839e1f10-a8d2-40f4-9bc9-3dd5941cd664)(content(Whitespace\" \ + \"))))(Tile((id \ + 4630be6e-eca5-4718-a71e-239de5a48d4e)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 697f3706-b9ac-42b0-917b-2b57ad0f1c95)(label(Inside))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 8399b277-7d98-453b-a117-a188b78a2f7b)(content(Whitespace\" \ + \"))))(Tile((id \ + bb39161b-72ad-42c8-bbcc-2011a7bb0927)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 0ca22f75-e67e-4179-8574-0251182b7355)(content(Whitespace\" \ + \"))))(Tile((id \ + 11752147-f120-4116-9aa3-c51df039f52e)(label(Ouside))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 3890ca6c-f213-4520-9198-cdb016151871)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 3ee55537-d8e2-4bc6-9bbf-fbf18d98d1e5)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 7a297494-386f-44f7-b248-19650fadbab5)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + d826df8a-e45f-4b11-b7ef-a6180ef6a475)(content(Whitespace\" \ + \"))))(Tile((id \ + 2d440fcf-b0de-4f95-a41f-cf7c6458ce03)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 3aa15bb2-877d-414f-afc3-ae075ea7d51c)(content(Whitespace\" \ + \")))))((Secondary((id \ + 6892ff00-0519-4456-89cd-7592ef4f1bfc)(content(Whitespace\" \ + \"))))(Tile((id \ + 83e43479-5702-4249-a6b3-9715fb2223e9)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 56a67b30-cab3-4c6f-beb6-a0624c4fe56e)(content(Whitespace\" \ + \"))))(Tile((id \ + e1100f99-f60d-4b5d-9df2-c8aa54744ac9)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 943e41f1-b39e-46b1-a484-115aca74a68a)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 79623b4d-7d1a-4db8-bd72-22f39a30e159)(content(Whitespace\" \ + \"))))(Tile((id \ + 2cf9dd1c-d6f8-4592-80e2-2deb9c8e0d22)(label(Inside))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f295d8a6-6d2d-4b4e-86b3-38c9846765e3)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 9f125b81-04ab-4719-9aa9-32ad8fddb18c)(content(Whitespace\" \ + \"))))(Secondary((id \ + 2e22a04a-a6fb-4372-a13b-f2ef4f66411b)(content(Comment\"#err: \ + not defined#\"))))(Secondary((id \ + aa6021c3-7440-4d98-ab16-742f2f2233a3)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 712b71b1-7293-47bd-900c-abe487b15154)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + f833c960-f1ea-4226-8132-55f684151f32)(content(Whitespace\" \ + \"))))(Tile((id \ + 44154061-c60e-475b-b9e5-23afba0699d2)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 6ab2c025-ed6a-4bf4-b339-28982ccf8ee5)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + aa8f8cbf-d98e-4dc1-b9a0-841b244cfb78)(content(Whitespace\" \ + \"))))(Tile((id \ + 7046ff8f-5b8a-4d57-a39d-f5bd20916f68)(label(Yorp))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + f14c92c8-9975-4598-baad-febacbc66ced)(content(Whitespace\" \ + \")))))((Secondary((id \ + 65eef072-dfab-48aa-a0bb-9f35dc517f96)(content(Whitespace\" \ + \"))))(Tile((id \ + 1d7f6f4d-2b5c-42c6-8fd5-e6e978b7da18)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 89ddccbf-2594-4e32-ad8b-9f360d7b2de3)(content(Whitespace\" \ + \"))))(Tile((id \ + 30add1cd-018c-4a6d-b28a-ef0301b8f0e2)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + b0884aed-306d-4f86-adca-5545e9d2cae5)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + ff752faf-57fc-4b58-a8c3-d6739562f516)(content(Whitespace\" \ + \"))))(Tile((id \ + 7281c949-f27a-4bb8-b84f-50a2d364a4ce)(label(Inside))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + fd023a10-7c70-40dd-9b9f-0d0e60a6118a)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + ee8c6a7c-5bfc-4974-8e61-edbefe26b78d)(content(Whitespace\" \ + \"))))(Secondary((id \ + 5202ef3d-18f0-420e-9931-73e28fb1fe38)(content(Comment\"#no \ + error#\"))))(Secondary((id \ + 1efcebbb-8780-4255-a3f8-d175f1ee073e)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + e1e7b69d-469b-4ba0-a495-e75b857b3f20)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 99a1a829-4099-40b8-bd35-b503867a2c46)(content(Whitespace\" \ + \"))))(Tile((id \ + 36788d6a-dbb4-4e09-9fb8-2b47e13d425b)(label(Gargs))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + aa5ad82a-3e90-49f0-8d2e-a906d1993166)(content(Whitespace\" \ + \")))))((Secondary((id \ + 1975dae3-c37c-4e2e-87ef-3e34676c43e4)(content(Whitespace\" \ + \"))))(Tile((id \ + 9a270162-b5c3-4967-9e80-4500ba8315f6)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape \ + Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0 1))(children(((Tile((id \ + cf62e16d-8837-43bc-9925-2b62630a4d2e)(label(BigGuy))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 67a6ef6f-0833-4b56-9cfa-dc35a26e5267)(content(Whitespace\" \ + \"))))(Tile((id \ + 3e5b4c41-f8a7-464c-aa35-0497b093c87e)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 33950ea1-db28-4d4c-80fd-5d9458c01376)(content(Whitespace\" \ + \"))))(Tile((id \ + a7d579a3-3c20-42ee-84bc-fd774067d9c6)(label(Small))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 57f96072-51dd-45a6-8a75-1e3c5b61f249)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 01577e64-bf58-4a7f-bd69-f78e1fc244b0)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d898b799-4ca6-4d0f-ba7a-05f5457b1f3a)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 8f4217dd-d8cc-4ebc-a8be-6681e68928c9)(content(Whitespace\" \ + \"))))(Tile((id \ + d68dff3e-1a30-4cf7-a591-82353680b3a2)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + dabef24a-a341-4bb6-ac2b-11634c79d0f4)(content(Whitespace\" \ + \")))))((Secondary((id \ + 98584257-10e7-42b6-a45e-7c7e92a94153)(content(Whitespace\" \ + \"))))(Tile((id \ + 19c2c0cd-dc53-49d2-ac55-69c81f10a046)(label(BigGuy))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 4c7017d0-6c48-4ee3-9e52-333862ef0c21)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 440e44c5-ed6e-4921-b99f-f2595612e93c)(content(Whitespace\" \ + \"))))(Secondary((id \ + 0f6e0333-dac5-452f-b3a4-d45adad5af85)(content(Comment\"#err: \ + not defined#\"))))(Secondary((id \ + 90807928-26cf-4f5f-806a-9164725c1556)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 0e8a3461-af04-4423-b651-9fe8c006f323)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 50404f5d-c653-41c6-bba8-42e228222987)(content(Whitespace\" \ + \"))))(Tile((id \ + d96dca89-99af-4d53-a42c-c655ff25b297)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 0ba9f9c6-47c4-4b3a-a90d-60ee56bee461)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + c6f76877-8139-4175-b824-ea94b3c86e5e)(content(Whitespace\" \ + \"))))(Tile((id \ + 6f6c6001-5a0b-47e4-aa39-5153f95cf4a5)(label(Gargs))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + dfab673a-1f3e-4652-9586-549617a9401b)(content(Whitespace\" \ + \")))))((Secondary((id \ + 41d055f1-a91f-45cf-9c01-c3b1e2db1161)(content(Whitespace\" \ + \"))))(Tile((id \ + 8c8bac84-8384-448a-9df0-cfa8bce1af0f)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0 1))(children(((Tile((id \ + 1acf9314-5f5b-4fb5-872d-0343ea92d419)(label(BigGuy))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 08897f29-c87f-481a-8c6f-a22edb0788ba)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 92cfe191-ff9d-442c-955f-5f995271f866)(content(Whitespace\" \ + \"))))(Secondary((id \ + 9810fba7-a0fb-4af2-9cb0-dd4b84e377ae)(content(Comment\"#no \ + error#\"))))(Secondary((id \ + 66ceb841-6611-4337-a31a-12a5cbd24089)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 9c2b5104-6ccd-4899-bd24-18b19dc8ca1a)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + ff106bd8-3e77-44e0-8776-98534a59abe1)(content(Whitespace\" \ + \"))))(Tile((id \ + ca8e9c0b-34b4-4bce-bc7a-b389e315ddae)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 37b16295-00a0-4622-a632-7147c389de04)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 0c26e47f-4c09-43f2-850c-54878337e8b1)(content(Whitespace\" \ + \"))))(Tile((id \ + 89c04f2d-1440-4140-98ed-728ab5007f3c)(label(Gargs))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 374242b0-7851-4223-bf66-05a4ec39e3f4)(content(Whitespace\" \ + \")))))((Secondary((id \ + c8c6ece6-9625-47ac-8268-fd5b088022fb)(content(Whitespace\" \ + \"))))(Tile((id \ + 23a2160b-4511-4bf4-93b4-1f683c8ea3e0)(label(BigGuy))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 0fcfb4cb-206c-4271-8e01-21b8f8b8a829)(content(Whitespace\" \ + \"))))(Tile((id \ + 2231f476-155a-4eb4-95b4-2ffd29b80a7c)(label(::))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 6))(sort \ + Exp))((shape(Concave 6))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 487db073-d8c5-48e5-b123-ba3a2f6db6e2)(content(Whitespace\" \ + \"))))(Tile((id \ + c76ec439-420a-4861-b42a-8e79930609d1)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0 1))(children(((Tile((id \ + e5b75fe3-89f4-40c4-b9a4-b5cb51fac788)(label(BigGuy))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + d3dd54fc-7ffc-4d0c-8dd0-bf7ef6457b44)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + e339ef99-da83-4e07-b97c-0ea6eb0bf0d2)(content(Whitespace\" \ + \"))))(Secondary((id \ + 07b8ca66-0b3b-4ff9-96a7-1b6c3d1ee2e2)(content(Comment\"#no \ + error#\"))))(Secondary((id \ + f4fbbeba-e830-4d0f-bc01-c7fcf2c72149)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 798f7692-dcd9-4a69-b8d4-d864b81d9e46)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + ccb10986-e1c2-4717-9e40-f483a023fe77)(content(Comment\"#unbound \ + tyvars treated as \ + unknown-typehole#\"))))(Secondary((id \ + 8fbfacd7-4f4c-447c-8cee-8b8389804820)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 219161a8-500b-4644-96ca-3cc60f837891)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 4d5a6229-7faf-48de-947a-95bf207cae81)(content(Whitespace\" \ + \"))))(Tile((id \ + fda91126-1717-4aa9-80d9-eccc25f22d69)(label(a))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 2404d77c-60d3-405f-b281-1780231f4fcb)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + afd302f2-0780-438b-aa2e-cc8d650057da)(label(Bad))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 74226087-3a3d-4492-94e3-6e9eec279213)(content(Whitespace\" \ + \")))))((Secondary((id \ + 87c77f09-c937-4d5b-b4fc-af4cde8e96c6)(content(Whitespace\" \ + \"))))(Tile((id \ + 44d53111-ae73-4baa-bc1e-21b2bcdab066)(label(0))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + b6420725-968b-47e3-8088-b6f9ad69191d)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + d1463fc7-e198-4505-bde2-3194a4b9f059)(content(Whitespace\" \ + \"))))(Tile((id \ + a40251c7-b8fe-4d13-88ab-7099f374f1ea)(label(a))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a67ce1eb-c586-427f-8760-73d05c4a0868)(content(Whitespace\" \ + \"))))(Tile((id \ + 5c6ac5ea-9314-44bd-b505-3555f3fda0c6)(label(==))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 8))(sort \ + Exp))((shape(Concave 8))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f27a6e17-4598-4c77-97aa-b23ad5c57c30)(content(Whitespace\" \ + \"))))(Tile((id \ + 5f4aa276-21ab-4df9-837d-47fc7f5c2329)(label(0))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 790d9673-2597-46f1-a7a8-ca126695ca31)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + be418afa-4704-4ff2-8fa7-518de2ea1b7b)(content(Whitespace\" \ + \"))))(Secondary((id \ + 1163438f-7bc2-45f0-ab80-d831fe6e89e9)(content(Comment\"#err: \ + not bound#\"))))(Secondary((id \ + 96b31255-b1fe-4de1-9617-e368995784f0)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 25e19ea7-ad9a-4c94-ad6f-afa03f50fd1a)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 7199f788-c3e2-4104-957d-9773562d080a)(content(Comment\"#non-sum-types \ + cant be recursive#\"))))(Secondary((id \ + 93fdc15b-1031-418d-843d-6337df2d79a5)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 89d68700-afb1-4562-838e-9db767e0c312)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + a4301ab5-ef0c-44b6-a261-a7d4e497d257)(content(Whitespace\" \ + \"))))(Tile((id \ + f0e88a3a-e5bb-42d0-a432-76e6acaf6d68)(label(Lol))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + 47321d59-c948-4d9b-bc9d-3275566f8c45)(content(Whitespace\" \ + \")))))((Secondary((id \ + d19fa033-9912-429a-9ca4-5dd4838bac64)(content(Whitespace\" \ + \"))))(Tile((id \ + ab3fb279-a3ca-4074-81dd-0ae7c80527e8)(label(Lol))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + c293d6ff-8104-4f4f-acc5-12d691fb5ac9)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + f93712dc-73e7-40ae-8a21-42d313da2ff0)(content(Whitespace\" \ + \"))))(Secondary((id \ + 6f1c746b-deaa-4270-bf25-4c85957dc2a5)(content(Comment\"#err: \ + not bound#\"))))(Secondary((id \ + 405eced9-cd91-478f-b4e2-de6e57f425ba)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + b5021224-ac6e-4754-9f51-a2bddece86e6)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 29d254a0-4e1b-49a3-a099-668728f1c89c)(content(Comment\"#no \ + errors: analytic shadowing#\"))))(Secondary((id \ + 686f7f49-42c4-4b2a-9a23-ee4512165db0)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 1ff64461-15b5-446b-a76c-24c13d5d444a)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 8edfaff4-4919-49e7-9e15-8520f5b09f76)(content(Whitespace\" \ + \"))))(Tile((id \ + 1becea0c-d28f-4f43-b256-9ae031247317)(label(Tork1))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + 3f451423-322f-4a03-803c-a9fe4469059d)(content(Whitespace\" \ + \")))))((Secondary((id \ + 149cde0a-a955-4583-bf00-ba75531fb9a8)(content(Whitespace\" \ + \"))))(Tile((id \ + 525b3590-dec9-42c1-a039-3a89cec2c3a3)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 9f71a0e6-300e-4185-9579-11f23a8c84be)(label(Blob))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + fd7ac165-1225-4f0a-a44e-9e63673f88ee)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 25c9763d-04cc-4384-8fa3-1b7bd69ed0e5)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 16d2afaf-e258-4525-b753-8c2bf7f491ff)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + a83010c6-6c5a-462c-82c0-61ae9e2321a6)(content(Whitespace\" \ + \"))))(Tile((id \ + 30177813-493b-425d-b6b9-0882ddc5599a)(label(Tork2))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + 2990e467-ad88-4071-be30-5931c90b96d2)(content(Whitespace\" \ + \")))))((Secondary((id \ + d591a449-b5a5-4b2c-9816-7b60f1319af0)(content(Whitespace\" \ + \"))))(Tile((id \ + 2572cd15-f6fb-4b7a-8d0c-3359281fc897)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + daba6aeb-2bd4-4768-9c28-a5197ed2e69d)(label(Blob))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 7c56b1d3-71b0-421b-9093-f54733ab5a14)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 0a54f1bb-05ab-474b-894c-0b29d1449cce)(content(Whitespace\" \ + \"))))(Secondary((id \ + 30114535-b613-4192-b939-eef1e5ccb79c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 2a304f33-da99-4aa3-979c-e747ef575d92)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 81d70396-09a7-49cf-b791-a13e263e658e)(content(Whitespace\" \ + \"))))(Tile((id \ + 35f31cae-e178-4ee3-b131-a2e4e9d05c3c)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 21d5be43-0bd5-4b04-9451-cd49e298eb43)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 8c464058-23fd-4d6d-8989-199cd73fc794)(label(Tork1))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + f917dbed-94bb-4c09-9661-5869bd3c2f73)(content(Whitespace\" \ + \")))))((Secondary((id \ + 8c883f5c-19c0-4005-8d64-7b957c3875e6)(content(Whitespace\" \ + \"))))(Tile((id \ + 29ec207b-0631-4208-95c3-fbafcfd0b834)(label(Blob))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + ded79c28-cd8f-43e0-a245-7b07826d1f68)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 9c15d35c-6b79-4da6-94be-31c638ff9d74)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 4221f40f-9932-4357-9991-6036e9995b01)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + fd3ef32c-2c79-4426-ae9f-fc1167b82b4b)(content(Comment\"#exp \ + tests: happy#\"))))(Secondary((id \ + adf5313e-1df5-4df1-864d-9b7c5a812667)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d4348036-dc0a-4680-bb8e-cf0047c0940e)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 8086acf0-34a1-4686-be8f-26863527daee)(content(Whitespace\" \ + \"))))(Tile((id \ + c5aecbc7-c328-4ba8-8cd9-9d7a00e0cb21)(label(YoDawg))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + 7b2e209a-0ea1-4915-9cf2-f3c2be5a2879)(content(Whitespace\" \ + \")))))((Secondary((id \ + 820a2676-823e-4bc6-b300-5214aa0789f1)(content(Whitespace\" \ + \"))))(Secondary((id \ + d15001dd-0eae-4e73-afd4-482ab7a3162f)(content(Whitespace\" \ + \"))))(Tile((id \ + 0d01ffdf-6b97-4486-8ff9-044f5a9b3022)(label(Yo))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + ac7e5081-6998-4cb3-9c1a-c40837a12f5c)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 99b838e7-8c34-4a56-b293-1b1ae38a1049)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 0c38c8bc-db43-480a-841e-10779cde50a6)(content(Whitespace\" \ + \"))))(Tile((id \ + b0edf54b-6bef-45ba-838d-7403aadd4f27)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 5cab4b3c-9cb4-4ab2-9d42-924eba8f3aa8)(content(Whitespace\" \ + \"))))(Tile((id \ + e51124be-f1a0-49e6-8574-38bc09feb291)(label(Bo))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 64254a44-0afb-4267-b67e-45209d5fd9e5)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 5ef14ff0-0634-4e9e-bb53-8288e942193c)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Tile((id \ + e9ac6fe6-8a71-45a7-8da8-1f5f90f28133)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 155ba47c-7565-4213-8397-d934baca7e3d)(content(Whitespace\" \ + \"))))(Tile((id \ + 4037ef97-2006-4a44-8e3f-52e9f386789e)(label(Dawg))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + c29d5af2-a7e7-4eae-80be-e02c08500412)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + f193a595-7f99-4b7d-9d65-7d8e43ec39be)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 72564c9c-d9d3-427d-afd2-4ac8076568c3)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 3f1708db-324e-4323-b079-049b8b24bf4d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 39838558-510b-43f5-94ea-1123d44a4893)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + a9543098-44f2-4343-a935-103e66129cd6)(content(Whitespace\" \ + \"))))(Tile((id \ + a4bb3cc6-2f5c-4aa4-b759-64f98efebc6e)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + a952baf6-5bcc-4bb5-9b5f-ec904f22493d)(content(Whitespace\" \ + \")))))((Secondary((id \ + c05f234d-1302-4f88-a783-8cdf34d3d40c)(content(Whitespace\" \ + \"))))(Tile((id \ + 41e38c8d-fb14-449f-b631-c92243735859)(label(Yo))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 2af715e2-01fd-43a7-b51f-11eb8b512622)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 7bc5dec7-96f1-4cf0-b1c0-4656eaea8caa)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + acc97d46-0081-47cb-8390-cf07cd221dfd)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + faafe673-8162-4792-9f78-ef39ad8711d9)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + e440a940-5e6f-41d0-b461-d2623f941031)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 108659a4-8b68-4b8c-b7b5-6b789ceef204)(content(Whitespace\" \ + \"))))(Tile((id \ + 4c444ede-7a17-4cc4-b1cf-a5c908b81294)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 73c083d3-7732-4eb4-8805-320031e221c9)(content(Whitespace\" \ + \"))))(Tile((id \ + 55113fea-afb6-4ce4-86f8-2eaeea055cb9)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 75cc1d9e-47cd-4b09-a995-76d799797482)(content(Whitespace\" \ + \"))))(Tile((id \ + 66fde9e3-e01f-4432-ac18-3514f5d420e2)(label(YoDawg))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + ad6b6fa0-0ed3-43e5-bc22-33ff5e4474d1)(content(Whitespace\" \ + \")))))((Secondary((id \ + 8c87c560-68ee-4aa6-ae62-b51025662c41)(content(Whitespace\" \ + \"))))(Tile((id \ + 7c917f3c-12da-47df-bce7-dcaef2e9d144)(label(Yo))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + dfc92cba-547f-46e3-a1ce-33d261945c01)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 6ce99c4d-452a-407b-a6ad-9ee8c8b794bf)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 5cb5dc92-6dc9-4099-8240-b068232de661)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 8d2d26b3-42ba-435e-a638-b38b16e28cbb)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + e09c21c8-8a84-496d-813a-f55700f64d96)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + dd2a10c9-a86b-4cc6-9a2f-8b27d8d75b11)(content(Whitespace\" \ + \"))))(Tile((id \ + af04d0da-9208-45b3-addc-a29c293f6f40)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 35ccdacb-fc30-4f21-b258-7f69e627d7e2)(content(Whitespace\" \ + \"))))(Tile((id \ + f558961c-a720-4e29-a7ce-0c632b872292)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + ca42123c-25ad-4a5a-b973-594607c93d58)(content(Whitespace\" \ + \"))))(Tile((id \ + f52df601-dcc7-48bf-b6fe-b341c76aaa8b)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 147816da-20b4-427b-9dc1-ede6c2110c6c)(label(Yo))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 357b2aa0-b570-468d-92d2-6875660183dc)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 20b39e9a-6f5b-44b1-8ddf-ce4dcfa8026b)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + c8716d17-a9b6-41be-995d-ef7e42e6f73b)(content(Whitespace\" \ + \")))))((Secondary((id \ + ab2471b5-5cda-4a87-98c4-de2f8dabc2de)(content(Whitespace\" \ + \"))))(Tile((id \ + f845997e-ab21-4c3b-92af-c65664ab5dad)(label(Yo))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 377ba38f-d98e-40ba-ac48-e4fda0ca1581)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 7d3a00c2-3da9-4479-a008-90b827278327)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + ee221f24-9e4c-4268-a868-bffb24fcadaf)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 68ca6027-bc33-4fcd-a466-07a44cdd968d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + a70b3bf3-5204-4dd0-acbe-760d495de0bc)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 297e5d36-9fb0-425f-9580-d5fffbb4cc1b)(content(Whitespace\" \ + \"))))(Tile((id \ + 9d07da15-bb00-4575-ad9f-2cdce9a942e7)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + a2a2fd58-2ac5-4b0b-a55b-01646a3b4dde)(content(Whitespace\" \ + \"))))(Tile((id \ + 34107bf2-3ea5-46b6-aae0-89f6cd092b45)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 113c2063-7bd7-481e-87b9-2aa4059e6231)(content(Whitespace\" \ + \"))))(Tile((id \ + b5dc00aa-d47c-4504-b69f-17fb572dfdb3)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + f55ed323-bad7-4e71-b23a-4e6453806221)(label(Yo))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 2149c166-a141-457c-b055-391325a4286a)(content(Whitespace\" \ + \"))))(Tile((id \ + b9604112-c199-4512-809b-c28949c61ec6)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + db69385d-7e0f-43f1-b596-64d0716e89cd)(content(Whitespace\" \ + \"))))(Tile((id \ + ed502769-4b80-4bcf-90ea-7475b3465f16)(label(Dawg))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 5c5a7f0e-8ec1-47d0-aa25-88b1a5d2240d)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + f786b8df-f704-401c-8f06-03146741d04b)(content(Whitespace\" \ + \"))))(Tile((id \ + 408c24ca-b6ed-43f8-b6cb-d173502ce7a4)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + f6263446-35b6-41a1-b626-78f8b2081d88)(content(Whitespace\" \ + \")))))((Secondary((id \ + 9240e351-39af-4a2d-a743-047f38fd4264)(content(Whitespace\" \ + \"))))(Tile((id \ + 44e42610-d59f-41f1-9fec-349064f14fa8)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 9b5de60d-6b0f-4263-8c72-4400bfa1ca8c)(label(Dawg))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 7f9eb770-d68a-4627-ace4-c65c6b0ab48d)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 2eff9e96-1453-4d9c-ae1c-bf2556b1d509)(label(5))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 18fdf605-7889-4a62-80ae-2690a3eba6fe)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 17c91e4a-08af-484b-9e62-38bed1629b38)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + daf02719-0436-46e2-9554-1cc670d63753)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + cc5f08f2-7e67-4773-b6ed-089380bd1fcb)(content(Whitespace\" \ + \"))))(Tile((id \ + 5a84271a-4bd5-44fb-aaa1-91f75980da76)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + dcabb994-94a1-4658-873c-3f4e26f8e8f2)(content(Whitespace\" \ + \"))))(Tile((id \ + e45f5970-56f9-4229-ab5d-2eb80e7c7289)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + e1af6915-c79d-4580-b3bf-2ec99966c111)(content(Whitespace\" \ + \"))))(Tile((id \ + 2eaeb051-8993-404a-8188-3f1f0e0d4d28)(label(DoubleAlias))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 4c25bfa1-4b04-4d21-b44a-0f03571f90e4)(content(Whitespace\" \ + \")))))((Secondary((id \ + da448888-f8a0-4e10-8564-68af9da9e873)(content(Whitespace\" \ + \"))))(Tile((id \ + 71f1c710-a5db-4a42-89af-ca5f7b12e3be)(label(C))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 63858904-cc65-4fd1-a40d-500f743980dd)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 3876d9ab-2ce6-449e-8b16-33ff4191f02d)(label(4))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 23806cf2-01ce-4bea-9d88-13e6981f1bb0)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 387918c2-75b1-4cef-bd48-acf19e9e2f38)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + f1e04837-231f-41a2-99ea-bdfc6e060045)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 52bd8fd8-f689-4946-891c-2291dc031ac1)(content(Comment\"#exp \ + tests: errors#\"))))(Secondary((id \ + b2be6e9d-fc09-46bd-aa5b-b4390c4ef179)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 4214db3a-ee62-4418-80f2-85552aceee58)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 09711721-4aa6-44e0-bbca-862af2e9ccad)(content(Whitespace\" \ + \"))))(Tile((id \ + a3bcab3e-81d4-44f5-a4b8-e3a2f9e02b1b)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + b028f571-25be-4657-80f6-de23b1a02bd3)(content(Whitespace\" \ + \")))))((Secondary((id \ + 2c29cefe-10a5-4367-ad6e-d6db9b69f8f2)(content(Whitespace\" \ + \"))))(Tile((id \ + da5545a4-8e25-4438-be2d-1138f4cddee1)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 19964660-f5a3-4d24-a945-ceb4ae1e444d)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 502113ba-b30b-48e6-a02b-8916e4099f10)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 923b8dd5-2b03-49c1-b375-c3bd8a5be1cb)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 08f65795-5f41-4555-8738-a9d7ba8f4db1)(content(Whitespace\" \ + \"))))(Secondary((id \ + 4ac9fda9-dc04-420c-8de4-71f715a8e8ce)(content(Comment\"#err: \ + incons with arrow#\"))))(Secondary((id \ + 9cc1e342-4765-424f-8588-b2da5a3c8812)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 7f83fafe-e3fd-4d48-b9bd-c981ab1ec228)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 2ed49797-a540-4383-a55f-7f997769fcf8)(content(Whitespace\" \ + \"))))(Tile((id \ + b0d6c8d9-0f55-4622-8540-ad3ec40e8dcc)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 931434c2-9bfd-47fb-b860-4f94fb56abc6)(content(Whitespace\" \ + \")))))((Secondary((id \ + 0c45d1da-dca6-4bcf-824e-086ff3619e11)(content(Whitespace\" \ + \"))))(Tile((id \ + eeec54a7-e110-4085-9e20-e2587dd419b5)(label(Undefined))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 6dfa2802-7123-4ecc-af5c-d24ab138e89b)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 4871baec-a321-43d7-99d5-c51059493083)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 74f30173-b867-483a-bf32-5b5649f34e00)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + f489bf80-e026-44ed-9f51-b40da91947bf)(content(Whitespace\" \ + \"))))(Secondary((id \ + bdda38c1-44fa-4426-a68d-90e1e3f577a8)(content(Comment\"#err: \ + cons undefined#\"))))(Secondary((id \ + fa273c71-3434-46da-a671-626cc6049caa)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 7dca8b6c-989c-4741-a4a4-f1ae62408a90)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 9cb2acad-feff-4672-8d7c-43c467f8e391)(content(Whitespace\" \ + \"))))(Tile((id \ + 75506b66-e182-491d-b788-99a377d7e3d6)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + d53d0f49-aebd-470e-9c65-7d77561bfd5a)(content(Whitespace\" \ + \")))))((Secondary((id \ + 32bfdb59-116b-4f75-82fb-7b7a7a9ee1fc)(content(Whitespace\" \ + \"))))(Tile((id \ + 7a5c1b27-7917-43cc-96b7-68c9a0aa125a)(label(B))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 6d2f6d4d-5b34-440c-99ef-1b173e491ca2)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 4265c52b-55ce-4fb0-917e-79f99b4545c6)(label(\"\\\"lol\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 126bad8c-fff3-4a21-85ff-3a93fc73af37)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + acc21816-6762-458e-b052-98fb57fcd6e8)(content(Whitespace\" \ + \"))))(Secondary((id \ + 2e7148d4-ec87-4c83-a879-b1cb5a5ed1df)(content(Comment\"#err: \ + type incons#\"))))(Secondary((id \ + 29738cc2-dd27-4ee6-bf83-f0d00a16d47a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + c9c142a0-b9d1-423e-afa6-950070639487)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 9ca198f1-a4ab-4e6a-b9ee-7af24b2b0ddb)(content(Whitespace\" \ + \"))))(Tile((id \ + 17ff72b2-b93a-4051-b699-dbcdae7307c6)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + bc97a62f-b7e1-4ec3-81bf-83184a4c8c87)(content(Whitespace\" \ + \"))))(Tile((id \ + fec091dd-0e47-4833-ae00-53762c786ab6)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 62922425-2203-4454-9523-f8fcbeb03c9c)(content(Whitespace\" \ + \"))))(Tile((id \ + f82a5fb1-5509-44b0-bd40-44313f75c4c1)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 3161a5c3-aab6-4b37-abdd-0b4545799278)(label(Yo))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 8b7427f3-fa5b-436f-92b8-7d8c6cc0d036)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 89074e55-142d-4e4a-a5e8-7a442c699a0f)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + a0d5f29a-cd3a-4686-a1b5-09113a40195c)(content(Whitespace\" \ + \")))))((Secondary((id \ + af4c6438-89a1-4132-9ad5-c4ffac91fd1d)(content(Whitespace\" \ + \"))))(Tile((id \ + c580e9e7-7d6e-4e80-82be-25aaca79b942)(label(Yo))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a8c5832b-cebb-4c6a-92e6-07b5e552505e)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 631f4c3c-a5f4-4edc-ba88-8af7bac59d7d)(content(Whitespace\" \ + \"))))(Secondary((id \ + c75d5e54-515d-42cd-953e-a5b2af960eff)(content(Comment\"#err: \ + type incons#\"))))(Secondary((id \ + 8e89e058-3e4f-4213-b1b5-21b75a12b3b0)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 092d401d-4681-45ca-a417-469e1b9521fd)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 1f09dee4-0e3a-4be6-95dd-bbe0e77c4996)(content(Whitespace\" \ + \"))))(Tile((id \ + bba1db7b-a310-4067-a50d-809d39548a5f)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 5d32cae1-d451-4c5e-827e-5452b099b557)(content(Whitespace\" \ + \"))))(Tile((id \ + 44e0dc21-fd90-4f29-a33d-2939e59e8c1b)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 947af2f6-7b71-4b9c-9fa8-0dad02fbe631)(content(Whitespace\" \ + \"))))(Tile((id \ + 33d7eb57-0fa1-4227-a093-3c10974b72e5)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + a1bb260f-f11d-456c-8bfc-75d85af29ea0)(label(Yo))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + a80caa08-c6d5-409c-9047-32909e2a96c8)(content(Whitespace\" \ + \")))))((Secondary((id \ + 10e0b8c8-f01c-4ea6-9a00-1da27c35bc5d)(content(Whitespace\" \ + \"))))(Tile((id \ + d4b9fb5f-a627-4acd-99da-4ff3a79d4782)(label(Yo))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 58f18f4d-3c5c-4dc8-9cf7-eb7aca80bcfc)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 0e6f2c44-e90d-4caf-9e77-11d74a519530)(label(\"\\\"lol\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 49e4c7bf-e9e2-41bb-8f89-52a403aabc6a)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + d8476ff7-c2bf-441a-8010-64bc558158dd)(content(Whitespace\" \ + \"))))(Secondary((id \ + e0afd264-4a2a-4076-a01d-578a8ec5cf5b)(content(Comment\"#err: \ + type incons#\"))))(Secondary((id \ + 7f48028e-59f6-4128-ac3a-07f1fc61b14a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 76de4e86-0d10-4065-938f-690716ff4bff)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 6a975e3b-202a-47e0-84d8-ab9d28b36ccc)(content(Whitespace\" \ + \"))))(Tile((id \ + 775aba62-6b92-4402-a930-1a8b15b99f76)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 43f8939b-a9a3-47c2-919b-c24b285fd642)(content(Whitespace\" \ + \"))))(Tile((id \ + 9c4ae5b8-87ef-4f46-9482-cae3eb81109c)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 316d061f-b6d3-4f58-812e-b7e4e2e1b221)(content(Whitespace\" \ + \"))))(Tile((id \ + 07bd9186-3e71-43d9-beb6-397adeb4ed79)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 982bbf83-da17-4f60-a07a-69b6caca0038)(label(One))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + a61b9df0-6312-4630-b350-b179a7a9a30f)(content(Whitespace\" \ + \")))))((Secondary((id \ + f6598e2d-13a0-48aa-98ad-3bba23c0d16c)(content(Whitespace\" \ + \"))))(Tile((id \ + 030259ed-1473-41ff-a554-df49181075a9)(label(Yo))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 6015f8df-0de0-4ab4-a83e-5846c4f017b5)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 84f01a2b-fcb7-47fb-a22f-d967376f38e1)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 83aeee2b-8f73-42cc-8897-cca9982f73a1)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 81bcef3f-ffc3-415a-8b6c-a91f427a7934)(content(Whitespace\" \ + \"))))(Secondary((id \ + 3ae4dd0c-cdda-4e6f-9ddc-7b71bf749d81)(content(Comment\"#err: \ + type incons#\"))))(Secondary((id \ + 5b4942b1-ead9-41cf-83e9-330b23a2c28d)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 7a0bde0e-fe2e-4c7a-8fa9-7c59d491a73d)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + facdf460-efbd-4a8f-bda7-5328fbb74d3f)(content(Comment\"#pat \ + tests: happy (but refutable patterns so \ + weird)#\"))))(Secondary((id \ + 9672874a-6ef2-4808-9a41-030964442d7c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 87478aa3-bc82-40d0-a792-6c51cf93c3d8)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 19b5021a-5029-4545-a177-18d27abb34f6)(content(Whitespace\" \ + \"))))(Tile((id \ + ebea4bf6-feaf-4db6-a7fa-3147fdb83b21)(label(Yo))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 3ab932af-9e52-4585-bb64-81ed59f509c1)(content(Whitespace\" \ + \")))))((Secondary((id \ + 6e6d5123-a846-4667-8ec0-1b27e6e2ec6b)(content(Whitespace\" \ + \"))))(Tile((id \ + 028c9ff6-4c62-4be3-ba26-494728ae1efe)(label(Bo))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 61354972-9371-4232-86a2-e92f1d27a98f)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + e83fe24d-38d2-44d1-aa05-3817739b773d)(content(Whitespace\" \ + \"))))(Secondary((id \ + 2b7f6a39-b9e4-4cb2-99cc-d42e1e4b4aaf)(content(Comment\"#kind \ + of a weird edge#\"))))(Secondary((id \ + b56d91c3-10bd-449c-871d-be476400ea3f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 9da4f6bf-678f-4b02-9ac2-4925236ac534)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 8a332dfe-bd12-4417-8093-292b405b2b78)(content(Whitespace\" \ + \"))))(Tile((id \ + 4934e3fa-894a-4c64-b751-47e621d2a0bc)(label(Yo))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 32edf020-9d2c-424a-b69e-2bffa87a176d)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort \ + Pat))((shape Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + ac0a556b-6a81-4ca3-9d80-1110548c7c60)(label(1))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + ddbf95e4-acdf-4db1-8a31-a52f98d75fb8)(content(Whitespace\" \ + \")))))((Secondary((id \ + a4ca8e82-2d64-46dd-ae43-dfd45f37faaf)(content(Whitespace\" \ + \"))))(Tile((id \ + 285005da-5608-4b20-ad60-34aa36ded1a5)(label(Dawg))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 89b853be-6ea8-4173-8737-247ec8f3dd37)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + cf4b208d-9082-4bb6-9f2f-3868800212d4)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 9b875fb6-0c4c-468d-aa82-18749ecbe1a9)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + bb1cdf42-36d6-4749-8f12-26f768697db7)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + f2f1e474-be18-47e5-a81f-ede837a58503)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 37471869-cff9-4e2c-99c0-cbbe41031313)(content(Whitespace\" \ + \"))))(Tile((id \ + 17306267-01f4-422b-86f6-e90290fc8340)(label(Yo))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 5a398483-25d9-4d05-af57-c3add5818c4e)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort \ + Pat))((shape Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + 743a1786-64d1-4319-a7db-e5def2b888e5)(label(1))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Tile((id \ + f4913a6b-385a-4d2e-bdb5-902204fc96bd)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 0e0c4ecc-2cd0-4d3c-afd4-479780fdf901)(content(Whitespace\" \ + \"))))(Tile((id \ + bfca73b7-2533-4426-8b6d-967344d52775)(label(YoDawg))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + ae231901-3e7e-4334-954e-be65ef71da82)(content(Whitespace\" \ + \")))))((Secondary((id \ + 048dc25c-8c5d-4fc6-8674-b2b85230ef7c)(content(Whitespace\" \ + \"))))(Tile((id \ + 04b01334-7bd7-44ae-875e-f4d004293df4)(label(Yo))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 470e3d11-7f3b-40ba-8882-9ecbef346aa3)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 1120437b-69c0-4271-b846-5560a4c64ce2)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + c00fd96f-d9b4-4d7d-946a-794a850b31f5)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 603225be-d862-42fa-bca2-d3d5898f15d8)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 8d653abc-56e0-4e76-976a-e8abc021d345)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + ba4a7022-18d2-48fb-a0b5-8624b0252a05)(content(Whitespace\" \ + \"))))(Tile((id \ + 87220d72-4069-495a-a94c-a2a1e6c3f80e)(label(Yo))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + ea68f412-bb42-4e52-8533-e2b2876392fe)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort \ + Pat))((shape Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + 7d1323f8-b578-4b93-91ec-2273541b966d)(label(1))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Tile((id \ + a7042e19-faef-466b-949d-be90992ec96e)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + dcd5a0ab-43fa-4aed-96b0-4a704f143233)(content(Whitespace\" \ + \"))))(Tile((id \ + 6829f579-c85b-430c-9d47-307edf992813)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + d9f466fe-3676-4684-aee6-870eb758fee7)(label(Yo))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + c9302141-725b-4f6d-bf9d-b3fb3f237e0a)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + d2b79cb8-a093-4f5f-b1cd-e8a4e3f5e3ac)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 6fc2c1ef-de22-4fa2-a5ca-eaae9a0dbd60)(content(Whitespace\" \ + \")))))((Secondary((id \ + 8956dc3f-1f16-415a-9565-91cf792b6a31)(content(Whitespace\" \ + \"))))(Tile((id \ + 34979d88-fd64-447c-ba5f-c90d9e1be29a)(label(Yo))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + d6145fb8-ec69-414e-99b4-d1bb527f22d1)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + b3bb92a7-8f3c-49c7-955f-adbac8cd5a34)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 74397f51-da57-40e2-bb99-f9e9c241666a)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 99ee253c-d3d3-4ac9-b37f-a5ccceb64cd7)(content(Whitespace\" \ + \"))))(Secondary((id \ + 69ee0c5a-b23f-44d0-8bfb-62b8267da47f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 0d21753e-2df4-473a-bbc9-12b716724f3f)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 0ef0fe1f-8d88-474a-b172-3b5ec3cb2473)(content(Whitespace\" \ + \"))))(Tile((id \ + 38ca55d1-d269-487a-a9f5-8e7a0b7e5446)(label(Yo))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + f1d45f10-46ee-4276-96e5-903c3d4b6b3f)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 59227245-38f5-43b2-b1b9-29434daf00f9)(content(Whitespace\" \ + \"))))(Tile((id \ + b59a80b2-6ed7-4ba5-bb10-8dce157ceeca)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 99f4dc6e-ecf1-4532-8203-078a97d19f10)(label(Yo))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 27761368-5a50-4e8e-b8f0-41259759a1a2)(content(Whitespace\" \ + \")))))((Secondary((id \ + e5fe4f26-2152-4c3f-846c-711489198670)(content(Whitespace\" \ + \"))))(Tile((id \ + 2f85b493-700c-459d-8626-bc8f043093a8)(label(Yo))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 42b17dfc-8cb7-4156-94e6-ef3f49b5388f)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 0005e1fb-699c-4d2d-ac84-3967e4c3b4c9)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 99be389b-359b-4e3a-b5f1-434da0700342)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + dcd15daf-e021-4d15-af44-137ce8d9bdf3)(content(Comment\"#pat \ + tests: errors#\"))))(Secondary((id \ + c1d20c23-9d73-428f-9de4-d2ce26b62ad3)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + f7043c28-61f8-4276-a523-22734fe2ccf0)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 16ce1daa-556e-492a-a19d-6a7d6c4f2e40)(content(Whitespace\" \ + \"))))(Tile((id \ + 3e134eb5-90ed-4db7-8884-b94ec7e43566)(label(2))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + d0b3234b-c864-461a-9860-dcf461d1b332)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort \ + Pat))((shape Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + 0ba9f9c2-a06f-4d45-9fa9-52f59e56e3cf)(label(1))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + 5ccb3070-1bff-480b-83b5-976c5b0ddebb)(content(Whitespace\" \ + \")))))((Secondary((id \ + 627509dd-1b5b-4b67-b157-8ff4a6c7bd79)(content(Whitespace\" \ + \"))))(Tile((id \ + 2c8b196b-845e-4d71-98fc-c11abb4fe871)(label(3))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 232ebf71-0266-4aae-b171-c3d7291da09f)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 0db41a09-1502-49f5-9212-3418316cddf3)(content(Whitespace\" \ + \"))))(Secondary((id \ + 6e676ae9-c84d-4607-ac2d-b39dce08c6a0)(content(Comment\"#err: \ + incons with arrow#\"))))(Secondary((id \ + a5d07dd2-c839-4a86-a27e-ac069da4196b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 2261eb15-0137-4a31-a46d-5043f25d2af4)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + e85ffc30-fd07-4215-97f6-cff1b2ecadd9)(content(Whitespace\" \ + \"))))(Tile((id \ + 0f625d9f-3a8c-4801-b7f8-02f3bc063e60)(label(NotDefined))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + e273c063-be34-4fd4-9a35-b903acc3a802)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort \ + Pat))((shape Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + 1a6295b6-34f2-4fb9-bef6-651891713eef)(label(1))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + 0f61bbef-58f7-4b51-a327-0bcc1a98908d)(content(Whitespace\" \ + \")))))((Secondary((id \ + 9cb5a580-8a59-48ff-9d23-87f89f52c545)(content(Whitespace\" \ + \"))))(Tile((id \ + c2dd289b-773f-4558-89d3-c71533b1918e)(label(3))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 8711ef21-fb8f-4896-ac90-d8e807c603d6)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 9ddcfd63-e8f9-4897-906a-ce1835a858b5)(content(Whitespace\" \ + \"))))(Secondary((id \ + 225f955d-f886-449c-9169-21343059976d)(content(Comment\"#err: \ + cons undefined#\"))))(Secondary((id \ + a0f66cdc-ced3-42af-bc8b-95ded65e92cb)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + fc859cc5-5a32-4e42-82be-7ffba942d78a)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 6ee1493e-7726-4647-96d9-e324c567637f)(content(Whitespace\" \ + \"))))(Tile((id \ + dd9d06db-d1b0-4ff4-be65-eb761215eeba)(label(Yo))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 9dd81776-5dcc-4238-b329-d0e580eb7fd4)(content(Whitespace\" \ + \")))))((Secondary((id \ + 919d5599-af66-4117-9e83-75d41dcfd62b)(content(Whitespace\" \ + \"))))(Tile((id \ + 6da4a8d0-c40a-433d-9cde-44badc3f8c39)(label(Dawg))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a9d80421-dfb3-4924-b95f-f6a7ee7088cb)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 40ef07ac-93a1-4395-9330-c4e072117398)(content(Whitespace\" \ + \"))))(Secondary((id \ + 309c082b-63a8-4b11-8aba-2285ab9d193f)(content(Comment\"#err: \ + type incons#\"))))(Secondary((id \ + 0ae6873f-533a-40ff-a569-7ce95ca44dd2)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + faaa3700-62e3-48e8-a99e-e02391eb2d1b)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 04510299-1775-44ea-a1cc-92023d978c25)(content(Whitespace\" \ + \"))))(Tile((id \ + 31056011-4c43-4c4e-9e3b-fd949414c4ba)(label(Yo))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + c47761a7-9949-48f4-8e22-1815b341ef77)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort \ + Pat))((shape Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + cb6a6a22-b518-40ad-9e76-8cda4bad6e5a)(label(true))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + f47230bf-0ec9-465d-acb3-436f7d3ac327)(content(Whitespace\" \ + \")))))((Secondary((id \ + d44997ac-687e-49bf-9dad-b882ecc68087)(content(Whitespace\" \ + \"))))(Tile((id \ + a0377840-0185-4f2c-a48d-864237d3ac9e)(label(Dawg))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 93552a27-48fd-484d-86f8-b30e33acc3eb)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + fe0ec8d9-e77e-445c-8535-556c6adf09a2)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 44532396-e223-4a97-9bd0-005fc9dd24e5)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 2a27fa8d-a1fa-40c1-a553-5a6f8b9a530e)(content(Whitespace\" \ + \"))))(Secondary((id \ + 006c55f2-7a22-4df0-9914-a74f44528b25)(content(Comment\"#err: \ + type incons#\"))))(Secondary((id \ + ff7e8d0d-1807-42b3-8e01-33cc58484288)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + c5929ebf-a9b9-4639-97d7-d45df8ce563d)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 14377e51-1ceb-4217-ba71-24186a229e16)(content(Whitespace\" \ + \"))))(Tile((id \ + b7ca14d5-2c58-4ed1-b454-d77b649a3f72)(label(Yo))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 73942125-9603-4035-b063-cc8f9ce8e8b3)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + bf2e76ca-ac2d-43c0-a4a5-32e199987375)(content(Whitespace\" \ + \"))))(Tile((id \ + c1fd18bd-1abc-4a6c-8cfc-957b3167497a)(label(YoDawg))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + e1bd4b1c-a5a5-4b76-a8b2-c51089b8635f)(content(Whitespace\" \ + \")))))((Secondary((id \ + 19c5cc34-ee6d-4ad6-81c8-02a31d41368e)(content(Whitespace\" \ + \"))))(Tile((id \ + c6a966cc-66bd-4799-9f6e-16b8efa36237)(label(Yo))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + b57f4012-d255-4bb8-bc8f-c0ca8ed64c7b)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 69b99e6b-7806-4f7d-a721-c4aeac388080)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 56b02ec3-8d51-4298-88f0-5572b396b603)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 1ba0434f-fdad-40ce-b432-f91c01300a1f)(content(Whitespace\" \ + \"))))(Secondary((id \ + 01433e43-66b8-477b-acfe-f3101dd678b2)(content(Comment\"#err: \ + type incons#\"))))(Secondary((id \ + 43c8e876-a506-476f-a6f7-0e9ce18b22c7)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 01a1d3e7-079b-410e-81e4-6c0b19bcecf4)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 2539a505-366f-4f35-bc49-dd92fa17035a)(content(Whitespace\" \ + \"))))(Tile((id \ + 9c8d4db8-d8cb-469d-a818-8f06c6a65576)(label(Yo))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 2e124a6c-1a98-416e-9c2d-a31b456af5c9)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort \ + Pat))((shape Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + 06aa313a-1705-4684-88c3-0959c3456677)(label(1))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Tile((id \ + c0eb07fc-ca46-4c7b-bbe1-b437ed8e4f82)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 3cbd9746-08e3-461f-8e59-bf1188c06a79)(content(Whitespace\" \ + \"))))(Tile((id \ + 4295854d-6f35-4530-87ad-d5056108d538)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + f83eeec3-4a42-4349-9f82-9a23e4661390)(label(Yo))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 56ce20b5-fc60-4b53-98af-baa07854f2ae)(content(Whitespace\" \ + \")))))((Secondary((id \ + 5e99023e-fb6b-48ee-afb3-b79638d7fb38)(content(Whitespace\" \ + \"))))(Tile((id \ + abdf3b80-2a39-4b01-a168-20c5e1b62e3b)(label(Yo))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + ec5f0ad6-fe8e-4470-9a18-2aaf51bbfba3)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 89289d11-4938-45b7-93c1-8f10c467ac12)(content(Whitespace\" \ + \"))))(Secondary((id \ + 7b8f1c99-37f4-4758-95a0-daf1c8f99266)(content(Comment\"#err: \ + type incons#\"))))(Secondary((id \ + 02b2a52a-b5f4-4e41-80b7-a58fe6ea9585)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 500da527-7942-4a58-8238-b0c358ce8b91)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 7f530aaa-806f-408a-b53e-c4f023e17eb2)(content(Whitespace\" \ + \"))))(Tile((id \ + f89111c8-e5bd-42bb-8a23-4692cab1d8df)(label(Yo))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 758ce654-335a-43bf-87e1-4cc3ef54f7a6)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort \ + Pat))((shape Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + 8b69bf15-b0cf-4810-846a-29593e01dd15)(label(1))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Tile((id \ + 9d1bab07-4373-4f1f-a03c-25097e994811)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + cc5e2c3c-0713-4cfe-9344-a925edd6c853)(content(Whitespace\" \ + \"))))(Tile((id \ + 1084ff97-4032-4a02-be04-a951d295cb8a)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 085cf9ea-0a85-4760-a949-dc22490dce25)(label(Yo))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + c8a2b1f6-e183-4841-ae4e-b609d91b7a3c)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 930f5a73-f1c0-476a-ba8c-8a113bc9669a)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + a5b78531-9d59-4865-a4f0-23232aaad93d)(content(Whitespace\" \ + \")))))((Secondary((id \ + ec7248c7-90ca-447f-8192-89917f308bfd)(content(Whitespace\" \ + \"))))(Tile((id \ + 6ea16184-54d7-4ec4-b8c1-0a7146937b23)(label(Yo))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 161d2a9b-370b-426a-a206-fbbaf8959b85)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + cc4bb669-3a95-4bd9-bf9f-8290ae158a85)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 1a9b1b31-8fc5-4c30-b7a8-f4842dd8e199)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + eb20e134-9a53-4f56-ae7d-269ee258279c)(content(Whitespace\" \ + \"))))(Secondary((id \ + c248cce3-ba8f-435d-8a74-cf066d9e31be)(content(Comment\"#err: \ + type incons#\"))))(Secondary((id \ + 13e9a30a-2b86-4f35-8b75-a70f09c615d8)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 5a2fdd2d-99ff-4488-9a13-d03a37eb4f65)(label(\"\\\"Thats \ + all, folks\\\"\"))(mold((out Exp)(in_())(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 54a6e50e-2bf0-4f4d-a156-5746fe45d59e)(content(Whitespace\"\\226\\143\\142\")))))))(ancestors())))(caret \ + Outer))"; + backup_text = + "# Internal Regression Tests: ADT Statics #\n\ + # All commented lines should show errors as described #\n\ + # No other lines should show errors #\n\n\ + #type definitions: no errors#\n\ + type = in\n\ + type SingleNull = +One in\n\ + type Single = +F(Int) in\n\ + type GoodSum = A + B + C(Int) in\n\ + type Partial = Ok( ) + in\n\ + type DoubleAlias = GoodSum in\n\ + type VerticalLeading =\n\ + + A\n\ + + B(GoodSum)\n\ + + C(Bool->Bool) \n\ + in\n\n\ + #incorrect or incomplete type definitions#\n\ + type badTypeName = in #err: invalid type name#\n\ + type ( , ) = in #err: invalid type name#\n\ + type = badTypeToken in #err: invalid type token#\n\ + type NotASum = NotInSum(Bool) in #err: cons not in sum#\n\ + type Bool = in #err: shadows base type#\n\ + type Dupes =\n\ + + Guy(Bool) #no err#\n\ + + Guy(Int) #err: already used#\n\ + + Guy in #err: already used#\n\ + type BadCons =\n\ + + Um(Unbound) #err: unbound type var#\n\ + + notvalid #err: invalid#\n\ + + Bool #err: expected cons found type#\n\ + + Int(Int) #err: expected cons found type#\n\ + + ( )(Int) #err: expected cons found type#\n\ + + A(Bool)(Int) in #err: expected cons found app#\n\n\ + #sums in compound aliases dont add ctrs to scope#\n\ + #but compound alias types should propagate \ + analytically#\n\ + type CompoundAlias = (Int, Anonymous + Sum) in \n\ + let _ = (1, Sum) in #err: not defined#\n\ + let _: CompoundAlias = (1, Sum) in #no error#\n\ + type Yorp = Int -> (Inside + Ouside) in\n\ + let _ = fun _ -> Inside in #err: not defined#\n\ + let _: Yorp = fun _ -> Inside in #no error#\n\ + type Gargs = [BigGuy + Small] in\n\ + let _ = BigGuy in #err: not defined#\n\ + let _: Gargs = [BigGuy] in #no error#\n\ + let _: Gargs = BigGuy :: [BigGuy] in #no error#\n\n\ + #unbound tyvars treated as unknown-typehole#\n\ + let a:Bad = 0 in a == 0; #err: not bound#\n\n\ + #non-sum-types cant be recursive#\n\ + type Lol = Lol in #err: not bound#\n\n\ + #no errors: analytic shadowing#\n\ + type Tork1 = +Blob in\n\ + type Tork2 = +Blob in \n\ + let x:Tork1 = Blob in\n\n\ + #exp tests: happy#\n\ + type YoDawg = Yo(Int) + Bo(Int)+ Dawg(Bool) in\n\ + let _ = Yo(1) in\n\ + let _ : YoDawg = Yo(2) in\n\ + let _ : +Yo(Bool) = Yo(true) in\n\ + let _ : (Yo + Dawg, Int) = (Dawg,5) in\n\ + let _ : DoubleAlias = C(4) in\n\n\ + #exp tests: errors#\n\ + let _ = 2(1) in #err: incons with arrow#\n\ + let _ = Undefined(1) in #err: cons undefined#\n\ + let _ = B(\"lol\") in #err: type incons#\n\ + let _ : +Yo(Bool) = Yo in #err: type incons#\n\ + let _ : +Yo = Yo(\"lol\") in #err: type incons#\n\ + let _ : +One = Yo(1) in #err: type incons#\n\n\ + #pat tests: happy (but refutable patterns so weird)#\n\ + let Yo = Bo in #kind of a weird edge#\n\ + let Yo(1) = Dawg(true) in\n\ + let Yo(1): YoDawg = Yo(1) in\n\ + let Yo(1): +Yo(Int) = Yo(1) in \n\ + let Yo: +Yo = Yo in\n\n\ + #pat tests: errors#\n\ + let 2(1) = 3 in #err: incons with arrow#\n\ + let NotDefined(1) = 3 in #err: cons undefined#\n\ + let Yo = Dawg in #err: type incons#\n\ + let Yo(true) = Dawg(true) in #err: type incons#\n\ + let Yo: YoDawg = Yo(1) in #err: type incons#\n\ + let Yo(1): +Yo = Yo in #err: type incons#\n\ + let Yo(1): +Yo(Bool) = Yo(true) in #err: type incons#\n\ + \"Thats all, folks\"\n"; + }; + hints = []; + }; } ); ( "Basic Reference", { - zipper = - "((selection((focus Left)(content())(mode \ - Normal)))(backpack())(relatives((siblings(()((Secondary((id \ - 4b993118-7181-44f4-9ebc-5135577cb42e)(content(Comment\"# \ - Hazel Language Quick Reference #\"))))(Secondary((id \ - 3d39cc52-4179-4dbd-8d7f-8444c8c48de9)(content(Whitespace\"\\n\"))))(Secondary((id \ - 3ab06844-7eec-4f8f-a87d-0e3001a93b11)(content(Whitespace\"\\n\"))))(Secondary((id \ - 660bfaf3-fa8e-4961-84e1-b1ab5e2ee342)(content(Comment\"# \ - Empty holes stand for missing expressions, patterns, or types \ - #\"))))(Secondary((id \ - b4bd89a7-3836-47a7-ae3f-ddc44c38f63f)(content(Whitespace\"\\n\"))))(Tile((id \ - bf501ab4-ecae-40cb-92a0-9d647a99869c)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 3d0bf2f9-4dae-493f-a12a-c91a69304b52)(content(Whitespace\" \ - \"))))(Tile((id \ - 9cbd9e9b-4487-4788-90e9-c28bb96ad6b8)(label(empty_hole))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - a3705e23-36e4-49d6-bc51-c89215d22537)(content(Whitespace\" \ - \")))))((Secondary((id \ - fa5cdc0b-fca9-4405-924f-26e7854788c0)(content(Whitespace\" \ - \"))))(Grout((id 736aa798-6b99-4d74-90b5-86362fac847f)(shape \ - Convex)))(Secondary((id \ - 9b90b22f-953c-4c44-b66d-f9775ffbf704)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - d6de8893-5e8f-499e-a60b-4bb98d8287ac)(content(Whitespace\"\\n\"))))(Secondary((id \ - 7c56a6a5-2b97-43a2-bcb7-8427d98d4b25)(content(Whitespace\"\\n\"))))(Secondary((id \ - 7a57d160-9fec-41b1-a798-9698db0d9922)(content(Comment\"# \ - Non-empty holes are the red boxes around type errors \ - #\"))))(Secondary((id \ - 0bbd0db5-d159-448b-9309-d6d1a62f9acf)(content(Whitespace\"\\n\"))))(Secondary((id \ - eb0e72d7-aca5-4fbf-9f96-4014d26702cd)(content(Comment\"# (you \ - can still run programs with non-empty holes) \ - #\"))))(Secondary((id \ - bb719100-e8dd-4526-8f87-fd6a7820a55f)(content(Whitespace\"\\n\"))))(Tile((id \ - ed7ac66c-6dde-4648-89b4-580a79ed2d8e)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 0b5e8152-d002-426f-933d-2979e0d17dd7)(content(Whitespace\" \ - \"))))(Tile((id \ - 5c5191a3-bd21-4580-9e1e-fc55767f0b14)(label(non_empty_hole))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - c3e57b97-f59f-473b-b722-63e553f38ba1)(content(Whitespace\" \ - \"))))(Tile((id \ - ef7ca920-f58d-427f-9aae-9a1a89783317)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 525770e4-1524-4e6d-85ce-12d93cc21ce9)(content(Whitespace\" \ - \"))))(Tile((id \ - c2664c78-f796-4942-ae39-b1ac905775f7)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 155ca8c1-fd5d-4fc0-9c70-40a0393ba9cc)(content(Whitespace\" \ - \")))))((Secondary((id \ - 8096339d-a032-4643-9b56-8949687b308f)(content(Whitespace\" \ - \"))))(Tile((id \ - 9b3bab41-f41f-4ac5-a520-84ee8f4042cc)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 791ed55a-ce5f-4398-8772-54209ad86244)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 100e3ae8-5942-4b9d-aecf-3be6f603808b)(content(Whitespace\" \ - \"))))(Secondary((id \ - fdee7287-47a8-48ce-b823-9f59fc313629)(content(Whitespace\"\\n\"))))(Secondary((id \ - 0141e36d-2974-43ec-994d-30cb244fa5c6)(content(Whitespace\"\\n\"))))(Secondary((id \ - a0f55543-a78d-4fa0-b763-8ba69aba702a)(content(Comment\"# \ - Booleans #\"))))(Secondary((id \ - a08d87a6-c940-43e0-8c7b-9ac699933c1f)(content(Whitespace\"\\n\"))))(Tile((id \ - ee0ebe75-b5cd-4519-8d2d-7c1831a633cd)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - f364b57e-2fbd-4364-9ae2-e1814619a202)(content(Whitespace\" \ - \"))))(Tile((id \ - 989cd45e-2ed1-48e3-9546-1c82558ee3ce)(label(bool))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 05926ea4-9b3d-4371-90a3-fe8c2b4cd893)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 3c81c789-e5cf-4b7c-8157-1ff9121b1205)(content(Whitespace\" \ - \"))))(Tile((id \ - 37bd5a94-8a24-48f2-90fa-dc9c26dbefdc)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - c87c752d-9251-450b-a00c-ad2ad02f68e4)(content(Whitespace\" \ - \")))))((Secondary((id \ - bbdde6f7-5dcf-4604-99e2-8290687f2a67)(content(Whitespace\" \ - \"))))(Tile((id \ - e0f43d1e-ca1e-47bc-a005-9208e06f576d)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - cafe7e8c-16f0-44f1-bc68-55a9cbc819cf)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - a939976f-0365-45b4-afef-bf55ae0ca282)(content(Whitespace\"\\n\"))))(Tile((id \ - e197b30f-cbac-4be4-85eb-cbc8bd93515a)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - c36a29b2-d4ed-4834-965a-42392b214224)(content(Whitespace\" \ - \"))))(Tile((id \ - bec60015-6e5d-40df-a85e-d3a130e743e9)(label(operators))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 02fea887-d7d8-4ffe-b7e3-937a3cdf6dce)(content(Whitespace\" \ - \")))))((Secondary((id \ - 8e07feea-4dd1-4745-ae81-f2178975d9b5)(content(Whitespace\" \ - \"))))(Tile((id \ - e29b6f75-747b-4c97-b0a4-883acdbafba6)(label(!))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape(Concave \ - 5))(sort Exp))))))(shards(0))(children())))(Tile((id \ - a6e7434d-60c3-4696-a530-26543476055a)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 3ce80b7e-f65b-43c6-9347-abc191064d63)(content(Whitespace\" \ - \"))))(Tile((id \ - 151bd74a-bb5f-4b6b-a37f-a7bb075c71bb)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - cf40a348-9ac1-4c52-ac4b-a467db3c2a5c)(content(Whitespace\" \ - \"))))(Tile((id \ - 3728509b-a1aa-4f22-a234-512b5c796ebe)(label(false))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - e409bef1-eaa4-4fff-b6fb-9ff47350d198)(content(Whitespace\" \ - \"))))(Tile((id \ - efbefbf3-af38-4216-99fe-fe33bd0d3e48)(label(||))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 11))(sort \ - Exp))((shape(Concave 11))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - fdf01626-8549-4571-b120-a5505f73b734)(content(Whitespace\" \ - \"))))(Tile((id \ - f6c6eec6-3670-476c-957d-3e606a13da53)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 1d286709-5457-4823-bd0c-e9ab6a951653)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - d04513ce-8bb7-4bba-b50b-0885cec7201a)(content(Whitespace\"\\n\"))))(Tile((id \ - 1aca07d7-1bd6-4035-977e-29691cc4e4c8)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 3b97d260-89c9-43bc-8443-18e81985a8fb)(content(Whitespace\" \ - \"))))(Tile((id \ - 49bad33f-9d16-4da6-a10b-c97292676a42)(label(conditional))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - bfdfe4cc-3fd3-4f38-9b0c-537d66cf909f)(content(Whitespace\" \ - \")))))((Secondary((id \ - e4dff186-cbf8-471b-b886-9ed399add7cc)(content(Whitespace\" \ - \"))))(Tile((id \ - cc4633cf-869f-417f-94ba-97d4b05c478f)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 05796a14-e236-471c-b8c4-412b4220a00a)(content(Whitespace\" \ - \"))))(Tile((id \ - ff0e36b0-801b-47c0-8be2-84ad2a10d30c)(label(!))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape(Concave \ - 5))(sort Exp))))))(shards(0))(children())))(Tile((id \ - a066f075-01d2-4d66-bcf4-7c02b972dab1)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 85caf20b-e08c-4c7f-8902-b2b40fa80040)(content(Whitespace\" \ - \")))))((Secondary((id \ - 4e88f790-af24-467e-9e9b-1c14d2a0fe27)(content(Whitespace\" \ - \"))))(Tile((id \ - 8b827ddc-8b12-4245-975d-d2c8139dcc7c)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - a9b861a5-13fe-49b4-b098-be76f2b75a12)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - bc034320-358e-4c70-a571-82c2c3dc0259)(content(Whitespace\" \ - \"))))(Tile((id \ - 06714853-cf80-467c-a697-19d6731a422c)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 16e558ce-b1eb-4986-a773-3cbeb12ed69a)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - a14ef0b6-77de-47ab-9c54-606953449e0c)(content(Whitespace\"\\n\"))))(Secondary((id \ - acde2183-f63e-4cfe-99da-0374bbe55f04)(content(Whitespace\"\\n\"))))(Secondary((id \ - a8846210-25f1-499a-befb-bbdd05e4c7ab)(content(Comment\"# \ - Integers #\"))))(Secondary((id \ - 71c8f972-e274-4b62-b8e7-e3a6a41b316c)(content(Whitespace\"\\n\"))))(Tile((id \ - a0f1b8fc-d464-4b8d-9146-b2e42a77de64)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 28023d9d-3eaa-4e82-8e05-7f29a37b0797)(content(Whitespace\" \ - \"))))(Tile((id \ - e0537630-0d80-455d-bf3e-bfdc3f262d27)(label(num))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 2d76dcfd-10da-4d29-9e0a-701c3465e23c)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 29988631-a0e2-4758-8729-a39038e19c08)(content(Whitespace\" \ - \"))))(Tile((id \ - 7a17edb8-4adc-4437-92a7-325c0de914a9)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 86bf1862-2943-4ef0-a74e-25b47c2cd8a4)(content(Whitespace\" \ - \")))))((Secondary((id \ - b5066be8-f6ee-4f38-add3-5b791b10d3cb)(content(Whitespace\" \ - \"))))(Tile((id \ - cf716f06-33f9-4db6-852a-ebd336683bb9)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - da3c6d61-9e44-43c7-b197-6db94ac91a01)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - e635d747-a2c1-42e6-8cad-81202874441f)(content(Whitespace\"\\n\"))))(Tile((id \ - 72063092-2d1a-49be-bf07-4a82bd224c5d)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 7fd477d7-8dd6-4d97-b01f-8590ed062b85)(content(Whitespace\" \ - \"))))(Tile((id \ - 6fe8faee-fd1c-4064-97dd-934d01cd98fb)(label(arithmetic))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - f8c0c491-c666-4fdf-9d62-6e65f6a1e47f)(content(Whitespace\" \ - \")))))((Secondary((id \ - d05f1456-d916-43a1-ae31-d9a59d748136)(content(Whitespace\" \ - \"))))(Tile((id \ - db3f06bd-fb34-492d-8230-373116091f74)(label(-))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape(Concave \ - 3))(sort Exp))))))(shards(0))(children())))(Tile((id \ - 71932955-38b5-45a8-9ff8-43ca66a225ff)(label(num))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 8ba0f793-e47f-4952-a927-185a56d7d522)(label(*))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Tile((id \ - afd959dc-fdf8-4afe-97eb-fdf15ed87f5d)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 4819b145-ade2-4985-855f-068c65cf6c07)(content(Whitespace\" \ - \"))))(Tile((id \ - d9a5be33-4b85-4e67-a79a-e565fdb4923b)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - eed4d8c9-9007-4eab-9413-c6cc143d8c3f)(content(Whitespace\" \ - \"))))(Tile((id \ - 71a337ef-e671-473a-9f62-ce76c4a9a04a)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 3356f10d-907f-4cad-ad38-9f116b41a3da)(label(/))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Tile((id \ - 8e9a3d43-271d-4d23-86ad-5618cca60149)(label(3))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 1f769a74-617a-4b4e-9b3d-61efe6596381)(content(Whitespace\" \ - \"))))(Tile((id \ - de1aac72-33dd-4df0-b78c-9f263ce2e083)(label(-))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 440bd36f-e481-4f12-90b8-8ba10a69ab79)(content(Whitespace\" \ - \"))))(Tile((id \ - 5633c8da-9d4c-49f1-833f-27835a8f1f2d)(label(4))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 1581a027-42b4-40c1-8d76-8691cbd20762)(label(**))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 4))(sort \ - Exp))((shape(Concave 4))(sort \ - Exp))))))(shards(0))(children())))(Tile((id \ - 9643e743-46da-46bf-9332-143bd4993d6d)(label(5))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 7fd1c1c0-58c4-4062-90a5-dd6570f027e8)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 137e161f-7034-4a58-9cc2-ea8ccf152a1b)(content(Whitespace\"\\n\"))))(Tile((id \ - ad829bdf-b922-493b-b026-8ed010ca473a)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 07fae274-cd6d-4097-9c03-04ad5268a5a7)(content(Whitespace\" \ - \"))))(Tile((id \ - 86c55165-0682-4f0a-98f0-81c09d1face0)(label(comparison))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - a6b198fd-00c8-40a4-9b59-eb852d78a191)(content(Whitespace\" \ - \")))))((Secondary((id \ - 8d79e96a-c93e-4648-9937-533654896d92)(content(Whitespace\"\\n\"))))(Tile((id \ - 8f8f4629-ee0b-4dc9-8dd1-401e136e33a4)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 477b9cb3-1295-45b4-ad50-5469aef92106)(label(0))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 801bc2f8-c84e-44e2-a4ba-4564f27bd5f4)(content(Whitespace\" \ - \"))))(Tile((id \ - 751053a2-1239-48d3-ad02-f80fdf38d762)(label(==))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - c6ea8251-adb0-4f31-9ab2-bd745d8c9c9b)(content(Whitespace\" \ - \"))))(Tile((id \ - 1077608e-e82b-4d61-842d-02f1db2a2be2)(label(0))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 7459af01-0213-46f7-98ef-9e86cd303fe7)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 39428c8d-bd58-4b26-ad5e-f5ace9e682c2)(content(Whitespace\" \ - \"))))(Tile((id \ - 8aa97239-f03e-4d22-98fa-828340fff9a9)(label(0))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 2bf9baa7-d1ef-4ca8-bc7a-7cc41ed47f51)(content(Whitespace\" \ - \"))))(Tile((id \ - 530edad9-0b14-40c9-a279-d057fb836e18)(label(<))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 2a7b4aac-3e9c-4565-a981-fedbf5ed786d)(content(Whitespace\" \ - \"))))(Tile((id \ - 6cc717e6-6cc0-4965-a1ca-7b7c9415b62d)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 890301b6-3925-4cb6-89f0-a16fe4087c1d)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 8211e0e9-eb22-4af0-aab3-bb5f59b5b735)(content(Whitespace\" \ - \"))))(Tile((id \ - d3d6cac7-f24b-4fb7-9e7e-8757c68d785b)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 7a852fe9-0f8b-45a5-8879-825f8621049d)(content(Whitespace\" \ - \"))))(Tile((id \ - 0c8a3170-9d76-4bc5-b212-a270b27dba5b)(label(<=))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - b5c3c93d-04c3-402e-bfbb-5d8d8669ee8e)(content(Whitespace\" \ - \"))))(Tile((id \ - b567f167-a7b4-447f-8f40-b6675ccaa0b1)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 456b4db0-2b4e-4231-8560-de6cc9f9f940)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 93b2e8e5-c4c1-4f96-8c8f-49344526f42c)(content(Whitespace\" \ - \"))))(Tile((id \ - 076d2481-04a9-4a06-bee0-603332b06c5b)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 62e9b463-5cd4-40ee-acdd-264d50311e22)(content(Whitespace\" \ - \"))))(Tile((id \ - 8b441965-9711-415b-b146-07dae87e0d85)(label(>))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - cf085b1e-59c3-47bb-bc9c-7306e5eb5d91)(content(Whitespace\" \ - \"))))(Tile((id \ - db7895db-2349-4e97-b138-de0d095ee6ba)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 4b0fca1f-e324-4b2a-b949-99540e72e07d)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - cea607a3-9504-4622-919a-34e528733961)(content(Whitespace\" \ - \"))))(Tile((id \ - df88d4d8-99ab-45e7-b6eb-0b4b5c8327b8)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - a8eeda59-c775-4580-85a3-08e579d0eaba)(content(Whitespace\" \ - \"))))(Tile((id \ - 5f6e842d-9c1d-4bc1-bdd0-429d66630790)(label(>=))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 593cdc9a-cbc4-42ea-90e6-a71732add5ca)(content(Whitespace\" \ - \"))))(Tile((id \ - b0b079b5-0588-4cc1-aa98-8253d1adfb02)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 67a01455-da82-4d7f-aca2-3e9990af1a3a)(content(Whitespace\" \ - \"))))(Secondary((id \ - 9bee5285-97dd-4029-94ef-ae48c856d65f)(content(Whitespace\"\\n\")))))))))(Secondary((id \ - ba596e6e-a4fa-4145-b7d3-5f40b7a7ab5b)(content(Whitespace\"\\n\"))))(Secondary((id \ - 22297d6c-432e-4b8f-8e77-6a0b2fa0d02c)(content(Whitespace\"\\n\"))))(Secondary((id \ - 162e13c3-0a85-4d8f-b2e7-d5a33bfe3cb3)(content(Comment\"# \ - Floating Point Numbers #\"))))(Secondary((id \ - dd3432a2-c03a-4cb5-9759-64f6074adb5d)(content(Whitespace\"\\n\"))))(Tile((id \ - 01237b9c-1f71-4e5e-9c44-a104d800519a)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 2cdb61cf-7d6a-4f6e-84ae-c2fa6da6bbf6)(content(Whitespace\" \ - \"))))(Tile((id \ - 18771196-7dc8-4b0a-8dce-d3d6edcdc774)(label(float))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 5a5d242d-d835-47e1-8799-319167654d3c)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 2bc8b167-a805-4a6a-b0c7-cdef41e58bde)(content(Whitespace\" \ - \"))))(Tile((id \ - e5e03fdc-7efe-469f-b8a3-1759d785e07e)(label(Float))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 20729cf4-b8e3-4792-9f1e-e9cf247ae1c3)(content(Whitespace\" \ - \")))))((Secondary((id \ - 4c4d2fa2-f403-433a-b91b-eb5befffc93e)(content(Whitespace\" \ - \"))))(Tile((id \ - c86219c0-4068-4c1d-9161-bf94d990485f)(label(0.1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 9ba791a5-e795-4557-9506-6226a61312be)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 72c52716-3901-464d-ad2f-a790786c3c92)(content(Whitespace\"\\n\"))))(Tile((id \ - a16b6a44-f793-4706-805a-3a68079d89da)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 6fa0b5da-1fea-4936-9d00-0135ecee95f3)(content(Whitespace\" \ - \"))))(Tile((id \ - 61605777-fb9c-44a4-91d0-baf4ce95c861)(label(artihmetic))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 5a50e12c-e2f4-46ea-a4c3-dac58a336c26)(content(Whitespace\" \ - \")))))((Secondary((id \ - 892a1905-1235-4f29-9178-6942976922a8)(content(Whitespace\" \ - \"))))(Tile((id \ - b340781d-ae26-4132-9b62-45d043a8b88d)(label(0.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - c0eb63ae-f9c9-4170-a00e-8059364b3ed0)(content(Whitespace\" \ - \"))))(Tile((id \ - 6d11ef9e-f048-48c7-bbc5-79123fee54f5)(label(*.))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 93992b9e-6f82-46b6-8a9b-f5a34e3d0dbc)(content(Whitespace\" \ - \"))))(Tile((id \ - e52a03c6-758c-4411-b172-99180b14bcf7)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - cd52bc5d-0d4a-4d07-9a46-9c1a3aaf8e4b)(content(Whitespace\" \ - \"))))(Tile((id \ - b046d878-9ea1-4578-9587-90df217783b7)(label(+.))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 857e394d-4e6d-4827-afca-f62900cfb6e3)(content(Whitespace\" \ - \"))))(Tile((id \ - 80981623-ddb7-41e5-97f4-55cdffbe4529)(label(2.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - a2e640cc-6343-42ae-8395-45657f9a7f7e)(content(Whitespace\" \ - \"))))(Tile((id \ - c6bb1c9b-c306-4236-bb80-4c2c95d7ba50)(label(/.))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 9da03f58-69b1-4a1a-9cfd-ff59e3c0eaf4)(content(Whitespace\" \ - \"))))(Tile((id \ - e358b4a0-0212-482a-a134-41dc5ec4480d)(label(3.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - f51e5aae-e2c3-41c8-972a-9e6752b00afb)(content(Whitespace\" \ - \"))))(Tile((id \ - f4745bd1-845d-4545-bd88-55e0c828bd03)(label(-.))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - ce6cb69e-0284-4ba2-9515-61282191dc85)(content(Whitespace\" \ - \"))))(Tile((id \ - 321f4291-c1fe-45b4-ba41-304d5e184fb1)(label(4.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 91de8f02-67db-437f-b1a2-fdb203c67cd9)(content(Whitespace\" \ - \"))))(Tile((id \ - 48078403-3e3e-471d-94cc-a67891048d4e)(label(**.))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 4))(sort \ - Exp))((shape(Concave 4))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - bef2fe19-fb45-43ef-913a-db8b4442f8db)(content(Whitespace\" \ - \"))))(Tile((id \ - 73752db2-3560-413f-af04-b58677b4dad0)(label(5.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 112deae5-f361-42c7-979e-90f7fe1f55dd)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 39794c4d-de44-4353-80b5-1d999908e1bd)(content(Whitespace\"\\n\"))))(Tile((id \ - 7f38fb45-678f-4cef-9a6e-60f590c8454e)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 58de9aad-3733-4520-aeec-c09d9fbc314a)(content(Whitespace\" \ - \"))))(Tile((id \ - 10777d3e-00f9-4590-b2fa-68c40b19a1fc)(label(comparison))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - aa6ea894-d520-4a20-a7eb-97b28f4f7093)(content(Whitespace\" \ - \")))))((Secondary((id \ - f51ae2f9-406a-4cd4-a5f5-01eac0a1d654)(content(Whitespace\"\\n\"))))(Tile((id \ - 10a6b962-031a-4573-8fd7-510c3ea87404)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 756c6617-884c-4603-b5a1-a336fd3ecf06)(label(0.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 2a49b824-3411-4f3c-b3b3-e542fc0ee7dc)(content(Whitespace\" \ - \"))))(Tile((id \ - 3492897c-68e9-4929-929c-c248c722a813)(label(==.))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - ca67f9c6-7951-4e7a-ade8-0f2cbb0f6c4c)(content(Whitespace\" \ - \"))))(Tile((id \ - dfe47847-3820-4e20-bc55-b3551d984137)(label(0.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - f58d1ced-2807-4295-a73c-518e8ffd3544)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 23c22334-b3cd-4259-8e62-6dc1df1bdd12)(content(Whitespace\" \ - \"))))(Tile((id \ - ef4cab3b-dbcb-42f7-a0bf-1a9875b04af1)(label(0.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 8de2ab3e-705e-4f0f-8869-b3d5fc5037ed)(content(Whitespace\" \ - \"))))(Tile((id \ - 499a8a53-86c8-4b09-b0bb-00c0e957daf6)(label(<.))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - a984083e-9714-4f96-aad5-2b7079ad37b1)(content(Whitespace\" \ - \"))))(Tile((id \ - e5978a40-0050-4f26-83be-23ae0a13e833)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 5ca2b7d1-0738-409a-a4eb-a3826d43c532)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - e327604d-7675-4f0c-a38a-464967f25349)(content(Whitespace\" \ - \"))))(Tile((id \ - 28d9924a-eb8f-4af3-9cb9-85ff700087db)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 9017c568-c9f4-454c-b12d-7e7ad6e3f998)(content(Whitespace\" \ - \"))))(Tile((id \ - f68c18b2-f0a4-4a58-ba53-433803dfbe65)(label(<=.))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - c44fdc26-3bc4-4d71-a197-1417af51ee08)(content(Whitespace\" \ - \"))))(Tile((id \ - 2a93b83f-3f29-4f3b-ab1b-3ceb18ece4a2)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 5aaa6b8a-3e52-4e90-befb-cc5a87a095b6)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 465020ea-9f27-423b-929a-639c62012260)(content(Whitespace\" \ - \"))))(Tile((id \ - e642072a-43f4-4f87-9eaf-a38614b26850)(label(2.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 909b7b97-a882-4470-8032-afe70386a637)(content(Whitespace\" \ - \"))))(Tile((id \ - ddf857a1-d4ca-4ace-a233-f1876cedbaee)(label(>.))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 5c4dc41c-5712-4ad9-9c87-88ebac4211a3)(content(Whitespace\" \ - \"))))(Tile((id \ - a1490857-ac74-429d-ba11-6bd5bc08299a)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 1c96a4ce-d742-44ec-99b7-4095fc9fa1a8)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - c672f0ac-202e-422c-afa4-142a8b7d9eac)(content(Whitespace\" \ - \"))))(Tile((id \ - 29a8e8de-eb70-40cd-a0a3-fb2a57e56b0f)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - da1b39fd-215b-4146-b0c5-30a2eabc83be)(content(Whitespace\" \ - \"))))(Tile((id \ - 8ea26cfb-ae2e-4ae3-92b3-be60961607a2)(label(>=.))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 2be24eee-796a-4e32-a595-fe66fdec7a28)(content(Whitespace\" \ - \"))))(Tile((id \ - a619c16b-5e98-4a1d-9a7d-ead44eaa63d8)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 6e884b5f-7331-4171-beb3-216cc889474a)(content(Whitespace\" \ - \"))))(Secondary((id \ - dc14b64e-8c01-4fa9-98a8-200c916a51f3)(content(Whitespace\"\\n\")))))))))(Secondary((id \ - ae9436be-c012-47e3-a242-71a303f8486a)(content(Whitespace\"\\n\"))))(Secondary((id \ - d9a8b9a9-833d-4878-8d67-a46a57e9cb17)(content(Whitespace\"\\n\"))))(Secondary((id \ - 415affa2-3006-4e07-bc03-34c60b1e86f1)(content(Comment\"# \ - Strings #\"))))(Secondary((id \ - 042b8358-f751-4485-aa25-063c43696514)(content(Whitespace\"\\n\"))))(Tile((id \ - 185178dd-2fa6-4278-a6c8-db28fe4375fd)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - c46aa33c-e66b-41a5-8b78-57146cae4d84)(content(Whitespace\" \ - \"))))(Tile((id \ - 5e7ae119-978f-4023-b8b5-0235c8649cd0)(label(string))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 7a5b3bc3-6c99-4c87-80bc-f86048a1edb6)(content(Whitespace\" \ - \")))))((Secondary((id \ - a6819e93-71a7-4d6c-b4ea-82e192d9fbf3)(content(Whitespace\" \ - \"))))(Tile((id \ - fab8653e-c5a0-43fa-afca-b7a4011553f6)(label(\"\\\"Hello, \ - world!\\\"\"))(mold((out Exp)(in_())(nibs(((shape \ - Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 1d0473fb-c794-4cef-804f-324b9a1fce59)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 91a59c5c-f769-4985-9c41-f6ff3f0db39e)(content(Whitespace\" \ - \"))))(Secondary((id \ - 81348781-11e4-4290-a6f4-52973732b5e1)(content(Whitespace\"\\n\"))))(Tile((id \ - a618324a-ffee-4efe-9d2b-f13879ae838b)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - a719321b-6232-44f9-8b18-341359975676)(content(Whitespace\" \ - \"))))(Tile((id \ - b6bb4a32-4b36-4689-991a-1b62b7a4b14e)(label(concatenation))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 3fee7685-ff3f-4803-b2dc-b7d54015093e)(content(Whitespace\" \ - \"))))(Secondary((id \ - 9d9ec990-d5c0-4ee0-aa90-3de48324afc1)(content(Whitespace\" \ - \")))))((Secondary((id \ - 032caae1-90a7-4ab3-a334-88fc2f798d5d)(content(Whitespace\" \ - \"))))(Tile((id \ - 192aa42b-4a58-43bc-9e3a-e066aed7d3ec)(label(string))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - cb7a976d-413d-47d9-b07d-67e96d409d24)(content(Whitespace\" \ - \"))))(Tile((id \ - 21bfc6f7-eda7-4670-a121-db6a2b6a247b)(label(++))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - f369739c-aa87-4a9a-a86d-f269f61e6dbb)(content(Whitespace\" \ - \"))))(Tile((id \ - 5502cf66-be6f-4254-ac7e-ed5db8c811e4)(label(\"\\\" \ - Goodbye.\\\"\"))(mold((out Exp)(in_())(nibs(((shape \ - Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 793f1b1e-7bbb-44a9-8074-ae6cf016ed27)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 84632134-c477-42f9-b8ba-6c4f26b61976)(content(Whitespace\"\\n\"))))(Tile((id \ - 9db5d325-302e-4e45-a50c-fb6a8b0c9511)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 4385ad9e-08ac-4a0f-8072-0d2654d69995)(content(Whitespace\" \ - \"))))(Tile((id \ - 82961d0c-5ede-463b-9ee2-fd176ce9089a)(label(comparison))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 2bbdfd4b-c25f-4ccf-baba-2ae5dc01ae32)(content(Whitespace\" \ - \")))))((Secondary((id \ - 38dde99e-0b9e-49f0-9eb5-fd451addd36b)(content(Whitespace\" \ - \"))))(Tile((id \ - 9f634ad6-6491-465b-b40c-586125a827fd)(label(string))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 2985292f-ee8c-4870-9b49-ad673e920a30)(label($==))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 7a1b3ff5-df08-45ac-b554-c8bfc4cc9574)(content(Whitespace\" \ - \"))))(Tile((id \ - b8fd12a4-7234-4d09-a41f-e54ef6aed750)(label(\"\\\"Hello, \ - world!\\\"\"))(mold((out Exp)(in_())(nibs(((shape \ - Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - dd91c949-1d0c-4be4-924f-164eda31b28c)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 66697ba3-e061-41cb-8d2b-5317587ae924)(content(Whitespace\"\\n\"))))(Secondary((id \ - 768a384f-b35d-4051-9922-373171b92a25)(content(Whitespace\"\\n\"))))(Secondary((id \ - a582ebb2-6202-47e5-971d-b6fdb47246d7)(content(Comment\"# \ - Tuples (Destructured with let expressions) \ - #\"))))(Secondary((id \ - b941f892-e39a-4b1c-98a6-04e03ab1aa0e)(content(Whitespace\"\\n\"))))(Tile((id \ - dbff8adb-98a9-4135-b354-5e91ba5fe18e)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - d780894c-6834-41a8-aee4-44349cec1f8f)(content(Whitespace\" \ - \"))))(Tile((id \ - 7d99c7bc-0b22-4442-962a-d16ae31ad693)(label(tuple))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 69ffc8f5-5d35-40dd-b813-9af29662cab7)(content(Whitespace\" \ - \"))))(Tile((id \ - 83737bc8-6c2a-4ec4-b10a-983eae37ac16)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 1123d894-d7f3-4d9a-9130-06c6f57b1365)(content(Whitespace\" \ - \"))))(Tile((id \ - c4b93045-c4e1-415a-abca-60ade52c0342)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - fb9d3340-2024-4e96-a409-e245398ef650)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 36bf4127-b306-436a-973d-d6796ff967fd)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - b983de5d-ece7-4f87-9ca3-af38b86be0b3)(content(Whitespace\" \ - \"))))(Tile((id \ - a32a13ca-808b-4a8b-bf46-7ff594b4f2e4)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 935fc04b-669e-4798-b505-de5c8594c71d)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - c770137f-f04c-415d-883c-76d218e0288f)(content(Whitespace\" \ - \"))))(Tile((id \ - 4e069dac-6a53-4b6d-a3c2-8a887e632eb5)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - e355a28d-f459-495d-ae9c-7c72f6b9c9ef)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - ba21221b-5a45-45f8-bfe4-ea57ce394783)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - e540ead9-44e2-471b-9398-922cc36feed8)(content(Whitespace\" \ - \"))))(Tile((id \ - 24848ae1-6799-4646-ae6f-50990854e7bd)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ - e6ef0460-ab40-4b87-9f32-d39750f6dd70)(content(Whitespace\" \ - \")))))((Secondary((id \ - 6362b93f-e4d4-4bbb-9772-51c5c52be641)(content(Whitespace\"\\n\"))))(Tile((id \ - 4a4d43ae-0dc1-4aab-abf8-bb56796f1178)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 6e13e1af-9dc8-48dc-86c0-f40187d3a1fa)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 6d84146a-db39-4627-906b-15e87550e99e)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - d9f36583-cc52-4cea-bb2d-9d09f48d0531)(content(Whitespace\" \ - \"))))(Tile((id \ - 51b5c1d6-da0a-4f7f-933e-2990c782c918)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - cb6bc751-00fe-4eb2-9a3c-ef17bbc7928e)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 890f9d61-43c8-4847-87fb-651c9cc6d783)(content(Whitespace\" \ - \"))))(Tile((id \ - 678a3654-b63b-4e8c-b153-115e0802a14b)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 4cb0536a-993c-402d-bff2-72b8d350e071)(label(false))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 8aacc30b-1b53-4f3d-94da-0ad570ad5bc3)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - a49b560d-c07a-43b4-b817-0cbc3b6f0eb3)(content(Whitespace\" \ - \"))))(Tile((id \ - cacecdfb-5092-49ad-b275-2354937e28e2)(label(3))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ - 234730f6-9254-4fce-b6a4-d4055fe78385)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 214e23c3-de11-4c55-9d73-78218007a0cc)(content(Whitespace\"\\n\"))))(Tile((id \ - bb635b02-126f-42b3-91e4-be98480744b5)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 094eb0f3-45c3-40a3-b2c1-2c7c50795acc)(content(Whitespace\" \ - \"))))(Tile((id \ - 63a60180-896d-4fdd-8421-a2bdc20a8d3f)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 4f478d72-4296-4f68-8b69-e41446416b33)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - efb0afde-2902-4486-bd87-49d72186b6c4)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 68362033-056a-4352-800a-d20ae1371696)(content(Whitespace\" \ - \"))))(Tile((id \ - 4621b047-3396-4c73-8135-e28e59d51d49)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 710da941-4780-47a4-a190-7cef49b99101)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - ae892d6b-aa05-4d44-8138-2f11373c4dc0)(content(Whitespace\" \ - \"))))(Tile((id \ - 5943c0f3-83a2-4a05-a22e-c51ba422a44f)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 8973b17d-2539-4fd9-82ca-42cf727ae426)(label(c))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 972f1cbb-d9e3-4eba-a6a6-3a1b7b763d96)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - cc86449d-e55e-4199-8670-84d253759e7e)(content(Whitespace\" \ - \"))))(Tile((id \ - 9ac0dfd9-479f-46e1-8b68-7c5bbb72f4d5)(label(d))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children())))))))))))))(Secondary((id \ - 26df8488-ba9b-47b2-9889-6412d8bf7f11)(content(Whitespace\" \ - \")))))((Secondary((id \ - 8cbf3a61-29b7-4dcc-8275-b2b0ac8fb2bc)(content(Whitespace\" \ - \"))))(Tile((id \ - 0afe36b3-bf8e-4e67-8288-de1febf576b4)(label(tuple))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 90e0e2a5-5448-4d6c-be8d-618a5976dee3)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 2d04e537-5f26-4ee8-a778-77c1ffcb9554)(content(Whitespace\"\\n\"))))(Secondary((id \ - 1b0f3415-897d-4cbb-a173-1a709f6950d6)(content(Whitespace\"\\n\"))))(Secondary((id \ - e40aac64-3e9e-4e8e-b034-b656664017ea)(content(Comment\"# \ - Functions (Take a single argument which can be a tuple) \ - #\"))))(Secondary((id \ - 38b7eb67-43f4-4d03-8072-43f95c9cb205)(content(Whitespace\"\\n\"))))(Tile((id \ - 22815978-5913-483a-a03b-9922f7eba75f)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - cb976c62-2d2e-453a-92fa-949441b5fe3b)(content(Whitespace\" \ - \"))))(Tile((id \ - cae60720-eb2d-44be-bb20-5e5012352a1a)(label(y))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - db416289-5d93-420a-ae0e-17985b6f75ba)(content(Whitespace\" \ - \"))))(Tile((id \ - ec534bac-db9b-4469-b8d1-fdf5efdeb89b)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - d0c5714f-1180-47db-bc01-4a553e7a62fd)(content(Whitespace\" \ - \"))))(Tile((id \ - 790d420c-55db-47ea-b905-d231b4aa3cb5)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - b00875fd-aff6-4fcb-9d61-51db0e6a2575)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 870b349a-7ee1-4ae1-bfe6-0c9a90d5e1e9)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 7c249bd8-aa01-4ab5-9014-0cb7969e6a66)(content(Whitespace\" \ - \"))))(Tile((id \ - 0c723ebf-9158-4329-9e92-e9007c97f32d)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - f0c3b100-82f9-4c0c-9694-3731210853de)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - f3ac8333-1f40-496f-9e69-b9648844a826)(content(Whitespace\" \ - \"))))(Tile((id \ - 2962ea2f-17df-4d9b-823f-a9e85824bd9a)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 76084e06-9e14-411f-b5ed-2058ec172824)(content(Whitespace\" \ - \"))))(Tile((id \ - 4ea5ed55-80cb-4852-ae89-25564abd7930)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 956bf182-5324-44eb-9ceb-a16e6ef06e6f)(content(Whitespace\" \ - \"))))(Tile((id \ - 403b06c1-49e5-4b59-8080-261f1372f7b0)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - affc3911-267a-4de3-8fbb-45c1210e6721)(content(Whitespace\" \ - \")))))((Secondary((id \ - c347f88b-2f39-42d3-8ab1-05081820c387)(content(Whitespace\"\\n\"))))(Tile((id \ - b73d695d-7115-4387-8986-286753c6895a)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - bd4ecc6c-c22b-41f3-85b1-6b7ba8b993ea)(content(Whitespace\" \ - \"))))(Tile((id \ - 7252502a-944b-4f68-8a42-de8ff6d5c019)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - ebec6552-e2f7-480d-a4be-ed7b898cb068)(label(m))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - cd6b15ed-61f8-4afe-bdef-9c68e885fdd1)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 87e76dc5-c38e-43b7-890a-dfaea878f55b)(content(Whitespace\" \ - \"))))(Tile((id \ - e9a63148-8c4a-4831-a13f-bfc0a7e14fc8)(label(x))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 1034461c-5f83-433c-84a5-a6e9d6f3a75a)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 9f02b604-9b07-4218-a87c-0c27e19b4db6)(content(Whitespace\" \ - \"))))(Tile((id \ - ae32288f-fa55-4f15-8092-13bf7a01fff0)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - 93efa935-0af2-40dd-9b54-c409f98fe6c9)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 7cb37ce1-caae-406f-a942-e42253423adf)(content(Whitespace\" \ - \"))))(Tile((id \ - 740c1538-65bf-4172-812e-f4b834b10722)(label(m))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - f36a2cc6-1456-4d8c-af20-79ac2cd3be23)(content(Whitespace\" \ - \"))))(Tile((id \ - 453427e1-2fb2-46a7-952c-f22328ae22d8)(label(*))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 5))(sort \ - Exp))((shape(Concave 5))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 4a8b783f-5c3b-460d-9d44-21b96dd42ab0)(content(Whitespace\" \ - \"))))(Tile((id \ - f68966ac-fb29-4a7a-89e4-9dfdb5ff345d)(label(x))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 96ef482c-7806-45ec-983b-58f1f671e18d)(content(Whitespace\" \ - \"))))(Tile((id \ - bc24944d-bf59-463b-8ace-1cb86a04fd49)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - a41e5ef0-7500-44cd-9fda-ebb7e84cf8ae)(content(Whitespace\" \ - \"))))(Tile((id \ - ba843560-d51f-4b77-b23a-8792cd52dccf)(label(b))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 2d93c6d9-b12d-472d-92b8-92755566f498)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 5a477805-8d4f-48f6-a1d1-556f8e0705e1)(content(Whitespace\"\\n\"))))(Secondary((id \ - 8b560c77-4eae-484a-b217-8f82452831ac)(content(Whitespace\"\\n\"))))(Secondary((id \ - af3f9a0b-059a-4971-9dfd-73220377bc27)(content(Comment\"# \ - Recursive Functions (Arrow type annotation required) \ - #\"))))(Secondary((id \ - e4f3191c-9d2b-49cb-9ac6-9a940526fcac)(content(Whitespace\"\\n\"))))(Tile((id \ - 68ea713f-f9a1-459b-97e2-97f3cd55df9e)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - c6d7e9f6-cfa6-4778-967b-8df2407a832b)(content(Whitespace\" \ - \"))))(Tile((id \ - 9d75b836-45a9-401a-b0d6-276996aba1d5)(label(double_recursively))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - bec83f29-1913-4497-9584-5a0aa670fb27)(content(Whitespace\" \ - \"))))(Tile((id \ - 2ff45885-389c-4f77-84cb-782281163887)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 4bc88e37-2ad1-413d-8ff2-51e95dc24a96)(content(Whitespace\" \ - \"))))(Tile((id \ - 19005318-6634-4773-9916-43bec700ec48)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - eb234934-d296-4dcd-ac37-d68155e607dd)(content(Whitespace\" \ - \"))))(Tile((id \ - 8a5cb1e1-caa3-4399-ab61-7aed794fc1a9)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 4841a528-55b4-4837-83a8-dc8a4bb5297c)(content(Whitespace\" \ - \"))))(Tile((id \ - 6bac3400-a019-4617-8877-b2e181533635)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 41009e36-9c24-49e0-ae61-b49b6b57f384)(content(Whitespace\" \ - \")))))((Secondary((id \ - 646ebdda-ba87-4c02-9f5d-6a4b73731115)(content(Whitespace\"\\n\"))))(Tile((id \ - e38ed077-2eb2-4b6b-9f05-10c6a3ac431f)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - c453d1a7-38ed-4cc1-8f2c-b1a3a2d57570)(content(Whitespace\" \ - \"))))(Tile((id \ - 2cd31fc4-19b6-4da4-915d-d34223011183)(label(n))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 7e6457ce-584a-46e7-a712-8a7cc52e8202)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - cc562fa4-1041-4664-aa18-68a141a2929b)(content(Whitespace\"\\n\"))))(Tile((id \ - df423f16-af29-45fd-adba-cae64935815d)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 58b06d12-d67c-4aa9-b5b8-96fc3756b064)(content(Whitespace\" \ - \"))))(Tile((id \ - 97536683-8297-48d8-abc9-4739535c031a)(label(n))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 2f02fc1d-bff3-48ff-9bff-697ed99571bc)(content(Whitespace\" \ - \"))))(Tile((id \ - 7200b984-0ccf-4c36-8d8a-79bb51bc7e19)(label(==))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - d516fcda-d88a-4579-94d3-cc9c3ac8b2ff)(content(Whitespace\" \ - \"))))(Tile((id \ - 7e72fc29-af8b-42ee-a180-e90a46e3e7f2)(label(0))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 10da9024-301d-4f23-8186-10b24f25e05e)(content(Whitespace\" \ - \"))))(Secondary((id \ - 88097f50-8a9e-4f25-9021-92f55a25b55a)(content(Whitespace\"\\n\")))))((Secondary((id \ - adc723de-0916-4234-9fa7-2de6c335f21e)(content(Whitespace\" \ - \"))))(Tile((id \ - 2257d9d9-7003-45b4-ad58-fd17b4947b19)(label(0))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 32319d27-9fd2-47be-afc1-8dc4f2be8488)(content(Whitespace\" \ - \"))))(Secondary((id \ - 05edaccc-a9aa-4194-addf-a84ae12c1c41)(content(Whitespace\" \ - \"))))(Secondary((id \ - 6daff4d8-28e3-41cb-852d-1490aa79997a)(content(Whitespace\" \ - \"))))(Secondary((id \ - a70429cb-c48d-467b-a7eb-9f698abc0415)(content(Whitespace\"\\n\")))))))))(Secondary((id \ - e2847689-c852-43c0-8892-964499d8be3d)(content(Whitespace\" \ - \"))))(Tile((id \ - 9489e4fc-8276-4f93-b89b-6f6c2c87959c)(label(double_recursively))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 978c0e77-61b0-4931-ac7f-f99be85a8fce)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 8cfc2aff-f614-448f-ae33-3defa2448ad9)(label(n))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - d27400f1-95c3-47f5-a4a6-9254980f7ba2)(content(Whitespace\" \ - \"))))(Tile((id \ - d57dc014-37c0-46c3-8999-d7c4eba94294)(label(-))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - c9afbb83-c544-45e9-8c8d-721fc4f00f07)(content(Whitespace\" \ - \"))))(Tile((id \ - 97702fb8-6603-4bf8-a452-5335943725e9)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 73f0881c-0f2f-4bda-9112-3bc891b652f8)(content(Whitespace\" \ - \"))))(Tile((id \ - c2103d1b-66a5-4644-9d2d-a7e09b495239)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 1e679a20-e2e2-4861-8d5e-d9bf8dbad5af)(content(Whitespace\" \ - \"))))(Tile((id \ - 96e7f6ea-6cfc-414f-80c0-dbcb200c918b)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - afd69223-e7d2-4fea-9361-944764560f20)(content(Whitespace\" \ - \"))))(Secondary((id \ - 22efc857-c184-400b-91ee-bae75d2520c3)(content(Whitespace\"\\n\")))))))))(Secondary((id \ - 49fc53d9-0448-4f26-a9e2-96afc50062b6)(content(Whitespace\"\\n\"))))(Secondary((id \ - 10def280-ba27-4351-bf61-9cf482994195)(content(Whitespace\"\\n\"))))(Secondary((id \ - 8779834f-35de-47aa-b280-c81c7bb89c85)(content(Comment\"# \ - Mutual Recursion (bind tuples of functions) \ - #\"))))(Secondary((id \ - 51917ce5-1c79-4fd4-a5e3-0014fb6a3d40)(content(Whitespace\"\\n\"))))(Tile((id \ - 4b5c912e-3a06-4a26-a7b8-af8ddc88df80)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 09c58788-4089-4d14-9fca-9d459b2f1eef)(content(Whitespace\" \ - \"))))(Tile((id \ - ba07e025-8d26-4694-bad9-4adb34ec309d)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 1d4d4dad-9302-4772-9585-5c89f8a04b5b)(label(even))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - bdfd1baf-1ad0-4e88-8208-f856aacd5771)(content(Whitespace\" \ - \"))))(Tile((id \ - 11174e0a-fdf3-4d52-9acd-2e233d07fc08)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 6b2a33ec-3081-46b9-9ca7-5ea81ead8d18)(content(Whitespace\" \ - \"))))(Tile((id \ - 3261fe04-1216-49be-afe4-0eca2ae33085)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 898903de-a271-49a1-bce7-9bb6dee647bf)(content(Whitespace\" \ - \"))))(Tile((id \ - ef9c776b-8571-42b8-bc8c-2d9823e5e7bb)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 86d22d0f-2bc5-4533-9451-71dcfc7956d2)(content(Whitespace\" \ - \"))))(Tile((id \ - 5fe73c7a-6b01-45d2-8b62-1adb757e5d98)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 3fd9a6fa-b81f-4533-af76-f6c37dd0f082)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 54d09f94-d260-4fbf-809b-140f503edba2)(content(Whitespace\" \ - \"))))(Tile((id \ - 6b6cae28-1b64-494b-8064-31a135d4f798)(label(odd))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 50f73dfe-5347-44b7-bc61-1f13c0c52fb4)(content(Whitespace\" \ - \"))))(Tile((id \ - 8ffc2405-8e7c-4bc3-a7c5-922c53caa97f)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 3791868a-4c0c-4e46-b143-8b7b83a58331)(content(Whitespace\" \ - \"))))(Tile((id \ - eae8a74c-31f3-40ec-a77f-27bccfdbe958)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 48cae6f8-4248-4c50-811f-0f35807de4af)(content(Whitespace\" \ - \"))))(Tile((id \ - dd2807f6-b5df-4729-a08c-10d1c96dbfbe)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 5071f72a-82fd-4f6b-8b68-c85c570426a2)(content(Whitespace\" \ - \"))))(Tile((id \ - f87442ee-2141-433b-8ab9-c4ab40265c25)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 9d942502-f33f-4048-b93c-5cc9cffd155f)(content(Whitespace\" \ - \")))))((Secondary((id \ - 88e3b86a-05b5-4560-9919-8260787c1c52)(content(Whitespace\" \ - \"))))(Secondary((id \ - ad2fe433-cb2d-41ee-8dd1-257c50a17a6e)(content(Whitespace\"\\n\"))))(Tile((id \ - 8570dba4-ad7a-48a8-b580-23dc58a734c6)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 9ab88092-89d4-4fba-a86d-c26e2d2b7fac)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - d0cdf7e7-ff51-4a18-8826-2dd5f4ebbce3)(content(Whitespace\" \ - \"))))(Tile((id \ - 0c870bbb-234a-4c59-9c16-249b3cfb6aaf)(label(n))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 367401b1-9d57-429b-9f4f-4e420866853e)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 6c1876dd-e179-4ff5-9f52-0e0090b0d0e5)(content(Whitespace\" \ - \"))))(Tile((id \ - 632206e5-319e-4393-9acf-dfe13cb27814)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 4ce07279-b9fc-41d7-b701-6b65328e7075)(content(Whitespace\" \ - \"))))(Tile((id \ - fb13777c-960d-4c96-bdaf-9b8f3e99b9f5)(label(n))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - f7c70590-621a-4917-ba51-bf69a4cc4f18)(content(Whitespace\" \ - \"))))(Tile((id \ - b2f534b0-c7ad-4b66-b7e4-bf60317b9901)(label(==))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 49fa8ddf-3a35-4edc-b429-5ba3b71885fa)(content(Whitespace\" \ - \"))))(Tile((id \ - 85b2ba58-bb3e-445a-b266-8e81caab03d6)(label(0))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - cd932d88-e045-48f2-a445-ac161e49eef4)(content(Whitespace\" \ - \")))))((Secondary((id \ - 7465aaaa-0cdc-46a6-b65c-aa97a19e27b1)(content(Whitespace\" \ - \"))))(Tile((id \ - b3c661a5-29f8-48f0-a7c9-9700f70b5a9b)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 6410b1b2-58b8-4662-a70b-107ff11cba54)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - c02af1d6-617c-463e-ae25-8064244a314c)(content(Whitespace\" \ - \"))))(Tile((id \ - c910c578-71af-4583-a9f8-b90603f4983e)(label(odd))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 4e9b453c-2fbf-4b57-a67d-1ba0d0827f46)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - fc92406a-cd3b-4edd-be37-c4fa5d97e74a)(label(n))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - a62a6f96-1014-4bdf-b9bf-856fb284b50e)(content(Whitespace\" \ - \"))))(Tile((id \ - c56b8e02-c64a-44b3-9db6-941a244e0e70)(label(-))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - fd5a0720-7d10-4c28-aa3c-93b61b9fd20e)(content(Whitespace\" \ - \"))))(Tile((id \ - 4928caf9-5912-4cd7-9976-77cd4c7f655d)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - a016a7f1-e059-496e-9e9a-e4793b268967)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - cd972c58-9f5d-46bc-8fa8-29fa33a38ebd)(content(Whitespace\"\\n\"))))(Tile((id \ - f31e7879-500d-405a-b1c1-0369f06fa316)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 73ecfdb8-56e0-438d-ba17-db4a328e4c56)(content(Whitespace\" \ - \"))))(Tile((id \ - 734578ec-4071-4142-9113-a0a080c659ec)(label(n))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 4e0bc869-e4a7-4fd2-88dc-d4c602bc5a5f)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 9c0d0928-a493-4307-85bd-3da3bec92561)(content(Whitespace\" \ - \"))))(Tile((id \ - 7455a270-a241-4287-9081-874536803332)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - b7bf3770-a0ba-432f-8144-b48c642fbf4e)(content(Whitespace\" \ - \"))))(Tile((id \ - 581bcbac-d688-4c6f-a56e-45777025f089)(label(n))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 15a8c6f1-9949-452d-8fd9-aafb514adc4d)(content(Whitespace\" \ - \"))))(Tile((id \ - 2678e593-9da1-471b-b20e-912d2b425843)(label(==))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 910144c4-aa54-4271-87a6-f1af2ee8b76b)(content(Whitespace\" \ - \"))))(Tile((id \ - 1ffe5969-add6-41dd-9803-4c2847920c80)(label(0))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - c402ac54-7dc8-49c0-8942-a2d1f7a184f4)(content(Whitespace\" \ - \")))))((Secondary((id \ - 46fc5c06-04ea-42b9-a215-7e3f08aa8161)(content(Whitespace\" \ - \"))))(Tile((id \ - 891ec4e4-68a3-4c77-858c-70df7c69e374)(label(false))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - d7faa563-d7b6-4442-86d2-97e51eba685a)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - b009e801-ee28-4aa7-8e81-c8bc10577f71)(content(Whitespace\" \ - \"))))(Tile((id \ - a8f8900f-8d96-412a-9063-807470394bbf)(label(even))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 62223ff6-6f8e-462f-8696-8c73393efa08)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 74bed36e-ddc0-416e-8f47-f40a3a46f0c9)(label(n))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 1861ddf8-78e1-40ad-9a8d-7d5d8395be2b)(content(Whitespace\" \ - \"))))(Tile((id \ - 771cf030-c801-487f-ba1c-c8b9c29ece21)(label(-))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 8fcc6f2c-2bd5-4634-a35c-b8eee716f96e)(content(Whitespace\" \ - \"))))(Tile((id \ - f44c64a4-496b-4f6c-a635-087319218a1e)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ - 2e21024b-2d78-4f80-b800-548695c10a33)(content(Whitespace\" \ - \"))))(Secondary((id \ - b377fc9e-5b2f-4760-98a2-278916fd4c67)(content(Whitespace\"\\n\")))))))))(Secondary((id \ - 57bb0d23-590e-4dcf-90d7-7f4230b190ed)(content(Whitespace\"\\n\"))))(Secondary((id \ - dd941822-d10c-42f4-b77b-6cd6d924ee34)(content(Whitespace\"\\n\"))))(Secondary((id \ - 71b4b6d5-7ab2-4681-b595-81abd7424053)(content(Comment\"# \ - Lists #\"))))(Secondary((id \ - 1219e4dc-e0ec-4b5d-8377-c7e5fe715a5a)(content(Whitespace\"\\n\"))))(Tile((id \ - a8b96e25-08ea-4780-9eff-6d5eb3a2f4a8)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 234e032d-bb9a-45aa-8826-be504dff4f8c)(content(Whitespace\" \ - \"))))(Tile((id \ - 278b0038-39de-48ec-95f3-ac841840eb00)(label(empty_list))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 0effa9a1-f5da-40b4-aa14-a78bde6f6af1)(content(Whitespace\" \ - \"))))(Tile((id \ - ec63c161-95ec-4a37-8a2f-657e3d8c40cf)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 9f5d137f-f7be-4bcc-9aa0-d5bfa6134634)(content(Whitespace\" \ - \"))))(Tile((id a0d17c75-7234-4fae-8f01-bf2d682a22b6)(label([ \ - ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ - Typ))((shape Convex)(sort Typ))))))(shards(0 \ - 1))(children(((Tile((id \ - 63a6e027-dd1c-4688-b433-926bc45a5ded)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 63855d98-3fa2-4ed6-8998-0843747fa85b)(content(Whitespace\" \ - \")))))((Secondary((id \ - e4b1459f-4738-4970-b0ce-46564fd26007)(content(Whitespace\" \ - \"))))(Tile((id \ - 0a5be6a8-023d-4a35-98cc-4277b6b42b03)(label([]))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 2e0daaef-d0b2-496d-94e9-35db2ea68e6a)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - c579c967-0bf6-4e8b-999a-7418f33c6fa5)(content(Whitespace\"\\n\"))))(Tile((id \ - 8ec4c868-aecb-4462-8758-e374a19332b1)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 8aa54798-ca1d-4834-a234-09025793b13f)(content(Whitespace\" \ - \"))))(Tile((id \ - 3d07d45c-2099-4f10-bcf2-6d19839f7f45)(label(non_empty_list))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - ca818725-0f9c-46e2-9ac9-aa5b485abc6e)(content(Whitespace\" \ - \"))))(Tile((id \ - 943bf04f-ee28-4989-bdd9-5fe0fc2f4be6)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - e5e17cc4-07cd-4f5b-81fd-851566edfce6)(content(Whitespace\" \ - \"))))(Tile((id f573ccc4-bbac-40c3-95e0-9be679a96e83)(label([ \ - ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ - Typ))((shape Convex)(sort Typ))))))(shards(0 \ - 1))(children(((Tile((id \ - 83931dcb-f69e-4b8b-9a4f-bb71bde2b970)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - a1d7f4fc-e6be-4b7a-9f03-521ccfd53869)(content(Whitespace\" \ - \")))))((Secondary((id \ - 97d1a9fb-35a4-4c6f-b33e-39eae7c6bcc0)(content(Whitespace\" \ - \"))))(Tile((id \ - 96c0e4bd-4735-48cc-bc93-1e57ba234755)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 9f6cfdad-225e-4f5d-b149-b55765bca66d)(label(::))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 7))(sort \ - Exp))((shape(Concave 7))(sort \ - Exp))))))(shards(0))(children())))(Tile((id \ - 2bf83d33-30b2-4625-85a0-5211d5b2f1c0)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 170b7d93-4563-49fc-b5d8-26e20359d442)(label(::))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 7))(sort \ - Exp))((shape(Concave 7))(sort \ - Exp))))))(shards(0))(children())))(Tile((id \ - b26c7834-4567-4525-946b-76d33a53b2f2)(label(3))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 1ccc1751-fe8f-4a6d-a3ef-ca9dd41af6b7)(label(::))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 7))(sort \ - Exp))((shape(Concave 7))(sort \ - Exp))))))(shards(0))(children())))(Tile((id \ - 2e6c0f52-d181-4ec1-8de5-f18cc21e8f39)(label([]))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 3f07880e-1e83-4718-ae57-f1a526f21243)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - aa6fb8b0-c705-4062-a2d6-cb482d249302)(content(Whitespace\"\\n\"))))(Tile((id \ - f0728bfe-c25f-416e-9aef-a22af7be7e8d)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - eaa79f2b-4312-4846-b780-ab84964ed70e)(content(Whitespace\" \ - \"))))(Tile((id \ - 9714ee95-ad4f-4554-a1e8-8a46b18f8653)(label(list_literals))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - d9672dfb-d75f-4d66-b595-ea19d9ea31f2)(content(Whitespace\" \ - \"))))(Tile((id \ - 06ea8604-9a04-4e9c-a5fa-3a0f4ebe22f0)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - db749b03-c59a-4ff4-b0ed-1f2d07dd4af9)(content(Whitespace\" \ - \"))))(Tile((id 4a1ddbee-8334-4bda-b821-29319e2251ee)(label([ \ - ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ - Typ))((shape Convex)(sort Typ))))))(shards(0 \ - 1))(children(((Tile((id \ - 4a754f38-6e06-4ff3-88f1-567a72540cda)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - add027b4-ef99-4b72-a082-37a1899379b8)(content(Whitespace\" \ - \")))))((Secondary((id \ - d38308a3-489d-4534-a261-db7febce6474)(content(Whitespace\" \ - \"))))(Tile((id d98d4b4e-5190-402d-8085-958d54b39932)(label([ \ - ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Tile((id \ - b7652c8f-85bd-4265-bb30-4214dd8165a0)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - ec621586-e52d-41bc-8b00-d1835ee7f334)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - d629d163-8c10-43c1-8936-0fbb0142b993)(content(Whitespace\" \ - \"))))(Tile((id \ - 6e817772-9b30-4541-a582-8cf1cf0ac213)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 563987ff-d717-447b-b944-7e2fc8c64bb3)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - ac73fa56-6125-4b1a-adc7-0fedf95ad369)(content(Whitespace\" \ - \"))))(Tile((id \ - 5d23e4e8-575d-4d93-a6b2-04deffa4e6e4)(label(3))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 798c0684-45ae-474e-9882-08a1a277b93e)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 7ac73171-4868-4664-8bf7-8c6de537bcd1)(content(Whitespace\"\\n\"))))(Tile((id \ - 0f863f28-9b72-4b35-8154-775515a7ba47)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 2cead4e7-fb1a-4fd5-a7b2-c49a81150269)(content(Whitespace\" \ - \"))))(Tile((id \ - 720182d2-5f18-4848-aa31-1f56c2c29bf5)(label(length))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 1753a9ea-34a4-4b57-b17e-7a1abf579d52)(content(Whitespace\" \ - \"))))(Tile((id \ - 24f42660-c778-461e-b4ee-39e0cdbd192e)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - bb8f6acd-fea3-47b2-9000-595be4b4e469)(content(Whitespace\" \ - \"))))(Tile((id ed796634-9066-4b05-b4dc-f81394279a16)(label([ \ - ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ - Typ))((shape Convex)(sort Typ))))))(shards(0 \ - 1))(children(((Tile((id \ - 02c81eaa-d509-4135-8a6a-f8e33db3642d)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 0097e1e5-eb34-4de7-a1ea-e268cbbafa59)(content(Whitespace\" \ - \"))))(Tile((id \ - 42337162-6c0c-448b-b714-2d353d0f26bb)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 46af5aef-487e-4b7c-996d-8f1bb474f9e7)(content(Whitespace\" \ - \"))))(Tile((id \ - 572ef01a-340e-4c54-911b-708536edbb66)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 091bb5c5-e40d-42d2-81b1-765ef1245059)(content(Whitespace\" \ - \")))))((Secondary((id \ - 4b8844e5-e552-447c-955b-89ff88bf3bab)(content(Whitespace\"\\n\"))))(Tile((id \ - 338324bd-aa69-46e7-a303-5393e5765a7e)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 506c0645-38a3-4c3a-988e-7e39de102be6)(content(Whitespace\" \ - \"))))(Tile((id \ - 0e584d9e-56e0-490b-a173-a8ca496726a0)(label(xs))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - b2e48b92-7648-407b-a274-cf191bd1bd72)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 2089d6f7-a56d-484b-8d77-794ea0633780)(content(Whitespace\"\\n\"))))(Tile((id \ - e0531ee8-00ec-4a29-aee6-3d74a7ff97b6)(label(case \ - end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 409c65b9-7ab8-4f89-9cbf-aeb95f80a77e)(content(Whitespace\" \ - \"))))(Tile((id \ - 6b27f723-4145-4766-9e23-0de5877ffdce)(label(xs))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - f69b6995-83ef-42c4-a7b3-1426dc564211)(content(Whitespace\"\\n\"))))(Tile((id \ - 59be4678-ed0c-4387-a717-991141c1483f)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 21))(sort \ - Exp))((shape(Concave 21))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 5dcf1c1c-8186-4500-89f7-71e49e2a2b40)(content(Whitespace\" \ - \"))))(Tile((id \ - 0f21155e-0057-4296-ac44-8dba7f0af4ac)(label([]))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - be3fbc8b-0808-44b7-b143-1cf20219e119)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 180551a1-df74-40c1-bea3-10e9269358ab)(content(Whitespace\" \ - \"))))(Tile((id \ - 08cba38c-5586-4340-8be7-7079b36ac3e5)(label(0))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - ad0c36e5-1a5a-425f-a9e4-0e4b3511af67)(content(Whitespace\"\\n\"))))(Tile((id \ - 090b2775-02a5-49b0-adbf-b200d5b9a48e)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 21))(sort \ - Exp))((shape(Concave 21))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 78f5aa37-e417-4b21-acc7-1e9d8c0f70e9)(content(Whitespace\" \ - \"))))(Tile((id \ - bf88a00c-626b-40d5-8896-4512c4f9e6f8)(label(hd))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - a742ff3c-4618-4f4e-aa62-216702663502)(label(::))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 7))(sort \ - Pat))((shape(Concave 7))(sort \ - Pat))))))(shards(0))(children())))(Tile((id \ - ecd78e97-60fd-4e5d-a8a0-5d748d8c53d6)(label(tl))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 69dbef1f-a24c-4ea5-b0d6-4fc665c507f4)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - cd8585e8-e3d0-478c-b789-567c735a09ab)(content(Whitespace\" \ - \"))))(Tile((id \ - 552f403c-4816-46d2-8476-ed38ab0030b3)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 29136312-c096-4ba0-b404-6d681b334673)(content(Whitespace\" \ - \"))))(Tile((id \ - e8f378b5-ea5d-4c22-83fa-33cae5e0ed42)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - af6fd625-0fc6-4e0b-8ff0-f2f63757dfb5)(content(Whitespace\" \ - \"))))(Tile((id \ - 1cc6ba76-0448-49e1-8d65-7e8d86f3b7c7)(label(length))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - acb3224c-cb2f-45ab-83e9-7eb423fc4be0)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - bb782277-f429-434d-bde3-57b9923de661)(label(tl))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 129fec7a-1f7e-46d7-806f-ef1101649565)(content(Whitespace\" \ - \"))))(Secondary((id \ - 02ca50a2-4726-4291-82e1-1ff9f1d09af2)(content(Whitespace\"\\n\")))))))))(Secondary((id \ - 2bce8bca-9510-4e27-afea-a12014cc3805)(content(Whitespace\" \ - \"))))(Secondary((id \ - 8c5d24f2-f0cd-4ef5-9a97-54da118f4d3e)(content(Whitespace\"\\n\")))))))))(Secondary((id \ - c9eb6fc8-8e39-4ace-a7b8-0376eb1b8ac1)(content(Whitespace\"\\n\"))))(Tile((id \ - 67493383-bc38-4c7d-8020-b57d99a1716d)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 1114af1f-d23c-4f20-b4d8-10adb6626d58)(content(Whitespace\" \ - \"))))(Tile((id \ - 4beb20fb-c84b-4fc6-80a6-61f0e87af8a5)(label(has_at_least_two_elements))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - fc3e404b-3c28-46da-be70-b8109703eaad)(content(Whitespace\" \ - \"))))(Tile((id \ - b13af813-c37a-48e3-bad0-071d08e535a3)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 6861240e-7900-483b-bb7f-033e992455d8)(content(Whitespace\" \ - \"))))(Tile((id a42e29bc-e22d-468c-9f3c-b072e97ca208)(label([ \ - ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ - Typ))((shape Convex)(sort Typ))))))(shards(0 \ - 1))(children(((Tile((id \ - 160553ef-e8d4-41a8-9786-316ca0c6accb)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 0240450a-d12e-4be5-b946-02fbc84d7ce0)(content(Whitespace\" \ - \"))))(Tile((id \ - c619af16-6b56-4331-90ed-b5ee98851546)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 1e09d6c1-e1fe-432c-a720-19bf6b8537f4)(content(Whitespace\" \ - \"))))(Tile((id \ - 853bc160-02c4-412f-b502-d8dd51e5b68c)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 2a466f81-bf44-41c0-a512-7948f8482227)(content(Whitespace\" \ - \")))))((Secondary((id \ - 6d482a7d-d7a1-414f-a82b-cf9da8be68ac)(content(Whitespace\"\\n\"))))(Tile((id \ - 1df737a5-97da-43e8-a818-37ac256ad597)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 23f344c2-961d-4806-ba82-6411ab62f0a7)(content(Whitespace\" \ - \"))))(Tile((id \ - 5caf2e9a-65db-4072-a127-40be338aa66f)(label(xs))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - fa741f12-edff-4cd4-bb25-fa5d84e5c187)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 809c3fcf-a4e1-4668-80a4-6da1690b979a)(content(Whitespace\"\\n\"))))(Tile((id \ - eaba2e70-b1ea-439d-bd25-aea2e12dc9eb)(label(case \ - end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - af5acb1b-c849-411b-a84f-66656dfc44d4)(content(Whitespace\" \ - \"))))(Tile((id \ - bea7d84e-a18d-4f3d-9189-b5812c4662af)(label(xs))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 44136b6d-81c8-46ab-99a7-6808b2319ae7)(content(Whitespace\"\\n\"))))(Tile((id \ - ce8bdb37-110b-4eaa-b8ea-1fe8333c95f7)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 21))(sort \ - Exp))((shape(Concave 21))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - e3522aa2-a809-4b93-a032-d4a675c94a64)(content(Whitespace\" \ - \"))))(Tile((id \ - a06ea66a-6efa-44b1-974a-3beba73ea9b7)(label([]))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 690a9e90-bf58-41d6-8408-c3fd72862f1d)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 9fb09a67-5cea-4099-b990-758936a69462)(content(Whitespace\" \ - \"))))(Tile((id \ - 492bea48-19e8-4694-9602-faa4abb12815)(label(false))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 63bb9a48-9ba9-4526-b2a6-0cf398acf027)(content(Whitespace\"\\n\"))))(Tile((id \ - 6d14620c-208f-4011-96fa-92a50bd9c816)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 21))(sort \ - Exp))((shape(Concave 21))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - ee6e1a23-dcd8-479f-a699-9ca122edbe9b)(content(Whitespace\" \ - \"))))(Tile((id \ - 6db6e228-c0da-4fc8-8bb3-0668f7cbfc32)(label(hd))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 6a69bf6d-f476-4407-a709-7e24da2afb26)(label(::))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 7))(sort \ - Pat))((shape(Concave 7))(sort \ - Pat))))))(shards(0))(children())))(Tile((id \ - 2c6e5f8a-caeb-4f73-bc98-95607c590c5b)(label([]))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - fc136558-1e0d-4180-bc82-ec0d6e819ba2)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 30c88215-a2ad-4b7c-bd20-8ec640136306)(content(Whitespace\" \ - \"))))(Tile((id \ - 67a5b457-c6cc-4756-8d66-d24be5d26ceb)(label(false))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 81dd084d-769b-4c8d-88b9-882e4a6b6c7d)(content(Whitespace\"\\n\"))))(Tile((id \ - d6a6eb47-8d9c-43d4-b379-cf0ad5689f8d)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 21))(sort \ - Exp))((shape(Concave 21))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - a0469247-afd0-46f9-83b8-2557d0bc7e84)(content(Whitespace\" \ - \"))))(Tile((id \ - 4fa3e2a6-d464-4e64-a79f-a1e31a90f2a4)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 9ea0a12b-28e3-471d-b9c7-244df64777a8)(label(::))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 7))(sort \ - Pat))((shape(Concave 7))(sort \ - Pat))))))(shards(0))(children())))(Tile((id \ - ce0a7639-c6e2-47ed-856f-758549b19b80)(label(b))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - cb079634-4c60-4034-86ca-c9c78ef2daea)(label(::))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 7))(sort \ - Pat))((shape(Concave 7))(sort \ - Pat))))))(shards(0))(children())))(Tile((id \ - e88e7c42-8b59-4cc8-be8c-bbd61606ad58)(label([]))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 9b552e61-bbe8-4fa5-bef2-681aac14aaed)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 48d05eff-fc8e-4ffc-bc76-55004dcc5381)(content(Whitespace\" \ - \"))))(Tile((id \ - 74848765-dc06-4790-84e9-0fbda1e1cca9)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 32ec6c4a-6f4d-496d-83ec-fb0437bfbe07)(content(Whitespace\" \ - \"))))(Secondary((id \ - 9905ba19-d790-441d-9010-05a7a0304a9d)(content(Whitespace\"\\n\")))))))))(Secondary((id \ - baf3910c-3a5c-4c5d-811a-3a25993dd369)(content(Whitespace\" \ - \"))))(Secondary((id \ - b46e0619-eaa5-4c79-990f-468bc2f95032)(content(Whitespace\"\\n\")))))))))(Secondary((id \ - 1647be06-245d-42a3-8385-5a71c4af1766)(content(Whitespace\"\\n\"))))(Secondary((id \ - 40d25578-5212-461c-92f6-ae14a391e37b)(content(Whitespace\"\\n\"))))(Secondary((id \ - b4f27a9f-6db2-41b8-8abb-e5dc432174c6)(content(Comment\"# \ - Algebraic Data Types #\"))))(Secondary((id \ - ea5f2e47-c4b7-4397-9e93-7d285161895a)(content(Whitespace\"\\n\"))))(Tile((id \ - 6c18c48d-ff41-414c-8949-18314c82d911)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - be7d171f-44f7-4cc4-b195-9d3fad23c89d)(content(Whitespace\" \ - \"))))(Tile((id \ - 9898e73d-674d-4816-8647-9409dd552310)(label(Exp))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - ea20211e-b125-4b1a-a0b3-9c10852578a8)(content(Whitespace\" \ - \")))))((Secondary((id \ - 853fb3f2-c94d-4d0b-8acb-21509113036f)(content(Whitespace\"\\n\"))))(Tile((id \ - cb2c9b9b-7417-4b08-950c-ff12747ae504)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ - 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ - dfbb56ad-82ce-4e19-ab52-a994e3e2acbf)(content(Whitespace\" \ - \"))))(Tile((id \ - b693d291-3a8f-445b-bfc8-4f02314f2c88)(label(Var))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 5b19219b-28e1-49ef-accf-10c6b6cf2e2a)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 2))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 7b645a2c-401d-49de-a704-cd98150d64ff)(label(String))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - bba9714b-81b9-4455-8f06-f9c89e5ecf8e)(content(Whitespace\"\\n\"))))(Tile((id \ - 5770b324-b8b5-4743-933c-4954039c09f3)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 4))(sort \ - Typ))((shape(Concave 4))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 5ce4060b-b0d7-46a4-821e-d26a9e9f77fc)(content(Whitespace\" \ - \"))))(Tile((id \ - 6d57be85-cc61-41b3-9af5-aadb4a8cb293)(label(Lam))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 0c9b52f1-fc92-470a-82b7-0b252cc40514)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 2))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - c35a43b3-5a59-4d7c-9112-f63650663f02)(label(String))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 7f439ec5-4d4b-4d6c-b564-68b1925f1d30)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 1a641eaa-5def-46a2-b19e-0fb0f9ed5692)(content(Whitespace\" \ - \"))))(Tile((id \ - 0f33d3f6-0450-432c-992a-191bf11c7b2e)(label(Exp))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 73ce5af4-d7b0-4d46-bf3b-fa4d77d4e9df)(content(Whitespace\"\\n\"))))(Tile((id \ - e91b0d6f-060f-4c66-a49d-7d8e163303a0)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 4))(sort \ - Typ))((shape(Concave 4))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - fa71b286-d19b-4cff-8944-2da8c8f7dcf8)(content(Whitespace\" \ - \"))))(Tile((id \ - 07e4923d-bff0-4af5-8475-f8f4e483816f)(label(Ap))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 276a9f50-5d64-459a-bae6-34bcd8b150fa)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 2))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - a37581c1-4dbd-4cfc-be55-3f18dc61642c)(label(Exp))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 9c176087-4d7e-4874-afea-e384d4f330ee)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - f0c33e25-5d29-43a2-8701-0fa56d162911)(content(Whitespace\" \ - \"))))(Tile((id \ - cd8b6bf1-0225-416f-9030-38e4e377c430)(label(Exp))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - f9e1e57b-a5a1-4979-a01c-e98ac44fecb3)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - e2267cf5-64a7-4e52-8d50-0109dccce57c)(content(Whitespace\"\\n\"))))(Tile((id \ - 51215e08-3df1-484a-b0db-fe6e658d0b28)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 48e98510-44ad-4efa-953c-4649cd77a606)(content(Whitespace\" \ - \"))))(Tile((id \ - ad816713-3a69-41d1-a242-80b4c958dc9e)(label(exp_equal))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - cb10d2fb-5e5a-4bbe-b06f-41758ecd53ee)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - d05375d8-9f08-4654-8aa0-6c98e9671b12)(content(Whitespace\" \ - \"))))(Tile((id \ - 563c9b36-fe7e-4c0b-ad4b-b3358162919d)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 6c8cd5d7-aee4-4100-aa4f-57d15a87784a)(label(Exp))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - a1f7e431-4318-4b18-b805-908473a41bad)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 642d75fb-9ffc-4b63-b32b-1fd5a303a714)(content(Whitespace\" \ - \"))))(Tile((id \ - ec466d11-a768-4ade-9ab7-0504a9fc3efa)(label(Exp))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - ba6c7d9c-0450-49f1-afb4-224bf34b2810)(content(Whitespace\" \ - \"))))(Tile((id \ - b5344707-cbe7-4b31-819d-cab55e63e8e5)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 51da58aa-6755-447c-b825-9646805918e2)(content(Whitespace\" \ - \"))))(Tile((id \ - 66438ce7-ac7c-4ea2-980f-fbe75fd62f01)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - f92c651d-1d9d-4eb7-bcf5-350e17e9de52)(content(Whitespace\" \ - \")))))((Secondary((id \ - a40dd41f-b7d8-49d5-b9fb-13ef5cb82d48)(content(Whitespace\"\\n\"))))(Tile((id \ - 9f6d8dfa-6391-4593-8d5c-d02c879ec0d6)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - ce7cf269-04db-4a47-bab8-2d005e8686fa)(content(Whitespace\" \ - \"))))(Tile((id \ - e04f7179-9375-4357-8d3f-9e15d6cc0b68)(label(es))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - a54627fc-c3f2-4a10-9499-68c3065850aa)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - e75935b9-a0bf-4584-8ce0-2184bda29547)(content(Whitespace\"\\n\"))))(Tile((id \ - fbb14c36-4417-4110-a815-0546c624c3e8)(label(case \ - end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 3eb798ed-d718-4d14-b8e3-4243cc6234f0)(content(Whitespace\" \ - \"))))(Tile((id \ - 9bfb5142-311c-456c-9598-9cf0fbe3a0dc)(label(es))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 7137309c-b19b-47d2-aee7-0b93b8d3cd66)(content(Whitespace\"\\n\"))))(Tile((id \ - 5cde9141-0600-4bd2-a572-3b585622e6dc)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 21))(sort \ - Exp))((shape(Concave 21))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 73e2edf4-4188-4175-a302-4038720413b5)(content(Whitespace\" \ - \"))))(Tile((id \ - 2473f4a9-91a7-46a9-8ccd-2e03499e75df)(label(Var))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 8d87ac45-7522-4913-b9b5-6e4918b99f44)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 2))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 6fa70f91-6305-48db-8e0c-7eaead1b1dfe)(label(x))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children()))))))))(Tile((id \ - 1bd46b12-42c5-4a4c-ad6f-4301f6201bda)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 33dca95f-b012-4cee-89c8-83af77811874)(content(Whitespace\" \ - \"))))(Tile((id \ - 580c7c28-a895-4db6-8cc6-bfead1521aaa)(label(Var))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - b562932e-82b6-46d3-b8d4-54f78f338de1)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 2))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - f927d4a7-7c3b-4638-bd8d-1d188d70239c)(label(y))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - b6d4d43e-c33a-4ec0-8039-80e012d04acb)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 0512901d-9011-4bcb-8789-eda3b62e9b47)(content(Whitespace\" \ - \"))))(Tile((id \ - f80de902-7fb1-49f3-b886-17745459f7cb)(label(x))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - e5bd2c1f-d358-4d8b-bd42-ecdad83d2942)(label($==))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - e2b74564-c7b0-42ab-8208-cdae622dc778)(content(Whitespace\" \ - \"))))(Tile((id \ - a3efe7a9-0b75-4f26-a03c-1c5d0dc6f533)(label(y))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - e221d134-2ab9-4a7a-bbb0-ae8f390cc8af)(content(Whitespace\"\\n\"))))(Tile((id \ - 1a12d804-f211-4085-8703-868302408e49)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 21))(sort \ - Exp))((shape(Concave 21))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - d0de6371-de93-437c-b23a-36cd26d1e7d7)(content(Whitespace\" \ - \"))))(Tile((id \ - d2c5047e-e07b-4c95-83de-0f139cf5ce10)(label(Lam))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - bd6e0713-b88c-4903-a0d3-4d6ec2a75f89)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 2))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 16b54a46-fc84-4cdd-b9ab-0363bff376fe)(label(x1))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - f52c4bbb-421b-4e23-b32a-57e923df7291)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - e96e76da-c062-4994-8bbc-ada1d170f6df)(content(Whitespace\" \ - \"))))(Tile((id \ - 41d88136-9aa8-4a12-86cc-dac2eec1f827)(label(e1))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children()))))))))(Tile((id \ - 1044fc2d-24ae-4e85-a671-27dd4c6127c3)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 6dd3e438-b966-496a-ab43-1815d0715d56)(content(Whitespace\" \ - \"))))(Tile((id \ - 80c8b2a6-b4f3-4d65-b103-2dfe5793db55)(label(Lam))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 45441bbd-1bb0-4eff-a363-fc288c099422)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 2))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 366b7f7e-b62f-4aad-858d-4fc78336bc62)(label(x2))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 82ce0fc7-f1c9-42e1-b403-f8d88c4feedd)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 5aa2f354-2bae-447c-b8d3-e677fab95297)(content(Whitespace\" \ - \"))))(Tile((id \ - 9ab407f9-74ac-4397-ae55-1a29022e4e86)(label(e2))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - 184dbeec-2eea-403f-a620-ce93755db8e4)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 4203f5a8-4457-416c-a6e8-2cd5627df6b6)(content(Whitespace\"\\n\"))))(Tile((id \ - cb070c1b-06b6-4b5f-bb0e-b17d70b0ef75)(label(x1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 2ca3539e-8d66-4f75-af85-95c9c9d7c307)(label($==))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - ec6180b3-9abf-43de-924e-8dfbe1978b33)(content(Whitespace\" \ - \"))))(Tile((id \ - d55ee4a1-96b0-4c18-a179-8f98ef0a9021)(label(x2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 8b5e7264-c601-44d1-82e9-e65da50cd81c)(content(Whitespace\" \ - \"))))(Tile((id \ - 39b8edf1-d4b4-4c00-851b-604612036924)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 2db032a1-f25e-4dc8-8edc-712ccfe46db0)(content(Whitespace\" \ - \"))))(Tile((id \ - 4fa69fb6-22de-4a55-a6d1-35618a7bbfbf)(label(exp_equal))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 5336591a-fffe-4bf6-9179-577ff28407c0)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 79eece89-c412-4182-a6b3-e7e33686e543)(label(e1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - bf6a90d4-7a46-4b16-8e15-923a0ecbc3b4)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 56c7e98c-5f85-4680-9043-110016fa605c)(content(Whitespace\" \ - \"))))(Tile((id \ - 6b808427-5617-47d4-8e9c-cb9a264915e3)(label(e2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 612677e9-e699-42f9-8f09-c6d855c0e253)(content(Whitespace\"\\n\"))))(Tile((id \ - ba9c9196-4ec2-4606-88d5-9b9564a055e7)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 21))(sort \ - Exp))((shape(Concave 21))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - d67e31e5-c5fc-457a-94a3-6192a76e503b)(content(Whitespace\" \ - \"))))(Tile((id \ - 0aa8c0ed-356e-49c9-85e1-a4ccadc089be)(label(Ap))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 2368c483-f71c-4a9d-a8f4-18a8fa678a3e)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 2))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 14bdc3a0-7bde-4b29-a3fa-63678eabbc4e)(label(e1))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 3f15ac18-ca10-477b-ab37-913c4c38b301)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 3212ab6f-e2fe-4515-a72a-de3c59ea91ec)(content(Whitespace\" \ - \"))))(Tile((id \ - 3ac4e9f4-ce72-453f-9ef0-addaf0d4611c)(label(e2))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children()))))))))(Tile((id \ - f19ed5f1-6293-4d2e-98fb-239a0df4ceac)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 9428fea4-fa31-430d-b4de-54fc99702cbd)(content(Whitespace\" \ - \"))))(Tile((id \ - 931c9943-40ef-411a-84b4-de5568f67502)(label(Ap))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 471cfcb3-ebe0-4721-a336-110da0e75e19)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 2))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 7d023c3a-4813-498a-af9a-785fbb2b2684)(label(e3))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - b33870d7-b8db-4db5-a9a3-9e1cfb4b73ba)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 9f3f3cbb-2f70-4de3-94ab-8790adc272e5)(content(Whitespace\" \ - \"))))(Tile((id \ - 284072c4-6f92-47c2-a791-0cc52586a465)(label(e4))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - 63512553-a9f8-40fb-987b-9228d1ab24dc)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - ffda2a8c-6202-411f-9638-e1cd76c2ef11)(content(Whitespace\"\\n\"))))(Tile((id \ - 6f52f1e8-7f52-4aa5-81d1-e84aed80d3b4)(label(exp_equal))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 311e534d-8333-42af-a4ec-55f5661adf31)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - e425f361-851a-4f2b-94cf-c792d1be0152)(label(e1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 57e01382-bcee-4e8e-8a25-45423aa11654)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - fc866e65-ecc1-4ff1-a264-666bf8bc1fa9)(content(Whitespace\" \ - \"))))(Tile((id \ - c8943cf3-f80f-4dfe-93a5-a2bcfd67b09d)(label(e3))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 98d14051-9737-4724-af2c-2d7a0b81b269)(content(Whitespace\" \ - \"))))(Tile((id \ - eabd030d-f0a3-4b22-b912-58042f5af9e8)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 2a2801c9-edb1-45e7-8acb-8e0b1e56d186)(content(Whitespace\" \ - \"))))(Tile((id \ - 958ccc9b-2204-4dae-a408-866f586c3e0e)(label(exp_equal))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - bc348ae6-b80a-4169-aff3-338302747669)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - bb40c4db-d0c8-477e-a091-4fbdbacad42a)(label(e2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 15130784-96d6-42f7-b6a8-ba39fe8974ca)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - f63050fd-549e-498e-b8a6-42cb43bd1a65)(content(Whitespace\" \ - \"))))(Tile((id \ - bb5d2473-9746-433c-9097-9eeccb9cb4bd)(label(e4))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 22c4fe99-1bba-4082-bc90-7ca734efcd47)(content(Whitespace\"\\n\"))))(Tile((id \ - fcf121c9-113b-4b79-905e-33bfef8c69b4)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 21))(sort \ - Exp))((shape(Concave 21))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 0b93478d-a22f-47d0-b896-3491da89e81a)(content(Whitespace\" \ - \"))))(Tile((id \ - a072855f-49d7-469d-8238-d4e4d467552a)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - c071f73e-bc0b-4f84-ad64-667935be077a)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 42b17249-cec7-48bf-95cc-660b967e95a0)(content(Whitespace\" \ - \"))))(Tile((id \ - a4ddd9a8-fb51-46fa-b48f-66c8ba6f555a)(label(false))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 46c58dff-cc68-4bbe-9590-b0214f6add3d)(content(Whitespace\" \ - \"))))(Secondary((id \ - df388361-831a-4342-8cf5-c36942c631bc)(content(Whitespace\"\\n\")))))))))(Secondary((id \ - dac31c9c-f9f9-4000-9db7-0669c5471c67)(content(Whitespace\" \ - \"))))(Secondary((id \ - 453b6339-60c5-4da7-8b9d-36d51917feae)(content(Whitespace\"\\n\")))))))))(Secondary((id \ - e9b63795-81e1-4689-a0db-a5e8c2844298)(content(Whitespace\"\\n\"))))(Secondary((id \ - 8dc764b8-5dbf-405e-ab57-0542d396b7cd)(content(Whitespace\"\\n\"))))(Secondary((id \ - a834a562-85fe-4f09-91cd-bd3bb1ee2b0e)(content(Comment\"# \ - Polymorphic Functions #\"))))(Secondary((id \ - 504456d4-e497-4dd9-99cd-b47a79faf844)(content(Whitespace\"\\n\"))))(Tile((id \ - a6ccf9ca-236c-460b-97ff-1a046906eb00)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - e717987d-94ce-4abc-95db-6dd49044c575)(content(Whitespace\" \ - \"))))(Tile((id \ - 5af7c338-b36f-497a-9926-7fa5fab75cb4)(label(poly_id))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - e0782873-c991-4491-af44-c7356981e882)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - e0c000a8-d8a3-4af1-9ded-44fc9dc62ec6)(content(Whitespace\" \ - \"))))(Tile((id \ - 7b90296e-1019-4a04-86fb-608661f6367c)(label(forall \ - ->))(mold((out Typ)(in_(TPat))(nibs(((shape Convex)(sort \ - Typ))((shape(Concave 14))(sort Typ))))))(shards(0 \ - 1))(children(((Secondary((id \ - ec116057-480b-4b48-8a09-95c8c4faca1b)(content(Whitespace\" \ - \"))))(Tile((id \ - 9c6e18cf-4771-4e90-8e4e-ab0ae0d73b9d)(label(a))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 25f589d7-1970-4fb1-93b0-bf97b004e7f2)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 5726bc0d-d2ae-4647-8c81-b1991af6d067)(content(Whitespace\" \ - \"))))(Tile((id \ - 05035924-b062-4edb-b1ee-4c4e645c32c2)(label(a))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 2a89b8ee-83c6-467c-ab93-046dafb25b49)(content(Whitespace\" \ - \"))))(Tile((id \ - a55c99f8-7404-4802-b5bb-7b79faecef20)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 2049156c-4999-4448-9bd1-5b7335e2e207)(content(Whitespace\" \ - \"))))(Tile((id \ - 7a481beb-c75e-426f-98ae-355eb03e457a)(label(a))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - d03f21f5-87cb-4aef-acc5-87932fa35b20)(content(Whitespace\" \ - \")))))((Secondary((id \ - 1675e432-20ba-4a92-991d-6de887bc9bf4)(content(Whitespace\"\\n\"))))(Tile((id \ - 8b142766-2c5b-486b-b4a6-fd39a8d78b19)(label(typfun \ - ->))(mold((out Exp)(in_(TPat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 65df76e3-04ba-4034-aa96-266e0585e360)(content(Whitespace\" \ - \"))))(Tile((id \ - 0ffc2d52-2a70-4046-adc0-acca10dfe074)(label(a))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - f6d19061-dbb6-4e35-8dab-c1040fb7f7ef)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 9943fd24-eefa-48f3-ad9c-06a4be86d1e9)(content(Whitespace\" \ - \"))))(Tile((id \ - 15b9ba4e-478b-4c12-be7b-23d76fba9605)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - c2d33445-f140-4439-b196-943bfdec984c)(content(Whitespace\" \ - \"))))(Tile((id \ - deb78d0c-a374-4aab-b607-418f29edb496)(label(x))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - eeae06c1-9d95-497c-abb5-47abf475d274)(content(Whitespace\" \ - \"))))(Tile((id \ - 16c5ca46-ccb7-4b1b-9ea8-862b2db66dc9)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 2f4411d4-0850-4d85-9f2f-d05659b9dcf1)(content(Whitespace\" \ - \"))))(Tile((id \ - 4d92252e-61d0-40e4-8547-22e47a698429)(label(a))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 2de896ed-0d18-4f4d-aa77-7d510d8768dc)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - c0fef234-fa75-47c9-82d3-1a0c9bf8d023)(content(Whitespace\" \ - \"))))(Tile((id \ - 22597661-c996-43c7-bf4d-da120d18f579)(label(x))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 8d982af9-a6dd-4189-9a54-d404a65617fe)(content(Whitespace\" \ - \"))))(Secondary((id \ - bc2e4d49-77a6-4b8c-ad2d-f9b9fed4c191)(content(Whitespace\"\\n\")))))))))(Secondary((id \ - c04a39ee-986a-4df0-80af-fede97451717)(content(Whitespace\"\\n\"))))(Tile((id \ - 986bd301-7a0d-47e0-8a66-113ad93d5656)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 7edb8d53-788b-4f37-a4d7-64cdb25314b5)(content(Whitespace\" \ - \"))))(Tile((id \ - 4bf76bc3-1fb6-4dac-9221-54e86ed3d76d)(label(apply_both))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - bd75d15e-c6e7-466d-ba7f-faa76739e4fe)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 6e543817-66b4-4b7e-a32d-637bad5f1f68)(content(Whitespace\"\\n\"))))(Tile((id \ - 6789d0b6-f5a9-4e10-acb8-c312971fea67)(label(forall \ - ->))(mold((out Typ)(in_(TPat))(nibs(((shape Convex)(sort \ - Typ))((shape(Concave 14))(sort Typ))))))(shards(0 \ - 1))(children(((Secondary((id \ - e32e33a9-b900-429d-9354-a1bb57b7b19b)(content(Whitespace\" \ - \"))))(Tile((id \ - ca5a707a-22e4-4a6c-97db-e25d5ed66abd)(label(a))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 9d5c24a7-7df3-4aff-99c2-1fd8cfaf1bba)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 30f01286-79d5-47d4-aaa5-4b5eccea0f3b)(content(Whitespace\" \ - \"))))(Tile((id \ - 85729ecf-d811-4b67-8cef-8875cb3170e1)(label(forall \ - ->))(mold((out Typ)(in_(TPat))(nibs(((shape Convex)(sort \ - Typ))((shape(Concave 14))(sort Typ))))))(shards(0 \ - 1))(children(((Secondary((id \ - 142f4460-da8a-44b1-879c-9a4a4945c67f)(content(Whitespace\" \ - \"))))(Tile((id \ - 9c2fa8c5-40ee-4f79-a545-fbdf3dd2d50f)(label(b))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 07602871-159b-434c-88e0-f126f9f472d3)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 87084595-3f07-463e-866c-11fde31aa692)(content(Whitespace\" \ - \"))))(Tile((id \ - dc5b66bd-1cd5-4dae-9e4b-628428bf3585)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 3c6f04e4-3ed2-462e-a25a-f78b5c7c080d)(label(forall \ - ->))(mold((out Typ)(in_(TPat))(nibs(((shape Convex)(sort \ - Typ))((shape(Concave 14))(sort Typ))))))(shards(0 \ - 1))(children(((Secondary((id \ - 5fc0853b-8758-44a7-b02d-d7829f4adbbd)(content(Whitespace\" \ - \"))))(Tile((id \ - f70b9dec-d712-44ff-9e41-b4a81661e62d)(label(c))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - ecc7a57c-08e7-405e-8c2d-2a09fec68018)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 63ace5d9-a8f5-491c-99cd-c723a70f5148)(content(Whitespace\" \ - \"))))(Tile((id \ - 2322ce92-9b45-4b05-b83b-b9fe98ea6835)(label(c))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - c503027c-fbb1-4cbb-90bf-d380bced39a5)(content(Whitespace\" \ - \"))))(Tile((id \ - bfb59d38-9bbe-4e6c-ac3a-6ab85c75ca1a)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 7ed28810-9085-4bf8-9f9c-f1639fd19803)(content(Whitespace\" \ - \"))))(Tile((id \ - 5e8f1cb5-9d69-43f0-b278-ce50d0dbe5fb)(label(c))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 7243e1f6-77f9-41b4-b125-ca613f519428)(content(Whitespace\" \ - \"))))(Tile((id \ - 77ca92ba-4de5-40e3-a2cf-941ed3c3d64d)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 41736f6e-0e26-4753-afb6-443e5b921035)(content(Whitespace\" \ - \"))))(Tile((id \ - 93a8bf41-3c7f-489d-a4db-c14fe6cc350f)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 86254ab3-80c6-4a90-aa6a-11daba837968)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 085c5df0-30f3-4437-b83b-c7a238b486fe)(label(a))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - ce3729cb-124b-4fce-a92f-bc94c06fe084)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 4c0a754b-23a1-44b8-b5b2-46f8bf35d497)(content(Whitespace\" \ - \"))))(Tile((id \ - 2c322ae5-541a-4505-ba0b-44512d66bf55)(label(b))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 08b33875-e9c7-4cee-988e-b176615c1298)(content(Whitespace\" \ - \"))))(Tile((id \ - d4bd5f71-add1-4ed4-989a-16d9e1a704c9)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - bef29a9f-99fc-4755-8e90-e0d37589dcf3)(content(Whitespace\" \ - \"))))(Tile((id \ - 26308b60-98c2-4524-9f73-8f10df1bc70f)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - b5d99729-01b8-45aa-9685-b6a6b243f609)(label(a))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - cce0f7d0-18fa-4ce5-a16a-9a3b1941b317)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 13354c4d-1fb4-4bbd-96df-94bb5ffffc5b)(content(Whitespace\" \ - \"))))(Tile((id \ - 1bbdb209-6122-453c-96cb-fe5ccac60219)(label(b))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ - b6cc0c1b-b3ac-44fd-99e1-4e6663fcf130)(content(Whitespace\" \ - \")))))((Secondary((id \ - 3e706ebc-7724-492e-9262-3e16062a807e)(content(Whitespace\"\\n\"))))(Tile((id \ - 3dd57715-ac7c-4ecc-8ae0-3751bc4bacc7)(label(typfun \ - ->))(mold((out Exp)(in_(TPat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - e6a935f2-8c27-40a2-9c1b-5af70e166afd)(content(Whitespace\" \ - \"))))(Tile((id \ - ebc6fce0-33c3-4a42-a142-2d354cd541c4)(label(a))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - c1ccb3e4-54ed-402f-ad4e-4bd5f515b9c1)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - f5bb5d3d-7d7d-4419-ae54-3b75a7aac1e2)(content(Whitespace\" \ - \"))))(Tile((id \ - cfec9ab4-9734-43ae-ab3a-cbac0561ee03)(label(typfun \ - ->))(mold((out Exp)(in_(TPat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 575adbe2-c29d-41c9-be23-9b09e3592e50)(content(Whitespace\" \ - \"))))(Tile((id \ - 8c7df4f6-a56b-49e5-80f2-1665571c72f6)(label(b))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - f44968a6-1573-4bb5-9315-8b549d2f516c)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 0c7eb7ab-feb0-4dbf-a8f3-ae960ae97ab1)(content(Whitespace\"\\n\"))))(Tile((id \ - 3cdcaf13-29ae-4bf1-9c25-d4702cba70b0)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - bf8c1296-c5b2-47bd-aaa7-7fffba6ee704)(content(Whitespace\" \ - \"))))(Tile((id \ - f805684a-dbaf-446c-b3e4-e82df0f3be2a)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 26bccb0b-6ee2-47b7-a1c6-3c2efe731b6a)(content(Whitespace\" \ - \"))))(Tile((id \ - d4fe314c-fbb4-415a-bbc5-846f1e3f9de5)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 3993c903-27e6-4b4a-9166-29fb3eeb5a2b)(content(Whitespace\" \ - \"))))(Tile((id \ - 96a43ee2-93b4-4505-996e-42d8c6221b23)(label(forall \ - ->))(mold((out Typ)(in_(TPat))(nibs(((shape Convex)(sort \ - Typ))((shape(Concave 14))(sort Typ))))))(shards(0 \ - 1))(children(((Secondary((id \ - 3efecfc8-4c64-4839-bd91-9fa5d43a80b8)(content(Whitespace\" \ - \"))))(Tile((id \ - 4a443d22-0848-4817-9e49-aaba44700fdf)(label(c))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 5612f32b-d059-4819-8cad-ef88eb1d253f)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 7986bec5-94f0-4a50-80fd-cb1c5bfa24ce)(content(Whitespace\" \ - \"))))(Tile((id \ - 7063fb92-3cfb-4efe-a9c3-bdeda4fc3149)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 03441983-972c-4c7a-8b61-c950f3a6d1ce)(label(c))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - cb619c8d-74d9-448b-bb54-ef124e93c407)(content(Whitespace\" \ - \"))))(Tile((id \ - 452df538-7083-4510-9781-5e729a0c2db0)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 7fc4f393-b572-4d1d-9be0-3a1c3d1ed61f)(content(Whitespace\" \ - \"))))(Tile((id \ - adec6372-6b9f-4b06-a110-a44bf6893be9)(label(c))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - b1768b90-841e-4086-886f-7cfffca7608e)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 42d489f1-bfad-4ed3-b692-dd6778a3115d)(content(Whitespace\"\\n\"))))(Tile((id \ - 333c079f-c27e-42a5-ac69-aa8052b1f767)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - af761054-2e46-4a45-8131-e4e00d061ce0)(content(Whitespace\" \ - \"))))(Tile((id \ - bd06f41b-da48-49d5-9d9f-15d735399f18)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 5f538e47-ff60-4bf3-bb42-2f6bd9939200)(label(x))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - b4c3d6b4-2f86-48b4-a6f8-973195225258)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - a9a8d704-1567-49da-bee0-eaaed1869b88)(content(Whitespace\" \ - \"))))(Tile((id \ - 1111b53c-bc7b-47aa-9e29-2c95ce1c4a51)(label(y))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - 375c5b6b-b999-45c2-9b59-b05122179e53)(content(Whitespace\" \ - \"))))(Tile((id \ - 4974e787-283e-4fec-af8f-2fbddbc2fed7)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 60b26609-2674-48b9-9338-87b04fb347cf)(content(Whitespace\" \ - \"))))(Tile((id \ - 8df906dc-7438-43ec-beac-bc6f8ae5e74c)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 167b514c-f202-426d-b0a3-e7da4f77e245)(label(a))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - a51c891a-c100-479b-8df5-76d0ae3682c7)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 10780b5e-6b42-489a-b478-8fa4918e4a3e)(content(Whitespace\" \ - \"))))(Tile((id \ - 35985887-3c99-4046-85af-e9942531655a)(label(b))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 55667446-df52-465f-8313-9b20861b5327)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 59cc16e1-2b4b-41e7-8223-b116efb5fc81)(content(Whitespace\" \ - \"))))(Tile((id \ - ab527d8c-6fb0-4ee8-bd7a-bd50ac90691c)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - c171a55e-f58c-4b76-9c60-0c99cb2f9deb)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - f457d095-9b7a-46dd-a032-df154f8e7d66)(label(@< >))(mold((out \ - Exp)(in_(Typ))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - b19a7335-2372-42e3-97c4-f43cf2da19b7)(label(a))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ - fdddf9a9-eafc-4859-8f84-4d0fe5eb197f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - f3214d84-034c-4366-aaeb-efbbbdf1eed1)(label(x))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 6218abb6-5f91-4db1-a84a-9040b65588c7)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 174b154a-a414-4f17-b34e-eff23c270c8c)(content(Whitespace\" \ - \"))))(Tile((id \ - fcdd28ac-e8c8-4be0-872d-99b5c68bd6ac)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - c696479f-e52d-43c2-8381-e16280c837ac)(label(@< >))(mold((out \ - Exp)(in_(Typ))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - e5d29456-ce44-406e-a270-d5705026c7ba)(label(b))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ - 293dc6cc-9739-43c8-b99f-32d20aebbafa)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 1e36b93e-80d5-41ea-aafd-cb180c9f9674)(label(y))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ - dd60b4d3-8c43-4503-9e98-3665c632c691)(content(Whitespace\" \ - \"))))(Secondary((id \ - 25c0cf10-0f56-4ba1-82e9-decf3713982b)(content(Whitespace\"\\n\")))))))))(Secondary((id \ - aeb31005-a681-42ec-9fbb-80f743adabbc)(content(Whitespace\"\\n\"))))(Tile((id \ - 94cc5701-6289-4ea8-848c-2d600b5122c3)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 674a6c4d-bdbe-460b-a241-2b00846a7f95)(content(Whitespace\" \ - \"))))(Tile((id \ - 6239aadc-e290-477d-8027-ddbe0c323473)(label(list_length))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - fce3a01c-346b-4b57-b907-1b578934c133)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - b61ed4ce-2a0c-4d6b-93ed-a549467bb67b)(content(Whitespace\" \ - \"))))(Tile((id \ - 01aaea2f-8850-4ea8-b7b4-a6dd3b2ad657)(label(forall \ - ->))(mold((out Typ)(in_(TPat))(nibs(((shape Convex)(sort \ - Typ))((shape(Concave 14))(sort Typ))))))(shards(0 \ - 1))(children(((Secondary((id \ - 34aeb152-116e-4add-ab9d-f66c04bcdc79)(content(Whitespace\" \ - \"))))(Tile((id \ - 0ea281be-401c-4814-a962-4f7f60ecd510)(label(a))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 5dce1e82-977b-4194-8ad3-e4c2709da42e)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 5223ad0d-e87f-4218-9602-a5072bf60153)(content(Whitespace\" \ - \"))))(Tile((id 21f91008-0d01-47ff-9d46-a924604ecee1)(label([ \ - ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ - Typ))((shape Convex)(sort Typ))))))(shards(0 \ - 1))(children(((Tile((id \ - 597ef350-c233-4353-b833-8286e49bc32e)(label(a))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 33e96963-2d40-45ce-9ab2-8b6f99e22e79)(content(Whitespace\" \ - \"))))(Tile((id \ - 706da43b-7c2f-43e0-89aa-75f10783b763)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - cb27497d-bb5c-47b2-b902-94e960ee4b63)(content(Whitespace\" \ - \"))))(Tile((id \ - 37182dd9-7cd0-4883-83eb-a97fe1f871a1)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - bc16f3da-343f-4ef9-a848-f0d11d98b04b)(content(Whitespace\" \ - \")))))((Secondary((id \ - 687df62f-d373-412a-8fe6-3eaa449bd81d)(content(Whitespace\"\\n\"))))(Tile((id \ - 4ebea11c-f7f2-4027-b2a7-c761f351d264)(label(typfun \ - ->))(mold((out Exp)(in_(TPat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - bf6af98d-7ecb-4961-bee6-a19be7722b6f)(content(Whitespace\" \ - \"))))(Tile((id \ - 9538a9b7-0a68-491f-a497-c17ceb666dc8)(label(a))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 3cc50505-545a-413f-be38-1156162225d7)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 896aa4dd-2356-4dbf-ae97-da7548c1b201)(content(Whitespace\" \ - \"))))(Tile((id \ - 25ca542b-1285-4243-8903-2c04bd343f70)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - c21302a8-fa84-488a-956b-68fd8b7bcec7)(content(Whitespace\" \ - \"))))(Tile((id \ - 4068a812-3167-4a70-826b-20452a73daca)(label(l))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 0be065e7-6bdd-4470-8076-ef9e2e61389e)(content(Whitespace\" \ - \"))))(Tile((id \ - f2c497d5-d083-4a2f-bf72-ced4d1927312)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 914e91c4-06ea-4269-b129-859b8a294fe9)(content(Whitespace\" \ - \"))))(Tile((id 6412a0a4-ac70-4bca-ba11-9b4cd002ac42)(label([ \ - ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ - Typ))((shape Convex)(sort Typ))))))(shards(0 \ - 1))(children(((Tile((id \ - d07ac1be-ed43-4913-9366-a1915e538ead)(label(a))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 84355a32-6df4-4ebe-a314-cfc652e51f69)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 916ecce0-82a7-4c4d-a29d-7d41986b2086)(content(Whitespace\"\\n\"))))(Tile((id \ - 2f7c4ea2-6186-41b0-9096-579817043ec8)(label(case \ - end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 7c454284-ebff-4487-acd5-f168d00a668b)(content(Whitespace\" \ - \"))))(Tile((id \ - 97eb0fcc-d5cc-4fc0-b1ee-78fc06dbc053)(label(l))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - eabd5e89-c146-41b9-bb42-6e32fc91457b)(content(Whitespace\"\\n\"))))(Tile((id \ - 7c6a957a-dd81-4fcb-9399-e0b7a2a0904a)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 21))(sort \ - Exp))((shape(Concave 21))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 2291574a-6353-4f25-ac51-fd758dc757c2)(content(Whitespace\" \ - \"))))(Tile((id \ - 31aa68cc-7483-43a9-8ccd-263bd2b7a7ed)(label([]))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 65ff3d16-a69e-4150-ad75-10dabef8f726)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 9e7aa6d9-ea7b-472e-a702-9604484452ea)(content(Whitespace\" \ - \"))))(Tile((id \ - 8c3d56b1-ed28-4755-959c-098d924440ff)(label(0))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 54b64cfd-3aa6-4469-a3d7-483b8c12efcd)(content(Whitespace\"\\n\"))))(Tile((id \ - ce39dd1e-2641-42c3-b2cf-f56018f630c5)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 21))(sort \ - Exp))((shape(Concave 21))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - eff6cf49-55e7-43e1-af2b-b7be31f1b6b0)(content(Whitespace\" \ - \"))))(Tile((id \ - 44cf48ea-46b5-4469-ab8c-02edb59f8450)(label(hd))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 4eec30e5-0f87-4999-b4ca-2f3837ed2890)(label(::))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 7))(sort \ - Pat))((shape(Concave 7))(sort \ - Pat))))))(shards(0))(children())))(Tile((id \ - c68ad92f-d175-4d81-a7f3-3dbf972311d9)(label(tl))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - ed61a729-65c0-412a-b9af-cac593518713)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - ceaaf3af-b462-44c3-9236-951ac541b526)(content(Whitespace\" \ - \"))))(Tile((id \ - 2c9f1347-713d-45c5-b00a-503277a68bc9)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 297a105c-5668-4898-b623-15b6448d5ac4)(content(Whitespace\" \ - \"))))(Tile((id \ - dc03019a-ae05-4d15-bd59-62132bed6f82)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - a827b6e8-a5fa-418c-bab8-b0348e97129b)(content(Whitespace\" \ - \"))))(Tile((id \ - 42e05399-dcf4-4a5a-b623-7c952d5be6aa)(label(list_length))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 15d2f010-369e-4f37-9e48-82c5d73cc436)(label(@< >))(mold((out \ - Exp)(in_(Typ))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - c2a8c56e-e013-42d9-b9bd-efb5ab76ef2a)(label(a))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ - 3c8892bd-ee35-43d7-af7a-e656fa18af41)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - b1efc418-a503-425b-9ed6-200b443b88ac)(label(tl))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 4aba6063-067d-4b9f-9dc1-a1eb4d8debca)(content(Whitespace\" \ - \"))))(Secondary((id \ - e5f59a97-e6e6-4831-9d47-7826b529adb5)(content(Whitespace\" \ - \"))))(Secondary((id \ - 69616509-8982-44a8-91ce-bea322782616)(content(Whitespace\" \ - \"))))(Secondary((id \ - bbb5c133-f403-4cb8-8414-c1ba5fdb845d)(content(Whitespace\" \ - \"))))(Secondary((id \ - 719d3eae-49ec-4b48-b28d-61cbf52d5320)(content(Whitespace\"\\n\")))))))))(Secondary((id \ - afec3dc1-635c-4552-9808-97c2a5206aea)(content(Whitespace\" \ - \"))))(Secondary((id \ - 0ebde483-a3cb-450a-9b11-dea18a5f1450)(content(Whitespace\" \ - \"))))(Secondary((id \ - 5152e7d3-3b22-4d1d-be55-2dba6c65cdeb)(content(Whitespace\" \ - \"))))(Secondary((id \ - 061e0f0c-9fcb-404d-a843-e2071aff3e09)(content(Whitespace\" \ - \"))))(Secondary((id \ - b41b8db3-5c3b-4912-9a63-016cb9a2bd61)(content(Whitespace\"\\n\")))))))))(Secondary((id \ - 73a87579-0861-4313-b26d-fad6890ef0d4)(content(Whitespace\"\\n\"))))(Secondary((id \ - ed2eba28-14b2-43f3-a960-96184f6a0453)(content(Whitespace\"\\n\"))))(Secondary((id \ - 743fc067-9e5e-4259-be92-2cfc52ac072b)(content(Comment\"# \ - Tests, separated by semicolons #\"))))(Secondary((id \ - 1123a883-d5b1-4c32-9322-83ff54244bae)(content(Whitespace\"\\n\"))))(Tile((id \ - be192105-476a-4d15-8ca8-698e51ac5d14)(label(test \ - end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 6a6e6e35-a886-40b1-bc53-7d4754a47fb0)(content(Whitespace\" \ - \"))))(Tile((id \ - 57ff9001-83e7-4eeb-a97e-c2ae9b0e4920)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 60f93a90-fa9b-476b-8d55-b2a436173a53)(content(Whitespace\" \ - \"))))(Tile((id \ - 3d0c0b1e-4c5e-4335-b161-e6a572f474ba)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 5dff9ed1-e5c9-4a7b-b0f6-0b9741b4dd64)(content(Whitespace\" \ - \"))))(Tile((id \ - 71fce18b-1f8a-42c7-a5fa-29a2f7a5b89c)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 9e1c040b-03ab-4a84-a553-e4703c01cdff)(content(Whitespace\" \ - \"))))(Tile((id \ - e4018927-a561-4e91-91f2-5c59ef42c517)(label(==))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 89cdd693-518f-4ab3-a7bb-617dc08b14bf)(content(Whitespace\" \ - \"))))(Tile((id \ - 92f91eb9-4e55-47c2-89c0-e65cb389e1b4)(label(4))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - d14060c1-5ffd-4687-a29e-dac00477d0c4)(content(Whitespace\" \ - \")))))))))(Tile((id \ - b87e716d-126b-4a1e-8a25-06d8e3b48940)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 68411645-46cb-4064-9519-e7899951a0a5)(content(Whitespace\"\\n\"))))(Tile((id \ - a7ef42fc-b10a-4765-9662-1e17b96cee51)(label(test \ - end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - d69bf48e-2c97-4895-a654-4d9b7a5dae5e)(content(Whitespace\" \ - \"))))(Tile((id \ - 5cb1ac15-bd9d-4e5f-8474-21cd9de9586b)(label(3))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - da026499-7b4f-4e56-bca9-46d095b425f8)(content(Whitespace\" \ - \"))))(Tile((id \ - d8467f2c-764c-42be-9e73-342a8111d08f)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - da92842e-93ed-4cd2-99c4-cdc95d67c4cb)(content(Whitespace\" \ - \"))))(Tile((id \ - 765eb7aa-464b-4189-9a36-d0ac82c60d30)(label(3))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 9fc189d6-d530-45fa-929e-f01d07752616)(content(Whitespace\" \ - \"))))(Tile((id \ - 2853eead-ce88-45bf-be4e-087bad885633)(label(==))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 9b805a57-2696-4ad9-b9a7-0d98e6b2fce9)(content(Whitespace\" \ - \"))))(Tile((id \ - 5b35f7fc-2a24-4838-ac54-60f2f1c13217)(label(6))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 07a2586d-f68a-4758-b6d7-fbcd25f03b15)(content(Whitespace\" \ - \")))))))))(Tile((id \ - 84e74920-e856-4e38-8197-b67f150e8280)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - eb5dc0b5-9bce-422a-abb0-c9fb2a061482)(content(Whitespace\"\\n\"))))(Tile((id \ - 1007b290-a32b-4932-abaf-71907d6b9226)(label(test \ - end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 86299159-3d39-4bde-96ac-a7e690666a00)(content(Whitespace\" \ - \"))))(Tile((id \ - f27787fa-392e-4503-aea4-53f0674ab69b)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 1f7c7c77-8238-472d-8566-6fa926a42fe6)(content(Whitespace\" \ - \"))))(Tile((id \ - bb0552be-7e7e-4d10-9642-9f34800af9f1)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 8655e10c-2c99-46db-9f8a-a8fc4030a7ab)(content(Whitespace\" \ - \"))))(Tile((id \ - 2d646883-c14a-47a8-a008-967a311ea0fb)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 0b139f15-6838-49ef-82e4-cbc793728a74)(content(Whitespace\" \ - \"))))(Tile((id \ - 6fb1e073-7438-4730-baca-fcceff91fdd3)(label(==))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - a54cdde1-509e-425a-9324-c9c193506f2f)(content(Whitespace\" \ - \"))))(Tile((id \ - dacd2803-8d82-473c-bcb7-67361214f2d2)(label(5))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - fa4b0d41-fe34-4970-a3f1-2b64178fd114)(content(Whitespace\" \ - \")))))))))(Tile((id \ - c4ef4f30-4ea8-48a7-a48b-9379b68a1933)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - fa633e11-2211-44dd-ae73-69f3aa368032)(content(Whitespace\"\\n\"))))(Secondary((id \ - 2dddcb80-8751-4337-a04f-a5b915d7264c)(content(Whitespace\"\\n\"))))(Secondary((id \ - 52ba9392-cb17-4a17-9424-1ec23bf8c424)(content(Comment\"# The \ - value of the program is shown at the bottom \ - #\"))))(Secondary((id \ - 1025583f-c9fd-4bdf-ae33-39d591894f63)(content(Whitespace\" \ - \"))))(Secondary((id \ - ed6fa8ec-6f73-40d4-974b-fb5a6e500413)(content(Whitespace\" \ - \"))))(Secondary((id \ - 82208130-4678-4f0d-aa70-71bab80882fc)(content(Whitespace\"\\n\"))))(Tile((id \ - edd07cfe-f3d0-46b8-bae7-8c8c7e98a471)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - c18ac8c5-f3b1-4264-bb1b-edda6e53fcfc)(content(Whitespace\" \ - \"))))(Tile((id \ - 7dead34d-45fb-4be7-8cc3-3036b7d1bcc2)(label(+))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - ffaeee98-c1de-4d9c-b8d1-ec6f1c2e2f80)(content(Whitespace\" \ - \"))))(Tile((id \ - f31878be-5cd4-4e79-827d-a1d16c837a27)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))(ancestors())))(caret \ - Outer))"; - backup_text = - "# Hazel Language Quick Reference #\n\n\ - # Empty holes stand for missing expressions, patterns, or \ - types #\n\ - let empty_hole = in\n\n\ - # Non-empty holes are the red boxes around type errors #\n\ - # (you can still run programs with non-empty holes) #\n\ - let non_empty_hole : Int = true in \n\n\ - # Booleans #\n\ - let bool: Bool = true in\n\ - let operators = !true && false || true in\n\ - let conditional = if !true then 1 else 2 in\n\n\ - # Integers #\n\ - let num: Int = 1 in\n\ - let arithmetic = -num*1 + 2/3 - 4**5 in\n\ - let comparison =\n\ - (0 == 0, 0 < 1, 1 <= 1, 2 > 1, 1 >= 1) \n\ - in\n\n\ - # Floating Point Numbers #\n\ - let float: Float = 0.1 in\n\ - let artihmetic = 0. *. 1. +. 2. /. 3. -. 4. **. 5. in\n\ - let comparison =\n\ - (0. ==. 0., 0. <. 1., 1. <=. 1., 2. >. 1., 1. >=. 1.) \n\ - in\n\n\ - # Strings #\n\ - let string = \"Hello, world!\" in \n\ - let concatenation = string ++ \" Goodbye.\" in\n\ - let comparison = string$== \"Hello, world!\" in\n\n\ - # Tuples (Destructured with let expressions) #\n\ - let tuple : (Int, Bool, (Bool, Int)) =\n\ - (1, true, (false, 3)) in\n\ - let (a, b, (c, d)) = tuple in\n\n\ - # Functions (Take a single argument which can be a tuple) #\n\ - let y : (Int, Int, Int) -> Int =\n\ - fun (m, x, b) -> m * x + b in\n\n\ - # Recursive Functions (Arrow type annotation required) #\n\ - let double_recursively : Int -> Int =\n\ - fun n ->\n\ - if n == 0 \n\ - then 0 \n\ - else double_recursively(n - 1) + 2 \n\ - in\n\n\ - # Mutual Recursion (bind tuples of functions) #\n\ - let (even : Int -> Bool, odd : Int -> Bool) = \n\ - (fun n -> if n == 0 then true else odd(n - 1),\n\ - fun n -> if n == 0 then false else even(n - 1)) \n\ - in\n\n\ - # Lists #\n\ - let empty_list : [Int] = [] in\n\ - let non_empty_list : [Int] = 1::2::3::[] in\n\ - let list_literals : [Int] = [1, 2, 3] in\n\ - let length : [Int] -> Int =\n\ - fun xs ->\n\ - case xs\n\ - | [] => 0\n\ - | hd::tl => 1 + length(tl) \n\ - end \n\ - in\n\ - let has_at_least_two_elements : [Int] -> Bool =\n\ - fun xs ->\n\ - case xs\n\ - | [] => false\n\ - | hd::[] => false\n\ - | a::b::[] => true \n\ - end \n\ - in\n\n\ - # Algebraic Data Types #\n\ - type Exp =\n\ - + Var(String)\n\ - + Lam(String, Exp)\n\ - + Ap(Exp, Exp) in\n\ - let exp_equal: (Exp, Exp) -> Bool =\n\ - fun es ->\n\ - case es\n\ - | Var(x), Var(y) => x$== y\n\ - | Lam(x1, e1), Lam(x2, e2) =>\n\ - x1$== x2 && exp_equal(e1, e2)\n\ - | Ap(e1, e2), Ap(e3, e4) =>\n\ - exp_equal(e1, e3) && exp_equal(e2, e4)\n\ - | _ => false \n\ - end \n\ - in\n\n\ - # Polymorphic Functions #\n\ - let poly_id: forall a -> a -> a =\n\ - typfun a -> fun x : a -> x \n\ - in\n\ - let apply_both:\n\ - forall a -> forall b -> (forall c -> c -> c) -> ((a, b) -> \ - (a, b)) =\n\ - typfun a -> typfun b ->\n\ - fun f : forall c -> (c -> c) ->\n\ - fun (x, y) : (a, b) -> (f@(x), f@(y)) \n\ - in\n\ - let list_length: forall a -> [a] -> Int =\n\ - typfun a -> fun l : [a] ->\n\ - case l\n\ - | [] => 0\n\ - | hd::tl => 1 + list_length@(tl) \n\ - end \n\ - in\n\n\ - # Tests, separated by semicolons #\n\ - test 2 + 2 == 4 end;\n\ - test 3 + 3 == 6 end;\n\ - test 2 + 2 == 5 end;\n\n\ - # The value of the program is shown at the bottom # \n\ - 2 + 2"; - } ); - ( "Projectors", - { - zipper = - "((selection((focus Left)(content())(mode \ - Normal)))(backpack())(relatives((siblings(()((Secondary((id \ - c3fe923c-f1b5-4fe4-91f3-1920083a48fd)(content(Comment\"# \ - PROJECTORS #\"))))(Secondary((id \ - 82e9ab71-8f1a-473b-8719-bca4ac1abb73)(content(Whitespace\"\\n\"))))(Secondary((id \ - c2aeea8b-6a4b-41c8-ae37-6957844cc632)(content(Whitespace\"\\n\"))))(Secondary((id \ - 5083b6d7-9860-44f2-a372-a7982bac5411)(content(Comment\"# Some \ - kinds of syntax have dedicated GUIs. \ - #\"))))(Secondary((id \ - 685340fd-64fc-47d0-9478-1146c2a75fd0)(content(Whitespace\"\\n\"))))(Secondary((id \ - 95a769cb-ccc7-4050-be14-6c316a60273f)(content(Comment\"# The \ - menu at the bottom left shows which GUIs \ - #\"))))(Secondary((id \ - 1912ca64-3e07-4dcb-9ca7-7d2134c7cf8a)(content(Whitespace\"\\n\"))))(Secondary((id \ - fcbdfc8d-3d9d-4a71-a6ea-7651147d365f)(content(Comment\"# (if \ - any) are applicable to the current term \ - #\"))))(Secondary((id \ - d7774693-9d72-4d87-8f4e-b43c785f4251)(content(Whitespace\"\\n\"))))(Secondary((id \ - 7a231164-a872-4d26-8184-823adee3e3d7)(content(Comment\"# \ - indicated by the caret. \ - #\"))))(Secondary((id \ - 013fc5f7-e8d4-48f7-bcbe-9429f55e4fb2)(content(Whitespace\"\\n\"))))(Secondary((id \ - e72ec872-a3c5-4cd3-ad82-c792dcb3c8b8)(content(Whitespace\"\\n\"))))(Secondary((id \ - 13ee2a51-1c77-428b-a88a-86c662cf961c)(content(Comment\"# Fold \ - projectors cover terms with abstractions. \ - #\"))))(Secondary((id \ - c3f89d08-bdef-4590-be4f-3072c9bd534a)(content(Whitespace\"\\n\"))))(Secondary((id \ - 77d14b50-f736-4c3f-af1c-e0ada25aaadf)(content(Comment\"# 1. A \ - simple fold roles up any term, replacing \ - #\"))))(Secondary((id \ - de94238a-f9da-4725-a7cd-8c262def9569)(content(Whitespace\"\\n\"))))(Secondary((id \ - 1f4aecb5-7b1d-4516-9689-86d55a50eca8)(content(Comment\"# \ - it with ... until it is expanded again. \ - #\"))))(Secondary((id \ - 943b3a44-589d-4acb-9ec9-a4335a102c65)(content(Whitespace\"\\n\"))))(Secondary((id \ - 0064f32d-87a1-4d3c-8ca7-2d986a42811c)(content(Whitespace\"\\n\"))))(Tile((id \ - b3a3bfee-bcdb-438f-ad33-e3f7e336b3ea)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - e992a23f-ce0a-4e05-a49a-09e84388f1d2)(content(Whitespace\" \ - \"))))(Tile((id \ - d776d3ac-ddeb-4cdc-9bb8-3c3b487840be)(label(fold))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 8e21014a-816f-4572-b065-34a5a04dc6f9)(content(Whitespace\" \ - \")))))((Secondary((id \ - d983dc5b-b4b8-46e8-ab8a-a6c5297ce98b)(content(Whitespace\" \ - \"))))(Projector((id \ - 3d5d8571-e287-4660-889d-019fd826d793)(kind \ - Fold)(syntax(Tile((id \ - 3d5d8571-e287-4660-889d-019fd826d793)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 9403eac8-9e96-4c73-84ab-ff94fbcb1864)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 81926204-d883-4cc9-ae43-6ccc4ab42857)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 2cfeb841-d069-4aa6-9ad8-931ef62214bc)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 0b6d67f7-b22c-402e-9fe8-9fa10c54adf2)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 25ec067f-2025-45f2-bc61-5e1839184086)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - e0716c75-b708-491e-9844-48d0424e6545)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 6057d41b-727d-4f1d-91b4-4f78e45607a2)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 33e14eaf-32e1-490d-b554-574e60d7a8ea)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 9ff9a3be-2da6-427c-a42d-0b8f699e4de0)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - a6bb2777-ba78-455a-a252-dcc8f6ac664c)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 7269fe06-4f65-439c-a289-dfcdcc6d230a)(label(\"()\"))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))(model\"()\")))(Secondary((id \ - 695e3712-f2c0-4fb1-98c8-5c4dae7bef90)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 0746c10c-3faa-4fca-875f-34dacf07e128)(content(Whitespace\"\\n\"))))(Secondary((id \ - 0116db5a-a7b9-4a59-8f20-bde869ae5cbf)(content(Whitespace\"\\n\"))))(Secondary((id \ - 22e07ba4-9f84-47c8-ac0e-3cbf64f8a41a)(content(Comment\"# 2. A \ - semantic fold covers a term with a property: \ - #\"))))(Secondary((id \ - 2324126a-fd02-4d46-8dca-f54ecc1f3c53)(content(Whitespace\"\\n\"))))(Secondary((id \ - 3246672d-f43f-48d7-aff8-14b4179ace2a)(content(Comment\"# \ - Click to toggle inferred & synthesized types \ - #\"))))(Secondary((id \ - 83092344-09b3-4027-b669-02cd44e7e379)(content(Whitespace\"\\n\"))))(Secondary((id \ - c2c02009-b47d-4948-8679-da0ed059a6d2)(content(Whitespace\"\\n\"))))(Tile((id \ - 844dec42-9f30-4750-ac38-a51b56142ee3)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 7bb8fe9e-04a0-4ee7-9d36-4a31dfd14c05)(content(Whitespace\" \ - \"))))(Tile((id \ - 1865a79f-c653-44f5-8081-ce2c140f2d80)(label(folds))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - e819a137-478c-4ba7-9085-f4cbc8335c7d)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - d67fb96f-9d3f-4488-b4d9-2a59566cc091)(content(Whitespace\" \ - \"))))(Projector((id \ - 68602b6d-43bb-402b-9a24-bf990bf1c22c)(kind \ - Fold)(syntax(Tile((id \ - 68602b6d-43bb-402b-9a24-bf990bf1c22c)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - d4f45557-5d33-4376-aacb-21c1e9a1f0b4)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - ec4942d0-661e-4086-8ca7-8b076abb5813)(content(Whitespace\" \ - \"))))(Tile((id \ - 1ec7773a-82e6-4fae-aa59-4762e198c98a)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - a89b1307-c340-4055-9a7a-17d319ac6fcd)(content(Whitespace\" \ - \"))))(Tile((id \ - 54bf5314-84f6-4701-bc2a-008fc9485ee2)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children())))))))))(model\"()\")))(Secondary((id \ - c3061b0b-9b43-4426-b14f-2f08c245f300)(content(Whitespace\" \ - \")))))((Secondary((id \ - e614e364-e221-402f-8556-50e8caf3b940)(content(Whitespace\" \ - \"))))(Projector((id \ - 2b8a4030-bf70-47b6-8546-4cbe256e5cae)(kind \ - Info)(syntax(Grout((id \ - 2b8a4030-bf70-47b6-8546-4cbe256e5cae)(shape Convex))))(model \ - Expected)))(Secondary((id \ - b6c9f4cd-120e-471a-8874-24b43aab5df9)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - df00c631-b6c1-42ba-b179-22bfbe078fcd)(content(Whitespace\"\\n\"))))(Secondary((id \ - eb6977fb-0298-4bd6-8106-515bf6274105)(content(Whitespace\"\\n\"))))(Secondary((id \ - a46616c8-f52b-4755-9bf1-e1a324298a9a)(content(Comment\"# \ - Projectors on literal data are called livelits. \ - #\"))))(Secondary((id \ - c507ba49-0c28-49ba-ab08-be00b86f7cfe)(content(Whitespace\"\\n\"))))(Secondary((id \ - 7c56f9a4-5c09-4a53-952d-9261a9f17ec8)(content(Comment\"# \ - Three base types literals use inline views: \ - #\"))))(Secondary((id \ - 5bd865da-3375-478d-9b93-1d4861cb6a22)(content(Whitespace\"\\n\"))))(Secondary((id \ - a58a0cc6-4614-440c-8093-c54b3d3b19c2)(content(Whitespace\"\\n\"))))(Tile((id \ - c2ab8eb6-631f-4976-a9bb-cc92eca07f78)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 6d0b5f74-5e96-4be7-847d-05afbe3955ab)(content(Whitespace\" \ - \"))))(Tile((id \ - 7fd412a0-6516-4d01-bb44-c735d79b4a4b)(label(guard))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 5c956f02-69a9-4dd7-882a-48e8e73f874e)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 9e02c123-880b-4f88-9675-501fcc7f2ed2)(content(Whitespace\" \ - \"))))(Tile((id \ - 0d782687-5bf4-4317-8e23-22bf7f91758e)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - ef93835e-4a99-4b7c-824d-b51cf70ddd60)(content(Whitespace\" \ - \")))))((Secondary((id \ - 13722973-e012-4c13-b9bb-aa8d9a1de6b8)(content(Whitespace\" \ - \"))))(Projector((id \ - efd30209-5976-4ccc-835c-3ea6ae1ab13b)(kind \ - Checkbox)(syntax(Tile((id \ - efd30209-5976-4ccc-835c-3ea6ae1ab13b)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))(model\"()\")))(Secondary((id \ - e5b36263-d7e9-4927-be88-7d4d9c2924b6)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - d24bac73-2ba2-4b2f-853e-50c123946a33)(content(Whitespace\"\\n\"))))(Tile((id \ - 4892097f-1fd3-4a33-abcf-ac4c55757fa6)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 034b65f9-e9a1-4aa0-9626-b600062d3c11)(content(Whitespace\" \ - \"))))(Tile((id \ - 112fc7f9-ce6e-41d2-9774-4722ef92bd06)(label(phase))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 3ec69819-dc39-4266-ba08-a08fb08718e7)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 6842035c-1e3f-48a6-b922-78b770510221)(content(Whitespace\" \ - \"))))(Tile((id \ - 2234dc42-947d-48bd-bae1-b8ce61de2020)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 8e8e1227-03c6-466d-ae1c-1784bbe5ba33)(content(Whitespace\" \ - \")))))((Secondary((id \ - ffc5eb91-0f98-4587-a956-f55e0115fcfa)(content(Whitespace\" \ - \"))))(Projector((id \ - 2b03a748-4f50-474d-adae-814785dc3692)(kind \ - Slider)(syntax(Tile((id \ - 2b03a748-4f50-474d-adae-814785dc3692)(label(44))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))(model\"()\")))(Secondary((id \ - e14500bd-7737-41f9-af43-3e06b6d9d3fd)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 0d9164c7-2310-4ce0-8e74-d22008f2984d)(content(Whitespace\"\\n\"))))(Tile((id \ - cbcc44ec-1ab4-43a8-bd41-1e76afcaa012)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 7d7b5b27-6af3-4ca1-96f2-c1073ead531d)(content(Whitespace\" \ - \"))))(Tile((id \ - a42f4aad-ae62-4024-b157-f44502f3f96c)(label(float))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 9d656f04-dd32-4594-8b63-a579f2774e9c)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 81a8b0cc-0433-4234-938f-f6d16e0cf314)(content(Whitespace\" \ - \"))))(Tile((id \ - b9066610-92a5-42df-97be-b261927b7e0e)(label(Float))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - eff1cce3-2d0f-4d2c-9d12-a4a4763c6c7f)(content(Whitespace\" \ - \")))))((Secondary((id \ - f1df0e58-a7f3-4494-812d-a558c96c0c63)(content(Whitespace\" \ - \"))))(Projector((id \ - 043196ac-dc43-489c-85e8-4bf31d6853c7)(kind \ - SliderF)(syntax(Tile((id \ - 043196ac-dc43-489c-85e8-4bf31d6853c7)(label(79.00))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))(model\"()\")))(Secondary((id \ - d2618e65-e9a8-46c1-b5c4-4d6ee1b25a77)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 47e6a486-67d1-4b89-b005-1aad616e4012)(content(Whitespace\"\\n\"))))(Secondary((id \ - 0ea2f253-0d49-49f7-88fd-e2775aedbab4)(content(Whitespace\"\\n\"))))(Secondary((id \ - d2a60e8e-a397-4fde-9b3d-8de7d44c435b)(content(Comment\"# \ - Inline error decorations (same as for tokens) \ - #\"))))(Secondary((id \ - 89c3bf87-33f1-4bd8-84ac-794962a1b06f)(content(Whitespace\"\\n\"))))(Secondary((id \ - a2b7b074-9f8b-401d-8277-433283b3dd3d)(content(Whitespace\"\\n\"))))(Tile((id \ - 5c88bf9f-3a1c-494b-b9b6-ab25e9f8c748)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - ba3c4c94-a6d3-4e67-8f8c-fe1ef283e42a)(content(Whitespace\" \ - \"))))(Tile((id \ - be3365c0-8223-46e9-bf78-1355cb4b9963)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 2528ecd7-2bca-4088-8642-07347f97dfe6)(label(a))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 0d999b5a-f816-4d8d-93ac-31800d93edac)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Tile((id \ - 3f3703f7-333f-4e29-b21c-377af36cca38)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - d99b5782-c227-4008-9446-c36b0c1b98c9)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 046a4766-e8ec-41f2-b458-01129c599528)(content(Whitespace\" \ - \"))))(Tile((id \ - 58292f14-1e4c-4936-93fe-6780f53b9b48)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - b2844336-ccf3-4198-856e-10181c19b357)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 6ed09a11-ecba-4d05-9ee6-3aa7ddbe7195)(content(Whitespace\" \ - \"))))(Tile((id \ - 8342017f-290a-410a-abeb-99cb7f7c2e12)(label(Float))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - a0c9eae6-7599-4723-9a73-8739578452dd)(content(Whitespace\" \ - \")))))((Secondary((id \ - 520a0dab-48a7-4998-af8a-42121ea7c03b)(content(Whitespace\" \ - \"))))(Projector((id \ - 73403eff-1a14-4a95-aa97-08847365f7f7)(kind \ - Checkbox)(syntax(Tile((id \ - 73403eff-1a14-4a95-aa97-08847365f7f7)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))(model\"()\")))(Tile((id \ - f2ebe0f4-7569-4327-a816-302a359154dd)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - e22631a3-3621-4bc7-8df0-034c3dd83ef0)(content(Whitespace\" \ - \"))))(Projector((id \ - 1b9c2559-9fa5-45e0-8136-45cf1ba5a153)(kind \ - Slider)(syntax(Tile((id \ - 1b9c2559-9fa5-45e0-8136-45cf1ba5a153)(label(28))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))(model\"()\")))(Secondary((id \ - d9c1a18b-7ece-4b06-923d-5f41364ee432)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 5a1ba563-db2a-4084-947e-9086b6e75501)(content(Whitespace\"\\n\"))))(Secondary((id \ - d1e25e85-434f-40d9-b8c8-41ed2e3b5928)(content(Whitespace\"\\n\"))))(Secondary((id \ - 32f12f1f-4721-4be5-9864-b8a852649666)(content(Comment\"# The \ - String base type get a multiline view: #\"))))(Secondary((id \ - b4568a57-45a5-4058-b04c-17693cad93bc)(content(Whitespace\"\\n\"))))(Secondary((id \ - 34e3a828-278f-4b76-9794-a02b9f40ed6e)(content(Whitespace\"\\n\"))))(Tile((id \ - 4757c00d-9783-4b47-806b-872b9728e17c)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 25de0cd1-e0cd-40e2-b298-bba63463e402)(content(Whitespace\" \ - \"))))(Tile((id \ - 007595ce-99f5-4d6b-bc0d-157c343ee846)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 15c0db9c-4ffc-4a65-85bf-1f7663ffb7a6)(content(Whitespace\" \ - \")))))((Secondary((id \ - 7b655a09-dea7-489f-8c63-4bae6cf1ddb5)(content(Whitespace\" \ - \"))))(Projector((id \ - 56d4b3d2-48ae-485f-ac8f-4465bb35110f)(kind \ - TextArea)(syntax(Tile((id \ - 56d4b3d2-48ae-485f-ac8f-4465bb35110f)(label(\"\\\"\\\"\"))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))(model\"()\")))(Secondary((id \ - 39c7d0a1-2b1c-434e-969e-f3a8d480b98c)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 5c35b6c4-e575-4907-975b-94ca40431ea4)(content(Whitespace\"\\n\"))))(Tile((id \ - cce56473-5258-4c91-8036-41fdfa6ba6b1)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 85a1dc46-86fb-4585-aac0-3281491cd83d)(content(Whitespace\" \ - \"))))(Tile((id \ - 5b032c7b-bcb3-4af2-951e-40f7691af336)(label(__))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 86e081ce-920e-4f89-8ef3-0c54d43d6693)(content(Whitespace\" \ - \")))))((Secondary((id \ - 2d5a8239-42f4-4bc0-ae3c-ee19a920124f)(content(Whitespace\" \ - \"))))(Projector((id \ - f0c0f5d9-251b-4e16-a0b9-0ea8cd416b67)(kind \ - TextArea)(syntax(Tile((id \ - f0c0f5d9-251b-4e16-a0b9-0ea8cd416b67)(label(\"\\\"\\\\n\\\"\"))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))(model\"()\")))(Secondary((id \ - 66e6258f-a354-4df0-950a-5416915fbb9c)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 2fe9926a-316d-44ce-b729-6cb5031c1e95)(content(Whitespace\"\\n\"))))(Tile((id \ - 95aeb505-339e-4761-bce3-1f39778bb748)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - ada7f019-d3d4-4b7b-8755-e26aa8256731)(content(Whitespace\" \ - \"))))(Tile((id \ - 4c1360b2-dafe-422e-b3b6-b96ec36e7ac8)(label(___))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 0d894ba4-cf26-403f-9a23-267609fe46f4)(content(Whitespace\" \ - \")))))((Secondary((id \ - 9d4ceb1c-6b22-4a06-a218-633b4a5890dc)(content(Whitespace\" \ - \"))))(Projector((id \ - e7f57a83-ecba-45f4-b7c3-e576c0452edf)(kind \ - TextArea)(syntax(Tile((id \ - e7f57a83-ecba-45f4-b7c3-e576c0452edf)(label(\"\\\"a\\\"\"))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))(model\"()\")))(Secondary((id \ - ed6e4e97-cda5-4f4a-b917-01a2e251030f)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - c0e84d18-89a3-456e-ae6f-853eac5c6e24)(content(Whitespace\"\\n\"))))(Tile((id \ - 0e2a557d-8235-4160-ba5a-137b96581ee7)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - d174d025-b139-4cec-94b8-bf1739822683)(content(Whitespace\" \ - \"))))(Tile((id \ - 51b2e64d-97dd-4136-a322-9567742961c7)(label(____))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 5975f35a-5be5-487c-9c60-684e8196ee5e)(content(Whitespace\" \ - \")))))((Secondary((id \ - 655b0f6d-81ea-4402-b279-6b1ae84beba4)(content(Whitespace\" \ - \"))))(Projector((id \ - aed58904-b2f8-4101-8472-45e7f1f12683)(kind \ - TextArea)(syntax(Tile((id \ - aed58904-b2f8-4101-8472-45e7f1f12683)(label(\"\\\"shift\\\\n\\\"\"))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))(model\"()\")))(Secondary((id \ - 437dcb66-6719-46ca-9822-d869d8e8360c)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 4579fb70-9d19-4a24-abd3-5683a11e35c2)(content(Whitespace\"\\n\"))))(Tile((id \ - c182f185-1c46-4fbf-8554-8a31b842934b)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - a256562d-4dd1-4c1f-8b3a-61488ef8203e)(content(Whitespace\" \ - \"))))(Tile((id \ - 73420d3d-60aa-48f3-af7f-9e0271b218f9)(label(_____))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 09b22cf6-e566-43df-a6ef-9a2b8cc5b124)(content(Whitespace\" \ - \")))))((Secondary((id \ - fc90fed4-a5d3-4d27-9f7a-cd75421abaee)(content(Whitespace\" \ - \"))))(Projector((id \ - 41dbf9b6-0f60-4ab3-bb0e-a5fdc9512d82)(kind \ - TextArea)(syntax(Tile((id \ - 41dbf9b6-0f60-4ab3-bb0e-a5fdc9512d82)(label(\"\\\"\\\\nmalicious\\\"\"))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))(model\"()\")))(Secondary((id \ - e2d4adfe-b2e5-4e21-a5f0-8f8a1384582c)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 941557a3-c4d6-4c32-91c9-8e3ea317335e)(content(Whitespace\"\\n\"))))(Tile((id \ - 1eb285f2-a7d4-4cff-a8a9-79fc4bdc3047)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 92fa5f2d-59f7-4fe5-91d6-a327ba868447)(content(Whitespace\" \ - \"))))(Tile((id \ - e7dd8df0-14df-41f3-8ebb-747d42daf6ce)(label(______))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 50a8159f-2f81-4ac8-bb46-c93c6d1c3a36)(content(Whitespace\" \ - \")))))((Secondary((id \ - c8ba0030-44ed-43ff-915f-1fd4afc25529)(content(Whitespace\" \ - \"))))(Projector((id \ - 7d31fa70-e091-4443-89af-6d6380fe31f0)(kind \ - TextArea)(syntax(Tile((id \ - 7d31fa70-e091-4443-89af-6d6380fe31f0)(label(\"\\\"a\\\\n \ - shift\\\\n malicious\\\"\"))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))(model\"()\")))(Secondary((id \ - b30e104e-26d2-48e5-acb1-8b1857c4f7ec)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 6d752567-c069-4bc2-aa74-ab77e213936e)(content(Whitespace\"\\n\"))))(Secondary((id \ - 71cd9b4c-db26-4ddf-888d-affbc48abbe9)(content(Whitespace\"\\n\"))))(Secondary((id \ - 934e0d04-e4c9-4442-99c1-3ce6a26cc38f)(content(Comment\"# \ - Multiline error decorations #\"))))(Secondary((id \ - 1a2d4d43-52ba-4bc2-a92d-72000df5929c)(content(Whitespace\"\\n\"))))(Secondary((id \ - 62f74d6d-efb5-47a4-9512-79ed238f03ae)(content(Whitespace\"\\n\"))))(Tile((id \ - 28fef6b0-7141-4ca5-a327-811d58ee2058)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 8edbca7a-12c5-4751-a236-c6c59f036b4c)(content(Whitespace\" \ - \"))))(Tile((id \ - 96dabc0d-1364-4af0-b557-a01c20442170)(label(box))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 952e73a0-52ca-4a10-8d5f-11fc0f6e25db)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - fcd699c8-85dd-4eaf-98b8-cf8d1749218a)(content(Whitespace\" \ - \"))))(Tile((id \ - 9153ca41-34c1-4033-8ea0-07d786aac3b7)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 663d4b08-149b-4a22-a648-28ee7fbaf563)(content(Whitespace\" \ - \")))))((Secondary((id \ - 98446bd1-f187-49a0-88b6-675489b23464)(content(Whitespace\" \ - \"))))(Projector((id \ - c5d4d591-d15a-4c66-88f0-7a88f3a6ce78)(kind \ - TextArea)(syntax(Tile((id \ - c5d4d591-d15a-4c66-88f0-7a88f3a6ce78)(label(\"\\\"\\\\nmalicious\\\"\"))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))(model\"()\")))(Secondary((id \ - 70a41503-246e-4418-b534-83cdbb15b99f)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 3696b18f-b1e7-4e15-9dbd-f56d1aa7b8d9)(content(Whitespace\"\\n\"))))(Secondary((id \ - 590c1453-d66d-4f00-a5de-8b3f5260eac6)(content(Whitespace\"\\n\"))))(Secondary((id \ - ef7baae7-4b97-4e0a-a47e-46016f4081e5)(content(Comment\"# \ - ERRATA: \ - #\"))))(Secondary((id \ - 21fb30f2-004b-4a3a-a1dd-3b91cc0b4e8f)(content(Whitespace\"\\n\"))))(Secondary((id \ - ff763ee5-f5a4-4e0f-a850-7b9a91a5d58b)(content(Comment\"# The \ - bottom toggle can also be used to remove \ - #\"))))(Secondary((id \ - 19b420fc-4ede-4dcd-80d5-b81c38f14ad6)(content(Whitespace\"\\n\"))))(Secondary((id \ - b6babb47-898f-4849-9c28-5b743c812dd0)(content(Comment\"# \ - projectors. Currently only bidelmited terms can \ - #\"))))(Secondary((id \ - cefebeb8-fb83-4c6e-a7fa-84a49405466c)(content(Whitespace\"\\n\"))))(Secondary((id \ - bf02836d-ff10-4a96-942a-453c62a31581)(content(Comment\"# \ - projected, so some may have to be parenthesized. \ - #\"))))(Secondary((id \ - bd3e1e37-6d64-4f8b-9ca8-ffbdc7764025)(content(Whitespace\"\\n\"))))(Secondary((id \ - c2918a56-dd9e-4f8a-a4cd-b2b23942beb2)(content(Comment\"# \ - Projectors are persistent across sessions, but \ - #\"))))(Secondary((id \ - 080de242-c6d2-40ca-8fa9-f468ba2a1d38)(content(Whitespace\"\\n\"))))(Secondary((id \ - 774c7448-85eb-4a6a-a386-85d9b22afaf3)(content(Comment\"# \ - currently are lost on cut/copy. Both these \ - #\"))))(Secondary((id \ - 76a6c462-75ad-4993-b3df-7edb908e4ce7)(content(Whitespace\"\\n\"))))(Secondary((id \ - 1fd463eb-40fa-45a3-a0ef-2914f7eef9dc)(content(Comment\"# \ - restrictions will be removed in a future update. \ - #\"))))(Secondary((id \ - 0f713bb7-d313-4787-984a-a2eaa053543e)(content(Whitespace\"\\n\"))))(Secondary((id \ - e97ef593-1455-45de-836a-da7c5d454188)(content(Whitespace\"\\n\"))))(Secondary((id \ - 756174a2-3850-4d3c-8446-6c258a43a511)(content(Comment\"# \ - Projectors playground #\"))))(Secondary((id \ - b7272053-6d1b-4720-90bd-8d6ec1cebe37)(content(Whitespace\"\\n\"))))(Secondary((id \ - f30d8335-627f-4c75-80ee-5e4cd5fd8f03)(content(Whitespace\"\\n\"))))(Tile((id \ - 03bbbeb6-15ad-4496-8d90-07207ebe0b32)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - ffc0838c-d5c7-41c9-b38a-0a7a7b9e9d22)(content(Whitespace\" \ - \"))))(Projector((id \ - ab0e5a46-5dc9-41fc-a3eb-fa7092c96743)(kind \ - Checkbox)(syntax(Tile((id \ - ab0e5a46-5dc9-41fc-a3eb-fa7092c96743)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))(model\"()\")))(Secondary((id \ - 4881d63e-4bbf-4886-b66d-e3cdadc4dcd3)(content(Whitespace\" \ - \"))))(Tile((id \ - 4672dc0c-7aa8-418b-aba0-1ddd7074d933)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 51194cca-2e77-473d-b3e3-4254ea244aaf)(content(Whitespace\" \ - \"))))(Projector((id \ - 896fd2a0-1a52-4682-a1a8-339f35598512)(kind \ - Slider)(syntax(Tile((id \ - 896fd2a0-1a52-4682-a1a8-339f35598512)(label(23))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))(model\"()\")))(Secondary((id \ - 3894d54d-16fc-4c23-9c5c-b79e283a0f75)(content(Whitespace\" \ - \"))))(Tile((id \ - cc5b00d9-271e-41c6-9240-5efd33ec90eb)(label(<))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - e54fbf76-4619-4105-ac16-219f9a814f31)(content(Whitespace\" \ - \"))))(Projector((id \ - e558a2ae-0f7c-4b18-8c14-0a74a46d99f3)(kind \ - Fold)(syntax(Tile((id \ - e558a2ae-0f7c-4b18-8c14-0a74a46d99f3)(label(int_of_float))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))(model\"()\")))(Tile((id \ - 61f8a887-0683-4244-be2d-9019dab7ca88)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Projector((id \ - c3f9b779-70cf-4804-a3fc-e22e6d1f4249)(kind \ - SliderF)(syntax(Tile((id \ - c3f9b779-70cf-4804-a3fc-e22e6d1f4249)(label(51.00))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))(model\"()\"))))))))(Secondary((id \ - c0ff7f58-0399-47d4-b09f-514ba8ce40cb)(content(Whitespace\" \ - \"))))(Secondary((id \ - dcf2be48-52ad-4e0b-ad07-9b9f68bc9976)(content(Whitespace\" \ - \"))))(Secondary((id \ - 413f4b3f-f014-4df4-9ce9-014b91e05c00)(content(Whitespace\" \ - \"))))(Secondary((id \ - 8022f14b-5c0a-4049-8c3c-27edb94feb58)(content(Whitespace\"\\n\")))))((Secondary((id \ - 3525db18-faf2-4ec5-ad70-0ac6fdd50fd4)(content(Whitespace\" \ - \"))))(Tile((id \ - e5c608e3-25ea-45ff-8a7a-fad0b8dc7a00)(label(______))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 0db5d3e5-2b7d-45d2-b95b-61d98714837a)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 39204644-e773-4467-851c-fb459c28a6ce)(content(Whitespace\" \ - \"))))(Tile((id \ - 7e1ddfda-aec1-4a60-819f-ae130b1f8bde)(label(\"\\\"its: \ - \\\"\"))(mold((out Exp)(in_())(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - d2f4aa93-bb34-4a08-80fd-8d190108e9b1)(content(Whitespace\" \ - \"))))(Tile((id \ - 1678ec8b-2af6-4026-8a41-6c698dd6f4e7)(label(++))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 6))(sort \ - Exp))((shape(Concave 6))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 781aa58a-70d0-4c88-864d-ac9970391b53)(content(Whitespace\" \ - \"))))(Tile((id \ - 671dc1bb-b869-4ed2-b37c-76cbfa69df25)(label(box))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))(ancestors())))(caret \ - Outer))"; - backup_text = - "# PROJECTORS #\n\n\ - # Some kinds of syntax have dedicated GUIs. #\n\ - # The menu at the bottom left shows which GUIs #\n\ - # (if any) are applicable to the current term #\n\ - # indicated by the caret. #\n\n\ - # Fold projectors cover terms with abstractions. #\n\ - # 1. A simple fold roles up any term, replacing #\n\ - # it with ... until it is expanded again. #\n\n\ - let fold = in\n\n\ - # 2. A semantic fold covers a term with a property: #\n\ - # Click to toggle inferred & synthesized types #\n\n\ - let folds: = in\n\n\ - # Projectors on literal data are called livelits. #\n\ - # Three base types literals use inline views: #\n\n\ - let guard: Bool = in\n\ - let phase: Int = in\n\ - let float: Float = in\n\n\ - # Inline error decorations (same as for tokens) #\n\n\ - let (a:Int, f: Float) = , in\n\n\ - # The String base type get a multiline view: #\n\n\ - let _ = in\n\ - let __ = in\n\ - let ___ = in\n\ - let ____ = in\n\ - let _____ = in\n\ - let ______ = in\n\n\ - # Multiline error decorations #\n\n\ - let box: Int = in\n\n\ - # ERRATA: #\n\ - # The bottom toggle can also be used to remove #\n\ - # projectors. Currently only bidelmited terms can #\n\ - # projected, so some may have to be parenthesized. #\n\ - # Projectors are persistent across sessions, but #\n\ - # currently are lost on cut/copy. Both these #\n\ - # restrictions will be removed in a future update. #\n\n\ - # Projectors playground #\n\n\ - if && < () \n\ - then ______ else \"its: \" ++ box"; + title = ""; + description = ""; + hidden_tests = + { + tests = + { + zipper = + "((selection((focus Left)(content())(mode \ + Normal)))(backpack())(relatives((siblings(()((Secondary((id \ + c02465e1-d580-455a-aa60-b6aeb9216493)(content(Comment\"# \ + Hazel Language Quick Reference #\"))))(Secondary((id \ + eac6ad58-e3bb-434f-9db0-2e8fd6072393)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 8a5b7f9a-b19d-4d34-9d0c-c880eebb5d39)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 33151d9c-2446-45f8-a398-c06e4328a468)(content(Comment\"# \ + Empty holes stand for missing expressions, patterns, \ + or types #\"))))(Secondary((id \ + c8cc13c9-440e-4c52-a8ef-429a39de48d6)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 2fffac84-5d83-47ae-b058-6d237944ec5f)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 17))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + ca102bc0-c98e-4779-a3d0-29482db11528)(content(Whitespace\" \ + \"))))(Tile((id \ + 23d28c28-f709-48fd-80a2-91a1261c65a9)(label(empty_hole))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + a19670da-602a-43b1-98dc-be30daf8027d)(content(Whitespace\" \ + \")))))((Secondary((id \ + 9be33140-aae6-45d2-b3af-d7236ae2fa80)(content(Whitespace\" \ + \"))))(Grout((id \ + 10150851-d9f1-4c1b-88c1-6eb9cc5ef8b3)(shape \ + Convex)))(Secondary((id \ + 2826cf66-55bb-4b97-8e94-d11a05b82536)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + f1ca0924-2102-4d29-a917-84ed940bed3a)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + f8475082-76c2-4eb8-a3fb-647d9045149b)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 23d2e2a0-ff71-4ff1-b0a7-97f7ca53bfde)(content(Comment\"# \ + Integers #\"))))(Secondary((id \ + c0b7cecc-18fa-4e0b-a69f-1f1fd0f4bc77)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 1a5bb703-4fc2-4a12-956f-28017ffd7729)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 17))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 6fb983fb-2e59-46ca-968c-ca1e8977e0eb)(content(Whitespace\" \ + \"))))(Tile((id \ + acbb1a16-353e-40fc-b2cd-1e1e5fbf323d)(label(int_lits))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + cd520e4a-49ec-4ba0-aefa-29ea494ce3f1)(content(Whitespace\" \ + \"))))(Tile((id \ + aad44b6d-55b1-4e71-9a3b-0dd9a5398b50)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 58477ce1-301d-412b-b1f7-1ac9f7aba4bb)(content(Whitespace\" \ + \"))))(Tile((id \ + ee9010f8-c67e-43e5-965b-e4532e62cbdc)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 0a73b46a-1d11-402c-b8d0-f9fec6af22ea)(content(Whitespace\" \ + \")))))((Secondary((id \ + 586e8fad-120e-4a52-929e-85b9d8f28b1e)(content(Whitespace\" \ + \"))))(Tile((id \ + 062a379e-884f-422c-aa61-721b97b3e20a)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 425a6af2-5fc0-47ea-96f9-b5f92c2c0957)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + d1e0b19c-3d09-4eee-970c-3b50fea7d15f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + aba91b6f-c7b4-4dd4-a962-0954aeb11b3a)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 17))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 5942a084-27cb-41c8-8048-c0c4c6fd2532)(content(Whitespace\" \ + \"))))(Tile((id \ + 753c2bc1-4dd7-413d-b35d-754a16eb667e)(label(negation))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 1d10b712-3445-44e6-ab94-6502ef325682)(content(Whitespace\" \ + \")))))((Secondary((id \ + 7ae5f68d-af34-4e15-8764-257a5a4d685f)(content(Whitespace\" \ + \"))))(Tile((id \ + 91a73ee8-d7c2-4390-af1f-5e8b8f74c4ab)(label(-))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort \ + Exp))((shape(Concave 2))(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 52032473-7237-4de7-aaef-1572d21778d4)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 9fd2d207-8aef-4b51-985e-6b4b0f85cd50)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 35e9fd97-0dfa-4760-94f4-54a56efc7bc6)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 994e8699-eae6-4f4a-89e4-e8ad228936d2)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 17))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + a90dbe49-f009-4b7b-9c2a-1c67ebfa886f)(content(Whitespace\" \ + \"))))(Tile((id \ + fe5e28ce-5530-4c62-a241-5d8069f21e4e)(label(arithmetic))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + d5090a02-9928-482a-948f-1b616daa5209)(content(Whitespace\" \ + \")))))((Secondary((id \ + ef75cb3f-3312-4415-92ff-8a8b8cbb4912)(content(Whitespace\" \ + \"))))(Tile((id \ + 688e886f-8b0d-4a1d-b344-f53a8d213f33)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 696aa524-06f5-4717-b164-62e42ae4b9bf)(label(*))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 4))(sort \ + Exp))((shape(Concave 4))(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + fca66189-a9ff-441f-a9ff-b9a343fa1ef5)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + cd9d89ee-03af-481e-8578-4ada75839252)(content(Whitespace\" \ + \"))))(Tile((id \ + 2baadfe4-7246-4cf1-81a9-3185efc1f88a)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 34ef2209-3967-4fd8-bdf8-1d1d4ea84fb6)(content(Whitespace\" \ + \"))))(Tile((id \ + 772bfc49-b7cc-49de-b663-5c1ad40e7cd7)(label(8))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + f3898cfd-cbc8-45c7-92ad-e5324a4fed11)(label(/))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 4))(sort \ + Exp))((shape(Concave 4))(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 37791357-7f10-4c88-a855-cf12f41d6a2e)(label(4))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 79f7ba83-5c4e-4cf1-9a37-730a65fb8efa)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 233fa61a-b3a1-44d1-ac9d-468a4da6bc52)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 28c99e4c-2557-4b6a-9148-6dc1ba8ccbbd)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 17))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 3fa533d1-50c5-4996-b74d-deef2a46df2f)(content(Whitespace\" \ + \"))))(Tile((id \ + 3ad542ed-202c-4fde-aa12-d66033759eac)(label(int_comparison))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + a59ad00c-eca6-4f06-bc76-8502bc1f09cd)(content(Whitespace\" \ + \")))))((Secondary((id \ + e545925d-3d0d-4ec0-93b5-23ca30e74756)(content(Whitespace\" \ + \"))))(Tile((id \ + ca563165-e29e-43f4-9be9-194fa465c401)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 1305e5ea-5a8d-4d44-8f20-3e61da4b9ce7)(label(10))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + b9ef2359-069b-414e-8799-eb98bc569f00)(content(Whitespace\" \ + \"))))(Tile((id \ + 0175b8c1-ec18-4b46-9155-bf421c7f2b6d)(label(==))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 8))(sort \ + Exp))((shape(Concave 8))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + e71af419-adc4-45be-b7dc-0e7dabc8bb7a)(content(Whitespace\" \ + \"))))(Tile((id \ + ca973cd7-e43d-473a-9d3f-575739c51abc)(label(10))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 5497f005-b6a0-41c4-802b-a270309d38bb)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + ee4f26c1-cb5f-4576-a06e-777c650fb863)(content(Whitespace\" \ + \"))))(Tile((id \ + dfa9b54e-06b1-411c-bb4d-cc17c9c15c42)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 98a978e5-494a-45d6-a857-9f8a1120cac7)(content(Whitespace\" \ + \"))))(Tile((id \ + e47da472-40dc-4850-b65d-c0ecac9b7cbb)(label(<))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 8))(sort \ + Exp))((shape(Concave 8))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 1d349a92-ca96-49eb-9e9a-a69c0776b1df)(content(Whitespace\" \ + \"))))(Tile((id \ + 477c7f95-29af-4c05-9c3c-9158c1de4fda)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + c8480c5d-ff1d-43ab-ae22-43754f3a7deb)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 269b997c-d282-41e5-8dab-d322d6d58255)(content(Whitespace\" \ + \"))))(Tile((id \ + 0d107bec-b49c-41b9-81ab-e15c5742796b)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 16314a7a-c788-43dc-8f24-2bbbbc00aed1)(content(Whitespace\" \ + \"))))(Tile((id \ + 289a01fc-7255-4354-b855-42270b1af4d4)(label(<=))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 8))(sort \ + Exp))((shape(Concave 8))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 07533539-c3a0-460b-a50a-cfacd93b624d)(content(Whitespace\" \ + \"))))(Tile((id \ + d451038b-964a-4f8c-8535-2ff829bf5e8f)(label(3))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + dcf1dbdc-44c6-4b1c-a7ca-a3a6fed31a92)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 9a1479e1-d046-42ae-b275-121dcb765884)(content(Whitespace\" \ + \"))))(Tile((id \ + 9fc4fae9-20d6-4a61-8da4-5336cb74d4e2)(label(3))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 1afdbff4-96e9-42e7-876d-5051adc8fa27)(content(Whitespace\" \ + \"))))(Tile((id \ + d57fd5e4-cbdd-47c9-ab11-527b431d5bf3)(label(>))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 8))(sort \ + Exp))((shape(Concave 8))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 39eb1a82-8220-442d-85a8-ffac84f969ad)(content(Whitespace\" \ + \"))))(Tile((id \ + 089c2640-84cf-436f-95b9-d54450d8b6d4)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + ce10a8eb-da2c-40eb-aeb4-28663f03871f)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + cedc559c-d11a-4f5a-bfa0-bade4341794b)(content(Whitespace\" \ + \"))))(Tile((id \ + 8bed2e43-0314-4f22-acc3-acc4d3e8ffb4)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 29d534fa-5a4a-43ae-8f66-3a185856c570)(content(Whitespace\" \ + \"))))(Tile((id \ + 257e50c9-e66c-4246-9e28-3006b1ebc81b)(label(>=))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 8))(sort \ + Exp))((shape(Concave 8))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 559b5241-a336-4121-823b-1d7dcf167fa5)(content(Whitespace\" \ + \"))))(Tile((id \ + 8c70323e-6c0d-4073-a23d-0d3a2d8fdcdc)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 8cecb774-93ed-4a93-8c1c-98ce749d0554)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 13fdc7ae-e70e-4da7-b6a2-9666dbaca4d1)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + f73cb689-d184-4dde-9be8-3a0f61d1d46b)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 7b53cf5e-1184-49ed-9d7c-4726c8e0b117)(content(Comment\"# \ + Floating Point Numbers #\"))))(Secondary((id \ + e12f8c8d-b356-463e-9d35-3f289845d9d4)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 10aa8ea5-d891-4d07-97ae-684f3cc0989e)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 17))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 8021f30a-9d89-44ee-8ffd-b1d995c1d518)(content(Whitespace\" \ + \"))))(Tile((id \ + f7b293e6-340a-4681-b019-c5124e45c0ff)(label(float_lits))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 2f6ed6ae-11a1-4e72-839d-12ca19cd93d5)(content(Whitespace\" \ + \"))))(Tile((id \ + e432a2f9-7792-4f40-9493-eeab3c60da34)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 3ce58267-880a-4f6f-b440-68864aa1efb8)(content(Whitespace\" \ + \"))))(Tile((id \ + 8055bb96-c5a4-421c-bcf2-ccd8c3bd4173)(label(Float))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 0bec24d1-5e30-478b-bcef-3ae4772e8a8b)(content(Whitespace\" \ + \")))))((Secondary((id \ + e49338a9-9ae8-41d9-b647-51bcfc609b03)(content(Whitespace\" \ + \"))))(Tile((id \ + 4c9483f1-3795-4998-aab9-c3511077b5e6)(label(1.5))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + ceefb970-0cda-476b-928a-c7d6cda446b5)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + fc5cd16d-6e3c-4a63-97db-b428ae944398)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + b8131072-fa39-467c-b055-ec955668d644)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 17))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 7a9ce07b-0aaf-4199-93f1-8e736cc615a9)(content(Whitespace\" \ + \"))))(Tile((id \ + ed296500-3bbe-479a-ba87-1e336133d935)(label(float_artih))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 5d42b5fb-391d-4afb-9d9a-9584ab3c05da)(content(Whitespace\" \ + \")))))((Secondary((id \ + 3659a1fd-5038-4106-851f-99f679d91e4e)(content(Whitespace\" \ + \"))))(Tile((id \ + 3e918251-1956-47e4-b049-5ad8ccc7a2f7)(label(1.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 97dfebff-d305-433e-ad00-96a6efc718b8)(content(Whitespace\" \ + \"))))(Tile((id \ + d5b59097-6064-4f40-9a09-f3d44cd5215b)(label(*.))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 4))(sort \ + Exp))((shape(Concave 4))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + ca8d362f-94a6-4df6-a803-5f248e528219)(content(Whitespace\" \ + \"))))(Tile((id \ + 7d99d9a9-d2cf-422b-891d-616f124b2112)(label(2.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 377e3e95-982f-4470-b6dd-c5e8132e5e5d)(content(Whitespace\" \ + \"))))(Tile((id \ + b3ce0733-8039-4f1a-b19c-b2e643a6f4ef)(label(+.))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + be550181-cebb-4e2c-88f4-56e9ac3f8d06)(content(Whitespace\" \ + \"))))(Tile((id \ + 9720963b-38c5-44f8-ade5-28d3b93ac28e)(label(8.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 79327816-38f3-4b35-9c61-64d67c0dc8d8)(content(Whitespace\" \ + \"))))(Tile((id \ + 87e5293d-5940-49d8-b964-46507d81b79f)(label(/.))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 4))(sort \ + Exp))((shape(Concave 4))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a9072680-b79c-4a15-a3ef-3448e283709d)(content(Whitespace\" \ + \"))))(Tile((id \ + 2af4956c-32e2-434e-8b23-9ff35fcbb97b)(label(4.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 7741c9e4-a581-44bf-b1f3-196699159b85)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + b1bcbfbb-4588-45f3-b5c1-6e622a6c22f7)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 13c0ef1d-f81e-4a02-aa26-e2c91e94ee5a)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 17))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 9fc6b971-83c4-4ee5-8432-112dacb86695)(content(Whitespace\" \ + \"))))(Tile((id \ + 5bc77122-3aef-4f4e-89d3-01002a1696ed)(label(float_comparison))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 06f39d6b-8ef0-4e11-9a45-369cdacf2998)(content(Whitespace\" \ + \")))))((Secondary((id \ + 46124981-91e7-4f5e-ae47-7fc33e3e4858)(content(Whitespace\" \ + \"))))(Tile((id \ + 6ea34e57-cb97-4450-9d60-df6a6524e2af)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 4545c34b-9969-4077-96b2-3898dba2acad)(label(10.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + dcf22383-1322-49f0-9596-48309d4bb77b)(content(Whitespace\" \ + \"))))(Tile((id \ + cbbf25af-750f-4abb-b1f6-f521816cb828)(label(==.))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 8))(sort \ + Exp))((shape(Concave 8))(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 91f1f6e6-c035-4020-a9d2-8c2f419c7338)(label(10.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + caeb3fc4-872c-4dcc-83ac-803b54a46463)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + cfd3c907-699d-48d2-a60f-bad9adebba48)(content(Whitespace\" \ + \"))))(Tile((id \ + f5bb85ce-27c0-4351-a71c-51a88ece8ca1)(label(1.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 51283b8c-c360-4468-a559-45cbe3454d72)(content(Whitespace\" \ + \"))))(Tile((id \ + 8da7e8a9-a288-45db-9dd8-aead3ec13f8d)(label(<.))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 8))(sort \ + Exp))((shape(Concave 8))(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 10048c15-f857-4c9b-a89c-509462d60f7c)(label(2.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 525c7176-b079-467c-9aaa-c8dfa4d5fc28)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + ccb3dbb2-65af-45c6-a35a-dbdb2de55eb0)(content(Whitespace\" \ + \"))))(Tile((id \ + 882890e3-6922-4f01-adb2-3849a28c6068)(label(2.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 0d952e96-5ece-4b36-bbf0-23fb298da825)(content(Whitespace\" \ + \"))))(Tile((id \ + edb705d3-f107-42cb-ab2e-27b45622c9a3)(label(<=.))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 8))(sort \ + Exp))((shape(Concave 8))(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + d845e2bd-f60b-4a23-84cb-d9557b04db16)(label(3.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 6c24749c-9a0d-46d7-b509-290abf75f7c6)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 9d2432cd-b491-457d-8d3a-ead7face4508)(content(Whitespace\" \ + \"))))(Tile((id \ + 68b23073-d57f-4327-bb1e-66a2c4a98c01)(label(3.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 944dfcc5-247e-42ee-9a23-be664c184d68)(content(Whitespace\" \ + \"))))(Tile((id \ + f32aa2cb-9347-4346-ac24-4c432d04de80)(label(>.))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 8))(sort \ + Exp))((shape(Concave 8))(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 4438a2e6-cbcc-435b-ab93-71426659fb2d)(label(2.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 915dae41-1a85-4e35-9f83-837aefb453fa)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + e5370413-5b1e-4ec5-856a-635c8b100507)(content(Whitespace\" \ + \"))))(Tile((id \ + a2e396ff-220b-4fad-af54-5f40174f68c8)(label(2.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 1e3874d4-1503-4342-aa07-2c1f6c40798c)(content(Whitespace\" \ + \"))))(Tile((id \ + 517b75ee-a1bf-46f7-8c0b-1bb226a37c27)(label(>=.))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 8))(sort \ + Exp))((shape(Concave 8))(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + c2729f80-24a7-4f7c-bc80-deccb52dabc0)(label(1.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 6c5b7ee8-f5bc-4286-bb44-b2fd976670d7)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + dd1eda4c-8e3f-481e-a7f7-b4df78bd7f0e)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 48792ba6-48c5-4e97-a8e7-5ad2456a4012)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 4701234f-7f8b-4288-a974-74493d1a47aa)(content(Comment\"# \ + Booleans #\"))))(Secondary((id \ + b29f594f-41ca-42bf-beae-4c366fc6db0d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + b89ffb32-c3e9-4d29-adeb-3403b1e7c886)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 17))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + d2218c04-1f82-4248-a3bf-94f5563410f3)(content(Whitespace\" \ + \"))))(Tile((id \ + 06ebaa5e-ac57-4ee9-b32d-68006232ac5f)(label(booleans))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + a9eabb41-480f-4fd8-b5ce-a2b8132102aa)(content(Whitespace\" \ + \"))))(Tile((id \ + 11525367-baeb-4cb8-b43c-ec0dee35fc86)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + bc65dad5-9674-4e00-8b83-5d53c42f3f1d)(content(Whitespace\" \ + \"))))(Tile((id \ + 0017b84a-a249-4b4b-a9c6-ef0e21976328)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + bf457a18-2af1-4715-a4df-7481611d0eb5)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 2632699b-a021-4bc3-a548-16d4c315fba7)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 6e417997-cea7-483e-92ed-d3e875bd3c3d)(content(Whitespace\" \ + \"))))(Tile((id \ + 17c1c64a-dccb-4902-bf6a-1a2849ce66df)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 7f2b15c2-2a1d-4cef-9313-60fb2a87cdd1)(content(Whitespace\" \ + \")))))((Secondary((id \ + f39ac63f-d80e-4669-bf62-fd97661c0065)(content(Whitespace\" \ + \"))))(Tile((id \ + 5389dc89-11fe-4bd4-bfce-50920c3c0310)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + c8ab23c2-f2ad-43c0-ba6b-2ca69043a1f0)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 78255f29-5055-4f97-9433-0c7b0a4c6d2e)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 3a58111e-8c4f-4516-90b0-999ba0db4cfa)(content(Whitespace\" \ + \"))))(Tile((id \ + b9dcd9c2-f7fe-48c3-a94e-1849355867e5)(label(false))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 13ddd06c-da67-4e37-8486-85ddeeb8a98b)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + a09e6f3d-bd02-416b-9948-6ab04eb17da1)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 06ae542d-6ca1-4225-9e6c-d8cd47fea13d)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 17))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 5ff510c7-a2e9-4b2d-aea8-4bbdd5622502)(content(Whitespace\" \ + \"))))(Tile((id \ + 25019522-ee88-47bb-98dc-21be74263f85)(label(conditionals))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + d186c457-dfa8-49bd-a338-7cd988da6112)(content(Whitespace\" \ + \")))))((Secondary((id \ + a39c092f-c169-43a0-b94d-7fe57db457da)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + ba62a4d9-9cd3-46f4-8add-960015a5b252)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 17))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + bb015ac9-1e95-47e1-b42c-dbf3babd1fb2)(content(Whitespace\" \ + \"))))(Tile((id \ + 75aa8a68-196d-4751-a3f3-28526299fad2)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + e92cd801-e46f-491c-90f9-61aa20887bdb)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + b220a3ab-eda0-4504-bd78-c8aa5a72c2da)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + de75ac47-32b5-466a-a94f-73665f45f35f)(content(Whitespace\" \ + \"))))(Tile((id \ + 55c42244-25d6-4091-9a4b-5f964b6f7f7f)(label(y))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + a8c611d6-6b7e-4741-9aff-c6f4966ef5d7)(content(Whitespace\" \ + \")))))((Secondary((id \ + 1115e119-2ff6-4b0f-b5f4-a6489526c495)(content(Whitespace\" \ + \"))))(Tile((id \ + d5b01572-55be-4c94-af8a-59e2cc585251)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + e1e9c08a-7fc0-4039-ad1f-f70055edf2f1)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 1350068b-2330-4bdc-bcee-27854fc5b571)(content(Whitespace\" \ + \"))))(Tile((id \ + 38855989-1b25-413c-b04e-dc83ab9f7412)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a7c39806-2f69-4b06-bd77-743bdd88df3d)(content(Whitespace\" \ + \"))))(Tile((id \ + a604aac2-13bf-4599-94ee-f03612813c7a)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + a9b89e7c-7281-4b13-b482-479e2e604067)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + dfee5ecb-7620-42dc-9521-7db3a7e87a90)(content(Whitespace\" \ + \"))))(Tile((id \ + dfe1ed00-63ff-49a9-9768-5e484279aee4)(label(3))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 165809d9-9678-486d-a22e-b11f342f3ef3)(content(Whitespace\" \ + \"))))(Tile((id \ + db753586-baa7-4352-9397-9e5da9231c8d)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 481882af-2b8c-4841-b809-5f2b37790bea)(content(Whitespace\" \ + \"))))(Tile((id \ + d9d12b04-5369-4361-94e2-6bee82e2a455)(label(3))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 37ddd62d-1e25-4f9b-9295-4546f4c6e3d1)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + f08346b3-1795-4f8d-85b1-2d956b4780ae)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 859845dc-92ed-4678-b675-6eb12df4fb73)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 229d1f1b-c9ba-4442-9d3a-de760c44278b)(content(Whitespace\" \ + \"))))(Tile((id \ + 970099b8-4c8b-4899-8116-1650ef88e17f)(label(y))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 712518bb-722d-4c72-ad7f-d5fc8f25d36f)(content(Whitespace\" \ + \"))))(Tile((id \ + e762e87d-b774-4252-a1ab-c34bea3b6b15)(label(>))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 8))(sort \ + Exp))((shape(Concave 8))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f3bb6def-0e7b-4c50-8b25-69bcb18bf3c6)(content(Whitespace\" \ + \"))))(Tile((id \ + 19dbccf6-f10a-4ab5-a593-ae02caead949)(label(x))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 5c33a7b6-45c7-4c06-b2ba-2b911215afb9)(content(Whitespace\" \ + \")))))((Secondary((id \ + b09f12cc-5e07-4817-9453-eda2f17d0de8)(content(Whitespace\" \ + \"))))(Tile((id \ + e34a2a9e-3a4b-493e-842b-6660b9f9660f)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 4698ffa7-5be7-4a30-bafc-9173a684345d)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ + fa20e15d-c1c7-4a2a-b289-4e2e63224c51)(content(Whitespace\" \ + \"))))(Tile((id \ + 769479d5-4a41-4fb3-b311-9694b67ecdac)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + e5771d07-cff9-438b-b15a-bfac4e7fb62a)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ + 6bebf9b7-d402-42d1-832e-d9655757744e)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + c81e9cc0-f7ee-4f8a-a423-ccb229c01d90)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 994e1938-e562-4bfe-ac53-ee9870827b80)(content(Comment\"# \ + Tuples #\"))))(Secondary((id \ + bd4094ad-28ee-45ac-b9a6-f41706a255b6)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 5d821910-ebb1-42da-a79c-eee1368d6e03)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 17))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 82843ab0-2415-4a11-bc88-1b633c52f922)(content(Whitespace\" \ + \"))))(Tile((id \ + c93c847c-7ab8-494c-a6e9-422662c7e8d4)(label(tuples))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 9eaf76ed-8964-409d-b6af-3b95c6e5dfe1)(content(Whitespace\" \ + \"))))(Tile((id \ + cd39681a-c09e-482d-8097-b460aba0d9b6)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 5be55fff-5bcb-4702-a9f4-b7268e24df06)(content(Whitespace\" \ + \"))))(Tile((id \ + d321c385-1d0a-4b0c-aaa3-08219a0f753e)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + b3335759-3082-40c4-96a7-0bb91ec4b5a5)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 078e0901-8966-4b75-8c49-a4b7538e3c52)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 2f09e9ed-8d04-4886-9132-62f7016141ee)(content(Whitespace\" \ + \"))))(Tile((id \ + e840f2c5-8cf7-4c2a-8205-6721b3fdcaf8)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 9a0d92f9-ce88-4739-9542-96da69513ed4)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 84d5437c-c902-4e56-a124-15eb74f4186a)(content(Whitespace\" \ + \"))))(Tile((id \ + 0af23744-9cab-4df9-81d9-6215876eedc3)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + f0ead96e-cb4c-4764-99fa-796245a2abca)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + efd7ba45-af47-47e7-880e-3a64aeb9eb04)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + b01501a6-df97-4345-bc78-4f0315501c31)(content(Whitespace\" \ + \"))))(Tile((id \ + b9b464cd-b0e1-476c-8b2c-6c633e1e483a)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 8ac7fc3f-a8b1-43fc-824c-4b6c18070fee)(content(Whitespace\" \ + \")))))((Secondary((id \ + a575cd4e-ecea-4688-b661-02d63708740c)(content(Whitespace\" \ + \"))))(Tile((id \ + c7f190a0-f72b-4072-8eb1-8b5c77540988)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 9142de4e-e8df-44a9-8fca-6d04fc13158c)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 166ef475-8dff-4bb3-b595-1e84944625ab)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + fe4aeee1-32e1-4274-bf64-103e3491570c)(content(Whitespace\" \ + \"))))(Tile((id \ + 5b8af094-0994-4401-ae76-a1332b3af9e3)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + a09e402e-92a6-4f6b-b855-cd8d34161442)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + eea23743-15f8-4d76-8892-b00491dd662e)(content(Whitespace\" \ + \"))))(Tile((id \ + e6659b71-12a7-46bd-bf69-a700d2abc4cb)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 11784350-3981-454d-b66c-1232d578b152)(label(false))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 578571ed-ad92-4f0f-af8f-99bb5511beed)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 1043854d-79a4-4a87-b984-1a51ba60810d)(content(Whitespace\" \ + \"))))(Tile((id \ + e380669f-f318-4d4d-aab5-661105700301)(label(3))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + b1beeeac-1210-4341-bcb7-e5ecea396dc6)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 1394f1e7-0251-4c39-a51f-8d7151035854)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 0a24e707-5aeb-48d5-bea0-c72c22a1feff)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 17))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 730775b2-ed6e-4cda-9058-2ab2e381ce55)(content(Whitespace\" \ + \"))))(Tile((id \ + 8c838d69-2f5f-4144-bc7e-d386d25d4f35)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + d587513e-d54c-4c85-98ba-e861d28f5bd9)(label(a))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + ee1e68b8-37dc-4ddb-ae70-11fcf5d15929)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 0f0080da-d789-478e-8e4a-6628b9f1bf9e)(content(Whitespace\" \ + \"))))(Tile((id \ + 554496e6-8ef3-4843-a4c9-8e2def5c7244)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + bd865f8f-6aa7-4c07-a96f-1bf7a35d2f87)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 91807c7d-746d-4d3b-887b-11e3d0ab95c8)(content(Whitespace\" \ + \"))))(Tile((id \ + 3300f21b-c939-418d-80e0-c2258d21bc03)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + 0c7ee6f1-5cc8-439b-b6b9-42c27efa173a)(label(c))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 2e8d812b-b09d-4791-89cd-0254d2ad937e)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + a3651e80-e491-4606-a7a8-3f61793c7f50)(content(Whitespace\" \ + \"))))(Tile((id \ + e16ad8c4-62ec-472f-99ee-e63f1f5eb4d2)(label(d))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))))))))))))(Secondary((id \ + 25012974-8c3e-48a9-9788-c95fa9403027)(content(Whitespace\" \ + \")))))((Secondary((id \ + 400972a1-6061-49cd-8081-fb56d05fec71)(content(Whitespace\" \ + \"))))(Tile((id \ + 16396d07-b06f-42a8-81f2-d6492bd1f4a1)(label(tuples))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + df60af23-f967-4ff9-bdc4-860afaa2d598)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 89e15fb4-911c-45d4-82b2-69b6c5f841d0)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 25dc978f-32eb-4bd5-98bb-9f285f419bbe)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + aaba7119-46ab-4f2d-a84f-7592bef45bc6)(content(Comment\"# \ + Functions #\"))))(Secondary((id \ + f44d3b93-1361-4bf0-b905-8a299258389c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 78d576a7-23ef-4ec3-bc22-fc278b11000d)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 17))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 4e1855ef-e374-47ec-97d4-ccfd78d8ac2a)(content(Whitespace\" \ + \"))))(Tile((id \ + 018babaa-c3ed-4ec9-98fc-465dcafb8798)(label(y))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + e11491b9-4080-4101-bfb4-e494f2143143)(content(Whitespace\" \ + \"))))(Tile((id \ + f78cd590-2607-4e10-b542-d8146cde96d1)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 0173a2d5-2e2f-41f8-bfd6-a073f7748090)(content(Whitespace\" \ + \"))))(Tile((id \ + 19468059-8f7d-4c76-8c90-85749aa5d436)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + f1a3b0cf-b00f-4c14-96a7-8938cb74a2e7)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + ec2c7da3-499d-46eb-98b1-acd76e907036)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 2d50fd9a-ce13-41f3-876e-8d02f1f38930)(content(Whitespace\" \ + \"))))(Tile((id \ + 64af5514-8356-4031-a08e-cc595e5dadeb)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 7b4a7722-e9d5-4003-b838-4bdefa5caedf)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 34751550-07ce-4ec8-90af-554af3376aea)(content(Whitespace\" \ + \"))))(Tile((id \ + 2f20e50f-8b20-4330-9bb9-b19e8ca65a2c)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 85852b82-d059-4b20-842c-4901f989b8d3)(content(Whitespace\" \ + \"))))(Tile((id \ + 84eda9d6-e032-4d41-be2d-d60a116697c2)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + e812ed1e-cde2-4588-b818-e214db723b0b)(content(Whitespace\" \ + \"))))(Tile((id \ + 14d6d02c-a6e5-4151-a161-01f262720c99)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 6d90b837-9847-4018-9cf0-788ea8b1e643)(content(Whitespace\" \ + \")))))((Secondary((id \ + 7ac2f5e0-a88f-4974-9438-3b26b3637730)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + ed89344a-b7bb-4ec3-83b8-3ef8d8348fc9)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 2ec9cd63-1606-4c15-9d51-c385430e1aab)(content(Whitespace\" \ + \"))))(Tile((id \ + b19e4e41-705f-4abb-a2fd-9478598ccf65)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + c97b3392-0c6f-4392-9dca-37e9bfedf333)(label(m))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 12a742d5-f2ab-4986-ab82-2f77bce7b302)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 28403564-8d15-4a83-8372-bcba2aef2b62)(content(Whitespace\" \ + \"))))(Tile((id \ + 2c37665c-5b98-4ebf-bdbc-04754f00ede7)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + bfb06ed6-3467-4b99-81ca-47c3bc03479b)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 9b2fe42c-e350-48ac-9916-7ce10c6a18f3)(content(Whitespace\" \ + \"))))(Tile((id \ + 8df94600-730b-4e93-8c03-3023049b1d62)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + 21a86c61-9700-47ca-b83a-6988d5fbb78b)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 8891190b-2c30-4763-9b83-da5a512f0497)(content(Whitespace\" \ + \"))))(Tile((id \ + ab616f81-d96b-48e2-8413-d5de88522b8d)(label(m))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 5c095f11-6a61-4769-87b2-7296227ab352)(content(Whitespace\" \ + \"))))(Tile((id \ + d1527394-e012-41b5-b514-99e3b2f442be)(label(*))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + e17038d2-e745-4544-82f9-edd70afbe263)(content(Whitespace\" \ + \"))))(Tile((id \ + bd895bb2-9b48-436f-80df-69d110ca0e59)(label(x))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 3cf62237-e7a6-4a53-bb9e-136fa5da1a41)(content(Whitespace\" \ + \"))))(Tile((id \ + b79be3d6-b663-471a-86ab-afa3d5b6106c)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 6))(sort \ + Exp))((shape(Concave 6))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 6d877ae4-a7c6-4a3e-ab2b-9a0aa7c1541f)(content(Whitespace\" \ + \"))))(Tile((id \ + 93c6ff12-7ff0-4130-9f29-5a4aa4e48a60)(label(b))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 77c5849e-5dd2-49d3-a2de-64f3110d7d62)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ + 65cb9542-9565-465f-90bf-d34da80fefb5)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 5008fbd3-bdd1-4c2a-a1a2-93157ae9ea18)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + eb863a3e-f0e7-4ec4-8532-4372ac9aea38)(content(Comment\"# \ + Recursive Functions (arrow type annotation required) \ + #\"))))(Secondary((id \ + fe6f4241-8508-4c6a-809f-09e529aeb12c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 6021d47f-f9c3-456b-af3f-21beb230e9e5)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 17))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 71af5914-9062-4019-a727-cf8107020c6f)(content(Whitespace\" \ + \"))))(Tile((id \ + 1e80ee10-eac1-47f4-ad70-3607d85a55ee)(label(double_recursively))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 2c8f5d4d-3967-43a6-8188-9bf00878a5d6)(content(Whitespace\" \ + \"))))(Tile((id \ + ba2859cc-929a-43ef-a37f-8d5a4abbffb7)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 77c87eca-53b2-423e-a8a5-f15b6a9cc983)(content(Whitespace\" \ + \"))))(Tile((id \ + 35b83201-eeca-4c96-a14d-054a17a6c158)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 30326705-2cc8-40b0-a555-ae8fd88f3c33)(content(Whitespace\" \ + \"))))(Tile((id \ + 3471cacc-1f76-4cb7-ad52-c7ebf4b898c2)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + d3d4d1ac-3d65-495d-bedd-8da3b3959647)(content(Whitespace\" \ + \"))))(Tile((id \ + 5a5068f9-6f81-4922-98bf-d341ae555940)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 7e9e7b9a-3565-4ab3-a609-d03ea47e1b09)(content(Whitespace\" \ + \")))))((Secondary((id \ + a7a33cba-40ab-4ad7-9f7a-fcde3444a5bb)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d6bda773-e64c-4bc6-bda6-e5052186143a)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + c00e394a-ec9a-4b6d-83ef-402c2249f362)(content(Whitespace\" \ + \"))))(Tile((id \ + a0306582-db7b-4c38-898e-bce7b292eddb)(label(n))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 1fc1b0df-dce7-417f-a5f4-d5ea3f46583c)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + c93de8ec-faad-4636-a415-eeaf61a0ab8d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + ff02cd1d-7545-495c-80c6-042df0a797e4)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 9eb7bd90-5172-47a7-bbe9-195f35ed72c5)(content(Whitespace\" \ + \"))))(Tile((id \ + f2054b2c-e699-41a9-9fb3-0ee0fdeff49b)(label(n))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + cbc67dc2-bb04-4f84-8461-14c0629fbbdc)(content(Whitespace\" \ + \"))))(Tile((id \ + b6785035-f1fb-4420-bb00-3ef83c5d893d)(label(==))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 8))(sort \ + Exp))((shape(Concave 8))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 10646012-b57b-4e19-8c89-a668b16c98f0)(content(Whitespace\" \ + \"))))(Tile((id \ + 397b06df-1410-467c-88f2-e6cb0c6160b6)(label(0))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + b65c10ff-2e33-4490-bb73-66a08244d442)(content(Whitespace\" \ + \")))))((Secondary((id \ + b519ba78-08c5-4912-9d83-0c0ca0723291)(content(Whitespace\" \ + \"))))(Tile((id \ + 587a6001-8bb6-4534-a871-85fa11ba1f88)(label(0))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 782d7a46-80b6-4ad1-be96-4f3150fadb1c)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ + 66237ba5-bceb-48e5-8397-3344adb5931c)(content(Whitespace\" \ + \"))))(Tile((id \ + 4eb3b54a-f436-4d6d-9b9f-bf2a67de99d2)(label(double_recursively))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + cd795135-261a-4008-bbe8-5c6e68da52ed)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 79419365-8519-415b-b6dc-1adad6e01c38)(label(n))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + c3cfc0aa-8f1a-4bc8-83ee-3b56b065912f)(content(Whitespace\" \ + \"))))(Tile((id \ + a3bee0aa-8e39-41c0-868b-2c65354a9477)(label(-))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 02f993e6-62c6-4ca2-a70d-94da454ef05b)(content(Whitespace\" \ + \"))))(Tile((id \ + 5f2b5629-2925-4b3c-992e-b597a799436f)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 76a93d87-c2e4-4b20-b682-29d9c26874f0)(content(Whitespace\" \ + \"))))(Tile((id \ + 3e684fb6-d094-4b83-a1f6-cf691595c0e8)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 6))(sort \ + Exp))((shape(Concave 6))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + d5a052ff-f03b-4776-86c7-0e467b007971)(content(Whitespace\" \ + \"))))(Tile((id \ + 8d7620cd-9920-4a3e-8866-49a03e1897a9)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 209e7f6a-02eb-46a9-ad71-0d1ff589ea18)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ + 744d9375-ec77-44e7-8abf-e55daef79b5b)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + f57276cd-1b21-47f9-b0de-79c8a5ccc729)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 21682988-ab76-42e8-8145-cbec7f79d25e)(content(Comment\"# \ + Mutual Recursion (bind tuples of functions) \ + #\"))))(Secondary((id \ + 2fdd235d-bc05-4c17-afe4-debffdaa0550)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 795b707e-7109-4d20-ad0d-ed71a5fd5320)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 17))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 34636584-d529-4f9a-9899-eee7fc4254e0)(content(Whitespace\" \ + \"))))(Tile((id \ + 468c8a03-14ec-493b-8fad-738ea20890b7)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + 24ed2e0c-084c-4768-81dd-18f8a7c0e21f)(label(even))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 33b889e9-edcc-4a96-81c6-2e26ce57c835)(content(Whitespace\" \ + \"))))(Tile((id \ + f329bd36-e7b2-4fa2-bf7d-8af168d6142a)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 12))(sort \ + Pat))((shape(Concave 12))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 1ad6b08a-539f-4057-a7f2-bc17ac6fb0c0)(content(Whitespace\" \ + \"))))(Tile((id \ + ff09f6cd-85b8-4699-804b-68b65b757b01)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 19b2af46-e3a2-4e79-8ff7-14fd27397317)(content(Whitespace\" \ + \"))))(Tile((id \ + 092849e2-d4e0-4824-9834-f4d102b9fd8d)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + f6bae77d-566b-4d0e-a72f-37807ea8baef)(content(Whitespace\" \ + \"))))(Tile((id \ + cb642ef8-23b8-4497-bb6c-5e7e19b14124)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 3a249574-39dd-4fbb-b458-d47e0955d0b1)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 15))(sort \ + Pat))((shape(Concave 15))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 01a3ebbd-88e1-49eb-9f85-67382e210d00)(content(Whitespace\" \ + \"))))(Tile((id \ + 6d96c4d1-e4b5-490f-b0b3-b90f4a27664b)(label(odd))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 5b5481b5-764d-499a-8b1b-88b3a304f6aa)(content(Whitespace\" \ + \"))))(Tile((id \ + d3390775-46a2-465c-890f-044b8941b460)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 12))(sort \ + Pat))((shape(Concave 12))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 07c9b3f6-903a-4a28-aeb0-6facbfea6a81)(content(Whitespace\" \ + \"))))(Tile((id \ + 92e70a3d-5e6a-4eea-8c6d-545265822f0d)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + b0ece690-3230-445b-9c69-389d7ed404da)(content(Whitespace\" \ + \"))))(Tile((id \ + c6e392cc-d53b-423b-9ac0-4acb9d920787)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 60350d4d-f9f6-4cb1-b2bf-eabd28761d11)(content(Whitespace\" \ + \"))))(Tile((id \ + e78084d1-75d0-4ecd-9c09-82c18a68457d)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 22ef9500-6a1a-4ffb-ad2b-ddf6b3dd7621)(content(Whitespace\" \ + \")))))((Secondary((id \ + bfcb4fae-e7be-4d95-8063-ee6939d9b08a)(content(Whitespace\" \ + \"))))(Secondary((id \ + 42c2c64d-fa66-4ffb-a9ce-565af4f949b7)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 27ca6a6c-4baa-4e06-8166-e8a7faedb9bc)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + c79048e4-07ce-4712-bb16-b9c6a9b29629)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 83c79eca-ce78-46b8-8c99-adb12bca13b9)(content(Whitespace\" \ + \"))))(Tile((id \ + 26ab53ad-5803-4cbd-a25a-b88f44d7093b)(label(n))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + ff69bf4a-d901-4a82-ad50-42ef7511dc46)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 0e935a25-d455-4bf1-8bb4-ed3b6e4fdee9)(content(Whitespace\" \ + \"))))(Tile((id \ + 7fbdde16-29a3-431e-961a-62596700943d)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + c57d61ae-49de-48fb-9338-eba7699b46ce)(content(Whitespace\" \ + \"))))(Tile((id \ + b619f444-4657-47f6-93ad-3762a6472d53)(label(n))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 7d9c7b39-b911-4228-b18f-3c95c6712629)(content(Whitespace\" \ + \"))))(Tile((id \ + b475efbf-ea64-4aa0-bba3-05a343505bfb)(label(==))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 76175f11-f532-4bdf-b4b0-04da417feaff)(content(Whitespace\" \ + \"))))(Tile((id \ + 29980061-05a6-46c7-ae51-fadb5e0e52cb)(label(0))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 3bda6593-11de-4ebb-a3f2-04fe1273c5f1)(content(Whitespace\" \ + \")))))((Secondary((id \ + 798f751a-5397-43c4-a328-55dea819e2a3)(content(Whitespace\" \ + \"))))(Tile((id \ + a2ad2dcf-9529-4e49-8948-63d35cb3fb06)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a69273a2-2dcf-47af-8e96-42d81bfc4ad0)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 6986d4f4-4191-4b9c-b2ff-6ee2e84a7b2b)(content(Whitespace\" \ + \"))))(Tile((id \ + 558b5c64-370b-4bc4-bd0e-fb45d281ecd3)(label(odd))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 37bc5a6d-6d3a-40fd-9f52-fdaf023a3905)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 76a1384c-3190-4081-a831-ef9e6f55920d)(label(n))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 8b855248-7315-463f-b88e-b452d84d5991)(content(Whitespace\" \ + \"))))(Tile((id \ + 4694a35c-fe55-453a-b0c0-1e105485a95d)(label(-))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 6))(sort \ + Exp))((shape(Concave 6))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 54bbe267-63c6-4af2-936c-85b0d968d381)(content(Whitespace\" \ + \"))))(Tile((id \ + d12a0549-7471-47b2-9a98-3315039b9083)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 019aaa02-080d-48d4-98a0-964ba9dba11c)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 15))(sort \ + Exp))((shape(Concave 15))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + ba9dddac-48ea-452a-b8ca-2733098100b3)(content(Whitespace\" \ + \"))))(Secondary((id \ + a92df521-eb76-47a3-8b62-bd83cb10f6ad)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 5be4b2e1-4fbc-4a85-b08e-ef0caa32843e)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 660939be-3d19-4c1c-825d-a74818cb155b)(content(Whitespace\" \ + \"))))(Tile((id \ + 1c286633-1343-4436-a515-8ca3a26ff114)(label(n))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 5a8d6d17-75c0-4b32-b0e0-6a5d5097d5d1)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + ae62b299-dba7-4fc8-a19f-fddbef3c8953)(content(Whitespace\" \ + \"))))(Tile((id \ + 57795e6b-d0b7-415e-b723-5afe6a52fb1d)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + b181684d-e011-4e72-bba3-bfeca88dc33f)(content(Whitespace\" \ + \"))))(Tile((id \ + 3ee3433c-9ddd-41f1-8ac2-dd20d29a9579)(label(n))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 713c9b7e-dda9-4d77-bb51-f5f0bbd727eb)(content(Whitespace\" \ + \"))))(Tile((id \ + 609c9c74-2d7f-4447-bee5-6caba6cc48f1)(label(==))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 5054788f-0281-4c45-8f2b-646024f29573)(content(Whitespace\" \ + \"))))(Tile((id \ + fe22b068-0daa-483e-bcdc-e0333558634a)(label(0))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 191cde3d-c5b5-478a-934e-3ef751ed8a92)(content(Whitespace\" \ + \")))))((Secondary((id \ + 8c42c9f8-8e84-41b8-b3f1-f8de8693b9fc)(content(Whitespace\" \ + \"))))(Tile((id \ + 46d23158-db60-4773-9924-92108214770e)(label(false))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 8d993695-ea95-442a-a012-1bba3d32022e)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + c5777d7c-d156-48a8-bcc8-8c11cec85d7c)(content(Whitespace\" \ + \"))))(Tile((id \ + 4fb367c2-05c2-44ff-bdeb-a7b608115fef)(label(even))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 85025033-6ce3-46b8-be42-843aabf8c1e0)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 30d0945d-c20a-431a-a654-00138c1d3f8f)(label(n))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 1da0e433-1d84-4595-965e-704d73693902)(content(Whitespace\" \ + \"))))(Tile((id \ + ead48485-51fd-4578-981f-26216e9377f3)(label(-))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 6))(sort \ + Exp))((shape(Concave 6))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 6445a5ab-30e7-4191-b378-3d9f83dca28b)(content(Whitespace\" \ + \"))))(Tile((id \ + 5c2fb766-8513-4caa-a416-173cf3f1ee3b)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + 3644fce1-3634-44e1-8c2b-6c80621ae068)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + c1e2d794-fb97-4e09-ab64-e339bd2b61a3)(content(Whitespace\" \ + \"))))(Secondary((id \ + bac0da86-7b99-4039-a855-e71423c4e243)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 961a93f1-32c1-495b-b2b2-2ace1f642b17)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 78e100cd-53af-4229-ba9e-3ee7e6d32bf2)(content(Comment\"# \ + Lists #\"))))(Secondary((id \ + 35c19804-5897-4218-ad2e-faf7f4b6eb3d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + b4ee3364-3899-4aac-a842-68fbcd05b78f)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 17))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + e96e6634-c77a-4fa5-8d7f-a15284bcda36)(content(Whitespace\" \ + \"))))(Tile((id \ + 17c3ca0b-431f-431d-9995-32b54a17970f)(label(empty_list))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 79d3a3df-8b56-4076-ace5-4126ded2d025)(content(Whitespace\" \ + \"))))(Tile((id \ + bd6cf356-7705-4477-af1b-2a93bc4c00e8)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 7a6009a2-c76e-49ec-9c69-5885da3b52c5)(content(Whitespace\" \ + \"))))(Tile((id \ + 60c043b0-a18c-4078-9ab4-61163d201924)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape \ + Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0 1))(children(((Tile((id \ + fc97d9f0-c37a-4edf-b433-1965717eb972)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 5470966b-c43d-4f14-88f8-742ff48e9cbe)(content(Whitespace\" \ + \")))))((Secondary((id \ + 9795d258-7fa5-4deb-ab7c-ab4ba14eceae)(content(Whitespace\" \ + \"))))(Tile((id \ + 047d638a-8dc9-49ff-be48-26179ed85615)(label([]))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 5b8cc8bf-7895-49f0-ba87-36395960d433)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + d6c76a6f-5bc3-44cd-b72a-e8d8d6055d77)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 0cfaa336-d277-4057-b392-b932d0590ff3)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 17))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + c7fe2de7-957c-4f58-ace2-e05f7e40b246)(content(Whitespace\" \ + \"))))(Tile((id \ + 9c9971c6-9ce6-4ff0-bd8d-6d9964896089)(label(non_empty_list))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 56c6a900-7672-4584-b42a-8420648405e4)(content(Whitespace\" \ + \"))))(Tile((id \ + c4331229-6241-4bc7-87c6-b6023d075304)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 9c7fd3be-8e4a-4293-8ac3-ab7fd54268b0)(content(Whitespace\" \ + \"))))(Tile((id \ + 6aba9166-b530-4f2f-9765-dd9d7396454d)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape \ + Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0 1))(children(((Tile((id \ + b4bc8dab-fcf3-4a45-acc9-e8ebaa90ef54)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 91d78a6c-d6bb-4ae2-93cb-3872465754a7)(content(Whitespace\" \ + \")))))((Secondary((id \ + f01f5411-0591-44bd-8710-d2911c719d57)(content(Whitespace\" \ + \"))))(Tile((id \ + de00ac61-5f29-4b64-a60b-07be2fbe3180)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + c447dd9f-57cd-47a1-8983-57ba22b3c16b)(label(::))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 7))(sort \ + Exp))((shape(Concave 7))(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + ed93c8a1-82c2-48fe-85a3-7a86bdca69e2)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 032bea77-674f-4dea-8ac1-559fe947f6bf)(label(::))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 7))(sort \ + Exp))((shape(Concave 7))(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + b2942d52-aa7b-4f8b-b705-6a3c57a67cdc)(label(3))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + d19ebc20-bfff-48db-ae95-185f3efdd46b)(label(::))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 7))(sort \ + Exp))((shape(Concave 7))(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 9c33b3af-b95e-45ac-b165-77038efb602a)(label([]))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + ded4f5c7-72ae-4476-98d7-6906325de4e1)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 715a03d5-5d58-4eaa-9ab5-5b33da845f14)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + cf2e40c8-e04b-4711-bcdd-38513d108052)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 17))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 11b3cdb3-3362-4f2b-93c8-593710a60c2c)(content(Whitespace\" \ + \"))))(Tile((id \ + 2cae279a-a22d-4cea-990b-dee583b7b675)(label(list_literals))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 04b8fa4d-70eb-4ce5-b35f-c33276ff9a91)(content(Whitespace\" \ + \"))))(Tile((id \ + a23c17e2-0be0-45c5-afc0-45ad662c2367)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 3ea34ae2-086e-4424-9508-3498891ff06a)(content(Whitespace\" \ + \"))))(Tile((id \ + 2007e421-be10-45e2-ada6-742bc2819b21)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape \ + Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0 1))(children(((Tile((id \ + b53a9bf8-7a7a-4fbd-abff-e14d83c48701)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 1d386def-e315-447e-b24f-4b86314e0c08)(content(Whitespace\" \ + \")))))((Secondary((id \ + 57a10c26-224b-4820-b1fe-fe61df094fda)(content(Whitespace\" \ + \"))))(Tile((id \ + 54d0e0b2-3c9b-439c-8b7f-d8b524bc69e5)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0 1))(children(((Tile((id \ + 920d4b0f-1b4d-4f04-88e6-3fe87e7a65a2)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 5f69d188-7d03-473c-9140-a15f2499c561)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + eec2c6b0-f47b-429a-aaec-d1ef320ee675)(content(Whitespace\" \ + \"))))(Tile((id \ + 1dfd11d6-3b87-4c62-b2a3-96c4b524bffc)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 4ffefd84-9e8e-41fc-80da-263bcf450a35)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 967333b4-fff6-44d1-938e-f7de598266ad)(content(Whitespace\" \ + \"))))(Tile((id \ + db5d965d-a45f-4e3d-977d-56ae69bf0ff6)(label(3))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + c5d264bf-7f1b-472a-ab12-33b1e9c1651e)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 15882211-ecd0-4ab8-ab58-6579fc6dfefb)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 4d1c6d2c-5fda-40ec-a1ef-6cccf71fb769)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 17))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 99522f41-83e8-445f-9c64-5888fcd99a41)(content(Whitespace\" \ + \"))))(Tile((id \ + 3b19f467-00f9-4ec9-a59b-b3783d9c480b)(label(length))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 438c2f11-7687-40f1-ac6c-77b52b5ae19a)(content(Whitespace\" \ + \"))))(Tile((id \ + 0a57c206-20f1-4e10-b9f3-bbb7d7586800)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 4ece4618-8d70-48be-9c3f-9da04343855b)(content(Whitespace\" \ + \"))))(Tile((id \ + 06de5f69-5c47-4c4b-a8e9-e412a85b5490)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape \ + Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0 1))(children(((Tile((id \ + 7ca778cc-b87e-48e8-911c-958b79e1cf92)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 4e580f3c-fb6c-4eff-ab45-b6d665f917b4)(content(Whitespace\" \ + \"))))(Tile((id \ + a4e7f377-5905-4d1d-854a-81a7a8dedaaa)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 6dc204ae-c92d-465e-b046-db7ad394938e)(content(Whitespace\" \ + \"))))(Tile((id \ + d2f90cec-a6b8-41c5-83d3-2f145cc05f99)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 6058204c-92a8-4b46-b823-4ebd9aeabd24)(content(Whitespace\" \ + \")))))((Secondary((id \ + 164bd788-aaf3-437a-8206-647a2bc132eb)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 18c66069-7229-4d7b-a013-74ec2d67d237)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 1946d033-a508-4a4c-9b22-6233aec311ea)(content(Whitespace\" \ + \"))))(Tile((id \ + 644d0e44-e2fc-4fd7-a6bb-eb3306f49eeb)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 3710885e-498b-4047-a332-fb855a982b84)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 5e52c8bc-9c27-4755-9107-de2867a85244)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 486ec00c-6ff6-4523-9def-90ab86bf90c3)(label(case \ + end))(mold((out Exp)(in_(Rul))(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + e5fdbc48-7e48-4c89-8909-31cf2b62cdc0)(content(Whitespace\" \ + \"))))(Tile((id \ + 7f1d7ec1-01a6-4fa4-ba9d-85db637c553f)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + ce6cdbcb-93c7-43d5-9714-092ea2630cd4)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + efe768d5-5682-4768-bf10-c756fad7a038)(label(| \ + =>))(mold((out Rul)(in_(Pat))(nibs(((shape(Concave \ + 19))(sort Exp))((shape(Concave 19))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + e132ee92-6f29-44f3-bcd2-0a21689ea8bf)(content(Whitespace\" \ + \"))))(Tile((id \ + 017ead53-406a-412d-a23d-d21c6313a0a6)(label([]))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + d229c1dc-26a2-468a-b36a-d5eb92d7535d)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 36244853-42a8-4b21-8fab-6447580622f5)(content(Whitespace\" \ + \"))))(Tile((id \ + 1919b6f6-63b4-4a2f-8411-a49d2b0de0e9)(label(0))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 117345cb-4180-49d8-81cf-5720bc09a76c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 0b0c160b-a1ee-45e1-b330-44150a7f263b)(label(| \ + =>))(mold((out Rul)(in_(Pat))(nibs(((shape(Concave \ + 19))(sort Exp))((shape(Concave 19))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 61f79bfd-9396-40f4-ba0f-cce78ebb2ca4)(content(Whitespace\" \ + \"))))(Tile((id \ + e59f2cf1-4e84-449f-9cb6-b003d07605cd)(label(hd))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 80c95d1a-b038-48d5-8413-249df02caf5c)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 6))(sort \ + Pat))((shape(Concave 6))(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 4ffa0ea7-c3d0-48f4-89e1-d508d974d9a6)(label(tl))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + c086568f-d41a-4696-ac05-f33a13a3d612)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 28b2008b-39bd-48ab-803d-e3e00d69f67e)(content(Whitespace\" \ + \"))))(Tile((id \ + 7df6c8b5-9636-42a4-9bc0-42d61b5f4631)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 56c79884-7a1e-49d6-a659-ef07c7383eba)(content(Whitespace\" \ + \"))))(Tile((id \ + d293b8a7-037d-406a-be45-fd9ef543e423)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 5))(sort \ + Exp))((shape(Concave 5))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 2fcc2671-4432-40ab-bc0c-085df34a1034)(content(Whitespace\" \ + \"))))(Tile((id \ + 3cbc29ae-1f9f-49cd-ad81-21cdd6154572)(label(length))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + ca76747e-a814-428b-ba6a-d6e88d0b3a94)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 483daf30-152e-4a61-960b-ea2e34e399d8)(label(tl))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + a191cf7b-f477-4064-9c81-eeed31cdb12e)(content(Whitespace\" \ + \"))))(Secondary((id \ + d95e09c9-f6ba-45f6-a42a-07039d5780f4)(content(Whitespace\" \ + \"))))(Secondary((id \ + 0b868e0b-e1e4-4ff7-bf91-0fdd16adf9a5)(content(Whitespace\" \ + \"))))(Secondary((id \ + d5824218-661d-4526-99fa-1b195dbd0a7b)(content(Whitespace\" \ + \"))))(Secondary((id \ + fccf51d0-1ab5-4f82-a218-e924c212937a)(content(Whitespace\" \ + \"))))(Secondary((id \ + 947e47dd-107c-436b-8f20-6fc2f7fad6c2)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ + f210e7bc-619c-4848-847b-8cd228c43340)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ + e8ccaf1d-bb31-4062-b2df-cce7f5a3b7dc)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 75d95dc0-f522-4943-ae54-90856201704f)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 17))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 78c38d95-74fa-4054-93ba-118df77e2a80)(content(Whitespace\" \ + \"))))(Tile((id \ + 68dc4a80-94b7-45d3-b317-3ce1931ee52d)(label(has_at_least_two_elements))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 42441ccd-6ea2-4579-bf36-6eb359bbd275)(content(Whitespace\" \ + \"))))(Tile((id \ + 1ef2f1b0-58cf-434d-ba60-e84b082c7bf7)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + e5c0d335-dbd4-47bd-af72-43b9c782cc1e)(content(Whitespace\" \ + \"))))(Tile((id \ + 4721add5-b41c-46d4-9ff3-b44b1bd24770)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape \ + Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0 1))(children(((Tile((id \ + fdb7d4f9-dd01-4919-b227-f0d3fffc1cd7)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + e14c1521-9da3-4cf3-95d8-59b32257b662)(content(Whitespace\" \ + \"))))(Tile((id \ + 08920087-d272-4ba6-bdf3-93edaeb021bb)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 0c620183-6b6e-4605-8c7d-a07c526a86be)(content(Whitespace\" \ + \"))))(Tile((id \ + 16612644-16a2-4fa7-b22d-b74db2ad9333)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 74a3ee2d-ac2f-4712-9110-ce522f9851ec)(content(Whitespace\" \ + \")))))((Secondary((id \ + a44e9372-c563-470b-a735-1109ac1dd743)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 961459a6-7b3b-4efd-ae2d-f0e7b724fb6c)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 9ee89b19-5be4-41b8-b870-75d5903eee7f)(content(Whitespace\" \ + \"))))(Tile((id \ + e2b8680f-34ae-41d7-9885-125463b8ccb6)(label(xs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 81ee8032-53c6-4792-a186-53e68c504c80)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 81159f4d-fcb2-4c97-bd22-9696c01c3e9c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d183c63d-aa0c-486a-9b47-82d275f02ae2)(label(case \ + end))(mold((out Exp)(in_(Rul))(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 6526e4c6-356b-4e5b-82f0-d2f9534c1f1b)(content(Whitespace\" \ + \"))))(Tile((id \ + 0389bee6-2ab8-4792-a69a-821b4f610819)(label(xs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 200c3e5d-86cd-4317-983e-fa56aaab1870)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + e44bb1a9-af82-438c-bd25-08eb88f89a2d)(label(| \ + =>))(mold((out Rul)(in_(Pat))(nibs(((shape(Concave \ + 19))(sort Exp))((shape(Concave 19))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 28c01c20-ac76-400e-ac3f-327a19705d0e)(content(Whitespace\" \ + \"))))(Tile((id \ + 470c6bd2-f5fc-4523-8a8a-3e77d2ae7466)(label([]))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 1dd29e31-4b83-47aa-a6e0-0e5629837f2e)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + a2b392fb-58d6-4ae9-850f-7278730f70d1)(content(Whitespace\" \ + \"))))(Tile((id \ + d77b6106-b354-4c67-bccb-4e91e2f4a9df)(label(false))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 6532c791-0e40-41c6-8bb3-5816c36a1919)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 1cc4d6e3-777a-44c3-bde5-35748d34caad)(label(| \ + =>))(mold((out Rul)(in_(Pat))(nibs(((shape(Concave \ + 19))(sort Exp))((shape(Concave 19))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + f2709538-ddb1-4c95-a2d4-04f93bcd8825)(content(Whitespace\" \ + \"))))(Tile((id \ + c3dda5a5-bf3c-4312-921b-2c15dfd824db)(label(hd))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + e14d689e-6556-4bbc-a7a9-7e57e71e4f6a)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 6))(sort \ + Pat))((shape(Concave 6))(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + aae8d9a7-16f3-4a05-b3c9-2cf987bce74f)(label([]))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 894e780d-dffe-46bc-9d20-1f46b3d20f22)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 22c0fd84-c1e7-4c44-8d24-32d783b04658)(content(Whitespace\" \ + \"))))(Tile((id \ + aa21c0b5-6f37-4332-bea8-ce5f16b8b1b0)(label(false))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + eab907d2-1671-47b7-a390-850ad7261f77)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 3e3d0450-5fa6-457a-9ec0-0a3673c9edfb)(label(| \ + =>))(mold((out Rul)(in_(Pat))(nibs(((shape(Concave \ + 19))(sort Exp))((shape(Concave 19))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 930b7c09-b500-482f-a897-2046cc8df242)(content(Whitespace\" \ + \"))))(Tile((id \ + 7001fdd3-9677-4c8e-8aee-8584ad908830)(label(a))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + d26ed733-a684-4163-9df2-13070819d911)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 7))(sort \ + Pat))((shape(Concave 7))(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + b38f41fa-3940-4c03-91ad-6835f8b61c55)(label(b))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 01869da0-f0c2-4280-92cf-9006f82beaf7)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 7))(sort \ + Pat))((shape(Concave 7))(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + acfc3a3a-6e41-498a-8c13-ea99fc347d7e)(label([]))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 0dab81fa-5f4e-402b-a32f-f536b7919b90)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 0e6808c3-004e-4a9c-8de2-dfa7d8cc2983)(content(Whitespace\" \ + \"))))(Tile((id \ + 5f515da4-5076-436a-bcc6-3f7eafb1ec57)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + e9889fed-8b2a-4c88-ab41-a5090959af3a)(content(Whitespace\" \ + \"))))(Secondary((id \ + e26de303-8012-41b2-b4ea-220f9af7ea76)(content(Whitespace\" \ + \"))))(Secondary((id \ + 91c4cba3-5758-4231-8a47-289da8a1df17)(content(Whitespace\" \ + \"))))(Secondary((id \ + 8cade609-6be5-4ee9-9b21-4447c6ef69c4)(content(Whitespace\" \ + \"))))(Secondary((id \ + 9c89af83-7b53-4adb-8cb7-0907b7734acd)(content(Whitespace\" \ + \"))))(Secondary((id \ + ba102ddc-ef92-487c-b01f-3e1dc2efa6c2)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ + 33dd8e04-138e-4c10-a0d3-21170aac493f)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ + 9991f3a8-0275-4b2d-b84b-dc1f08b7f0c0)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + b90baab9-f7d3-4fbb-addd-99040020a2d6)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + edfce7ce-180d-431a-b9b2-a2e7a51639ef)(content(Comment\"# \ + Polymorphic Functions #\"))))(Secondary((id \ + d74ffc8b-d059-4d7a-9e68-c03ea87db97d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + be30a708-71f1-4d22-b019-f2fa6a852c36)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 17))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + ccf15e74-30da-475b-a0c2-478d1625f8bf)(content(Whitespace\" \ + \"))))(Tile((id \ + b7f6dd49-e74e-47e0-9442-c67a9337c079)(label(poly_id))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + d3788600-3613-40f5-8a38-d4c3f512bd11)(content(Whitespace\" \ + \"))))(Tile((id \ + edc9de0a-0f75-46a9-b412-17ea5fbafe3f)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 12))(sort \ + Pat))((shape(Concave 12))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 25a95d9b-158a-4afc-9aee-a6f3663a5267)(content(Whitespace\" \ + \"))))(Tile((id \ + 6eea38a1-2acb-405c-b00a-175c767b094c)(label(forall \ + ->))(mold((out Typ)(in_(TPat))(nibs(((shape \ + Convex)(sort Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0 1))(children(((Secondary((id \ + 19b97957-796a-4a68-bed4-e9bacb1a438b)(content(Whitespace\" \ + \"))))(Tile((id \ + a9f2034f-6f84-43f1-825a-4222508c85ac)(label(a))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + 79e3788d-780b-44f3-bebc-bb7b72b6c4f6)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 330b36a2-7516-479c-b8d0-d3296ef52d22)(content(Whitespace\" \ + \"))))(Tile((id \ + aa180020-b296-4890-91d0-23b42ae036f5)(label(a))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 07a039d0-ad3c-425a-8351-ea29333cbe86)(content(Whitespace\" \ + \"))))(Tile((id \ + dcb3a139-8a15-4ca5-804b-7790b2db8454)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + b546a9d7-62e6-4831-9951-02257cd8be0d)(content(Whitespace\" \ + \"))))(Tile((id \ + 29e8d470-5c3c-4446-a49d-1510641e1489)(label(a))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 3c96f25f-b9b8-4a4d-bd88-970efe02a038)(content(Whitespace\" \ + \")))))((Secondary((id \ + ea0072f4-75ba-4373-8200-b1d1cbfa944d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + a30494f3-c10f-449f-a47e-9cac67ec43e4)(label(typfun \ + ->))(mold((out Exp)(in_(TPat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 8b4c1606-1f5f-4619-b841-2bd570127056)(content(Whitespace\" \ + \"))))(Tile((id \ + 29351975-8dc7-455a-a313-eb4133370d9e)(label(a))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + 5fc9ced0-2b6f-4f95-98e8-e6871ee17cf8)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 0351c740-c538-4e10-b168-2a19621720cb)(content(Whitespace\" \ + \"))))(Tile((id \ + 3edfb2a6-ae95-424f-960b-3a8165db4d2a)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 4237578d-8437-47d1-8135-0dd226630c52)(content(Whitespace\" \ + \"))))(Tile((id \ + f1f49520-1f5c-4c42-8c1e-0afbd693de61)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 523cb91b-d643-4bce-aa48-7e75bfca2eb6)(content(Whitespace\" \ + \"))))(Tile((id \ + fe554f4e-89ee-4d69-b788-d78d5e43b0a4)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 12))(sort \ + Pat))((shape(Concave 12))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 77dc15d2-f278-43a4-a720-45082382fe8e)(content(Whitespace\" \ + \"))))(Tile((id \ + c86b754d-9643-4cc0-b5dc-de2074cc9486)(label(a))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 3afe26ba-61a0-4712-8369-f75dba447c41)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + fceafefa-bde0-4f4a-8250-e480e42a456e)(content(Whitespace\" \ + \"))))(Tile((id \ + 821578a3-efe2-4747-968c-1af34fa66cd8)(label(x))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 43e7a315-d368-4859-bb56-66839a8292e7)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ + 17810f4f-b62b-46e7-8613-a80821e1f896)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 547b939e-ffd6-46ff-929f-2b0e225fe9df)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 17))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + b66c0b83-c059-4925-b25f-9c23c0cc6413)(content(Whitespace\" \ + \"))))(Tile((id \ + 31be1813-03d0-4110-b37b-d710f5dcc43c)(label(apply_both))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 06a274cd-38db-4c54-98d8-69fe9c184c5e)(content(Whitespace\" \ + \"))))(Tile((id \ + 6ed96af6-8bf7-4fb1-b1e8-d2c9814299b1)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 12))(sort \ + Pat))((shape(Concave 12))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 9dd0b82e-5563-4cd3-a81d-069903c7b67b)(content(Whitespace\" \ + \"))))(Tile((id \ + 490bc44f-0166-4717-b032-82cffdddff56)(label(forall \ + ->))(mold((out Typ)(in_(TPat))(nibs(((shape \ + Convex)(sort Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0 1))(children(((Secondary((id \ + 1425337b-b260-4e7b-b37a-b8b6dcf8d34a)(content(Whitespace\" \ + \"))))(Tile((id \ + 832da6f4-dbd5-43ad-ac4c-cfe93abf8ea5)(label(a))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + d46f7c08-56dd-4a91-a99a-4e9465f96c26)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + a502d207-63e7-4c91-80ad-5ff3a9db03e6)(content(Whitespace\" \ + \"))))(Tile((id \ + 4c3e1db6-5c4d-4594-8220-1f9c07d8357e)(label(forall \ + ->))(mold((out Typ)(in_(TPat))(nibs(((shape \ + Convex)(sort Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0 1))(children(((Secondary((id \ + 91b1a7e1-a477-4be0-89f2-6640bb6f9d0f)(content(Whitespace\" \ + \"))))(Tile((id \ + 84ff8f7c-f5e8-43a2-907f-614545ee7614)(label(b))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + 51a93e99-b088-48da-8904-bf952381385c)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + d23b8939-dba3-4a78-b463-6ae659079d06)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 98703e4f-6c3e-4702-8684-564ad220603d)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 1569f18f-bf5b-4e0b-b373-0968d9c027a3)(label(forall \ + ->))(mold((out Typ)(in_(TPat))(nibs(((shape \ + Convex)(sort Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0 1))(children(((Secondary((id \ + 52872153-6dab-4f58-aafe-36daf66c1385)(content(Whitespace\" \ + \"))))(Tile((id \ + f11f90e4-ad88-4379-b935-aca0278995aa)(label(c))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + 5b6cdedf-02b7-412e-9a23-2bcdefc0f4b0)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 78f728ff-af0b-4aa5-adf0-edb7af8dc68c)(content(Whitespace\" \ + \"))))(Tile((id \ + 4dcddeed-ee1e-4c65-b636-26ce6a4646ab)(label(c))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 4c82fe91-2252-4282-85e2-8b188cd8079c)(content(Whitespace\" \ + \"))))(Tile((id \ + 004a40c8-8e5b-4985-b0e2-9703a1ef0a94)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + c9ba11bb-0b6f-4fc7-8cf8-d979f001b850)(content(Whitespace\" \ + \"))))(Tile((id \ + 1601c6aa-0e48-49f2-a921-4d98f128ec7a)(label(c))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 50de9230-1cb3-4967-8e5d-2686ab33b797)(content(Whitespace\" \ + \"))))(Tile((id \ + a3015949-a4c0-4cd8-9346-6323090d0c55)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + a758f40e-83a9-42dc-b97e-38f432a461e6)(content(Whitespace\" \ + \"))))(Tile((id \ + 80d2b6e5-cc53-42e1-a34e-302cb24435bf)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 62d3e953-d36e-40a8-bb31-d3a1d29c9d25)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 129b9f69-db91-4538-a078-58f8eb5795e8)(label(a))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 7370cc86-5f2d-480e-a154-aa2c09d32826)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 15))(sort \ + Typ))((shape(Concave 15))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + d94c8dc7-3d78-49a5-b93e-50d2b18af498)(content(Whitespace\" \ + \"))))(Tile((id \ + 0c251b37-e176-459c-bbfb-925cf7d09987)(label(b))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + bdb464cf-15d6-4023-84cc-fe983c5e8467)(content(Whitespace\" \ + \"))))(Tile((id \ + 79b66a41-0336-4baa-81c4-ef5e7107e431)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + d52538e2-1524-47a7-b72f-ff70dc2bf97d)(content(Whitespace\" \ + \"))))(Tile((id \ + baa44352-3f92-40d8-94ac-dcdb590fa503)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 6cb20c8f-1360-4b44-b423-56addbd92f44)(label(a))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 83172c4a-d27c-44f0-8fd0-3942f74e3635)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 15))(sort \ + Typ))((shape(Concave 15))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + ff148a90-409b-4903-97b3-5869b166b5f3)(content(Whitespace\" \ + \"))))(Tile((id \ + 07c72e86-9abe-415a-be06-5b9fa5f2adf8)(label(b))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + b975b9e6-9750-4a57-8a27-499653bb604e)(content(Whitespace\" \ + \")))))((Secondary((id \ + 66e8dcdd-d358-4a3b-8d4c-c93140df5369)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + debae5ca-2828-4460-9307-929eb725736c)(label(typfun \ + ->))(mold((out Exp)(in_(TPat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 3144ba77-8417-456b-9345-0d6b5e7c590c)(content(Whitespace\" \ + \"))))(Tile((id \ + 35d9db9c-3710-47b1-997b-3dcea9b83b6e)(label(a))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + b9f0d6e7-d029-455d-ac83-b17de4aa172e)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 8192adb7-ad34-4ab1-8844-0ab46b5c4771)(content(Whitespace\" \ + \"))))(Tile((id \ + aff9b212-bbe9-4333-a769-8caf2115d8de)(label(typfun \ + ->))(mold((out Exp)(in_(TPat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 25e1ce2d-c3c8-413a-8e9f-5e9792b44f1e)(content(Whitespace\" \ + \"))))(Tile((id \ + 7a612d19-b4bc-4d31-bfb0-cc7dbc80d5fe)(label(b))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + f26f75e0-b159-4e1b-805c-e405170e82f5)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + cc766fc6-23b5-4600-b2b2-082aac3a14b7)(content(Whitespace\" \ + \"))))(Tile((id \ + 01917c22-4fb2-4a0b-94f7-b244e9fbfda2)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 8f4768bf-6ca2-4f3f-b2f6-8038ad7d73dd)(content(Whitespace\" \ + \"))))(Tile((id \ + f7e1fe6d-3867-42e8-9fa5-99d50953da90)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 54c5b743-ac18-4099-835f-666dc529f5cc)(content(Whitespace\" \ + \"))))(Tile((id \ + c55d17ae-d41f-461f-bf4f-4be94bd65762)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 12))(sort \ + Pat))((shape(Concave 12))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 33481f20-38ef-4609-ad30-d2b1833d9fd7)(content(Whitespace\" \ + \"))))(Tile((id \ + d27fd47d-eebc-4f61-b6e3-8b3ef398ec1c)(label(forall \ + ->))(mold((out Typ)(in_(TPat))(nibs(((shape \ + Convex)(sort Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0 1))(children(((Secondary((id \ + 651e3781-854e-4e7b-98bd-e3fa6cc6003f)(content(Whitespace\" \ + \"))))(Tile((id \ + 4b997e0a-bd24-4396-b8bc-aecdb8b036a5)(label(c))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + c352e753-c5ff-48de-8b59-0ec50c239e6e)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 796833a7-5f5b-42a6-bb69-8ae8d17fb133)(content(Whitespace\" \ + \"))))(Tile((id \ + 6545b7f1-f73e-422a-8435-a07c9da93673)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 8add133a-0bac-4b51-9946-8b321359410d)(label(c))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 7cd03ffe-2c25-4828-b6f6-dbf473064a4c)(content(Whitespace\" \ + \"))))(Tile((id \ + 662e2713-f973-4583-9cc9-0790cbb04af4)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 7190604a-1045-4ce3-be03-e2a25c9ac980)(content(Whitespace\" \ + \"))))(Tile((id \ + 657cba03-c1df-436a-96a6-7de49ee86436)(label(c))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + b0264a1d-e50c-4ffa-9d11-0bc306f1e9a8)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 8c303280-adaa-402a-85ed-8fe1442c8903)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 184871c4-f611-4679-9af9-6d31f7d1c094)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 411cc97e-44aa-44e5-88f7-90d5f53924ab)(content(Whitespace\" \ + \"))))(Tile((id \ + 41df693e-7029-4f55-9048-63be308c4ef5)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + 943e8fea-aee7-4392-b251-df60f3101e77)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 8eda0e7b-49cc-4234-b390-0d18d5444c55)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 15))(sort \ + Pat))((shape(Concave 15))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 9f925a0d-487f-4dab-bc1b-91b7c2b6d77d)(content(Whitespace\" \ + \"))))(Tile((id \ + c60b29e0-2207-4f8f-b2d6-4d318a896fb1)(label(y))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + 3fe52b30-bc25-4360-8e49-7d383c6d7630)(content(Whitespace\" \ + \"))))(Tile((id \ + 6b64f1db-59d9-427b-b91c-a9586a46a423)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 12))(sort \ + Pat))((shape(Concave 12))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 76ad5b97-a2a2-487a-8e08-ef95afdcfaba)(content(Whitespace\" \ + \"))))(Tile((id \ + 8fc5e79c-5af4-4a87-b340-e49d3a07108d)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 3981524e-b182-4229-9558-317c5e3b674e)(label(a))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + d1d74e3e-b370-448c-b8fa-a2a3354cd25d)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 15))(sort \ + Typ))((shape(Concave 15))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 5f875c31-b3fe-4d3f-a673-fb0c4d82820c)(content(Whitespace\" \ + \"))))(Tile((id \ + dfc82e9a-f945-4b24-aa6f-72245f4a5c61)(label(b))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 131ac428-7dea-47f1-afd3-ef87d2185aaa)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + f4c1b938-fc33-417a-b232-08b15a775042)(content(Whitespace\" \ + \"))))(Tile((id \ + b3ddaea7-5ebf-4049-bb7b-608b9bb0403c)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 2e7b5910-8655-4268-a6c4-e7c7785b6e26)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + b5cf1c4e-0da5-4b49-bb26-4f50f5f3e629)(label(@< \ + >))(mold((out Exp)(in_(Typ))(nibs(((shape(Concave \ + 2))(sort Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + c7950c78-5a3d-4088-9b03-0a2af7dc6e9f)(label(a))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Tile((id \ + 4ed40475-c207-4ebd-bc7e-49afe8c8f0a4)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + c3ec60f2-6f1e-4301-8dca-4cf7b809395d)(label(x))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 529625d9-356a-493c-a793-5fa4f7b93e41)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 15))(sort \ + Exp))((shape(Concave 15))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + b39992d0-0283-4224-9d1a-e51bc9440f95)(content(Whitespace\" \ + \"))))(Tile((id \ + 7542242b-5136-4bc2-9b9c-30735f140547)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + b5304c8f-34c9-4605-99be-d0507f4e6672)(label(@< \ + >))(mold((out Exp)(in_(Typ))(nibs(((shape(Concave \ + 2))(sort Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 2a0d138e-74ba-4db7-9962-7ef419c56dc0)(label(b))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Tile((id \ + e859f280-7c20-474e-9199-d461338ed7ba)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 500daabf-5b93-41be-8d74-e888efccc3c6)(label(y))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + f9008b43-eb37-4f20-8288-21730a00cfbc)(content(Whitespace\" \ + \"))))(Secondary((id \ + 75ceecb7-3e64-4d27-b023-695cf1c84001)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ + e62cbb30-9d9b-4379-860b-7cd8ba6b7a46)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 667c7f20-f052-4b97-a3dd-b218e6e0ca36)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 17))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 75e69bc3-13ab-47ab-a5fb-8c41efc2ab19)(content(Whitespace\" \ + \"))))(Tile((id \ + b87b594b-269c-41e6-a0d4-3ef656087765)(label(list_length))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 96cba48e-755b-48a3-9205-81c4895f9823)(content(Whitespace\" \ + \"))))(Tile((id \ + 29b7ad19-9afa-4988-a121-e849985757cc)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 12))(sort \ + Pat))((shape(Concave 12))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 1d792ce3-2829-4a10-b39c-da41929c6f8b)(content(Whitespace\" \ + \"))))(Tile((id \ + 673bb7d6-17d2-48ff-b510-7f263e931dc5)(label(forall \ + ->))(mold((out Typ)(in_(TPat))(nibs(((shape \ + Convex)(sort Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0 1))(children(((Secondary((id \ + 990868f0-0b96-48f2-8be3-dc46a5e646ec)(content(Whitespace\" \ + \"))))(Tile((id \ + 1344c73d-4fa9-440b-99db-6ffbbf521ffe)(label(a))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + 8936b101-cda3-4ab5-b814-ca4cf531bc1c)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + ea04d1fc-1502-432a-9d50-5c67eda840c4)(content(Whitespace\" \ + \"))))(Tile((id \ + 65a53d44-aa06-486a-b2c2-da74363f6569)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape \ + Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0 1))(children(((Tile((id \ + 7a3e47cc-1fa7-4cb8-9d21-a8e2a2056394)(label(a))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 1d890687-75e1-4e6a-8667-a6698bd7cfad)(content(Whitespace\" \ + \"))))(Tile((id \ + c204f982-3974-4638-8d45-474543fe2d98)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 45eae717-5578-4faf-a4eb-88ad779586b9)(content(Whitespace\" \ + \"))))(Tile((id \ + 9dfbcc29-143e-4401-b6be-65368b51b436)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + b06a2789-c2aa-41ca-902f-c8461eea3fb7)(content(Whitespace\" \ + \")))))((Secondary((id \ + 148a1cb1-7874-4a6f-8f87-bee712bd36df)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + c889e055-d438-4564-b5a8-a3e12bea4882)(label(typfun \ + ->))(mold((out Exp)(in_(TPat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + ec5f5c24-9fe1-4597-8c16-47111b2d9326)(content(Whitespace\" \ + \"))))(Tile((id \ + cc54e849-a52f-4199-a7d4-9fb85a2e659d)(label(a))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + 6381761f-cd9f-4d53-b9f7-33f3934836ea)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 55908c47-4807-4903-b209-7d2e1c97f444)(content(Whitespace\" \ + \"))))(Tile((id \ + eeca22d4-8f3f-417f-bb29-1fd63e213dd8)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 4e8322c3-bbe2-4e31-a317-0ac6a7f5c4eb)(content(Whitespace\" \ + \"))))(Tile((id \ + 4ca6ea59-fa8f-413d-a50c-73bd8c42ca1e)(label(l))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 7a8be493-8da0-4cb7-88c7-32fdca9fd952)(content(Whitespace\" \ + \"))))(Tile((id \ + 2b0587d4-bade-4601-a255-131007e9aa54)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 12))(sort \ + Pat))((shape(Concave 12))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 81f7e8c3-9791-4af2-a104-14c08fbc8a69)(content(Whitespace\" \ + \"))))(Tile((id \ + cc82b421-4cdf-4cac-8e48-43e0b8e17707)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape \ + Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0 1))(children(((Tile((id \ + 55955b07-22bb-42ed-9303-a3fc1e391a7f)(label(a))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 2ad5c071-2227-468e-b04d-5446fbe2b615)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 022ed86b-84b9-4b3a-b141-57a61504e634)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 6fcf1112-9f01-4925-b436-b07c25b97ff2)(label(case \ + end))(mold((out Exp)(in_(Rul))(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 01273f90-4def-4b70-a62d-b1ba96c336e9)(content(Whitespace\" \ + \"))))(Tile((id \ + fa1d5f5a-66af-4665-ad51-ac09e5f1381b)(label(l))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 0d3c9e5e-4e5c-4608-9256-59d58e9751c1)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 386721b7-716b-460c-8627-ed4178a545fb)(label(| \ + =>))(mold((out Rul)(in_(Pat))(nibs(((shape(Concave \ + 21))(sort Exp))((shape(Concave 21))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 1cfb6cc3-eed6-43d6-8725-a2910ea65758)(content(Whitespace\" \ + \"))))(Tile((id \ + 5ef0f099-e7a0-4314-8270-07db3a1ccb1e)(label([]))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + cc25fa53-916a-48dd-a0bf-4568830e311a)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 6a9989f1-e856-486c-bee9-ae166a274e20)(content(Whitespace\" \ + \"))))(Tile((id \ + c738920d-a28a-4491-984f-37974eac24b5)(label(0))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f434b12c-1dfb-4171-a491-eef97c57cb51)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + b4fc4437-f64e-4f18-9767-e3d07eb58283)(label(| \ + =>))(mold((out Rul)(in_(Pat))(nibs(((shape(Concave \ + 21))(sort Exp))((shape(Concave 21))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 15b71a7f-e121-4cb7-87e7-6cd34311578c)(content(Whitespace\" \ + \"))))(Tile((id \ + ef2a816b-8c42-4d03-9341-318a0849283d)(label(hd))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + b3b13782-65c6-4df1-9000-dc2709d67c06)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 7))(sort \ + Pat))((shape(Concave 7))(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 10df6bbe-686d-4739-986c-504de476497a)(label(tl))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 560ba905-59ed-4b0f-b958-3c4b9e5813c1)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 51358db7-933c-456b-b73c-7ab0bf112d71)(content(Whitespace\" \ + \"))))(Tile((id \ + a86bedfb-70a7-4906-ba28-631c705586b2)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 519ad1eb-b19a-4447-a2a9-bf906527765a)(content(Whitespace\" \ + \"))))(Tile((id \ + d777f3b0-b2ea-4725-b928-a462e00d9281)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 6))(sort \ + Exp))((shape(Concave 6))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 4d229f35-897c-4d30-8bdb-0425dd7031a2)(content(Whitespace\" \ + \"))))(Tile((id \ + 29f706a8-64c9-42c9-ad50-85feaf02b0eb)(label(list_length))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 2d373321-8994-4495-93f1-2eb2a498df5a)(label(@< \ + >))(mold((out Exp)(in_(Typ))(nibs(((shape(Concave \ + 2))(sort Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + a9464742-2fa7-4b5a-8bcd-e167571c719a)(label(a))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Tile((id \ + c8d0ab0a-1ac6-49c6-9e3f-1827b74cad60)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + bffbd8ae-8579-4588-9453-68634acf5441)(label(tl))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + a4a52e3e-c4fe-4b62-a7a6-2e3ca370ccca)(content(Whitespace\" \ + \"))))(Secondary((id \ + 0bf24958-e48d-4e88-b326-1700d756dea0)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ + 1d2368d0-fdce-4ebb-9fbe-514b6e74e232)(content(Whitespace\" \ + \"))))(Secondary((id \ + bacbb401-f981-45a2-a27c-b789bce6074e)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ + ae7692c4-5cb7-4ecc-afcc-c60ad2fd7cf1)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 325d816c-fcaf-4734-a327-3c7e241b7d9c)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 272ef5a0-043b-451d-a6e4-3f18571d2c60)(content(Comment\"# \ + Strings #\"))))(Secondary((id \ + 4d0dd9cb-c943-4384-a682-8884ac792b31)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 26109999-748a-492d-8991-dedcf22f3c8f)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 17))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 4b4ec423-bdf0-4f77-9cff-633eca5eb8f6)(content(Whitespace\" \ + \"))))(Tile((id \ + 8f2bf699-8a6e-4a4a-acce-4a801b081fc5)(label(string_lits))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 76fa4320-9686-418b-bae1-2e16981ef6df)(content(Whitespace\" \ + \")))))((Secondary((id \ + dc5fbac0-a612-4966-b776-a5b222ee2837)(content(Whitespace\" \ + \"))))(Tile((id \ + eb0ff38c-7c16-49f9-9547-019753f2f677)(label(\"\\\"Hello, \ + world!\\\"\"))(mold((out Exp)(in_())(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 4561c14d-dc9c-4e62-9c83-2258ba03da27)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 8387e074-4d46-46a6-a37c-d10aab222c02)(content(Whitespace\" \ + \"))))(Secondary((id \ + a6f7d9a5-1f93-42a7-9365-fb6f3beb8c74)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d573bc1e-fc6e-4c9b-bd47-b21d74a42b50)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 17))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 0a7aab63-f372-4baf-863a-99f536c5764c)(content(Whitespace\" \ + \"))))(Tile((id \ + 41148c0d-9e2b-49b5-be97-c798c36ec89a)(label(string_equality))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + fdbb6a30-47a8-4665-bd2b-709aad04126a)(content(Whitespace\" \ + \")))))((Secondary((id \ + bfb84ac4-7973-473c-b655-71b846366ae4)(content(Whitespace\" \ + \"))))(Tile((id \ + d2e0ac51-b1d5-47c5-9d9e-28671583db5c)(label(string_lits))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + c14d9212-5436-4359-aed1-4c12bc651145)(content(Whitespace\" \ + \"))))(Tile((id \ + 479deac9-99cd-44c2-afd7-83aa87dc31c3)(label($==))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 8))(sort \ + Exp))((shape(Concave 8))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 92d22bfe-5056-482f-ad46-5ed1c4787fa1)(content(Whitespace\" \ + \"))))(Tile((id \ + dec5173c-0001-412c-acec-9d1dc2ca4424)(label(\"\\\"Hello, \ + world!\\\"\"))(mold((out Exp)(in_())(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 242b38cc-9ec3-496b-a61b-180d2dab6eee)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 2fcdc646-7a16-44a7-bdbd-2db157c25c29)(content(Whitespace\" \ + \"))))(Secondary((id \ + 0916a810-eeaa-4b3b-a5d3-3750e01e4ec9)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 3f1d1253-4e0e-4331-bf9c-180e141079b2)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 29d208e1-0c45-44d2-9d94-99224e7b7bae)(content(Comment\"# \ + Non-empty holes are the red dotted boxes around \ + errors #\"))))(Secondary((id \ + 394efbca-78fe-4391-aed8-7cf3e9954cff)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 5501da01-0362-43bd-90d2-2f73051ebd5d)(content(Comment\"# \ + (you can still run programs with non-empty holes) \ + #\"))))(Secondary((id \ + 83366e95-3f7a-43c0-b6dd-b8b856c15bff)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 8ff64362-463c-4a28-b9fb-c5874d923bb7)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 17))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 907bcaba-6a39-4298-be9c-a9933d6bb965)(content(Whitespace\" \ + \"))))(Tile((id \ + e3cc5308-0a4a-486b-8505-50d4759fadea)(label(non_empty_hole))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 3869b181-7c6a-4947-8188-34ac4be2e935)(content(Whitespace\" \ + \"))))(Tile((id \ + 6116797d-7f61-4299-8d03-b3b55489807f)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 2c2c4658-b792-43a5-8414-1cb5aae4c7c1)(content(Whitespace\" \ + \"))))(Tile((id \ + 3778ca66-6e86-4b5a-984e-de82e05a54e1)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 7406cf71-6145-4be2-80b9-c2a2a292175b)(content(Whitespace\" \ + \")))))((Secondary((id \ + 3d632ecf-da09-4334-8577-c8b9ede604d0)(content(Whitespace\" \ + \"))))(Tile((id \ + f5fb9f60-65fd-4b86-ac03-f79a42e79876)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + d9032067-95b2-4bc6-8813-402fb0516108)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 1add6c79-d411-4ab9-b51d-581ef672ed1d)(content(Whitespace\" \ + \"))))(Secondary((id \ + efe99dcd-cd32-4bd1-ba0a-32508d520ddf)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 96260b30-8ae6-454d-8da1-c532a1efa904)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 376a24fd-5524-4558-902c-6fc859f4e3b0)(content(Comment\"# \ + Tests, separated by semicolons #\"))))(Secondary((id \ + aa070fd5-bc99-4e35-bf85-988cf2e6f881)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 25740099-dda9-4234-9886-803c1d4d51af)(label(test \ + end))(mold((out Exp)(in_(Exp))(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + e86c5199-a0ce-4e44-9ad3-692c435fe93d)(content(Whitespace\" \ + \"))))(Tile((id \ + d6db200b-52b4-4ed8-925f-579fdf8b2c6d)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 5f310898-295b-4f16-9d11-b01123b2ea2c)(content(Whitespace\" \ + \"))))(Tile((id \ + 1e38b972-1809-4feb-8c1c-4f67d652d375)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 6))(sort \ + Exp))((shape(Concave 6))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 8ed6c237-4bd0-412a-971c-dcf07e161f93)(content(Whitespace\" \ + \"))))(Tile((id \ + 3ac3b7c8-a4ff-4f33-bfa2-d218822fcd19)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f572a698-4a16-4dbf-a54d-6e6945297665)(content(Whitespace\" \ + \"))))(Tile((id \ + 132cb08f-c280-42b5-b6fd-c1e85d17ec5c)(label(==))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 709f0d1f-d997-42e8-bb16-23abf054df5f)(content(Whitespace\" \ + \"))))(Tile((id \ + bafddf28-368f-4c9b-9759-a5e16424a41d)(label(4))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + eba3a299-0151-4d0e-b13d-0d61577a6733)(content(Whitespace\" \ + \")))))))))(Tile((id \ + 607a9a2f-36fd-416b-8f2a-0dcd654a3f56)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 3a0443fb-e5e5-4675-a280-c675d359ed87)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + cb3e52f3-b846-49c6-813f-2066ca14e149)(label(test \ + end))(mold((out Exp)(in_(Exp))(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + a51bf06d-4934-4799-ac2e-a4652aaaafe7)(content(Whitespace\" \ + \"))))(Tile((id \ + f2c74fe8-2500-4886-a23e-5a5d5155ae8b)(label(3))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 09d392c0-e2cc-4307-89d7-0483627378b7)(content(Whitespace\" \ + \"))))(Tile((id \ + b85776e4-f63f-49a1-9b09-77c013375af7)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 6))(sort \ + Exp))((shape(Concave 6))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a4c131e0-fc31-4fcb-aa84-b16c046436ee)(content(Whitespace\" \ + \"))))(Tile((id \ + 18d3169f-ed3f-4138-b5b9-9610e304c013)(label(3))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 0b7c6984-8436-4b21-8258-c37dd6be30f2)(content(Whitespace\" \ + \"))))(Tile((id \ + c63b9193-5ad3-4d09-8187-b9b13b9a5210)(label(==))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + be000067-f14a-4cf6-a64a-384a94fa32ac)(content(Whitespace\" \ + \"))))(Tile((id \ + 005342e2-5425-4530-b074-13babb8f58df)(label(6))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 12cf1b4d-dcf5-4070-a839-a70b836df238)(content(Whitespace\" \ + \")))))))))(Tile((id \ + 6dce00b6-58ad-4711-922d-182cb8ae2b7c)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 3f85c74f-7e59-4d18-ab32-2fc003551cae)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 69c51fcc-36be-4bc1-a336-cfea114e8780)(label(test \ + end))(mold((out Exp)(in_(Exp))(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 45576ba4-4586-4df3-888d-3bfef94972be)(content(Whitespace\" \ + \"))))(Tile((id \ + ea9e7253-a352-4836-881f-0127b1c871b8)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f3e14f9e-507a-4d26-a2df-78c11523af0a)(content(Whitespace\" \ + \"))))(Tile((id \ + becaa096-cb19-4568-9e9a-5863d1ae1c96)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 6))(sort \ + Exp))((shape(Concave 6))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + c450606e-1ef4-4fbb-9773-d9566f54d260)(content(Whitespace\" \ + \"))))(Tile((id \ + 60e938aa-3416-4c33-81a8-25f37ef306d9)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + cd32360c-d3f4-430d-8ad2-5dbd660e8158)(content(Whitespace\" \ + \"))))(Tile((id \ + ac66d29d-6f93-47a8-872c-b26ae92463a4)(label(==))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f58eeaed-a321-4813-a71a-d99e1684c500)(content(Whitespace\" \ + \"))))(Tile((id \ + ee4b755a-2962-4a97-9b71-1fa874175270)(label(5))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 0efd8178-50ee-47dc-9f5d-f6f503733d3e)(content(Whitespace\" \ + \")))))))))(Tile((id \ + 01eef806-3025-4681-841a-138b95f6f827)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f59bc277-d399-48e3-8d1b-72164b9e13bb)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 446ce379-8fef-47e5-85d4-f7d3fc16dd6c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 31a81066-ecfa-49ce-a762-34904947da99)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 77d8a251-42c9-4631-a941-094827a503c4)(content(Whitespace\" \ + \"))))(Tile((id \ + 546b42b3-2f6a-4f08-9e69-854b8e88b1be)(label(+))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 6))(sort \ + Exp))((shape(Concave 6))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 28d8c0a0-4515-4637-98ca-22e78630cf20)(content(Whitespace\" \ + \"))))(Tile((id \ + 09d04b4d-2f29-4aef-a73b-badd00299b3b)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))(ancestors())))(caret \ + Outer))"; + backup_text = + "# Hazel Language Quick Reference #\n\n\ + # Empty holes stand for missing expressions, \ + patterns, or types #\n\ + let empty_hole = in\n\n\ + # Integers #\n\ + let int_lits : Int = 1 in\n\ + let negation = -1 in\n\ + let arithmetic = 1*2 + 8/4 in\n\ + let int_comparison = (10 == 10, 1 < 2, 2 <= 3, 3 > 2, \ + 2 >= 1) in\n\n\ + # Floating Point Numbers #\n\ + let float_lits : Float = 1.5 in\n\ + let float_artih = 1. *. 2. +. 8. /. 4. in\n\ + let float_comparison = (10. ==.10., 1. <.2., 2. \ + <=.3., 3. >.2., 2. >=.1.) in\n\n\ + # Booleans #\n\ + let booleans : (Bool, Bool) = (true, false) in\n\ + let conditionals =\n\ + let (x, y) = (2 + 2, 3 + 3) in\n\ + if y > x then 1\n\ + else 2\n\ + in\n\n\ + # Tuples #\n\ + let tuples : (Int, Bool, (Bool, Int)) = (1, true, \ + (false, 3)) in\n\ + let (a, b, (c, d)) = tuples in\n\n\ + # Functions #\n\ + let y : (Int, Int, Int) -> Int =\n\ + fun (m, x, b) -> m * x + b\n\ + in\n\n\ + # Recursive Functions (arrow type annotation \ + required) #\n\ + let double_recursively : Int -> Int =\n\ + fun n ->\n\ + if n == 0 then 0\n\ + else double_recursively(n - 1) + 2\n\ + in\n\n\ + # Mutual Recursion (bind tuples of functions) #\n\ + let (even : Int -> Bool, odd : Int -> Bool) = \n\ + (fun n -> if n == 0 then true else odd(n - 1), \n\ + fun n -> if n == 0 then false else even(n - 1)) in \n\n\ + # Lists #\n\ + let empty_list : [Int] = [] in\n\ + let non_empty_list : [Int] = 1::2::3::[] in\n\ + let list_literals : [Int] = [1, 2, 3] in\n\ + let length : [Int] -> Int =\n\ + fun xs ->\n\ + case xs\n\ + | [] => 0\n\ + | hd::tl => 1 + length(tl) \n\ + end\n\ + in\n\ + let has_at_least_two_elements : [Int] -> Bool =\n\ + fun xs ->\n\ + case xs\n\ + | [] => false\n\ + | hd::[] => false\n\ + | a::b::[] => true \n\ + end\n\ + in\n\n\ + # Polymorphic Functions #\n\ + let poly_id : forall a -> a -> a =\n\ + typfun a -> fun x : a -> x\n\ + in\n\ + let apply_both : forall a -> forall b ->\n\ + (forall c -> c -> c) -> ((a, b) -> (a, b)) =\n\ + typfun a -> typfun b -> fun f : forall c -> (c -> c) ->\n\ + fun (x, y) : (a, b) -> (f@(x), f@(y))\n\ + in\n\ + let list_length : forall a -> [a] -> Int =\n\ + typfun a -> fun l : [a] ->\n\ + case l\n\ + | [] => 0\n\ + | hd::tl => 1 + list_length@(tl)\n\ + end\n\ + in\n\n\ + # Strings #\n\ + let string_lits = \"Hello, world!\" in \n\ + let string_equality = string_lits $== \"Hello, \ + world!\" in \n\n\ + # Non-empty holes are the red dotted boxes around \ + errors #\n\ + # (you can still run programs with non-empty holes) #\n\ + let non_empty_hole : Int = true in \n\n\ + # Tests, separated by semicolons #\n\ + test 2 + 2 == 4 end;\n\ + test 3 + 3 == 6 end;\n\ + test 2 + 2 == 5 end;\n\n\ + 2 + 2"; + }; + hints = []; + }; } ); ( "Types & static errors", { - zipper = - "((selection((focus Left)(content())(mode \ - Normal)))(backpack())(relatives((siblings(()((Secondary((id \ - 5da92fc0-10cd-4354-bf0b-1a22accca803)(content(Comment\"# \ - Internal Regression Tests: Type errors #\"))))(Secondary((id \ - 42a2f89c-4a95-4199-8800-f53809f593ba)(content(Whitespace\"\\n\"))))(Secondary((id \ - e86dd07c-7157-40bc-bdaf-59d06e0034c9)(content(Comment\"# Each \ - line should show errors or not as indicated \ - #\"))))(Secondary((id \ - 1d55398b-0045-41ec-8690-4a4664980596)(content(Whitespace\"\\n\"))))(Secondary((id \ - 5294d45d-964b-45c9-a85c-c0c11464bd39)(content(Whitespace\"\\n\"))))(Tile((id \ - 758d9a9b-d1f3-4df6-9100-9f81566a6a37)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - ecc545ce-876a-4a70-ab47-8bfe9a428248)(content(Whitespace\" \ - \"))))(Tile((id \ - e16f00db-fd89-4065-b35a-64904016ae29)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 5518e231-da7f-4a7d-8d45-05d910e7f0cf)(content(Whitespace\" \ - \")))))((Secondary((id \ - a29c4eb6-de40-4bb4-aaac-10f598b07123)(content(Whitespace\" \ - \"))))(Tile((id \ - e7743ed3-3268-45dd-be07-e34b23633d36)(label(unbound))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 651970c7-502d-48de-b4d4-870b276c3233)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - e52d4513-49e6-4f2f-8fd1-939e723da309)(content(Whitespace\" \ - \"))))(Secondary((id \ - d21dcb5b-762f-4047-9a8b-51cff4e4d5d8)(content(Comment \ - #err#))))(Secondary((id \ - ab1dff56-08b2-4c50-a2b5-fa5a36fbcdab)(content(Whitespace\"\\n\"))))(Tile((id \ - 4d41990a-b92b-444e-a1a3-bb7844e88871)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - b0ca9c49-112c-47a8-950b-8d0d7bc59a23)(content(Whitespace\" \ - \"))))(Tile((id \ - 33aec8d3-3eb0-4679-a386-2dac5a304783)(label(Undefined))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - e5497533-ea66-474d-bd69-cc76b4a5653d)(content(Whitespace\" \ - \")))))((Secondary((id \ - 51530a4b-7d00-47bd-b5ec-10682b5207d9)(content(Whitespace\" \ - \"))))(Tile((id \ - 442205d8-cbd4-4bdc-9066-f486206b94fa)(label(Undefined))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 527c9d07-1ec6-4aec-bca1-b1a50cd3af43)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 3c09f1b8-0796-4cf6-a79c-0bcc0832d91c)(content(Whitespace\" \ - \"))))(Secondary((id \ - 25d84317-ce77-4faf-9025-10a68eed8e6a)(content(Comment\"# 2x \ - err#\"))))(Secondary((id \ - 97db46c7-ce76-4cee-9703-f04949d45340)(content(Whitespace\" \ - \"))))(Secondary((id \ - 924f65ec-e7e5-46e4-ab2b-4e652571f60e)(content(Whitespace\"\\n\"))))(Tile((id \ - 55a5b34b-daf5-48cb-b7de-4b76f16a960f)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 7c0fb53d-c7e1-4548-acb2-8faa621271ce)(content(Whitespace\" \ - \"))))(Tile((id \ - 21d17081-0c7d-4a64-aead-e9ec099e9eb1)(label(true))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - ed0e1fc1-a44d-44a8-b50e-91e38cf14712)(content(Whitespace\" \ - \")))))((Secondary((id \ - a297d308-da82-4733-81ba-6c15026cac9d)(content(Whitespace\" \ - \"))))(Tile((id \ - 1abd1a01-f0b5-498f-9446-4b285f25055b)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 862e2271-7b23-48e6-a013-c50d7e8240eb)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - cd54c7ae-3f6a-4aed-bb62-39cab8c5166a)(content(Whitespace\" \ - \"))))(Secondary((id \ - 526f32dd-17b9-444d-b697-3a49874d86ab)(content(Comment\"#2x \ - err#\"))))(Secondary((id \ - 3fa82081-4e36-4899-83eb-0194fbb8a152)(content(Whitespace\" \ - \"))))(Secondary((id \ - 22947c17-9809-4e12-b52b-fd9b018be69b)(content(Whitespace\"\\n\"))))(Secondary((id \ - 1a9bbbc8-33ba-42ef-a9a8-96b4936f83d2)(content(Whitespace\"\\n\"))))(Tile((id \ - d46a196d-925c-4f7f-9d9b-f73ef61410a5)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - ae1c0f3c-1692-4f10-9076-bcda8da909fd)(content(Whitespace\" \ - \"))))(Tile((id \ - 685cd41c-494d-42eb-803e-262e8ebeb39a)(label(?))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - cabf0162-6154-4020-9ff0-f16aa1e5e9a8)(content(Whitespace\" \ - \")))))((Secondary((id \ - 31e7b59a-ecef-4a68-907b-dd2c315acd63)(content(Whitespace\" \ - \"))))(Tile((id \ - 1fc8b7c5-f735-4e45-9969-d03b430a1f0f)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 4c64ce16-b737-4ab9-aac5-2c47d8f59c38)(content(Whitespace\" \ - \"))))(Tile((id \ - ce6095e0-6573-4575-915d-77625cad241b)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 360306a1-d0c2-4b1b-8b91-98050159c120)(content(Whitespace\" \ - \")))))((Secondary((id \ - 9076b31c-ca93-4931-a1b1-a3c6978acfb0)(content(Whitespace\" \ - \"))))(Tile((id \ - f3d56cf8-047d-4491-990e-2faa2345ed52)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 163e8baf-71e8-4c62-9bb5-a9789b912f9e)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 35b94740-b1b8-46d1-8c65-a2d9699cf5d7)(content(Whitespace\" \ - \"))))(Tile((id \ - 32fd3308-b7d7-46ba-b40b-8c4739821951)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 359922bf-8f7c-4756-bce7-dfbdab6768eb)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 0aef1054-7de3-46de-b629-1712252e36c5)(content(Whitespace\" \ - \"))))(Secondary((id \ - bc921273-eecc-40dc-b037-bd352a9ba17e)(content(Comment \ - #err#))))(Secondary((id \ - 27b24844-827f-4aaa-ac1f-22be23ed9e04)(content(Whitespace\" \ - \"))))(Secondary((id \ - 7f2c237f-d86d-4e3f-afdb-498d07823331)(content(Whitespace\"\\n\"))))(Tile((id \ - 1c454cf8-ecd5-4033-bbf8-19b68014191e)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - c2387c61-33ff-4a77-a91d-9268e9fbac09)(content(Whitespace\" \ - \"))))(Tile((id \ - f04265e1-9788-4653-a1d6-e266c5a59d66)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 3c92d98f-a523-4344-903f-fcd44b7b8d13)(content(Whitespace\" \ - \")))))((Secondary((id \ - 1f170ec6-a88f-4e37-98ff-43df1627bb74)(content(Whitespace\" \ - \"))))(Tile((id \ - 3b52bb5e-ec3b-484c-ba60-48fb0c1db7d6)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - fb073b60-2128-4c75-b741-84dd5eec14b9)(content(Whitespace\" \ - \"))))(Tile((id \ - 0b5b8922-658a-4a9f-80bd-da3794c121d3)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 949b9c01-395e-47f6-8cce-b5e6b6425c8c)(content(Whitespace\" \ - \")))))((Secondary((id \ - 2cd662be-b43c-439a-a48d-51f072e4b301)(content(Whitespace\" \ - \"))))(Tile((id \ - 69458974-8dd8-428a-8cee-887b4d3e1011)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 781060e1-c57d-4d6e-882a-8ad6560f230c)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 1b9ba2c3-4ca1-48d8-90b9-63e250bd1136)(content(Whitespace\" \ - \"))))(Tile((id \ - 74cc524f-7218-4dba-a0de-0a18046194e9)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 635bcde5-e132-4058-978c-61533458ed13)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - ddc7f71e-ca6a-465b-8c87-5462853072a6)(content(Whitespace\" \ - \"))))(Secondary((id \ - 923041c3-09ef-40f0-a53f-de812afcebf8)(content(Comment \ - #err#))))(Secondary((id \ - 0bb4658e-b3bd-4d03-bd98-e4d3eb402e32)(content(Whitespace\"\\n\"))))(Tile((id \ - 2c1d0ea8-7cb7-4202-af0f-9911fbd1ec26)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 5b4eeb14-e111-401c-8248-3aaf6b1c554e)(content(Whitespace\" \ - \"))))(Tile((id \ - 9e766167-bcea-4bd6-9217-17aa21f80cb8)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 8ef5ab6d-6cc4-4081-b092-6a7721669dda)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 34d1a24a-41ae-4d51-8f5e-2a1d0570a6ef)(content(Whitespace\" \ - \"))))(Tile((id \ - 5e923e13-50b3-40a1-8a29-2f66a2693330)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - ada81658-b24c-447e-8e91-142f404fe596)(content(Whitespace\" \ - \")))))((Secondary((id \ - ff02d723-d855-4161-8cac-3aa34b6249d9)(content(Whitespace\" \ - \"))))(Tile((id \ - 0fdedef1-300c-4640-9f6b-91b8c72008cb)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 9b034a88-063b-4b56-805a-c33455450427)(content(Whitespace\" \ - \"))))(Tile((id \ - 668e5861-da35-478b-9c16-76563698bea5)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 000b9574-ea77-49fe-be7d-4c90e2805ab9)(content(Whitespace\" \ - \")))))((Secondary((id \ - 87175621-3ea5-46f2-a49a-b5e5c1cabfcb)(content(Whitespace\" \ - \"))))(Tile((id \ - 9d8b813e-c6f9-4f92-ba80-5f0ff87be342)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 8da20320-b9f3-4174-81d7-125940998614)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 7c2f93a8-d19a-45f5-a0e3-e927e22231ac)(content(Whitespace\" \ - \"))))(Tile((id \ - 0b07d2df-14f0-4363-bd27-b9869c80d813)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 81cfd0cc-d03a-4fc8-8fa6-b3a95c031543)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - be5eb0b5-a089-4a75-90c2-0762c9803900)(content(Whitespace\"\\n\"))))(Tile((id \ - 1339c79c-f1cb-4065-a6e6-6d93094c6e88)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 3c521c1e-0569-43e8-98eb-13a6e83c0360)(content(Whitespace\" \ - \"))))(Tile((id \ - 171b8fab-f5da-457b-8bfb-0c0ea484b619)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - af9669f3-ac9d-4d4e-8178-118a658c1acc)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 8c96f25b-ee85-4207-bcfc-92b8c44ad284)(content(Whitespace\" \ - \"))))(Tile((id \ - 95e80aa6-dfe1-449a-bdf4-d98b80a465b6)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - e07a80d8-0c00-45d1-8309-5dd1212fb23d)(content(Whitespace\" \ - \")))))((Secondary((id \ - 761c39c7-7f56-4c6e-8301-77177c9271b7)(content(Whitespace\" \ - \"))))(Tile((id \ - 919ca3cd-b67d-4eb8-9a75-712c864a22a5)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 273a02dd-9e8e-49bf-8bff-f682950cb549)(content(Whitespace\" \ - \"))))(Tile((id \ - baeddf76-ce9f-493e-aa38-54b5d2ee57d6)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 0049890b-ab90-4167-b71c-7703d5f2966a)(content(Whitespace\" \ - \")))))((Secondary((id \ - 9dbdd12e-99d0-4f1a-b122-44e155bd502b)(content(Whitespace\" \ - \"))))(Tile((id \ - 53f267e6-4ae2-4ec2-9da8-0a50a319eaa2)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - c9cebc13-1f7f-4352-9f4a-4893ea99c2bf)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 6ebe2987-1ed7-458f-a412-3f95909fbef6)(content(Whitespace\" \ - \"))))(Tile((id \ - 8dbb7302-d5b4-4ee8-ba5e-50f0b47ba53d)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - ec52f0b3-744f-4efb-9487-cedac5fa1216)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - d18b91a6-dc68-4e1b-b84a-02573a655b65)(content(Whitespace\" \ - \"))))(Secondary((id \ - 4179bbc1-2373-4a36-9a36-ae430f8f4e69)(content(Comment \ - #err#))))(Secondary((id \ - 2d009bf6-b3d3-4a73-9a88-3c16ce0c0a22)(content(Whitespace\"\\n\"))))(Tile((id \ - 18731ed3-13d7-4121-83cc-dc8da7d518fd)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - d1ec2c86-e9da-4e1d-9e96-cd7c4817bc01)(content(Whitespace\" \ - \"))))(Tile((id \ - 0dc32826-da12-41a5-a8d9-bf97a424af3c)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - bc032bcb-92a5-4c8a-a5b7-e1100f6c16cb)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 847833a9-9721-4f0c-842e-e7fe5ecb85f5)(content(Whitespace\" \ - \"))))(Tile((id \ - b111eada-6fdf-4ff5-935d-a4792d1b1e6a)(label(Fake))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - b0409219-b018-4004-ac62-49b4fe302b3f)(content(Whitespace\" \ - \")))))((Secondary((id \ - 1a525c37-234d-425d-9ee5-8ae791190501)(content(Whitespace\" \ - \"))))(Tile((id \ - e8188ebc-d8b3-4345-b1c5-70e67dee6527)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 17677456-b3ca-4d04-9dbc-a7ac432d1fda)(content(Whitespace\" \ - \"))))(Tile((id \ - fd34bee1-1b68-4096-80e9-9cd3ae539e12)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 7e3d2df2-cdd1-4cd9-8398-57f1d67a70d6)(content(Whitespace\" \ - \")))))((Secondary((id \ - aa6e7a7a-cf03-4a05-a0cd-5fa657d6d55a)(content(Whitespace\" \ - \"))))(Tile((id \ - 4bdf9d6a-924c-4f89-8314-7a95270142f2)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 2211a089-86da-4fd4-8474-fa51c99dcff7)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 1b1e7516-cf21-4360-94ba-5d30aa572f65)(content(Whitespace\" \ - \"))))(Tile((id \ - 917ee296-4347-414a-aaae-e2f5a97a87a8)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - ba6ffa57-1c5d-4b9d-a1b5-3b1328849511)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 5be2c2bd-da80-4512-bd2a-0a30f87d9958)(content(Whitespace\" \ - \"))))(Secondary((id \ - 21bd2e10-a4d3-4951-a573-87b2c8f4eb1a)(content(Comment \ - #err#))))(Secondary((id \ - f131d865-8f16-4925-8f5b-6c2a42c446ce)(content(Whitespace\"\\n\"))))(Tile((id \ - f4c75534-a83a-4d04-a4fb-7714e1a2be7b)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 13883334-6745-4000-8735-9cd577a74d56)(content(Whitespace\" \ - \"))))(Tile((id \ - d7da986a-907c-4d43-ba60-f2868db14ab9)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 00317a8c-b6b0-41e7-8284-f69f9970dc32)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 668a2995-d1b6-48a2-8fd2-8662d288bcd1)(content(Whitespace\" \ - \"))))(Tile((id \ - 46c49881-a9b2-4dc8-9cf2-c8231ba08662)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - af269db2-934e-4855-b194-d5fc2381b7d2)(content(Whitespace\" \ - \")))))((Secondary((id \ - 19bdbfd5-876f-4ac5-9b43-86c6d99586e0)(content(Whitespace\" \ - \"))))(Tile((id \ - 5d8d2765-7c51-41ed-8af9-8f56488444e2)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 9f5c3366-b61c-4de3-a8b1-9b9513755bd4)(content(Whitespace\" \ - \"))))(Tile((id \ - a1c41de4-fce7-449d-a78d-845ed7b83fc9)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 95f34ebc-0dbe-439d-95dd-294cee252ec3)(content(Whitespace\" \ - \")))))((Secondary((id \ - a567c3ac-db02-4442-ae43-87ea60064fc6)(content(Whitespace\" \ - \"))))(Tile((id \ - f2c2d679-cf1a-45eb-8e5b-a3fbf5f0d7e7)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 82fd11dc-9d43-47bb-bba1-107c55f26962)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - d355dfc2-04e3-4e0e-a8e7-768021d31816)(content(Whitespace\" \ - \"))))(Tile((id \ - 4c708eaf-93c2-4d51-81de-2fd3eb5d8d11)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - dacb6033-fcc9-4b12-9aab-49ea9fc94687)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 8fc791a7-579d-45c6-bd6e-9bb72239af77)(content(Whitespace\" \ - \"))))(Secondary((id \ - f0ac9f87-1bf4-4061-90c3-7ed6ff0c9676)(content(Comment\"#2x \ - err#\"))))(Secondary((id \ - 62d1b5fe-cc31-4090-9d73-9eb0d2f3f492)(content(Whitespace\"\\n\"))))(Tile((id \ - 4d1bde0b-6567-41e5-ae93-f10d8db5a6f8)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - d7c01def-cc22-4d2a-ab20-4592a0774cfc)(content(Whitespace\" \ - \"))))(Tile((id \ - 16ae4dec-6c75-4fc9-8f43-1846e10b4f4f)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 2d5b145d-9d10-42d9-a2c3-ab290a406e98)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - ddcfb4d1-ad7e-4511-99dc-d3bc7e287e2e)(content(Whitespace\" \ - \"))))(Tile((id \ - 72098cb3-4e14-4a8d-aa8f-f549c9ff9c31)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 14e3f792-983c-41b7-9613-c5cf7ba10fb9)(content(Whitespace\" \ - \")))))((Secondary((id \ - a21af13a-3af9-49c7-a039-10fa5ba0c227)(content(Whitespace\" \ - \"))))(Tile((id \ - ece3978e-1cd4-451b-bf45-7d6afcc0d8e0)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - e9ad479b-4b32-4aa4-95c5-8f2331660129)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - ee8bde47-cc2b-400c-8842-875321687b3f)(content(Whitespace\" \ - \"))))(Tile((id \ - 3abe37ed-1dc4-403f-9333-13f50ab3c89a)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 46d7ce17-b064-4267-9d04-d43ff1a44b37)(content(Whitespace\" \ - \")))))((Secondary((id \ - 8e44d5ee-ce2a-4383-9b6a-927091bb8bad)(content(Whitespace\" \ - \"))))(Tile((id \ - 877923e2-726b-4015-bfb7-5f086e094f31)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 8bacec5f-e164-4eb4-b98e-8cff5fd06fae)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 13781ee0-dd5a-4c44-a4c6-e6b92703a646)(content(Whitespace\" \ - \"))))(Tile((id \ - 67fb18f1-dcf0-434d-90d7-12148e6309bd)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - afccfd4d-9f21-4236-bf03-6b343c979790)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Grout((id \ - fd18e452-a794-4379-86b5-8dc753604a8d)(shape \ - Convex)))(Secondary((id \ - 5c9c94b5-7024-4306-bc51-615d6fc286b8)(content(Whitespace\" \ - \"))))(Secondary((id \ - 90824032-b495-4713-aca0-0ddad77318e1)(content(Whitespace\" \ - \"))))(Secondary((id \ - a4e74869-0e3e-4d7a-bf27-333cde7cadc3)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - e627a0a2-dee6-4187-9293-25c03387df95)(content(Whitespace\" \ - \"))))(Secondary((id \ - 766bc24d-9b24-4e05-975e-dd9e2d97b7e6)(content(Comment \ - #err#))))(Secondary((id \ - 78f71957-8efa-4d59-a575-caa4cf32bfc1)(content(Whitespace\"\\n\"))))(Tile((id \ - 2d69dac9-2ccb-4011-9aab-4eca07c7c92c)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 23b22068-b02d-4ab8-89a9-4540fef47d7c)(content(Whitespace\" \ - \"))))(Tile((id \ - 5365281a-a023-4791-9839-87684bdf31e8)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 9e80647c-ac36-45a5-b0c0-5fc8961430cf)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 06ba9142-925a-46df-964e-9df82c1833c1)(content(Whitespace\" \ - \"))))(Tile((id \ - 02a74c5f-e222-4858-a38f-42908b41c0d3)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 90156175-90f3-4dfa-a9f0-56d255aa26c1)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 49903fe9-0d39-42b7-9c7a-0f14e4a9fd21)(content(Whitespace\" \ - \"))))(Tile((id \ - 7dec882a-5c45-424e-8102-6436a5c671f3)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 529eae4c-f6cd-4acd-ae7c-d5b58803bd56)(content(Whitespace\" \ - \")))))((Secondary((id \ - c765dacb-776a-45b9-a193-78e5a748c823)(content(Whitespace\" \ - \"))))(Tile((id \ - 3e445b08-a4f3-4933-9996-7830a0748b46)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - c9aaa257-c542-4379-ba42-6abf5bf2006e)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - d637ba05-504e-4018-88eb-c977bd5560dc)(content(Whitespace\" \ - \"))))(Tile((id \ - a5f17386-4e7a-4e30-86fb-2abf74b4fc06)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 2c0726e0-3036-400a-81c6-70bdc8621e82)(content(Whitespace\" \ - \")))))((Secondary((id \ - 9132c14f-825c-44da-935b-1658fd9cea66)(content(Whitespace\" \ - \"))))(Tile((id \ - 7f3f8048-bd87-46f0-846b-58d34d6c5f62)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 2e982fe5-0106-43be-938e-ac667a719c41)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - be5ed0e3-dc75-4069-bdae-ed34c43bd28e)(content(Whitespace\" \ - \"))))(Tile((id \ - a79ea06c-1476-4c69-8beb-4145646d4894)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - e26977b4-dd03-4e05-8265-c3646e724205)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Grout((id \ - 29b37a58-9bb0-4715-948c-b7c133046248)(shape \ - Convex)))(Secondary((id \ - 2cefdb81-8d32-44cf-a3a1-21c297ad2aa1)(content(Whitespace\" \ - \"))))(Secondary((id \ - f3715eff-bae1-4485-b3a7-2e4468b968b6)(content(Whitespace\" \ - \"))))(Secondary((id \ - d76e0966-3276-4ecc-bca4-a948545fe45d)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 3b8b0cca-8049-4d93-9103-87ae36c44270)(content(Whitespace\" \ - \"))))(Secondary((id \ - 0ffc8e0c-89e2-41a1-848b-552c97f843fd)(content(Whitespace\"\\n\"))))(Tile((id \ - 2f891405-da40-48a2-b79a-5f3b55251a76)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - d4fbe7f2-6e55-4160-a618-a1d1a09eb6e9)(content(Whitespace\" \ - \"))))(Tile((id 8dbef8da-e68a-4ec8-b75e-3a29fe9c8502)(label([ \ - ]))(mold((out Pat)(in_(Pat))(nibs(((shape Convex)(sort \ - Pat))((shape Convex)(sort Pat))))))(shards(0 \ - 1))(children(((Tile((id \ - a49b7ef5-f798-4643-9265-f8cf8c42b783)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - 2a4ac6a7-0d55-4174-ab52-697d276c6fa9)(content(Whitespace\" \ - \")))))((Secondary((id \ - 61d291b8-7b27-4fa0-ab09-ff412a99362a)(content(Whitespace\" \ - \"))))(Tile((id 6b1de325-1191-4962-8899-bf6988fe56f1)(label([ \ - ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Tile((id \ - 7b855072-62f4-415e-8452-952458cffca7)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - c790af14-829d-48fa-bd81-ee93a0f1b4dd)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 1ff71883-a48a-4ea0-b098-8d76e476a935)(content(Whitespace\" \ - \"))))(Tile((id \ - c02edbab-daee-4395-98fe-757cd6fee237)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 8ce9a5b4-babe-4bf5-b061-7f45c282dadf)(content(Whitespace\" \ - \")))))((Secondary((id \ - d401bb56-0198-4147-af77-8a5aee9d583a)(content(Whitespace\" \ - \"))))(Tile((id \ - 4f91be41-e3df-44a6-8a12-a15454048adb)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - b5540fb4-c645-42a2-ada2-3b805f1984a5)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 55622bb1-19e8-46d3-bf1d-e34363fc9e0f)(content(Whitespace\" \ - \"))))(Tile((id \ - 518b51cd-a4c8-404d-a231-6f429a6b644c)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ - 744414ae-d71e-48ae-bb9d-0e578c0459b4)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - e668a5ad-b385-40ec-b5b3-d04df38d66be)(content(Whitespace\" \ - \"))))(Secondary((id \ - 18cc6604-fc46-4227-b871-d8c7df7b8bc1)(content(Comment\"#2x \ - err#\"))))(Secondary((id \ - ef4a4191-136e-4ace-976d-39d8e03247b0)(content(Whitespace\"\\n\"))))(Tile((id \ - 9d99af65-a5af-4d6e-af4d-6b454b9bc95a)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 1552bacb-6c53-4dfa-aa28-ce61edcc10f2)(content(Whitespace\" \ - \"))))(Tile((id da3f7767-bd3d-404f-b0df-1a0dcd052f31)(label([ \ - ]))(mold((out Pat)(in_(Pat))(nibs(((shape Convex)(sort \ - Pat))((shape Convex)(sort Pat))))))(shards(0 \ - 1))(children(((Tile((id \ - f157a3c6-62bf-4d01-9763-a3a6153af589)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - 113a5483-c7a2-4695-b09b-b299cd18b4ac)(content(Whitespace\" \ - \")))))((Secondary((id \ - c9129d4e-3c02-408f-8935-4e72d7010c1f)(content(Whitespace\" \ - \"))))(Tile((id \ - c8e00484-a21c-43e0-8aa5-2b78135f4fa9)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 217d5fd6-b91e-4473-98bb-42451ad1065c)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 01dff95a-d8a2-4b55-bece-4002bd9c2761)(content(Whitespace\" \ - \"))))(Tile((id \ - b41c3a2c-0ba3-4514-8dd6-8e24b395e3e3)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - aad648c6-0b64-42b4-aaa0-7be5f9a8d682)(content(Whitespace\" \ - \")))))((Secondary((id \ - f564477d-3cfa-407d-bc31-1e49f12bc3e8)(content(Whitespace\" \ - \"))))(Tile((id \ - 2b524b9c-6e74-4719-ab54-061b56ec717b)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 98f6ac6e-62bd-4748-b512-14bf23df07ea)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - fa485591-489a-43f2-bfaf-6640f7a71d32)(content(Whitespace\" \ - \"))))(Tile((id \ - ea5bf365-68b9-4850-a07a-4bc0adce1225)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 415357bc-ea8e-48b8-91cc-fa0aa13f1633)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 8bb6cc99-e72c-47a4-9ff8-6e2286b37a48)(content(Whitespace\" \ - \"))))(Secondary((id \ - 80840a69-ffa9-4e74-9d19-09edec73c165)(content(Comment\"#3x \ - err#\"))))(Secondary((id \ - 44c39228-da1a-433b-944a-a0c58b70039c)(content(Whitespace\" \ - \"))))(Secondary((id \ - 2c374313-7ea3-4e1f-872b-c4c2af86cdc9)(content(Whitespace\"\\n\"))))(Secondary((id \ - 17ab14c0-8f4b-44cd-a532-9a761a833be0)(content(Whitespace\"\\n\"))))(Tile((id \ - 6a4e05e9-217c-4e45-8de1-c9e392ccb042)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 062c107b-c14c-4c45-aa0c-c9ffa4d5dbb1)(label(?))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 869737d1-c23a-476c-ab5e-8aa7861d964b)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 4eace465-2bc1-485e-8071-10d3df39a94b)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 31e06065-f79b-462c-abaa-97f39a7acb2d)(content(Whitespace\" \ - \"))))(Tile((id \ - e7b073be-fd7f-4671-a3f2-2b6d25f21d58)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - ab43243b-e396-418f-b733-4bd210aaae93)(content(Whitespace\" \ - \")))))((Secondary((id \ - fddf6e72-eedf-43d2-bc92-49aa0a7e9da1)(content(Whitespace\" \ - \"))))(Tile((id \ - d69b9e82-73ed-4431-bd24-53dc723864a7)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 0c760bc0-d087-420d-909e-0b87ab92629a)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - cd6329dd-1917-4e68-83b6-407560872ef5)(content(Whitespace\" \ - \"))))(Tile((id \ - 8c4024e7-bf7c-4da4-a8ed-043381e009b9)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - cdf6f11c-509f-4bc7-b86e-a0d84b87b124)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 8d5c4873-344e-4b6f-9252-8d16ecea9c89)(content(Whitespace\"\\n\"))))(Tile((id \ - a7151210-7df0-43fa-b6e8-1522bd2a8d39)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 1e2df0fd-2270-4a1f-8fdc-e0a48ecd283a)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 4ebe65f5-1866-4b9c-be3f-66ba8b0550f5)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 3772625c-8d92-4280-b22c-2178e797e62c)(content(Whitespace\" \ - \"))))(Tile((id \ - bcc79751-6308-493e-887d-561862ee221b)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - a51955ae-6487-446c-9257-0716097a9f33)(content(Whitespace\" \ - \")))))((Secondary((id \ - b375eef3-cec3-485b-a38e-1c67e897319b)(content(Whitespace\" \ - \"))))(Tile((id \ - a834af07-de84-456c-bd73-62c020367235)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 0d719393-3ee1-4354-b2ef-4237e6792a49)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 08b3171d-c456-4c9d-90a2-15f7be5c40f1)(content(Whitespace\" \ - \"))))(Tile((id \ - d7f6388d-b809-466e-83de-585d71ffee7c)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 9feb45b2-455a-4c65-867c-b52c870a7bfc)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - f45233ef-9aa6-4b3b-a823-c6e50d713899)(content(Whitespace\" \ - \"))))(Secondary((id \ - 17715bae-682d-4f0a-a823-afeba96c4317)(content(Comment \ - #err#))))(Secondary((id \ - 713db1b1-9bd3-47ff-8f5f-e0430b1e5c69)(content(Whitespace\"\\n\"))))(Tile((id \ - e81b155e-d3be-44a5-a6ea-77de93eb55cf)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 056c50d0-5bbe-4d9c-aa02-82ef438b87c4)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 043b9ece-ebc9-451a-b290-7172b63c9d07)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 69ab3033-df77-4236-8146-8a44543dd271)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 80013202-921e-4217-839a-f8529889afaa)(content(Whitespace\" \ - \"))))(Tile((id \ - ad93347c-62c0-4b3f-89f3-b21c87f13fee)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 37683a2a-fd0e-45ac-a70c-ac005275759d)(content(Whitespace\" \ - \")))))((Secondary((id \ - 81c5a39d-cb24-4e1a-ab64-3ceadf99c677)(content(Whitespace\" \ - \"))))(Tile((id \ - 0d7fd7b9-51e1-4d71-8726-cc48db06fb4e)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 92ffa4ac-0a8d-4a90-9fd8-52eaae6ec3ab)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 98c632bc-bd76-4579-afea-b16084f6d9ee)(content(Whitespace\" \ - \"))))(Tile((id \ - 5a649e1e-8a58-403b-8ae6-f223d71f2969)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - a41ef3b0-6648-4e1f-b11a-d1389eaeb977)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 6330fc76-d937-4dec-95de-19a3b41a37f9)(content(Whitespace\" \ - \"))))(Secondary((id \ - 784084cc-19ef-4bf4-ae69-a058ee88bea2)(content(Comment \ - #err#))))(Secondary((id \ - 6dd9573c-3237-429d-9f67-fa0d3a527ed3)(content(Whitespace\"\\n\"))))(Tile((id \ - e519a01d-cd0c-4303-8786-16c74b0e28e2)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - b7d43d16-9dd4-4778-95c9-bd6072924dfb)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - d529608c-40dc-4a8c-b119-bee30c8b71f8)(content(Whitespace\" \ - \"))))(Tile((id \ - 11558ad7-43da-468c-8b47-5f9cb488f89e)(label(?))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - f5c16f08-3051-4023-aabf-3e1bb1df78e1)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - c6b8f9e4-6282-4559-9e72-9d225d03b1d3)(content(Whitespace\" \ - \"))))(Tile((id \ - f7c8f41a-07fb-4e4a-b5ea-629ae0f2ccd4)(label(?))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - e5bd26eb-70de-4d49-9c56-409b67357cc7)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 74ef60a5-13d3-4e2f-a547-f3989ce94472)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 92eac166-584e-479b-b29b-9f99d8b249b1)(content(Whitespace\" \ - \"))))(Tile((id \ - 371202af-d5bb-4cdf-bd65-27c8b52f92e4)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - cb068475-531a-4927-b6a1-22e4e9979b50)(content(Whitespace\" \ - \")))))((Secondary((id \ - ee59bc84-5e63-4ae8-a3c6-737e08a12db8)(content(Whitespace\" \ - \"))))(Tile((id \ - 725e1f9c-e3d8-4e53-9a89-ae1a18604e66)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 635f53a8-1cbd-4708-8e50-9d63dca1547c)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 22dc26ab-904f-40c4-8dee-00f3305b3ae1)(content(Whitespace\" \ - \"))))(Tile((id \ - 887151b3-cf70-431c-8d2b-3a27fc023f83)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 1e9cfcc6-d0cb-4b57-82a8-e7ea35bc3205)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 09735344-80ff-4b00-a349-0a6b15010e36)(content(Whitespace\"\\n\"))))(Tile((id \ - 5115c75e-67dc-46f3-a332-c00552804ebb)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 931e6408-0169-484d-971e-771107a34253)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - f045fc24-9608-4059-a6ba-21e53ed08f31)(content(Whitespace\" \ - \"))))(Tile((id \ - 6eb2dfc0-ff7d-414d-83a4-9f931d62c219)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - bb26f97d-b97b-4bb7-8bdb-fddecaa2694e)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 9136d4b6-ce1e-4392-9601-3d0c035a14ca)(content(Whitespace\" \ - \"))))(Tile((id \ - cfa13869-9098-440c-9570-f22d5a3f7add)(label(?))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 936129f1-6df6-49ee-b559-3bdbc23aae6f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 1509b818-82f0-459a-92a2-20e0da30ad57)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 8dcb0e86-df5c-4570-a764-84e0884e146d)(content(Whitespace\" \ - \"))))(Tile((id \ - 6602d0f7-cd0a-47f8-b6ad-bcea5de32084)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 8a7041a4-636f-45e2-9cd6-f662e6fd6e8d)(content(Whitespace\" \ - \")))))((Secondary((id \ - 4110f679-2c69-4fc3-abec-a40becaacd07)(content(Whitespace\" \ - \"))))(Tile((id \ - 3bdebb97-27d7-46a0-9d87-91c04c4dffae)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - f3e7fd6d-42f7-4d19-8e3f-2b2db52cb74e)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - f6db3b30-d35e-4b07-aa59-45cf8062b207)(content(Whitespace\" \ - \"))))(Tile((id \ - 28941dd4-506f-4e80-a8f4-fc2bb43031a8)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 76a1e448-41f0-400c-b7ea-a399a8f5eff7)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - c6b13e8b-ef44-42eb-a13a-b117143507c3)(content(Whitespace\"\\n\"))))(Tile((id \ - b835c649-13a0-4402-9809-71a72688b29c)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - c9b83db9-29c1-4eff-b5cd-d46a43a263fc)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 9ed6e16a-06d8-47fb-a78d-edf20205444a)(content(Whitespace\" \ - \"))))(Tile((id \ - ae369f54-62ef-4e0b-b0ed-972da618fa40)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 586adcad-0933-4a26-8699-916831c7baca)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 58f64c30-9c76-4f77-a0c0-9ffc572ad5c5)(content(Whitespace\" \ - \"))))(Tile((id \ - 1bc83856-75a5-47dc-b03f-aeaf9e5fd6e3)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 9ec96788-240f-4611-bb39-c439232ca9b4)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 9e8fe634-54dd-443d-ab4a-521abd8964c2)(content(Whitespace\" \ - \"))))(Tile((id \ - 3e7fc2eb-06bd-4be2-abaf-584b32e12d45)(label(?))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - ba595eed-171d-420a-b857-5de42ad13c8d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - b65bd133-da62-44f4-9704-ca8bc1e0ad62)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 6e1dc7f8-c2b3-40a6-b611-1b7f180439d8)(content(Whitespace\" \ - \"))))(Tile((id \ - c1e9a35d-4c3b-4fae-964e-9410da8277c6)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 75e4bbe2-89a0-4793-81ab-a7834cec12dc)(content(Whitespace\" \ - \")))))((Secondary((id \ - f76786ab-d167-41ff-8e29-62be967bd46d)(content(Whitespace\" \ - \"))))(Tile((id \ - d75262a6-3d43-4a3c-bc32-2bd23385a892)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 623f7820-12b8-47a4-8822-e05fa8adda06)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - e62d00c1-aff2-4b59-8b21-b1bc3862a939)(content(Whitespace\" \ - \"))))(Tile((id \ - 324bcc52-4e3a-4618-bfde-19b16def2eb0)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 0ffbf675-d30a-44a6-a433-d5a0468a4a23)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 160ffa92-f86d-4ad3-9acb-d07fee5e3cc1)(content(Whitespace\"\\n\"))))(Tile((id \ - 46b256a9-ab08-4cb7-ab0e-5041143d5a2a)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - eeae076c-8bbe-4278-84fb-bc2ba52e1f65)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 8fa87a25-e4ed-41fe-955e-46434c5eac42)(content(Whitespace\" \ - \"))))(Tile((id \ - b786ec13-021e-4dd3-a6d1-4a91b20ff7a3)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 78bf8675-87f4-4243-abd1-ce3715b2113a)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 57bb5cca-14a0-47ec-9503-cf45558ffe98)(content(Whitespace\" \ - \"))))(Tile((id \ - f3a6ccc8-137d-4842-a5af-393bb13039ee)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 4eae28bb-5202-482e-a426-8ea5de90686e)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 8ca9da11-11a3-4737-8491-33d1cdc88f14)(content(Whitespace\" \ - \"))))(Tile((id \ - ac57a649-a903-4e08-8fda-7c24db523cf4)(label(?))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 6b8568ad-1c91-4af8-b040-d60b863dfabc)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 44e841ae-1a43-422e-b403-5ddac077aa63)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 643d2bde-bf48-49dd-ada0-17db9156819b)(content(Whitespace\" \ - \"))))(Tile((id \ - a73bd640-e074-4b47-93f1-7427b61a41f8)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 015da2cc-d1ef-4475-be3a-cdd796acf727)(content(Whitespace\" \ - \")))))((Secondary((id \ - 9acb2c30-cf6a-4c24-87df-62bacf1bcfd2)(content(Whitespace\" \ - \"))))(Tile((id \ - be1dca30-6ba9-4c5b-b436-2e3a6eb7487d)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 5379412a-df8b-41d6-9f7c-6c8094166b3f)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 5cfc16ae-ad03-47fe-91b1-4ad2d5d44dd2)(content(Whitespace\" \ - \"))))(Tile((id \ - 8d2eea1a-bade-4543-8363-3081f99bd97c)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 033e58ff-4a73-4b04-8762-634a32b11c52)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 7e626298-c9e0-40b4-ab5b-40ebeab4d0bb)(content(Whitespace\" \ - \"))))(Secondary((id \ - 406feb6e-d83b-415b-a521-d415c5fbe936)(content(Comment \ - #err#))))(Secondary((id \ - 96e2f8b6-8d35-45b2-b13e-75766b304fea)(content(Whitespace\"\\n\"))))(Secondary((id \ - f7cc02ea-9b90-4eee-aae8-3c74a49e26c8)(content(Whitespace\"\\n\"))))(Tile((id \ - b422ffc8-ca0c-4d6c-bfaa-8571225406a5)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - da974ecf-0447-4ce1-82a7-74d6055a2ba0)(content(Whitespace\" \ - \"))))(Tile((id \ - 45d6fa4e-07bd-44bf-8a40-7c2265465b4f)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 37cde378-ebb2-4488-8317-37496fe3d043)(content(Whitespace\" \ - \")))))((Secondary((id \ - 82e0f7e1-1031-4fab-9e21-20e32a175135)(content(Whitespace\" \ - \"))))(Tile((id \ - 76114edd-a5ab-4b9e-8603-1e9407eadd56)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 714ff5e2-8029-414a-afaa-abfdbd0695f7)(content(Whitespace\" \ - \"))))(Tile((id \ - 587277fd-943e-4244-82ce-68a0e05cbacd)(label(x))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - f118590e-ab4f-4ae2-9a6e-552a0f9ab0e5)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 5e62d229-6ea4-4ff5-9fa5-bcbf1c2f7e13)(content(Whitespace\" \ - \"))))(Tile((id \ - fd45d53e-f75e-4dc3-baae-4ccbeb673351)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 7837008b-e3bb-42f8-8867-a9127126e4fa)(content(Whitespace\" \ - \"))))(Tile((id \ - 49522309-0a28-4550-bd68-6f4af81b20f0)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - deb3985a-b3eb-4209-81cb-51edfd8e9b11)(content(Whitespace\" \ - \")))))((Secondary((id \ - cfb4ee9d-b12f-41d3-b7b4-41b57bb76396)(content(Whitespace\" \ - \"))))(Tile((id \ - 759039b7-c39e-4917-ad26-7768c2441a1e)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 96676838-abac-4fb0-b053-f3c5a31d4c00)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - e426c696-2fda-4120-8fef-c8ff8da2e6dc)(content(Whitespace\" \ - \"))))(Tile((id \ - e1cc2fdb-246d-4f22-8af0-bccbdb56f732)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - cc99b5f0-a62b-46df-b757-e5a8675aaa6e)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 4ac6d11a-9dd9-4e16-9a51-21e1e8b031ec)(content(Whitespace\" \ - \"))))(Secondary((id \ - fdcc919b-9f31-4ef2-abc4-5dea77326375)(content(Comment \ - #err#))))(Secondary((id \ - c4f89285-e554-459e-9bec-d31e32440b0b)(content(Whitespace\"\\n\"))))(Tile((id \ - 329514a6-42d8-4d4e-bcb2-bfb8d7a8cb25)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 50c4e531-b9e0-4f96-a84d-0c99b30659e0)(content(Whitespace\" \ - \"))))(Tile((id \ - 7f89c831-f210-451f-b524-fa4aa79d0f18)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 9ced8341-5264-41ef-b296-25bf935fa376)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 8dac34f3-bed8-4320-aeee-0c44f64ce226)(content(Whitespace\" \ - \"))))(Tile((id \ - f9d98bae-249a-4c23-831c-623bcfc26fd6)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 5c4eb7df-2a0f-4d79-989d-4b0517785895)(content(Whitespace\" \ - \")))))((Secondary((id \ - 89593eff-af8d-4a21-9229-004daae8c739)(content(Whitespace\" \ - \"))))(Tile((id \ - eb933724-46a8-4882-9f06-364158da5956)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 807a029f-2ebb-4f26-88cb-30137df3bc63)(content(Whitespace\" \ - \"))))(Tile((id \ - cad8bfd8-9f38-42ff-845e-29709821f378)(label(x))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 9ee80e5c-817e-48dd-8512-1e344c939a8e)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - cad256b6-05a8-4712-aa63-8507bd913e6f)(content(Whitespace\" \ - \"))))(Tile((id \ - ccfb67ea-c47d-4339-a212-5c08a3ccb2fb)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - cae5d396-d39f-491c-b923-f0010827f252)(content(Whitespace\" \ - \"))))(Tile((id \ - e23b54ae-2077-47ac-bc29-2832e0f2ef68)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - cb855eeb-2e65-41c5-b458-953806b60c33)(content(Whitespace\" \ - \")))))((Secondary((id \ - 71b12abe-3a00-4cf5-a7e1-f7c0523c4581)(content(Whitespace\" \ - \"))))(Tile((id \ - 4f36fea3-e604-4f77-a0dc-26e4563d3a04)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - b2ac5c70-f396-480d-95a6-e40ecd776ecd)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - e52c206b-91f1-4d12-9c38-39dfa2ce4fba)(content(Whitespace\" \ - \"))))(Tile((id \ - 479a7dff-73f8-4f19-a00e-975f0647dc77)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 46812a90-5acc-4c22-a5ce-92233646948b)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 5ca0db43-c425-4617-ad97-a87fe9306f8a)(content(Whitespace\"\\n\"))))(Tile((id \ - 4d7fe960-a87f-4ce5-ad32-aa8581035007)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 73b23123-29c3-4fb7-9b8a-05693f256733)(content(Whitespace\" \ - \"))))(Tile((id \ - 13a3d926-b70d-41ff-8566-3c4c9b2bf99c)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 423e0344-be2f-41a9-a456-ce1049a8b0b1)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 5d7a831b-b8fd-4762-960d-0fba8f5fde2f)(content(Whitespace\" \ - \"))))(Tile((id \ - 28842be8-0534-4ab1-bf86-12781a28769b)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 36039aad-4cd9-48c2-a1bf-abfb4dc37cb3)(content(Whitespace\" \ - \"))))(Tile((id \ - 0b7ad8bb-266d-46bf-8134-d1bc1ddc8e2d)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 08aba5c3-d8c5-4297-b74a-a4d302a166d9)(content(Whitespace\" \ - \"))))(Tile((id \ - 62589bdb-8179-451e-8780-c8e4bf33b206)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 6abab41e-89c9-43cd-b7f1-457d5df8684f)(content(Whitespace\" \ - \"))))(Secondary((id \ - 60ba755b-6f24-4592-8b65-45adcfae5b02)(content(Whitespace\" \ - \")))))((Secondary((id \ - cdcbdfd1-d436-4c98-8e0c-327157bb3451)(content(Whitespace\" \ - \"))))(Tile((id \ - a705045f-412e-4dad-a2be-d56a1d362101)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - f65af529-4319-4fe6-a9c8-1b716012603d)(content(Whitespace\" \ - \"))))(Tile((id \ - 7cea72cc-149b-4e79-a93b-1b192f0668b8)(label(x))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 154047bc-4f40-4d89-90e7-fe3a0d15b2ae)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 70ab61a2-1bf1-470e-9950-a01f76d181d3)(content(Whitespace\" \ - \"))))(Tile((id \ - 4c2b76d8-f6cf-4832-946b-505151bfe46a)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - c36fdf84-9ff3-4eab-8ef7-973b0ba6a57f)(content(Whitespace\" \ - \"))))(Tile((id \ - 8d5079eb-a0e3-40ef-abc3-b075fc44edee)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 02f37a6c-8ff6-4798-ab58-7b69b6c17f52)(content(Whitespace\" \ - \")))))((Secondary((id \ - 0dbdda0c-6ef3-43bd-af0e-da537f0d2318)(content(Whitespace\" \ - \"))))(Tile((id \ - 48fbe76e-cf73-4bf3-9b0a-8e0c199f3303)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 92b2cd79-7544-4351-9f37-c05ef9093507)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 20d3283e-389a-4641-ad6b-5e1484f4d9b5)(content(Whitespace\" \ - \"))))(Tile((id \ - 6f4418d6-ae55-4493-98ed-0497267a72de)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 78d8f6db-ed2e-4899-8433-68b9625994a6)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 7c24fdf1-2e36-41bf-bae7-c09f116607b7)(content(Whitespace\"\\n\"))))(Tile((id \ - e2cd3fad-540f-415d-8043-63fc31f3b221)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 89b58c46-a94f-453a-965e-a6ba9be57212)(content(Whitespace\" \ - \"))))(Tile((id \ - c76e67a6-df03-44f2-8536-e7936f3fed5d)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - ff253a88-bd76-45b4-a989-9d9d343aa32d)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 616d4a4d-a668-4e7a-9da3-340b7ce802f1)(content(Whitespace\" \ - \"))))(Tile((id \ - 0458726d-4ccf-483c-be1d-547c65ad6b0a)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 0006a920-97ec-4970-8b1f-cf1a597d3db5)(content(Whitespace\" \ - \"))))(Tile((id \ - 6f5f976f-30ca-4e69-8579-f7ae2a108465)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - fd18ef4f-b609-4bfe-94e0-d296847bc935)(content(Whitespace\" \ - \"))))(Tile((id \ - 24797b99-a831-4b3c-9560-52080fa62216)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 0f23f05b-a326-45bb-822d-1b8e51cb2306)(content(Whitespace\" \ - \")))))((Secondary((id \ - 98d58acd-37ec-406b-8465-291fed880866)(content(Whitespace\" \ - \"))))(Tile((id \ - bd301626-525b-43fe-9cda-be70912b2f7d)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 3d82ed17-21a6-4257-abe3-805513615e48)(content(Whitespace\" \ - \"))))(Tile((id \ - 7931c017-d228-47da-a700-c35ee6b0eeb7)(label(x))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 4959e868-d1af-4cd0-a0fd-5dd704b3858a)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 68aea425-3c57-4a6f-a7d2-2c6cc0a87600)(content(Whitespace\" \ - \"))))(Tile((id \ - 1de74948-95d6-4086-9e54-46ddefc6bdb0)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 77837ee0-6d6f-4bd9-8ba8-3156b0b4db67)(content(Whitespace\" \ - \"))))(Tile((id \ - 80e6a753-5adb-4f2b-984a-50a51e9fed27)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 3183cb38-3f1f-460e-a208-2a0f22b10f22)(content(Whitespace\" \ - \")))))((Secondary((id \ - 7bdded42-9f8d-4680-9293-122093727b04)(content(Whitespace\" \ - \"))))(Tile((id \ - e123ec12-e7cc-4aa7-9154-79c244bd5228)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 158e823c-6574-41b9-9424-b9126a6205d9)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 87c83d9d-6bc3-4197-bcbe-c8e906b497c2)(content(Whitespace\" \ - \"))))(Tile((id \ - 8961a915-6957-406a-ab70-0da17acdafc8)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - e78aabd6-b2ad-4342-87ac-6740ea32c8ed)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 7d87fae4-a792-4377-92c6-14316ea90783)(content(Whitespace\" \ - \"))))(Secondary((id \ - b7bd0e63-0e4d-470e-83e8-e721992d87eb)(content(Comment \ - #err#))))(Secondary((id \ - 177e50f2-8b1b-420b-b35f-fd34fee54ea6)(content(Whitespace\"\\n\"))))(Tile((id \ - 20b66c80-1b9f-40ee-8eed-868afc146b88)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 28692c79-024d-45a8-8b4a-5654d5df86d7)(content(Whitespace\" \ - \"))))(Tile((id \ - 179613fb-c76a-4a04-bb32-b3cbfc6f9c3e)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - b23d5491-2fc4-4941-baa1-52a2e48b2ebe)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 85989bf6-e65b-4e0d-966f-c79e1a6e2ccd)(content(Whitespace\" \ - \"))))(Tile((id \ - d4fbd548-6f00-4b4c-8ce6-f914b2f927ec)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - fce4ca15-e39e-4de1-9f25-c9a05a197444)(content(Whitespace\" \ - \"))))(Tile((id \ - 57be36ff-3c4d-4d97-a859-7cf78407f249)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - c0aec7b6-dce2-4e31-8a95-afe85d6ad196)(content(Whitespace\" \ - \"))))(Tile((id aeaa175c-40d2-4078-a79d-45a97002ae1e)(label([ \ - ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ - Typ))((shape Convex)(sort Typ))))))(shards(0 \ - 1))(children(((Tile((id \ - da4b5c25-5b93-47b9-a4e5-792658f4d1d7)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 1e6a7d87-0b88-4478-ad9d-8076310a0c65)(content(Whitespace\" \ - \")))))((Secondary((id \ - cc0cb60b-75fc-4450-ac42-3cafdb5cfeba)(content(Whitespace\" \ - \"))))(Tile((id \ - ae53d282-5098-461b-ab95-5f058bc2e7a5)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 1bd72cb0-1037-4909-b674-45985ac7c1d5)(content(Whitespace\" \ - \"))))(Tile((id \ - 0d421c83-c42c-4774-9249-79434643b47d)(label(x))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - adc3d9fe-730b-4f28-b367-5decaeaed27d)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 71b89864-aedf-4a6f-b7d8-a16daa20d32c)(content(Whitespace\" \ - \"))))(Tile((id \ - bd635118-71f8-492d-9f8d-faa475c8d7e8)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 21dd2afd-0e64-41be-aef1-b8b1b331715a)(content(Whitespace\" \ - \"))))(Tile((id \ - 595c431d-1852-49fd-92b7-2aec39c6f666)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 255e2326-12f6-411c-a6ac-ee4531c8ca08)(content(Whitespace\" \ - \")))))((Secondary((id \ - a0b9b432-9747-4c8e-a7ae-e7419db9c4de)(content(Whitespace\" \ - \"))))(Tile((id \ - a8973628-7c1f-4ed5-8827-3d539d535199)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 79a281fd-0316-4d3a-a0e1-c3f1f814246e)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - bbfb1efc-a7eb-4696-8cf7-e8f9f3c6ad72)(content(Whitespace\" \ - \"))))(Tile((id \ - 00309486-c9af-4d2d-90c8-bc66a511c06a)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 2379e9e8-6f16-4225-9a6e-f95440f8c62b)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - a2eef8d8-db3a-4635-a4b5-404c4c0921f2)(content(Whitespace\" \ - \"))))(Secondary((id \ - 9612e37e-8400-48ce-948e-d2cafd3095aa)(content(Comment\"#2x \ - err#\"))))(Secondary((id \ - 832c68fe-94db-4f81-aaf6-94d9c7c77863)(content(Whitespace\"\\n\"))))(Secondary((id \ - a5a3b845-0842-4d91-8194-0b98b729c1d5)(content(Whitespace\"\\n\"))))(Tile((id \ - 16a37cbe-dc5b-4227-b7bc-7f391876ab5f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - e22a7750-a4f2-4ebd-93c0-175b6c723266)(label(?))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 91727912-05e6-454e-9782-5e618fe6e70a)(label(::))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 7))(sort \ - Exp))((shape(Concave 7))(sort \ - Exp))))))(shards(0))(children())))(Tile((id \ - 8a13034f-7c7e-49fc-af4a-44261c19e927)(label([ ]))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - d9ddffb5-5c0f-41ac-8d9f-7631ca1d2ada)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - f10d6e13-da55-479f-abf2-12475f349978)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - fbfc5089-c87a-492b-9743-1636d471050e)(content(Whitespace\" \ - \"))))(Tile((id \ - 9fd0c3db-965c-4c6f-a53f-1ea2a56b6b2c)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 34fb2388-8f32-4f6b-8848-4c0315ccc6e8)(content(Whitespace\" \ - \")))))((Secondary((id \ - 6a36d538-f325-4018-9415-eaf91fce7bca)(content(Whitespace\" \ - \"))))(Tile((id \ - cf3818bc-d193-4ad1-916b-f59ce6f9734e)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - af8e1c2b-974d-40dd-85e3-17be1e2eb285)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - b2fde3fe-6850-4aa1-9479-e300e01f0935)(content(Whitespace\" \ - \"))))(Tile((id \ - f730e703-9baa-4434-88c3-4d954f0bddca)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children())))))))))))))(Tile((id \ - e78aaab0-80e3-4256-ada1-49c56d6a86ce)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 4452164f-3c96-43fd-b93b-fea5fd8118d1)(content(Whitespace\"\\n\"))))(Tile((id \ - b4e13b72-e4fd-4f1e-8453-c0dcbb78a057)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 3030b792-98fc-486e-b2a4-98094744700e)(label(::))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 7))(sort \ - Exp))((shape(Concave 7))(sort \ - Exp))))))(shards(0))(children())))(Tile((id \ - 92d82649-57d6-4704-8d92-0cf013e1ebd6)(label([ ]))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 778d103f-be70-48ab-87e6-200b7accbed0)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - a0fdeb11-83f6-4283-a2bd-02a8680c87a5)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - bb78e77d-600d-487e-80f0-9fb38fd7a115)(content(Whitespace\" \ - \"))))(Tile((id \ - 053aded7-442e-46c2-9f5a-7039c194a87e)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 8f55ad96-a029-4f0c-bdab-e870748666d4)(content(Whitespace\" \ - \")))))((Secondary((id \ - 1b67207d-7319-426b-90de-7732f2a13e87)(content(Whitespace\" \ - \"))))(Tile((id \ - 744bec07-0822-4c77-b708-c0927855d960)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 12016f4c-9951-450c-b498-eee8dc7ae769)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 3c3d18a0-0022-4ab9-9e40-02e6eaa6ee34)(content(Whitespace\" \ - \"))))(Tile((id \ - 297dbdb6-6b1d-431d-9a23-3eb22e184cc1)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children())))))))))))))(Tile((id \ - bcf15c13-6bd4-455d-815c-b295ff1739af)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 36542426-c71a-437e-858b-bd3cc5922797)(content(Whitespace\" \ - \"))))(Secondary((id \ - ff23ec41-8dd7-4d7c-91a2-339224f8fb09)(content(Comment \ - #err#))))(Secondary((id \ - 8cae60cd-016a-4424-9157-716529f04a4d)(content(Whitespace\"\\n\"))))(Tile((id \ - 32e2f80b-d83a-4fe6-8ee8-ec4713973ee9)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - ff11824e-80e8-4f41-9f47-52c3f22de996)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 82717f81-0aa9-46ab-af23-5f4f5bab270b)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 62191de8-30df-4984-aef7-e5813cafa6ed)(content(Whitespace\" \ - \"))))(Tile((id \ - 9440e8cf-5a51-47d9-a888-6ed38bcd6309)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 94e4713b-16a1-463e-ae3a-15f3e4ca475d)(label(::))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 7))(sort \ - Exp))((shape(Concave 7))(sort \ - Exp))))))(shards(0))(children())))(Tile((id \ - 6b5bca5d-99b3-426d-9151-191bb81b4016)(label([ ]))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 1917600e-8146-4ae0-921d-a38961fde2c7)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 5b77bc26-647d-49d6-b857-66949d31fad5)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 2d644fdf-b4d6-4f76-90de-b093805bffe2)(content(Whitespace\" \ - \"))))(Tile((id \ - c35f9fdc-6716-401a-aeb2-1ca1fdb8e2b7)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 2e6140a9-617b-4c61-86c2-d5a6efbef23f)(content(Whitespace\" \ - \")))))((Secondary((id \ - 11450632-e5fe-4edb-93b3-0c033bd175f8)(content(Whitespace\" \ - \"))))(Tile((id \ - 9d630777-ffe3-4662-aebe-227954581acc)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 8f9ac4d3-711f-44e2-bb70-41cf3a5d7ced)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - e0b40035-4d13-47ab-a4f3-c5f97c8e2923)(content(Whitespace\" \ - \"))))(Tile((id \ - 3010a196-1dba-4c06-8d15-b416e805b961)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children())))))))))))))(Tile((id \ - ee6da9f8-bc92-4b2d-8a86-46007a1bb18a)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 16))(sort \ - Exp))((shape(Concave 16))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 1c2b19b1-999e-4f1d-907a-324df3549257)(content(Whitespace\" \ - \"))))(Secondary((id \ - f9ae0f2b-9d16-4ab2-94eb-a1df830bba5c)(content(Comment\"#2x \ - err#\"))))(Secondary((id \ - 715595f7-c907-4139-b8eb-e9d61e3dd88e)(content(Whitespace\"\\n\"))))(Secondary((id \ - bf573312-7a77-4788-b725-962b09bb83d7)(content(Whitespace\"\\n\"))))(Tile((id \ - eaed346f-f9a1-4571-a6b0-2408f3b5aa35)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 24ba7e71-c265-47d8-b043-fb9571296c81)(content(Whitespace\" \ - \"))))(Tile((id \ - a721ed93-334e-4a5e-b279-54818064df5d)(label(?))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 9dd3b184-e240-418f-8237-48eeb811a098)(content(Whitespace\" \ - \")))))((Secondary((id \ - 34d97d72-dbee-4cda-92ca-02e3b0813434)(content(Whitespace\" \ - \"))))(Tile((id fe7ce7dc-ccf0-41cf-b61e-58713886b996)(label([ \ - ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Tile((id \ - b10593ba-bb07-4ff5-9bd1-f22ed0783aa9)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - e85e28c3-991c-46e9-9598-42b2477c865e)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 7dc5f42b-8d36-4373-9d0f-8843fea91a1b)(content(Whitespace\" \ - \"))))(Tile((id \ - 7ddf8712-61ea-4905-b497-add09996d1c4)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - eaf9b2dd-0d47-4af1-a5c8-061891ac8f7d)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 08002c61-30fe-4b28-977a-6e168f820884)(content(Whitespace\" \ - \"))))(Tile((id \ - 9f837009-fd6a-42e2-9e5e-3b311d3134cf)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 91bbf839-f2fc-4312-af44-e8fe70a58b0e)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 34cb07ec-c128-4bae-b22b-603778514237)(content(Whitespace\" \ - \"))))(Secondary((id \ - edf1f302-ba8d-4a9f-b713-fc18c8beb475)(content(Comment\"#err: \ - inconsistent#\"))))(Secondary((id \ - 1d21fb06-5b8c-403d-9347-ccf6b2fb7427)(content(Whitespace\"\\n\"))))(Tile((id \ - 8dffbed9-b88c-47d9-a1c0-5b831c9a1e72)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 821485af-473b-4a90-bd5b-7589ed9dab33)(content(Whitespace\" \ - \"))))(Tile((id \ - eef784bc-4e2e-4903-9016-cf8fc863ca19)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 10b05fdd-ddae-4124-b9b1-21decc4828d0)(content(Whitespace\" \ - \")))))((Secondary((id \ - aaf6379a-c330-4db6-af7b-4dddf9f0b575)(content(Whitespace\" \ - \"))))(Tile((id d8e9da41-110d-4de9-a7de-b44ff0038f24)(label([ \ - ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Tile((id \ - 8b2911fa-2a94-48f5-a573-d17e83dec5b3)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - c1b21d5f-f1cf-4268-8f26-83b92873027a)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 26a10e17-9393-4593-8a58-59124dc53d1d)(content(Whitespace\" \ - \"))))(Tile((id \ - 66740b97-c103-4946-a427-e7b398cbb185)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - a791cfe5-5851-430a-ac3d-e0d46e883523)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - aa9f3248-2856-412e-82a8-dd48d95a1c4c)(content(Whitespace\" \ - \"))))(Tile((id \ - 7073b5c4-0f33-40ed-9055-9767f0a66124)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 7bfde104-a9c0-4f94-9d06-22beeee37d51)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 45117c72-352b-4c5f-af83-8e36735e7e1a)(content(Whitespace\" \ - \"))))(Secondary((id \ - f2b7d7e5-72d4-4d1f-b625-e9c3898e5468)(content(Comment\"#err: \ - inconsistent#\"))))(Secondary((id \ - ab630234-78a5-4b9a-8529-f99de22909a2)(content(Whitespace\"\\n\"))))(Tile((id \ - 65f68252-d38e-4ca1-a53b-f5e5695ec473)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - a6da039f-4d44-4717-b047-1d45349c39ed)(content(Whitespace\" \ - \"))))(Tile((id \ - ddb68bc9-8439-4ce5-8fd0-832fa669dcd4)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 52625e6f-568c-4303-adbc-109bccc6e8f3)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - e99eb9ec-1890-4588-bc89-81b5d2c7cc89)(content(Whitespace\" \ - \"))))(Tile((id \ - feb58019-e9b3-4ab8-aac6-50469697595e)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - f3af026d-83c5-47e3-9808-4da209e81c33)(content(Whitespace\" \ - \")))))((Secondary((id \ - 9d41ec99-7d66-4e27-8410-edea51fb1893)(content(Whitespace\" \ - \"))))(Tile((id c8cf18cd-3cce-4141-93e0-262c397f7378)(label([ \ - ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Tile((id \ - 7e5af338-1e12-4b77-9ef0-b9435cecbe8e)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - ce3cb6e9-ae9b-426e-8ea1-7d34de49cefe)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - eaf9f29f-6f60-4bf4-af45-656bb4cc205c)(content(Whitespace\" \ - \"))))(Tile((id \ - 750c9a5d-7491-492b-833c-7ed0f5fac511)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 31ffd780-7310-4df1-8a92-a89e7cff64b5)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - d07f6877-43fd-42d8-86b5-d08dba26aa21)(content(Whitespace\" \ - \"))))(Tile((id \ - dfa5256a-64f0-410e-b802-6ba2406cdde5)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 54dad9f1-53be-4a73-bd83-b415d7cd8290)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 91d07bd1-6bd3-4208-b25f-6eb9a8d4b664)(content(Whitespace\" \ - \"))))(Secondary((id \ - 345852c2-45de-4087-8256-52e284d261d1)(content(Whitespace\"\\n\"))))(Tile((id \ - 0a12dd2c-678e-4455-bd6d-5bc663e5dc56)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 940e0344-3330-4333-831a-4aea460376bc)(content(Whitespace\" \ - \"))))(Tile((id \ - 339ffff7-2b83-463e-a854-3c3437ab5d28)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - f9197e5c-570e-4ed8-9a4f-29cc5f82adcb)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - e48bb0db-e22f-4d30-8935-f1995d203638)(content(Whitespace\" \ - \"))))(Tile((id e17ae24a-882d-4d6a-9868-25a53e79b1f4)(label([ \ - ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ - Typ))((shape Convex)(sort Typ))))))(shards(0 \ - 1))(children(((Tile((id \ - af0fc4b3-ab89-401c-ae3c-0b81a39ec383)(label(?))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 0e9b0fa8-2a42-40ee-9b1f-3df9310411ce)(content(Whitespace\" \ - \")))))((Secondary((id \ - 05e3daf7-8ef4-472f-a181-3f8844bbd44d)(content(Whitespace\" \ - \"))))(Tile((id 381b65da-24d4-4d0a-a530-74f29497b0da)(label([ \ - ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Tile((id \ - ab7bdb41-74f4-422c-8a53-61c996a9fe5e)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 86ea2bc8-08b6-4689-a027-a44ba1212a79)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 2dff3c19-e5d1-4326-8692-b36e0db3a409)(content(Whitespace\" \ - \"))))(Tile((id \ - a0bc5a40-469c-46f1-8955-5319a19422fd)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - e75a574c-d344-44d5-8d7e-20ae67e3e853)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - feee9ac1-d1ab-4645-b57c-7a03164d1678)(content(Whitespace\" \ - \"))))(Tile((id \ - a35b9d67-d86d-4b06-9dd0-4d8be5399211)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 6497b3cb-a95d-4442-bcc3-d8090e2e5a22)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - f8e9353a-b5b5-4fbd-8032-b39888fb9411)(content(Whitespace\"\\n\"))))(Tile((id \ - 7fd18fd5-b4a4-43eb-8749-0e5931a2c580)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 4782f42e-6a21-48eb-bca8-a256a683ff8d)(content(Whitespace\" \ - \"))))(Tile((id \ - 4f66a6ba-5b88-484a-9a2f-263ac3c401d6)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - df6fc56f-db6e-4c65-a21e-d6449d973b24)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - f57a9db2-4b27-4d4e-9011-a65d52f06c8d)(content(Whitespace\" \ - \"))))(Tile((id a5fc12b1-b444-47b3-be8f-64b0cf7c3db4)(label([ \ - ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ - Typ))((shape Convex)(sort Typ))))))(shards(0 \ - 1))(children(((Tile((id \ - 89de9b90-f6f6-4cdb-887e-9ac4425f51df)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 10368c5e-2795-4710-9718-7eecfcc31f46)(content(Whitespace\" \ - \")))))((Secondary((id \ - 374708fd-3c1a-4e62-a8c5-211cee8a2c24)(content(Whitespace\" \ - \"))))(Tile((id 0bc48421-27a1-4721-be67-208b92fd3629)(label([ \ - ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Tile((id \ - 3ec40dab-a842-48f6-a98f-58c6c4ffc14d)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - f52a6f4b-48e7-4790-b129-f7dfe605db12)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 018e1211-5282-465d-aa1e-c01c5a5dd204)(content(Whitespace\" \ - \"))))(Tile((id \ - 90aa3873-9c7d-42ae-9212-56d5ddb7be25)(label(1.))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 2de8f116-03fa-4345-b8fb-409a2713a817)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - a606263a-dd65-4228-9392-7320e56a049d)(content(Whitespace\" \ - \"))))(Tile((id \ - 5de1c5ad-a26e-4abb-84e2-9d8885d9c503)(label(true))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - e11206dc-f3ba-4c8d-b9d7-3729a189997a)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 59804776-fbab-4e7f-b4c9-5170c38856cc)(content(Whitespace\" \ - \"))))(Secondary((id \ - 49a27604-e1ec-4dd3-9ae0-508c79589a59)(content(Comment\"#2x \ - err#\"))))(Secondary((id \ - bd8644c6-63d6-4e85-b190-e9e79a73221a)(content(Whitespace\"\\n\"))))(Secondary((id \ - 508de859-8307-4c8c-adec-531192ad39aa)(content(Whitespace\"\\n\"))))(Tile((id \ - 09facb73-3cc6-4f2f-a2cb-849b8dfb8905)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 075b678a-2685-4cb7-b20a-30ec25a8b215)(content(Whitespace\" \ - \"))))(Tile((id \ - f1fd4bc0-60a6-449a-9520-06e22dd15aae)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 3ca23a48-76b9-4bb1-b28e-63c4ba2ad8fe)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - f2b2ea56-5eca-4416-8fbf-3d5af26920e9)(content(Whitespace\" \ - \"))))(Tile((id 96f67279-339b-424f-a479-60000f7ed062)(label([ \ - ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ - Typ))((shape Convex)(sort Typ))))))(shards(0 \ - 1))(children(((Tile((id \ - f3359e4c-cec1-4f38-8557-14bcf32567ad)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 9daeb52d-95b6-48dc-a7aa-86925d532ead)(content(Whitespace\" \ - \")))))((Secondary((id \ - 4b957fd9-eb4b-4937-8d0d-af987a62a66e)(content(Whitespace\" \ - \"))))(Tile((id \ - f09855d7-cd50-4a1f-9ed7-85bc7a93832f)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 1fe29849-3433-4740-997d-668eef8d71bc)(label(::))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 7))(sort \ - Exp))((shape(Concave 7))(sort \ - Exp))))))(shards(0))(children())))(Tile((id \ - fddd3561-51a2-491a-97e0-6893154e3b03)(label([ ]))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 7a30df1d-81b1-46fd-8c4a-bfdfaf7539fc)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - d9a4e603-08c1-48ed-b113-0009ac910bfd)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - a4f64779-84df-4eff-ad25-7229fc9add4e)(content(Whitespace\"\\n\"))))(Tile((id \ - 2eaa6225-8b50-4fac-af7c-cdf6ac0f02a6)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 5f0766be-60e9-482f-8a6e-6a64ce842de5)(content(Whitespace\" \ - \"))))(Tile((id \ - 6c0df814-7020-470c-97cc-0f341aca78f3)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - fad6a5cb-f485-4b9f-82a3-b8320e4fa334)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 492524db-e03a-4c8d-9a86-b26f60766009)(content(Whitespace\" \ - \"))))(Tile((id 115fad2d-7365-4eb3-a443-de1405399eb7)(label([ \ - ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ - Typ))((shape Convex)(sort Typ))))))(shards(0 \ - 1))(children(((Tile((id \ - 6f8c6706-b54f-4238-a10a-ff9cf1665bef)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - a3a40f71-1c95-4f85-96a2-fe2a8f17114f)(content(Whitespace\" \ - \")))))((Secondary((id \ - b3ee84c6-5986-4301-8114-32bf685a1d09)(content(Whitespace\" \ - \"))))(Tile((id \ - 474aa01d-ec29-4809-9449-d6bdcf751a01)(label(1.0))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - bf89fc82-3456-464c-8b15-538542e3e74d)(label(::))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 7))(sort \ - Exp))((shape(Concave 7))(sort \ - Exp))))))(shards(0))(children())))(Tile((id \ - 9af9f47e-fb39-487c-b81b-d7595b7ed4ec)(label([ ]))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - d174f6ac-82a8-4e02-a620-0c5f4d69469f)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - d077972b-d5d8-4f44-9782-2eadffb6362f)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 8b3b7181-bdce-48f7-a421-444869d6724f)(content(Whitespace\" \ - \"))))(Secondary((id \ - 7fe3f81a-c96a-4136-930e-308dbe1b388a)(content(Comment \ - #err#))))(Secondary((id \ - 843fd20e-f889-44d5-9b72-a22c3ff45ac3)(content(Whitespace\"\\n\"))))(Tile((id \ - c332994a-4006-41ad-9b56-aa50ab90e60d)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - be403d06-669b-481c-9837-90f26e2f9277)(content(Whitespace\" \ - \"))))(Tile((id \ - 58666b1c-385c-4fcf-bace-08d280664e93)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 0b67de8b-c914-41d4-aded-0de955e9e96f)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 383def64-d2d5-49e7-b908-233f1356abd0)(content(Whitespace\" \ - \"))))(Tile((id 959d1342-a60f-467c-9e6b-736a06e3b167)(label([ \ - ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ - Typ))((shape Convex)(sort Typ))))))(shards(0 \ - 1))(children(((Tile((id \ - ed75b169-9e3e-4614-b0ab-bd533e3cb14e)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - c081f642-8c3e-44c5-ac73-7096709f2140)(content(Whitespace\" \ - \")))))((Secondary((id \ - 7a586f57-38eb-45d4-b816-acb66c51c1b4)(content(Whitespace\" \ - \"))))(Tile((id \ - 9763aeaf-c06f-4b68-a254-a74077d5e931)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - c6fb1be3-3c11-4f07-9fde-7dee7f515a86)(label(::))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 7))(sort \ - Exp))((shape(Concave 7))(sort \ - Exp))))))(shards(0))(children())))(Tile((id \ - 4560f41b-0387-4d28-925d-c84471ac0707)(label([ ]))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 686f2d71-762a-4ab2-aa74-49b68f2c06bf)(label(2.0))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 0be59aeb-1745-4b49-bbb6-8fde7dc8189e)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 863e7f16-0102-446b-b2bf-8b0a77ba6cde)(content(Whitespace\" \ - \"))))(Secondary((id \ - ae46b032-fb59-479e-84bb-18846b40ac4a)(content(Comment \ - #err#))))(Secondary((id \ - a8f1d162-0617-4555-b6cb-a3921504c7fc)(content(Whitespace\"\\n\"))))(Tile((id \ - c50d9505-c1c8-4d29-84d6-fa5b82723196)(label(\"\\\"BYE\\\"\"))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))(ancestors())))(caret \ - Outer))"; - backup_text = - "# Internal Regression Tests: Type errors #\n\ - # Each line should show errors or not as indicated #\n\n\ - let _ = unbound in #err#\n\ - let Undefined = Undefined in # 2x err# \n\ - let true = 2 in #2x err# \n\n\ - let ? = if true then 1 else 1. in #err# \n\ - let _ = if true then 1 else 1. in #err#\n\ - let _: ? = if true then 1 else 1. in\n\ - let _: Int = if true then 1 else 1. in #err#\n\ - let _: Fake = if true then 1 else true in #err#\n\ - let _, _ = if true then 1 else 1. in #2x err#\n\ - let _, _ = (if true then 1 else 1.), in #err#\n\ - let _: ?, _ = (if true then 1 else 1.), in \n\ - let [_] = [(if true then 1 else 1.)] in #2x err#\n\ - let [_] = (if true then 1 else 1.) in #3x err# \n\n\ - (?)(if true then 1 else 1.);\n\ - 1(if true then 1 else 1.); #err#\n\ - (1)(if true then 1 else 1.); #err#\n\ - (fun ? -> ?)(if true then 1 else 1.);\n\ - (fun _ -> ?)(if true then 1 else 1.);\n\ - (fun _: ? -> ?)(if true then 1 else 1.);\n\ - (fun _: Int -> ?)(if true then 1 else 1.); #err#\n\n\ - let _ = fun x -> if true then 1 else 1. in #err#\n\ - let _: ? = fun x -> if true then 1 else 1. in\n\ - let _: ? -> ? = fun x -> if true then 1 else 1. in\n\ - let _: ? -> Int = fun x -> if true then 1 else 1. in #err#\n\ - let _: ? -> [?] = fun x -> if true then 1 else 1. in #2x err#\n\n\ - (?)::[(if true then 1 else 1.)];\n\ - 1::[(if true then 1 else 1.)]; #err#\n\ - (1, 1)::[(if true then 1 else 1.)]; #2x err#\n\n\ - let ? = [1, 1., true] in #err: inconsistent#\n\ - let _ = [1, 1., true] in #err: inconsistent#\n\ - let _: ? = [1, 1., true] in \n\ - let _: [?] = [1, 1., true] in\n\ - let _: [Int] = [1, 1., true] in #2x err#\n\n\ - let _: [Int] = 1::[2] in\n\ - let _: [Int] = 1.0::[2] in #err#\n\ - let _: [Int] = 1::[2.0] in #err#\n\ - \"BYE\""; + title = ""; + description = ""; + hidden_tests = + { + tests = + { + zipper = + "((selection((focus Left)(content())(mode \ + Normal)))(backpack())(relatives((siblings(()((Secondary((id \ + c2890a35-b3f1-4653-9767-8d5f9752ead5)(content(Comment\"# \ + Internal Regression Tests: Type errors \ + #\"))))(Secondary((id \ + 090c5ddf-5c26-4a14-a1b9-eab92cb073c4)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 5a4d6644-ce5b-4818-a4c6-2905ca7b9d43)(content(Comment\"# \ + Each line should show errors or not as indicated \ + #\"))))(Secondary((id \ + 49670809-d955-4be4-8de7-a13e0c26ec98)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 8b8ae6b5-2df0-42a9-a2e7-d53e2e0517fe)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d69298b9-16ce-48c6-a813-04d4c6acbb6f)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 87784971-c398-4a3f-9537-9a2eba847372)(content(Whitespace\" \ + \"))))(Tile((id \ + 9cc5b09c-65a4-4a8e-853d-62d8f15d4e24)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 1e775429-5e8e-4b11-b66c-9cc3c1324739)(content(Whitespace\" \ + \")))))((Secondary((id \ + 04d76c28-7577-41c5-964a-fc54eeae9062)(content(Whitespace\" \ + \"))))(Tile((id \ + 51f991bb-2c1f-435a-920a-a20148cbc2dd)(label(unbound))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + bf68d8ff-145a-4e77-a735-120746818a4b)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 4491f5f7-9ada-4420-acb7-fa9e6ec73fe9)(content(Whitespace\" \ + \"))))(Secondary((id \ + 474b7d65-a3a0-4c3e-b0f8-cf2a0ad43887)(content(Comment \ + #err#))))(Secondary((id \ + ffe1df31-0a25-4513-97c2-c36fc135468b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + ff782a2c-aef7-4a7d-9ae0-848429b11fbd)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + e2eca969-e0a4-4a91-a89e-878e09aec2f6)(content(Whitespace\" \ + \"))))(Tile((id \ + 3c035ee1-6d4f-47fc-a76f-94f51898e718)(label(Undefined))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + dc02b1d3-06fa-4b3e-aa76-9766d01c3bc2)(content(Whitespace\" \ + \")))))((Secondary((id \ + 1d42290f-3641-4c65-a280-94551377a573)(content(Whitespace\" \ + \"))))(Tile((id \ + 0b3c4696-05af-4c34-8ab1-515fbae5550f)(label(Undefined))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + b56b3924-e775-41ca-9e61-ac4112c6d40b)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + c2c7deac-19e5-41d8-9cc2-fe9e73a29960)(content(Whitespace\" \ + \"))))(Secondary((id \ + fec4e3ce-5421-40fb-96fa-8474e5a9fab3)(content(Comment\"# \ + 2x err#\"))))(Secondary((id \ + 02f65251-ccbd-4e70-b60e-cbe1e13adc6c)(content(Whitespace\" \ + \"))))(Secondary((id \ + cadfcea7-7c09-433f-8e03-df9e89dfd9e2)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 6c52236e-4a4a-4b7e-b318-84bd95c543ed)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 557dc615-9e1c-4a9e-a00f-15234e53a953)(content(Whitespace\" \ + \"))))(Tile((id \ + 13897887-613e-408c-b120-59b8666fc0b6)(label(true))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 34fd4c5a-2433-40a8-9ded-9c6500142356)(content(Whitespace\" \ + \")))))((Secondary((id \ + 83207004-3161-4071-a526-cf9459533d67)(content(Whitespace\" \ + \"))))(Tile((id \ + 2f5a444b-0006-47ac-bd94-14c9ffd80548)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 503d2940-fcd4-4a54-879d-81d129596ad1)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + e425406e-6252-47b9-8a4c-c8870d3c1376)(content(Whitespace\" \ + \"))))(Secondary((id \ + 13255468-04e2-4816-9461-74dce40c9b27)(content(Comment \ + #err#))))(Secondary((id \ + 9d763cf1-1e07-4c47-b8ef-2b6435de5a49)(content(Whitespace\" \ + \"))))(Secondary((id \ + d2541b33-1f10-4474-9939-cd2e164493c2)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 26b81a4e-e0a8-4a8b-8b59-e0278cb81758)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + f412044b-ae99-40e1-ac43-a8785e7a2ce1)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 96732395-1218-4909-b454-484f2dc33583)(content(Whitespace\" \ + \"))))(Grout((id \ + fdd65dce-3851-4173-8c0d-a8ac07ced2b6)(shape \ + Convex)))(Secondary((id \ + 3dae5dc2-012e-4f8a-b54a-3562c4f88afc)(content(Whitespace\" \ + \")))))((Secondary((id \ + ba4613e8-5288-4f23-a6d1-7e3206f398d6)(content(Whitespace\" \ + \"))))(Tile((id \ + c873fdfc-ead5-4cab-bbf9-f319e65eb545)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 12))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 4fc68723-e8b9-4d8e-ac28-3066739c26f9)(content(Whitespace\" \ + \"))))(Tile((id \ + f36c50b4-776a-44c5-b033-a70e463f1813)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 537690ac-06c0-4b1d-84c1-6d4acc73e474)(content(Whitespace\" \ + \")))))((Secondary((id \ + a1d0648d-8c62-4713-b170-bc7db0c20504)(content(Whitespace\" \ + \"))))(Tile((id \ + 5247456c-6550-4072-8cc9-980f61c699d1)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 2acd1b5f-7510-4a74-a56f-36267b0a512b)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 7616aa0a-4eeb-4db8-865f-5b61dc1263b8)(content(Whitespace\" \ + \"))))(Tile((id \ + 81bfcb19-79c1-4bf5-b34c-3dcc7cfd192c)(label(1.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 4b260629-7c2f-4a27-9081-844c47be8ff3)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + c71f0361-b8aa-41a1-8b35-ac1d81df2bda)(content(Whitespace\" \ + \"))))(Secondary((id \ + abe0800b-ccae-4935-b9f1-0db885b79a53)(content(Comment \ + #err#))))(Secondary((id \ + a6632e31-7765-49e2-8b18-3359f88183b2)(content(Whitespace\" \ + \"))))(Secondary((id \ + 890064f6-db5c-48da-b11e-79a014c051cc)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 9c0e9437-19f4-4071-aada-9b464e0479f2)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + d821f513-71c8-47e0-91f0-012fd7269dd2)(content(Whitespace\" \ + \"))))(Tile((id \ + 81c8a5e4-c8b9-444b-b66b-29dd2bd98f39)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 955b5d47-5dfe-4140-8ebe-f1cdb5d166df)(content(Whitespace\" \ + \")))))((Secondary((id \ + 60ba9fd8-2ae1-4031-aab1-0d31582db521)(content(Whitespace\" \ + \"))))(Tile((id \ + 09d1e608-b3e5-43c8-b5bd-f3986790dd19)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 12))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + d0d97c16-df70-43e7-8c19-4b2618e3df63)(content(Whitespace\" \ + \"))))(Tile((id \ + 67304d61-8d7a-4779-84f0-e4d60a495118)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + da91c6a5-b71d-4e9b-8206-f9b83d98dd89)(content(Whitespace\" \ + \")))))((Secondary((id \ + 979e7fce-a579-46b9-995b-464e1d6d5210)(content(Whitespace\" \ + \"))))(Tile((id \ + 4728443e-07bd-46eb-a07a-876ab64a9b5f)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 317643ae-3383-413d-9708-f183ee4971f1)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 0dac4f18-67d7-4bca-acf1-50183a763e9d)(content(Whitespace\" \ + \"))))(Tile((id \ + 6e4f414a-719a-4eda-93c0-baab66a8296e)(label(1.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 2f303db8-f575-4235-8ccd-dca273aae20c)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 526338c8-55fc-432a-9c0a-b9b6f877b413)(content(Whitespace\" \ + \"))))(Secondary((id \ + a9d1100b-abd6-4d20-be7d-a58c5ed507b5)(content(Comment \ + #err#))))(Secondary((id \ + a3580f56-6d80-4396-9869-c50ee7735d62)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 50e8b8e5-6ce5-4536-bda6-3ddf728ea643)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + a5e847c7-5a2d-400b-8328-943165b1db2b)(content(Whitespace\" \ + \"))))(Tile((id \ + a4e3d9e1-8d16-4e74-b645-9e9c10b71d13)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + fa1d3aa3-edea-4d2d-afed-e613ec30dab2)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Grout((id \ + a2bb9040-1c54-4168-9f49-8716cbc12dfd)(shape \ + Convex)))(Secondary((id \ + ded9718d-58e0-44cf-83fd-1b6c5a46562d)(content(Whitespace\" \ + \"))))(Secondary((id \ + 5acbe062-4da5-47a8-a6c0-4f2ead2bbdb6)(content(Whitespace\" \ + \"))))(Secondary((id \ + 36a49252-eb7f-4210-b283-24e08b053000)(content(Whitespace\" \ + \")))))((Secondary((id \ + e648f5f6-a693-42fa-8995-b4a20961ba07)(content(Whitespace\" \ + \"))))(Tile((id \ + 46b21c79-7191-46bf-94e9-4fb884c21526)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 12))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 7d306a94-ff74-4f62-be10-af0f06529c21)(content(Whitespace\" \ + \"))))(Tile((id \ + 7276eb67-791c-48e7-94b2-240b9d7e3fe6)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 8ad575d3-bede-46e4-a4d7-f942c2aa8640)(content(Whitespace\" \ + \")))))((Secondary((id \ + b32b622a-da19-48f3-af59-95accf570e1f)(content(Whitespace\" \ + \"))))(Tile((id \ + 275151f6-414f-46ff-8927-653979248dc5)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 9ba58510-58c1-479a-a9f6-6a70a07df983)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 78eed0fa-3bcb-41a4-b6e7-fa15bbf05d29)(content(Whitespace\" \ + \"))))(Tile((id \ + 5513e260-636a-402a-94c7-c2a8cce3d454)(label(1.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 0ed17b54-7b3a-45d8-bd6e-1604f8af3da3)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 72fe8d09-0a4c-4c0d-8ca0-50d5057a9eeb)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d95a7a94-7e7d-4841-b9d1-fd772e2d80dd)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + d8e95474-b6f1-44e0-85a7-ed0cc7dbde42)(content(Whitespace\" \ + \"))))(Tile((id \ + 73906d81-9d17-41e3-9632-7bf31280bc99)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + c556f619-c3cd-4aed-8ee2-92848aece57c)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 260c4a39-fa49-4a42-8ca5-f6bfd86d705c)(content(Whitespace\" \ + \"))))(Tile((id \ + c3e638a7-2c00-4098-94cd-05563acab569)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + cd497267-e360-4eb6-8b8e-7384fc549dbd)(content(Whitespace\" \ + \")))))((Secondary((id \ + d696e851-3001-4a34-ac58-cc213ab1f833)(content(Whitespace\" \ + \"))))(Tile((id \ + b5f73e45-81d0-44c7-b1b5-39f0ed28d790)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 12))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 895d56e8-04dc-4c2a-8edb-aa307da44814)(content(Whitespace\" \ + \"))))(Tile((id \ + 7bdc158c-09c4-4303-98a2-95ac217c0d7b)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 7f09b95b-c5ab-4274-8803-eece59459312)(content(Whitespace\" \ + \")))))((Secondary((id \ + bc2998b3-bf64-4a57-aa06-33d6e3f57b29)(content(Whitespace\" \ + \"))))(Tile((id \ + 503aa496-5d44-4876-b72c-22f53e38841e)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 0c5a8275-a28a-4f93-817b-4dad704c3671)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + bee57263-7e8b-4736-bc4b-177652f48018)(content(Whitespace\" \ + \"))))(Tile((id \ + 24bd3d9e-ef99-4acf-b267-51739222ba13)(label(1.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 5c7038c0-6b3f-4f97-905f-2ac8a826a9a1)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 79209500-88d2-4efb-ae12-36961422af5f)(content(Whitespace\" \ + \"))))(Secondary((id \ + c15476f2-b945-4bd3-9d0d-b56187d74ac0)(content(Comment \ + #err#))))(Secondary((id \ + 9d3164ad-7956-48c7-9060-1585f2263536)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 8f8e5371-c0a9-4882-abab-4793d534ae95)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 5171b496-42b3-4ad6-afbd-734e7dfab18a)(content(Whitespace\" \ + \"))))(Tile((id \ + 597937bb-e437-4f79-8336-62f0bfe633b7)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 93961230-3aeb-4fe0-aa51-724650152a86)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + bad1b945-64ed-46ba-b27f-6e6ec46b3207)(content(Whitespace\" \ + \"))))(Tile((id \ + 936b28c1-68b5-4e53-88b7-838ee7cbbcd5)(label(Fake))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + f1a2e20b-212c-4dae-88d4-fd0e86aa2998)(content(Whitespace\" \ + \")))))((Secondary((id \ + 660312dd-2c63-4eb7-a6c0-ab34eae4ae85)(content(Whitespace\" \ + \"))))(Tile((id \ + 8520a1ed-7cc4-43e2-8a2b-66821f37871f)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 12))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + c65d4f9e-96fe-4c50-af8a-0acd2f008513)(content(Whitespace\" \ + \"))))(Tile((id \ + 1f09612d-cdf3-4a5a-8634-b7e7f4edd704)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + fc30bcc8-3a0a-4801-bbe4-54e44fef77e5)(content(Whitespace\" \ + \")))))((Secondary((id \ + 19280f06-f9c1-4ecd-a813-9783f1377a5d)(content(Whitespace\" \ + \"))))(Tile((id \ + ed3868a2-eeb4-4028-b399-7170800c18dd)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + e180c714-6f53-42f0-a7bc-c014691ea0a7)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 862e99a5-2143-4e3f-bfa7-fec564a23095)(content(Whitespace\" \ + \"))))(Tile((id \ + 5f88e61d-db92-494f-8b44-fa1fe0518da0)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 412a6380-f0a9-495b-a742-f8c4600f6638)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + d030eb4f-0f88-41d1-a12e-1a8aa9d7c4c6)(content(Whitespace\" \ + \"))))(Secondary((id \ + 472d7373-2de2-4699-ab83-06dbf689e446)(content(Comment \ + #err#))))(Secondary((id \ + 5946e251-b954-444b-8571-73a07f028d0f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 7c9b44aa-0b0c-4493-b4d1-b596ccfb5860)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 3d187f37-a8db-44b9-b5eb-79988c3e2c5a)(content(Whitespace\" \ + \"))))(Tile((id \ + 5f4e0850-7a82-4784-a8c1-e0cdb072b720)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 37ec8304-8678-40ac-a78c-e1564cf1096a)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 5e98976c-354d-4f26-86f2-cefb7a80ee5c)(content(Whitespace\" \ + \"))))(Tile((id \ + 79281c40-1b91-4475-8293-ffdb3420f211)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 3dc98b9e-8880-4035-a61f-346a23cb05e8)(content(Whitespace\" \ + \")))))((Secondary((id \ + 4cfd5f82-9500-4f00-9fbf-de9d15dcb2c5)(content(Whitespace\" \ + \"))))(Tile((id \ + 78fe5eeb-03df-4ff0-b565-41e9c49c239f)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 12))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + ede7a6c1-c15f-4648-9310-48732cd24e51)(content(Whitespace\" \ + \"))))(Tile((id \ + 0db9775e-926b-43b2-b3f5-d078c14cf73a)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + b03a6005-6308-475e-8f5e-4eff52656710)(content(Whitespace\" \ + \")))))((Secondary((id \ + 9a9b8d8b-d056-4aab-9156-470737187412)(content(Whitespace\" \ + \"))))(Tile((id \ + cb245d33-d282-4db3-a227-b645e9b75790)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 2cd250fd-dc35-4a9a-bc4f-9426959354e8)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 787ba6f3-84b1-4f93-b5dc-a8b870e9ba4c)(content(Whitespace\" \ + \"))))(Tile((id \ + 9a45395d-bcf2-41c3-b21b-cedec3e6a113)(label(1.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 3105b687-fd5e-473d-b967-9da7c0647341)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + db3f8bb1-72d2-4aca-a6c4-c7c554a879ef)(content(Whitespace\" \ + \"))))(Secondary((id \ + f0d098d6-5609-4f15-a04e-0ede743aeb94)(content(Comment\"#2x \ + err#\"))))(Secondary((id \ + 4d693f72-81cb-4c75-bde0-23592716a92f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d8b04ba0-8b64-4a94-9a97-70c2920e2530)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 2a8bf909-8ac9-434a-956d-cf4efbcc8af8)(content(Whitespace\" \ + \"))))(Tile((id \ + f6d6e84d-8550-473e-853d-b77f12bbefae)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 02f88e70-2821-4de0-b7a6-73287b575c61)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + a1648162-6ae8-4d24-8b93-6c537e8aabcf)(content(Whitespace\" \ + \"))))(Tile((id \ + 253ac0e4-fd26-4abc-aa21-1149fad7d43b)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 0ba56612-4438-4f63-9617-78d3c4ffa5bc)(content(Whitespace\" \ + \")))))((Secondary((id \ + ad6af5c1-5817-4b0c-ba82-321f042705f2)(content(Whitespace\" \ + \"))))(Tile((id \ + 0ba4458d-bee8-48e6-933a-18d06c343a42)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 608bb807-8d6c-4844-8d59-d3efe58d3843)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 12))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 77d36a72-5ba6-4ed4-aa9a-12b37970424c)(content(Whitespace\" \ + \"))))(Tile((id \ + 5af082f1-4d3e-4854-8ff1-1ffdaad55851)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + d48e22a5-f65a-4767-a9d0-1a40cc32b3d9)(content(Whitespace\" \ + \")))))((Secondary((id \ + 9609e0a9-f5f0-4fa6-b677-3a82f5b3c887)(content(Whitespace\" \ + \"))))(Tile((id \ + ff4f682c-091a-45ea-ac96-feb28081efc3)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 2cce8860-ee1b-4ec9-a66d-c8a748a30290)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 324ceb15-0215-4d88-8cf2-060903955c6f)(content(Whitespace\" \ + \"))))(Tile((id \ + e9a7860c-6db8-4a81-8ae4-bfdd79d70282)(label(1.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 275a0228-3bff-48ff-a304-8f6edc108009)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Grout((id \ + 17047b05-1174-4151-937d-b4833dfd6d1a)(shape \ + Convex)))(Secondary((id \ + 13edcba8-486c-44b4-93d8-c1bf41f98fc5)(content(Whitespace\" \ + \"))))(Secondary((id \ + 1bdbf758-cf85-4d57-9d74-41588be677bf)(content(Whitespace\" \ + \"))))(Secondary((id \ + 3a70753f-0da6-4a2a-bd04-12907709acb1)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + aa17c661-b339-4613-87f5-9cc5ab23d5cf)(content(Whitespace\" \ + \"))))(Secondary((id \ + 80b2cb6c-da1b-4a39-8396-bbcb94900dbc)(content(Comment \ + #err#))))(Secondary((id \ + d1468a7b-ca13-4ee5-be11-c9d8ee744a90)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 11a94a5f-356a-4c36-855d-dbb81005f92d)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + bd717dc5-9699-42e4-819e-a605ae33c705)(content(Whitespace\" \ + \"))))(Tile((id \ + 90b78761-c7bf-40e4-a659-a899afa81b5c)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 1c9d9db0-dd3d-42eb-b038-aaf42bd3b7d6)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 9fca87f4-9b31-4e5c-8982-03f73b8d1b00)(content(Whitespace\" \ + \"))))(Grout((id \ + 29f35a2c-4d0e-46f3-a17d-cdb6f0b58159)(shape \ + Convex)))(Tile((id \ + 3d63fe1d-8723-4fc2-96a7-579952450f50)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 8cff05d8-1ceb-4dc5-abd5-601a0737609e)(content(Whitespace\" \ + \"))))(Tile((id \ + ae9cbd45-3c84-4a8e-8580-4fae57ee8c20)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 25aaeff6-8269-4919-a321-5ae18d116be9)(content(Whitespace\" \ + \")))))((Secondary((id \ + eaacbf10-9ca6-47d5-8f8f-e286b53ce6ce)(content(Whitespace\" \ + \"))))(Tile((id \ + 1c286055-6c42-4648-b43e-330a792f075b)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 4db679dd-6f17-4ff2-b8f1-2a08acc594a6)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 12))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + d22f9463-63f4-451c-9850-be72b1d06b56)(content(Whitespace\" \ + \"))))(Tile((id \ + c5d62b24-fd05-404d-a7c0-21cdfeacd1f4)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 2336603c-c334-408f-a1e6-5f61132d0687)(content(Whitespace\" \ + \")))))((Secondary((id \ + bed23ec7-8aa3-4470-8236-81e76586c7a4)(content(Whitespace\" \ + \"))))(Tile((id \ + 6fc53068-7615-432a-a026-eb54d842336f)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + ffd73edf-b438-446a-990e-1b05534f81c4)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + ee921cb7-b3fb-4dd1-a280-c91d2d9223d6)(content(Whitespace\" \ + \"))))(Tile((id \ + 3d27f98b-ba04-4145-98ff-501bc97c9b23)(label(1.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + a9ae7e4e-dcaa-45cc-823f-edcb1cbdf947)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Grout((id \ + 4e543e67-9133-4e9d-b1ff-b835632a681a)(shape \ + Convex)))(Secondary((id \ + c39d6789-d1f4-4a6b-a29c-c8c25b5a0838)(content(Whitespace\" \ + \"))))(Secondary((id \ + 92e67be4-ea93-497b-a2ea-45c9966fea4e)(content(Whitespace\" \ + \"))))(Secondary((id \ + 110afdaf-1fde-4e5c-ac9b-6e0bbb6d1d30)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 5189f641-bafa-420d-b91a-204be24e470a)(content(Whitespace\" \ + \"))))(Secondary((id \ + c3c3b2ea-b824-40df-a919-9a4e441d8759)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + f9090b6a-5094-4660-a053-22404727e172)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 12e87a6a-048e-48da-82ea-382dc457ceac)(content(Whitespace\" \ + \"))))(Tile((id \ + 8e8628df-8459-456b-84d6-2cb36af4b9e7)(label([ \ + ]))(mold((out Pat)(in_(Pat))(nibs(((shape \ + Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0 1))(children(((Tile((id \ + cf25941f-eaa9-4a1a-b357-8c5b117c95ee)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + 3a1a98da-cf5a-4fcf-aa2c-548aef9e0b9e)(content(Whitespace\" \ + \")))))((Secondary((id \ + 67cc35c8-7838-4a4e-ad76-367c9369ab0e)(content(Whitespace\" \ + \"))))(Tile((id \ + e262c9fa-ae87-4fc8-9057-a9461bfd9bd5)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0 1))(children(((Tile((id \ + a7254a23-019e-4314-af62-6d9c7bfb672b)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 10ec1999-7398-48f7-863d-d1d5e36f3d2f)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 12))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + c7ac74b1-6e15-4e71-a746-39bc1efc8c27)(content(Whitespace\" \ + \"))))(Tile((id \ + ba2f5cb7-3230-4ec9-a771-b691c357108a)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + b7fc917b-738e-423c-904d-05a96059bced)(content(Whitespace\" \ + \")))))((Secondary((id \ + dd935528-15f2-4c7d-8804-a4d472b14489)(content(Whitespace\" \ + \"))))(Tile((id \ + ff4d570b-28f6-4b30-a316-3a409235447b)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 1fb75734-2d7a-4769-9753-b17b1592087b)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + eed1455f-cad2-4bae-8f40-ea91ebc25208)(content(Whitespace\" \ + \"))))(Tile((id \ + 2371b8a3-f2d4-46ec-bbc4-a60cbf89ef6d)(label(1.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + f1e569ab-92b8-47e3-a64f-35fdc0407aa3)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 342903af-c89d-49a7-bc25-5de96ac97281)(content(Whitespace\" \ + \"))))(Secondary((id \ + 2836626f-426e-4d0f-abb8-e947f32132f5)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 3d735aba-e54e-400b-8573-7e839a3b9594)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 1855f1ad-a3ba-4224-99f2-d575807cf9f4)(content(Whitespace\" \ + \"))))(Tile((id \ + 9e393b21-55dc-4ce9-ad66-de202a408331)(label([ \ + ]))(mold((out Pat)(in_(Pat))(nibs(((shape \ + Convex)(sort Pat))((shape Convex)(sort \ + Pat))))))(shards(0 1))(children(((Tile((id \ + ea98ca45-1496-4863-93f8-3c2332b1b479)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + f2df6024-92a9-49a5-88aa-39ffdfe6dd94)(content(Whitespace\" \ + \")))))((Secondary((id \ + 62c5a63b-cd57-4076-9551-1ae18d2b5025)(content(Whitespace\" \ + \"))))(Tile((id \ + e6e249a9-c461-4c0f-acce-c5fb18660415)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 28e5f8e2-b712-4c28-98f0-be264ed0d9d9)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 12))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + e243b1c2-c613-4578-be3c-c3a352c1b602)(content(Whitespace\" \ + \"))))(Tile((id \ + e155439a-5123-4b48-891e-d66bd6c15636)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 2fbc7089-202c-447c-ae1f-0befd34a6f25)(content(Whitespace\" \ + \")))))((Secondary((id \ + 457ce868-2756-43d6-85fd-3dbd77b0bf43)(content(Whitespace\" \ + \"))))(Tile((id \ + aa2b1a04-2234-4c8d-bf1f-dde6283f8c6e)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 4cb364cd-2ae7-44b0-9e42-20c673269007)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 84e6798d-a1d4-4688-83bc-941ceb1f1eca)(content(Whitespace\" \ + \"))))(Tile((id \ + 9e910694-b45d-4b2e-9f3b-6f3e92f40280)(label(1.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 6e1b78c6-08fb-4eea-ad24-8a25bb546292)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 60c6c426-b0f5-4c23-b7ad-2d2599c327bf)(content(Whitespace\" \ + \"))))(Secondary((id \ + e0a7fd21-7379-4620-be7d-9fc89c0748c5)(content(Comment\"#2x \ + err#\"))))(Secondary((id \ + f50e71ce-8170-4aba-ad79-d299d2f91a57)(content(Whitespace\" \ + \"))))(Secondary((id \ + 4dd92573-6d7c-4296-9208-937e7a2aa82a)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + d77b580d-b094-478f-9565-14ce2c48c3cd)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + f042fe33-b554-4f20-b618-2fa3c8e72461)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Grout((id \ + da5f7a94-d56f-419d-81a4-e90f5e4ad103)(shape \ + Convex))))))))(Tile((id \ + c005aa0c-43a6-4084-8b73-db752bd727db)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 597ecf17-421a-4853-9600-eb6e87ad1fc1)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 12))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + c6d281a5-7366-4fc6-b93f-a5b506a71e24)(content(Whitespace\" \ + \"))))(Tile((id \ + 565daa13-0e6f-484d-9db2-c2c4412a54a7)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 0606bb3b-03a8-4d74-beb9-0d8fc732f979)(content(Whitespace\" \ + \")))))((Secondary((id \ + cf5c6a9f-abe1-4fb9-b6dc-a9dbd6d7dba8)(content(Whitespace\" \ + \"))))(Tile((id \ + 1998792d-d014-4ac8-9359-2a97c35a8f4d)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + d55d2bae-a087-4fd1-8d06-bc046516f54f)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + bce25bdc-97f5-4167-b0a5-28a7838bebdf)(content(Whitespace\" \ + \"))))(Tile((id \ + a37487be-086a-4d06-9e37-f4a6e0c74f15)(label(1.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 0dd1749c-08c8-463b-8c08-d7540b7fd5f1)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 570a141b-ab07-4691-840a-ea9e46b4aa3d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 387cc421-9cee-4b2e-b8c9-64420e4e3e0c)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 8000090f-6960-4cc4-8972-4b3b4934bbdf)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 21e644ea-f7ec-4444-be5f-6a628e76b1a5)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 12))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 9dd67d89-f568-45ca-a855-b39658cf456c)(content(Whitespace\" \ + \"))))(Tile((id \ + 87fdc732-9c35-45c0-b05d-841c3f76fcb7)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + e426f078-9c62-4ab7-b8e5-f3846f02e372)(content(Whitespace\" \ + \")))))((Secondary((id \ + 9eaced5b-63a5-43e5-9f9b-65877c1e2646)(content(Whitespace\" \ + \"))))(Tile((id \ + 93aea0bc-7454-4307-bddc-19b83469ac2f)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 00645620-caec-4675-8b29-deddb545f394)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + f38ed27d-79ac-4416-893c-56aa5b086d7d)(content(Whitespace\" \ + \"))))(Tile((id \ + 56d55ff8-a6c7-499a-9c41-e7249a9f2789)(label(1.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 92403899-717e-4808-ac3e-3767e0eac20d)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 0f4bf478-ad4e-4543-867d-48080fbacb3c)(content(Whitespace\" \ + \"))))(Secondary((id \ + 634ebd5a-061f-426d-8278-caf13efe2fcf)(content(Comment \ + #err#))))(Secondary((id \ + 6341373a-1b18-4f9e-a516-25b97197b5b6)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 91b8fd2b-50d5-46f3-9e2a-f4114ad5d08e)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 35bef15d-fb86-4914-aea9-f26da914d8b5)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 55037480-08df-43b7-885d-c02860217f6d)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 66791c1d-5fd9-4219-96fb-4bd8ba9165e6)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 12))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 4534c71d-fbf2-49b3-8733-70c5c53f9fb6)(content(Whitespace\" \ + \"))))(Tile((id \ + 5936b2bb-c495-41ac-915b-84720407aa82)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + dd27ba1f-0e47-47dc-8a19-b1ab49ddc6ae)(content(Whitespace\" \ + \")))))((Secondary((id \ + a8d6513a-d522-478e-a64e-ed20e95ced90)(content(Whitespace\" \ + \"))))(Tile((id \ + 6b75f592-c667-4990-b872-45254ae84f58)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 7d563839-85f2-4636-99f5-0e0eab764be6)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + bb0e52cd-b00d-42d8-9697-52cda117a7be)(content(Whitespace\" \ + \"))))(Tile((id \ + 11b0bba6-2add-46c0-80ea-eaae5fe2a612)(label(1.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + d4989258-1177-43cc-85c8-0dece96af223)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + bde6f2f6-7dee-41fb-8ec8-7ce0a8d5de20)(content(Whitespace\" \ + \"))))(Secondary((id \ + 1da33e8c-40ca-40fe-8e25-c58069bda77c)(content(Comment \ + #err#))))(Secondary((id \ + f7d18d01-968b-40cf-a368-ecc331878420)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + c84b88f4-3ab1-449c-bac0-1788f3910edd)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + fd353163-012c-4c4d-a5c5-e394ecd16ae2)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 048898ab-996f-4b90-b66c-bff87aa60b61)(content(Whitespace\" \ + \"))))(Grout((id \ + 859388a0-5d8a-48a1-b60d-d1a89e219d08)(shape \ + Convex)))(Secondary((id \ + 10d220ad-0935-4d34-a650-a3cd9d04f606)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 9e5262aa-2218-4b3c-a2ae-81123cf669d7)(content(Whitespace\" \ + \"))))(Grout((id \ + 64517fe7-e255-4bc2-8834-b72704af952f)(shape \ + Convex))))))))(Tile((id \ + 783434d2-9a4d-4a4f-879d-214deb152945)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 33189c28-075e-45a0-b322-bf95b999fe4a)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 12))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + a56657fc-4b1f-46f8-882c-ddfa6b681f37)(content(Whitespace\" \ + \"))))(Tile((id \ + 7c2df4aa-19e5-4677-bacd-5b7a724798a5)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a336b9e2-f9a1-416a-982f-96e525d7a097)(content(Whitespace\" \ + \")))))((Secondary((id \ + fa4494a5-f20c-4f3c-bdac-93367e9f675d)(content(Whitespace\" \ + \"))))(Tile((id \ + becfa6ad-81a4-4043-b34f-f9cd6968bdd4)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + e636ba9d-f4f0-4b6a-a857-f72272703edd)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + c4907dc5-0d6b-4f19-876e-2a7d837d2526)(content(Whitespace\" \ + \"))))(Tile((id \ + afea6b91-26f2-4c46-b1ea-15e893de8d44)(label(1.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + a4226d0f-0630-440b-b925-355c4323e26d)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 01ff0dc7-27f6-4bb5-a4fa-018d7296f307)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 953c3984-84f7-4724-b92a-a9a829788351)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 38407f72-07a5-493b-af4a-23ddcba9b306)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 808ba58b-c96b-4222-996e-d20bc439b39d)(content(Whitespace\" \ + \"))))(Tile((id \ + 71431cc7-a1ba-42a6-9e18-048bf7ed09ca)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 2b68db99-6d3c-4256-bc00-252ced2dd688)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + a0235b54-2e45-4d56-b677-baf460eeb39d)(content(Whitespace\" \ + \"))))(Grout((id \ + 30ecd689-7fdd-4a7e-b180-65fd090457c9)(shape \ + Convex))))))))(Tile((id \ + c57eb10b-f7b5-47af-8678-f6ea4067c6f7)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 3ddcb139-95a9-4888-ba0f-5442df48f9a7)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 12))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + e695ba82-cf68-46ce-925e-31249261cd8c)(content(Whitespace\" \ + \"))))(Tile((id \ + 0486935e-9996-4670-9f7d-c454f07554a0)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 528c71f4-4aa9-4397-b56a-b3fa05d26e80)(content(Whitespace\" \ + \")))))((Secondary((id \ + fd2ee037-5c94-450e-9bb0-00783b2adda9)(content(Whitespace\" \ + \"))))(Tile((id \ + fc17fe9b-be91-40f4-b6d8-334ae02cf696)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 28ac697b-72c1-4380-a4ac-77a6d620ce07)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 5d6063b7-7b37-4a0a-b94e-2d416668609e)(content(Whitespace\" \ + \"))))(Tile((id \ + 62e9e671-3419-4b81-ab5d-370a5a394aa9)(label(1.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 055bba99-c1db-48af-9aa6-4ba45f916bd5)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 12c3e8d4-f091-46c0-9755-5635c4f2b5b6)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + a331d7b3-e0e5-4503-8eda-98fb4017d7b8)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 93dd678e-5279-495a-aa88-2fa862389909)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 4597f735-731c-4066-9851-cd52d6542cee)(content(Whitespace\" \ + \"))))(Tile((id \ + 87294766-b061-4b33-84e7-b820bc4fb3cf)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 394ec58a-fb30-407f-b376-432f454bc179)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 41c4021b-e111-4501-8940-762c147bfc82)(content(Whitespace\" \ + \"))))(Grout((id \ + c347ce4a-b918-4de4-8400-cf7174b04eec)(shape \ + Convex)))(Secondary((id \ + 092d4568-73e7-4dab-aeb2-a96ba06aad7c)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 89f8d64f-4dca-452f-a5e5-405b0dd06197)(content(Whitespace\" \ + \"))))(Grout((id \ + 3fcdc9aa-d3ea-48dc-aa4e-50d47fe5def0)(shape \ + Convex))))))))(Tile((id \ + 0affb0e4-3f8f-4a78-b155-9cf118ca8eb7)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + bffb5f4a-a206-4568-b182-a633e4b7d67e)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 12))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 7da6ae55-bd62-4139-8b5c-b3467b28d15e)(content(Whitespace\" \ + \"))))(Tile((id \ + a38e5299-1158-4600-a4db-05d26b529068)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 56db0b7d-70ce-482f-8bdd-f261e4bb033a)(content(Whitespace\" \ + \")))))((Secondary((id \ + 366cc558-76f6-4454-ac7d-a42dd3da2584)(content(Whitespace\" \ + \"))))(Tile((id \ + 9d875eaf-40a4-4826-95ea-ba72c0cd2c81)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 5d888c4a-19d5-4e34-9401-04e577bc1c48)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 85c80d5f-538f-40d0-b5d6-e235a7f5141f)(content(Whitespace\" \ + \"))))(Tile((id \ + 74612f3f-3d30-472f-86a4-fbc1857c058a)(label(1.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 470469dc-d8c3-469b-9c18-3d8e008b193b)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + d1dc00cb-ccae-41d1-bddb-107de0e308be)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 6c61507f-9013-45f0-aa48-1a3d015573cd)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 84bef4da-1203-478f-85ca-9ee88c6f3beb)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 6a9d6562-d5e6-4b2b-a031-11739b0c2c3e)(content(Whitespace\" \ + \"))))(Tile((id \ + 33442197-55d4-4dbd-9138-5e50ff98d573)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 8cb1eae4-c597-4b00-a2eb-5b57a125a194)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 6465c91e-5f51-4910-918f-9d204e1bcbd3)(content(Whitespace\" \ + \"))))(Tile((id \ + 55757bfd-ff22-42bb-9cd6-5608f5f015ff)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + f99eed79-6ba7-4182-ac8a-299afd43bbe9)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 420ac88a-4caa-46b4-9d0a-0bb5b1b14db6)(content(Whitespace\" \ + \"))))(Grout((id \ + bc42c4d1-dd82-433f-b065-ac7de6dde15b)(shape \ + Convex))))))))(Tile((id \ + d9dfdd76-ecde-417a-ba68-8cfb016ab80f)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + ea8ee01c-941d-4c66-a647-7918eefbb221)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 12))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + eb92a4a6-8137-46ff-8763-0f1c1cce4e0f)(content(Whitespace\" \ + \"))))(Tile((id \ + 3d6f8955-5d58-4093-9901-4cb799e4da68)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 5c39d9d8-1353-4c82-95aa-cfd3c710d2ef)(content(Whitespace\" \ + \")))))((Secondary((id \ + dbd5746c-73d2-4bfd-b1d4-9bb4ddee1844)(content(Whitespace\" \ + \"))))(Tile((id \ + c3b3c0c4-46c1-4190-9173-0ba09eb387a3)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + e8ee62da-8d62-4ef9-97b9-159f1b4a212a)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 50dac4a7-2903-4ad4-a0ba-647854776727)(content(Whitespace\" \ + \"))))(Tile((id \ + 6c624d4a-3555-428a-954b-a312f3029cab)(label(1.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + a73dcc1e-7ade-4348-a466-c52a96e93884)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 9f00a5ef-4f7a-40d8-befd-c7c0d3c8a9ea)(content(Whitespace\" \ + \"))))(Secondary((id \ + e8ad89fd-898f-4e2b-a3eb-f1220739d5ee)(content(Comment \ + #err#))))(Secondary((id \ + 0d081213-9d46-42ee-b251-c3833afa9268)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + d38dbc1a-10d5-43bf-9b21-c0fb792ff103)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 35f80ac8-05d2-47c0-96b0-fe39ffa828ba)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 3ff96410-6cde-468e-b92e-60c5dbcdbb1a)(content(Whitespace\" \ + \"))))(Tile((id \ + cd0d9dc1-2890-40ad-bb56-9bff2cd214d9)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 09519fa6-8a8d-49a7-b97b-9446691ac068)(content(Whitespace\" \ + \")))))((Secondary((id \ + 7d48115d-4ed4-49d3-9026-f7ad7b3258dc)(content(Whitespace\" \ + \"))))(Tile((id \ + 8438b733-c653-40e7-bbff-5d4b99a40808)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 103b9289-b28a-4c91-b38b-16ddba0518b5)(content(Whitespace\" \ + \"))))(Tile((id \ + 673dd059-8cdc-4b7e-a624-2f4006e16b66)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 4d32ab0e-aa4c-4440-a471-858d48f0649e)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 76eb013f-ee4d-4f01-958d-945f5cdc1b0a)(content(Whitespace\" \ + \"))))(Tile((id \ + f2867227-a84e-48c0-aefd-0a6d27dffd3f)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 12))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 536f6d84-2485-4700-856a-629a00f30c51)(content(Whitespace\" \ + \"))))(Tile((id \ + fb05cdc7-856b-413c-9130-26a7b33fb7a6)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + d3cb1bb1-3557-4483-b9ef-8df266b162c2)(content(Whitespace\" \ + \")))))((Secondary((id \ + 277e68f0-754d-4e80-8a7b-d56b9b9aa9f4)(content(Whitespace\" \ + \"))))(Tile((id \ + a9256755-3fd2-4341-8307-7806781ac7ac)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + dce7ceae-84ee-4d61-8c22-b695f164af14)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + fb80563f-83de-49db-8e2a-a9211d8c0b0a)(content(Whitespace\" \ + \"))))(Tile((id \ + ce8523a7-3bf0-46ed-9e10-c06b9cbb72a7)(label(1.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + ff99f97c-f2ff-400a-bfc8-0c9a6bcff924)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 695a14e2-4ca6-46fd-99eb-862ef7629ffe)(content(Whitespace\" \ + \"))))(Secondary((id \ + 592c2ffd-79a2-45c3-bc3d-283cb6aa7a76)(content(Comment \ + #err#))))(Secondary((id \ + bcb2d205-cf7c-43ef-acc3-978957fecbe9)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 25ed166a-87e0-4172-818b-2b62a8bda24c)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 9868c377-1e5e-4a84-a575-cc38ab948866)(content(Whitespace\" \ + \"))))(Tile((id \ + 4918c91e-8e50-4735-883b-a356720ea9d2)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + a52427c4-8fad-4952-9ce2-071dbbab89d9)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 8fe334cd-5fa8-4d94-84d3-34385126ca98)(content(Whitespace\" \ + \"))))(Grout((id \ + 653091cf-f907-4593-90a5-0f8c07a68006)(shape \ + Convex)))(Secondary((id \ + 991a094b-7379-4445-a8ee-87b39301f44b)(content(Whitespace\" \ + \")))))((Secondary((id \ + c7ba46b9-2795-4e23-9257-c980fa33f40a)(content(Whitespace\" \ + \"))))(Tile((id \ + 4839dfee-a097-40eb-b968-4762751a00cf)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + fb185c7a-882a-4d4d-a696-b835827a067e)(content(Whitespace\" \ + \"))))(Tile((id \ + 3386719d-5ae9-466e-bcbb-76c10b1a7cd9)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + cf81b859-0f34-44cb-84c4-ee0a294618b3)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + f0a26556-e334-473c-8cf8-c57092e4f36a)(content(Whitespace\" \ + \"))))(Tile((id \ + d5d5e598-a807-4bf5-bfec-fe007c7b3a22)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 12))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + c8e619cc-2d91-4991-85d5-546da420b09d)(content(Whitespace\" \ + \"))))(Tile((id \ + 3a199739-00ab-427d-868a-d401e27d83fe)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + ac76f6fa-c89a-483b-bf41-4593f9f1b21f)(content(Whitespace\" \ + \")))))((Secondary((id \ + be7ef864-67a0-4fe0-9bf6-4f882754dc82)(content(Whitespace\" \ + \"))))(Tile((id \ + dfa24cb1-5893-41e9-a062-bd4ec11e605e)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 50514c7a-0b13-4c44-80d5-a3357fcc0012)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 490e8e38-b288-4122-bc9f-ec6882b9ff61)(content(Whitespace\" \ + \"))))(Tile((id \ + af9ae9a8-74b0-4d58-8107-7dba40c5e153)(label(1.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + d8cbf47c-8aa1-4f01-b414-892b1512aa51)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 0083e628-0325-46bf-a55f-b2d9673a1778)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 6c7603d2-1f45-46e9-9fc4-477dc7140cca)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 37df505f-e3b7-483b-85e1-99d1a420a9b6)(content(Whitespace\" \ + \"))))(Tile((id \ + 35390017-9451-4508-a83b-7524bad86fc4)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + a3206d48-65ee-4b0e-b65c-addfe0e9c62e)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + b7ecddd6-8846-4963-a461-1f0b9bd84979)(content(Whitespace\" \ + \"))))(Grout((id \ + 4da9fa71-62ee-4931-bcd1-1a33bb41840d)(shape \ + Convex)))(Secondary((id \ + b3f4fb40-e05d-466c-ab85-39d6e23e0767)(content(Whitespace\" \ + \"))))(Tile((id \ + def384f8-b29b-4dfb-a36d-85a809641dbc)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 3bf09644-328a-4419-8c85-f02f99efb9d2)(content(Whitespace\" \ + \"))))(Grout((id \ + a95b9978-19ec-48f9-ba13-6d458ca30443)(shape \ + Convex)))(Secondary((id \ + ec61c941-3afd-4226-8ffc-fc1b54122412)(content(Whitespace\" \ + \")))))((Secondary((id \ + b5fd0857-94d1-45a2-8ac0-41c72af48c00)(content(Whitespace\" \ + \"))))(Tile((id \ + a3677a6f-6aa9-44e8-a44e-f4643498eec4)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 17fcc7ed-aa0e-493b-97a8-aa78cf51b2fe)(content(Whitespace\" \ + \"))))(Tile((id \ + a25707f6-8e51-420a-aa12-05df1b5b9152)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + d22d1ad5-68bc-4ff3-ab87-1eadd3a003ec)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 90fdd949-668d-4977-a390-869262719fab)(content(Whitespace\" \ + \"))))(Tile((id \ + 0557157c-33b3-43b4-a046-c7b881d19216)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 12))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 755a7811-722a-41f6-9b56-80cdfda1b034)(content(Whitespace\" \ + \"))))(Tile((id \ + 7b63343b-a942-4302-9ce3-56ef30b62d39)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + ffbc6847-3a7e-4b9e-9514-92e5d8b3e277)(content(Whitespace\" \ + \")))))((Secondary((id \ + bc4fee4b-bfc4-4d8d-a21c-32ddd20d4115)(content(Whitespace\" \ + \"))))(Tile((id \ + 61ef3fd6-dc5e-4173-a46c-21a4e9e903b7)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 1a42a366-5df3-4b08-b9b8-ddc50e9fa073)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + d36add28-c6d6-4d4a-ae6b-3b53f65a813c)(content(Whitespace\" \ + \"))))(Tile((id \ + e6fb11d1-572b-4992-bb6f-c3ce42c31a5b)(label(1.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a1564a6d-ddcd-4382-b57e-1852880686af)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 4c9de5ed-d3f5-40ab-957a-ab2b7ebacf82)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + e9a91bdd-1b8a-4628-805f-0a21e5b22197)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 2d6fed2a-48c6-4b44-b0c2-ab7d7f51af72)(content(Whitespace\" \ + \"))))(Tile((id \ + b2cdc1f9-3351-483c-9638-f771257810d1)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 8e161d9b-fe98-4adb-846d-3183117c15fc)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + d7e9e9af-16d9-4be7-b772-47fe800aa248)(content(Whitespace\" \ + \"))))(Grout((id \ + cf9694be-3b9f-4fd3-ad55-858faa4e5f02)(shape \ + Convex)))(Secondary((id \ + de591d6c-a4d8-4591-9c3d-016e28ab0985)(content(Whitespace\" \ + \"))))(Tile((id \ + 57226fd7-6fe7-4284-a58e-3e828da4c10b)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 0d276a95-1daa-457d-ab45-dd7874086238)(content(Whitespace\" \ + \"))))(Tile((id \ + 2c187a0a-a6d7-4dbd-bf2f-1254faf967c8)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + c5305727-7034-47c4-9b13-76e2ac8b158f)(content(Whitespace\" \ + \")))))((Secondary((id \ + 66945bb7-c5c7-4a6a-bb95-9ab4a4096aca)(content(Whitespace\" \ + \"))))(Tile((id \ + dcf922aa-beb1-4e2b-8b31-79696c1ba35e)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + b86c3ae2-f820-4b20-8f4d-c8cd2d034d4c)(content(Whitespace\" \ + \"))))(Tile((id \ + 78164bbb-a765-4907-a883-0b43f38c8f40)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 7c476086-ecce-47b4-b7e0-6eda1e7f99ce)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + bc736e1b-63f4-4e30-b612-8cce38bb2f4f)(content(Whitespace\" \ + \"))))(Tile((id \ + 774faf15-02ca-49db-aa2c-ed9951c7e422)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 12))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + dec59fd4-6edc-4055-a1e8-db02398bd11e)(content(Whitespace\" \ + \"))))(Tile((id \ + 66dc2eb8-49b8-4770-a380-03ecb1c39654)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a6da3ecb-cbbf-4467-b699-f33c2e198794)(content(Whitespace\" \ + \")))))((Secondary((id \ + 97c06b6c-f2fc-4f85-8233-e1e24f55f183)(content(Whitespace\" \ + \"))))(Tile((id \ + 49f69120-67f3-4f12-8473-25854331d0a7)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + e7adea10-9083-4988-afcf-d748d5c83dc0)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + c4bf9155-bdf3-4583-810d-7fbc5963d1a4)(content(Whitespace\" \ + \"))))(Tile((id \ + 736d66cf-946f-4560-89b4-3fc126888dc1)(label(1.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 4492e518-d63e-4b85-91c2-26cb60446eb3)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 1e2692c3-306c-409d-b336-cef082edcd8c)(content(Whitespace\" \ + \"))))(Secondary((id \ + ae09d83c-ae42-4b0e-8765-8aee441f0616)(content(Comment \ + #err#))))(Secondary((id \ + 03b03c43-459d-491b-ad03-a72757614270)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 092b9051-f708-4479-9166-d6161e6b254f)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + bd68afd2-4abd-43b7-b370-539fc05fc7f5)(content(Whitespace\" \ + \"))))(Tile((id \ + b4ed8e27-adb1-4436-b2d2-fe1faf8d36f1)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + c21f3089-a8fa-414a-b6f4-d07fc101fccc)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 583749a3-eba6-4e91-9cfe-36ff52355aca)(content(Whitespace\" \ + \"))))(Grout((id \ + 4e5cdbcf-6fc5-48e0-abf0-2fc5054d3574)(shape \ + Convex)))(Secondary((id \ + 5a84df8d-23ef-4dac-8388-201f94248eb4)(content(Whitespace\" \ + \"))))(Tile((id \ + edb29728-1267-4abc-9081-195f6663856f)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 8a308706-b82c-4215-a4bd-c8cf8fbd1a8d)(content(Whitespace\" \ + \"))))(Tile((id \ + 6bfd0ba4-08a4-4f77-8b64-126378c1907e)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape \ + Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0 1))(children(((Grout((id \ + e89b84de-7ab4-46de-a7d5-94abf6588ec0)(shape \ + Convex))))))))(Secondary((id \ + f7dde1a7-74ac-4b68-bf6a-812a666fd963)(content(Whitespace\" \ + \")))))((Secondary((id \ + 4ee83851-34f6-4867-a055-ca51562dfb48)(content(Whitespace\" \ + \"))))(Tile((id \ + bba577e3-68f9-4353-ae2d-e24914773aa9)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 342ca27b-4acf-4a91-aef6-2426ae0200a6)(content(Whitespace\" \ + \"))))(Tile((id \ + 6271d837-e1af-407a-8f42-902f46019fdb)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 3857a916-2ca2-4b91-9ce3-08bdcea49694)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 830c1a4e-d2eb-4d27-b5af-9edfe71db503)(content(Whitespace\" \ + \"))))(Tile((id \ + 5c18044e-489b-458e-ab15-649911a03030)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 12))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 389ce73f-f26f-4be2-a221-dc4713f67f29)(content(Whitespace\" \ + \"))))(Tile((id \ + 1c4d1edf-c38e-4a8b-a654-eda7ac54fbfc)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 5e8c1968-ee4f-426a-a161-a578efb13975)(content(Whitespace\" \ + \")))))((Secondary((id \ + 802b0b26-b087-4fc5-b422-fd7727778899)(content(Whitespace\" \ + \"))))(Tile((id \ + db1691b5-be53-42ea-a42b-48615ce08542)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 3815c49c-0867-467f-9881-1ebb7e272bbc)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 90d59c52-5f6a-4dd5-a008-08a674362dd2)(content(Whitespace\" \ + \"))))(Tile((id \ + 77a1c18c-e388-464c-8a96-99d509f09a60)(label(1.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + c4b13785-8b02-4432-98b3-734f7f00dee5)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + c4f76c84-7f32-4d47-b5f1-81bf03e05f9d)(content(Whitespace\" \ + \"))))(Secondary((id \ + f791a637-6547-4952-b2af-2df75636a400)(content(Comment\"#2x \ + err#\"))))(Secondary((id \ + b280e9ea-b425-4fed-a57a-3299273288d4)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 12f499da-76c3-4ae2-93d0-5ca9e69753b2)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 232006c7-a8ef-48b8-9a78-3cf60d23ceaf)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Grout((id \ + c4738729-fba4-45b6-8020-a79d3a26c31f)(shape \ + Convex))))))))(Tile((id \ + cffc0f76-df2f-4dae-a3ce-3d509789faf9)(label(::))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 6))(sort \ + Exp))((shape(Concave 6))(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + f6e93383-434a-48e3-a0b9-9186037e3047)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0 1))(children(((Tile((id \ + a9cda473-0dbe-410f-b9ad-521eb61cf321)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + cb5da907-a7ee-4650-9c61-27b4e3d65121)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 12))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + b6fc370c-918a-434d-b3b6-cdd8eabff95e)(content(Whitespace\" \ + \"))))(Tile((id \ + ed44da3d-79ac-4881-98a4-e782ba366300)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + fba985da-7e06-4f50-a970-38d7c6ae21a7)(content(Whitespace\" \ + \")))))((Secondary((id \ + 651eb65f-6715-43ac-812c-f1f48bd31f4f)(content(Whitespace\" \ + \"))))(Tile((id \ + 5866ac7e-9854-4845-86a3-02fb42bb4d6e)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 955402bf-b94d-4e9a-b95f-440e8a942c04)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + d4fe1496-194e-4abb-b7ab-7f0aab65d877)(content(Whitespace\" \ + \"))))(Tile((id \ + a3157ede-51e6-4eb4-a998-15ec007ca8fe)(label(1.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Tile((id \ + d5ae6ad5-5f2a-4934-9fa7-ffb96b15e9ce)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 2e1b0250-b0cb-438a-addf-8604f846c3af)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + a3a9866e-fb72-4fc0-aa55-e54dc312fd45)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 6367200c-4fd9-412c-be16-02b8bebead75)(label(::))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 6))(sort \ + Exp))((shape(Concave 6))(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + a56c9c39-7aea-4e94-ad02-25c9017c06ee)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0 1))(children(((Tile((id \ + aaa9b7f2-0032-48e3-8658-07f826c0a19c)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + accb22c4-cf7b-4bc2-a1f1-4d0c80a4635d)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 12))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + e1b1486e-f426-4623-869f-be7d4b147b6c)(content(Whitespace\" \ + \"))))(Tile((id \ + 9a4bed25-55cc-4951-9efa-027aa0216064)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 63eebaad-cc2d-4899-bc2b-22fbf548c4dc)(content(Whitespace\" \ + \")))))((Secondary((id \ + 4f914036-bad1-4d1b-b8cd-01000178c611)(content(Whitespace\" \ + \"))))(Tile((id \ + a07cee91-fc9a-4f3c-aae3-5e82cca71f06)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 33c9f869-287f-4ebe-8bdf-f8e1e03558a2)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + e5ef7784-cd98-410c-b653-22ab8af2b11a)(content(Whitespace\" \ + \"))))(Tile((id \ + 3ab4da6a-7aed-487d-b0fb-3113913c693a)(label(1.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Tile((id \ + 09efe17e-bc3a-44ac-99a7-a868e3452897)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + af722baf-632d-4d28-92d3-c2f914bd31cc)(content(Whitespace\" \ + \"))))(Secondary((id \ + f2e03598-6017-43f2-be61-b8442de25fce)(content(Comment \ + #err#))))(Secondary((id \ + 88af9827-b2be-471c-add1-70a096838b49)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + e01b6ac4-8715-4662-9fc1-87aeb2060bf9)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 6ada54c0-de79-4600-bdd5-f42f2f4744f8)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 54ec4955-7647-4737-87d4-8e21a18943b9)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 5c6fe323-e200-4fe9-8e5e-3a890b129f68)(content(Whitespace\" \ + \"))))(Tile((id \ + 3157b120-93b8-4d06-bc3e-cfde87fe9690)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + d4a9bddb-e237-4100-b2ed-305e25afd150)(label(::))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 6))(sort \ + Exp))((shape(Concave 6))(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 065b6501-e20b-48af-94f3-9265d968d3c3)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0 1))(children(((Tile((id \ + 5e4eb96a-5665-41e1-8b9c-b4cc34bf0c0c)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + a56978d8-b5e0-491b-8a2b-7648e836e8fd)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 12))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + f9c291e7-47a6-4d4a-8554-85853d267d7a)(content(Whitespace\" \ + \"))))(Tile((id \ + 230c9d16-397a-415e-863d-3da8904b8bdf)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 23eee358-279b-4887-acd9-be029dc2a7d2)(content(Whitespace\" \ + \")))))((Secondary((id \ + 388b2fee-7809-4967-9e99-ad49f557a9f4)(content(Whitespace\" \ + \"))))(Tile((id \ + ec0c9439-18fa-47c6-89f4-68e8bfd33cb3)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + d15453c9-318b-447a-a077-6c85578cde91)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + b3fd18c7-e008-4eea-8532-ac140f0fe666)(content(Whitespace\" \ + \"))))(Tile((id \ + b89d7d7f-95fe-42a5-8136-dbcfdaffe43b)(label(1.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Tile((id \ + adff873a-7d51-4403-aa11-d637d7c536b5)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 692d2d7a-9aab-4a1e-8ea0-024c787bd0f2)(content(Whitespace\" \ + \"))))(Secondary((id \ + b2bb1ffd-3dbe-4c43-83ee-d0e2f9cbbdab)(content(Comment\"#2x \ + err#\"))))(Secondary((id \ + 47be2cd3-b03b-45a8-b26f-f92060bc3004)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 5d198806-3a30-42ac-95c0-1df2acdffadb)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 82dc0544-9ae9-488a-a338-819aed1a7c66)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + a1005730-3689-4276-af36-eed9216be5cb)(content(Whitespace\" \ + \"))))(Grout((id \ + 700bdac9-76cf-4be6-98b1-c032587de447)(shape \ + Convex)))(Secondary((id \ + c5844890-0517-4035-9bf9-160b2dd905c6)(content(Whitespace\" \ + \")))))((Secondary((id \ + 4d4ba1e9-1383-4ca6-b828-421d145b1214)(content(Whitespace\" \ + \"))))(Tile((id \ + bf7c57c8-0bc0-447a-86fd-455f1f8de839)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0 1))(children(((Tile((id \ + e47fffd1-3404-4eec-8a0c-bb44253a8a3f)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 9dd9e624-583a-441c-8649-338da0a92678)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a2b0087b-2c53-4d62-b2b3-e1222c73f72c)(content(Whitespace\" \ + \"))))(Tile((id \ + db8f24f1-e424-4ecf-819a-384144315f5d)(label(1.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 94ff5cbb-c5ba-4d24-8db0-06a3ac347599)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + c0f8eeaf-068f-4d16-bb5d-b7453ed807a9)(content(Whitespace\" \ + \"))))(Tile((id \ + 1ce9a10c-7085-4b41-9ce1-c17cf835b689)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 3f19f742-2f54-4c88-9157-76e4fde5317e)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + a9ca07b3-0f93-4e17-aae0-418f77d6cf01)(content(Whitespace\" \ + \"))))(Secondary((id \ + 029b56d4-87bc-422d-9b26-05af5d126a65)(content(Comment\"#err: \ + inconsistent#\"))))(Secondary((id \ + 09dd70d6-502d-48b2-846e-c5f8efd647fd)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 52f2c094-8b57-407b-80cb-925fe808963a)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + f57dce69-2cf4-4a2d-ad9d-7d40490ba01d)(content(Whitespace\" \ + \"))))(Tile((id \ + 73fab713-03ee-4900-93aa-2c247ab1693b)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + f0653d97-c095-44b2-8384-aa7ce7488e3f)(content(Whitespace\" \ + \")))))((Secondary((id \ + 47df5f2e-3a90-4ccf-b553-316fddb81a57)(content(Whitespace\" \ + \"))))(Tile((id \ + fc2dc4d9-a9e5-45bd-a9d1-6507d203d663)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0 1))(children(((Tile((id \ + 0b59e204-0333-401e-8afc-d6b4c63394c5)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 034534be-8504-4e02-918d-d368e0fddce7)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 2b1f1e0e-b99e-4c62-a294-ff9dcf4b5520)(content(Whitespace\" \ + \"))))(Tile((id \ + 1ea91616-8aec-412d-82f9-4e9351bbd291)(label(1.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + fbe8cbf8-4245-4ba8-a68a-b03eb53c3399)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 007fb3dc-eaa2-4910-b467-287968ed26d3)(content(Whitespace\" \ + \"))))(Tile((id \ + e77e5eff-3894-43f6-96e4-13961e664183)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + d4ed2f71-1740-4928-81d2-b0c0151b5a7d)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 1943c974-3ce2-4578-940a-728197ec1ec3)(content(Whitespace\" \ + \"))))(Secondary((id \ + 48c7f1ad-35cc-4f97-95e7-c68ffe8023f7)(content(Comment\"#err: \ + inconsistent#\"))))(Secondary((id \ + 0f0be7c3-2c77-4e05-aba3-ae8405f61d16)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 03a920d7-95a2-4754-8416-1123bd6f2f11)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 826ad200-168b-4a5f-af94-df033e42e4b7)(content(Whitespace\" \ + \"))))(Tile((id \ + ca9ddb7f-5f91-4956-ba30-44aa1648f245)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 6dc24ff9-bf61-4a92-8f2f-b7c3f67217c2)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 1499fbd3-ca66-47ba-8411-7500ca3fe394)(content(Whitespace\" \ + \"))))(Grout((id \ + e6ddec97-cd3c-422a-b214-ca8fd61c2331)(shape \ + Convex)))(Secondary((id \ + 8d2a046f-1546-4749-858d-626905d77eff)(content(Whitespace\" \ + \")))))((Secondary((id \ + ae4808bb-0f13-4a47-8d93-7dc155ad32bb)(content(Whitespace\" \ + \"))))(Tile((id \ + 32ae3fb5-4544-4cd4-a792-f9256875488c)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0 1))(children(((Tile((id \ + ff441609-be5e-4d1b-b544-9799d7a3011b)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + b6463e8d-e7b5-4545-9fc7-4924aa2693a6)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + cd358f94-2daf-4f24-8548-3d5bce3213c0)(content(Whitespace\" \ + \"))))(Tile((id \ + c5e0a263-a161-49ed-91c8-598982eab8ce)(label(1.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 1f911b96-1c72-4e92-92a6-7f2d5a352c90)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 5b6d3a14-25dc-405b-8f4a-c0577ded0d7c)(content(Whitespace\" \ + \"))))(Tile((id \ + 433e239a-9d57-4e8d-88d4-3d051553fc95)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + b8f71dee-301b-4173-8fd6-f5daf5c8c00d)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 534a6cef-6e24-4f16-a7ba-2edbd118aab9)(content(Whitespace\" \ + \"))))(Secondary((id \ + 0051a088-619a-4934-8f53-0219031c1bb2)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 3df4acfd-98e9-4fce-9853-95fb92574871)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 1cfe8911-f9b5-4422-95bb-443dae0d0105)(content(Whitespace\" \ + \"))))(Tile((id \ + 25d47a4e-06ae-48dc-99d6-32a41983492b)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 3959b315-bd21-4c0d-8385-3dc34326cdb5)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 41cd46f9-c78b-483e-bc9d-5ba5248ce0c8)(content(Whitespace\" \ + \"))))(Tile((id \ + 33511225-301f-493f-9ac5-0c48a3b2301e)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape \ + Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0 1))(children(((Grout((id \ + a7219f30-6814-4af1-9fb1-560e9131e0d9)(shape \ + Convex))))))))(Secondary((id \ + 09487b14-597f-48f5-bf3a-5f01ce9e2bed)(content(Whitespace\" \ + \")))))((Secondary((id \ + 5370e5d1-290d-4e66-9ba7-4c03e6723ff9)(content(Whitespace\" \ + \"))))(Tile((id \ + 6b62996f-8ade-4ed9-817a-6b538a6918eb)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0 1))(children(((Tile((id \ + 9a080685-90e3-41d1-8f92-e7d253dc7245)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 369a1435-3a95-444a-9322-4055172d6863)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + d6a5c2d1-aed3-4c53-a454-2d3922735b2f)(content(Whitespace\" \ + \"))))(Tile((id \ + d58190ee-5471-4175-8fef-aceb5596ec09)(label(1.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + d8eac610-d479-4c9e-9577-cb9989ee9e8c)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 03e22831-29ab-4096-8d75-455d5c164e84)(content(Whitespace\" \ + \"))))(Tile((id \ + 782f78ca-f815-4a62-a570-fcaf036f954d)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 2797e94b-90e6-4c45-8cb7-e069a6e5c16b)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 72fe75f0-3e31-4113-8f25-fce1dfafcf1e)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + fc4a0da5-2b7f-467b-9d51-c79d28bbd2ce)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 663ff7ee-c38f-43fe-9615-7c4489dfa541)(content(Whitespace\" \ + \"))))(Tile((id \ + 66a49fc3-2189-451d-8f5b-87a4e7a4a1fd)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 4ede6a03-d0d7-4332-8382-c88b3e0c2d11)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 2bf08639-ade9-4636-bb33-b789e670937e)(content(Whitespace\" \ + \"))))(Tile((id \ + 971f3ba1-d70d-47d7-a9a1-dc52bc83fd36)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape \ + Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0 1))(children(((Tile((id \ + 5632be0d-1afc-4c45-9fba-7b815246c884)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + e016ef9f-b73f-4ca5-87c0-6e1b9d52fb73)(content(Whitespace\" \ + \")))))((Secondary((id \ + 40558f24-ca8d-4dda-a0b3-13a39b1927f3)(content(Whitespace\" \ + \"))))(Tile((id \ + a949b592-988a-46d0-ac9f-176609db6dde)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0 1))(children(((Tile((id \ + 06fa3969-d9ca-442b-825e-dc407e6f6723)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 2bb73b05-ca08-4c0a-a04c-dadb433de26a)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 0f424bab-a2f3-4fe0-8a09-8f2cd90c3a07)(content(Whitespace\" \ + \"))))(Tile((id \ + 5a87620b-a433-4fb9-9d1a-09c9b3beab6a)(label(1.))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 512129f6-6a3c-49fa-bf77-83e9e10f4705)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 3ce93584-77cc-4b97-a406-c4462d511dcf)(content(Whitespace\" \ + \"))))(Tile((id \ + 37022cb4-317b-4348-a086-5283db30d7b9)(label(true))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 67645fa7-6a97-4584-8064-fa31c7466741)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + a8ae0eb5-666a-43ff-a24c-b8f82ebd4e9c)(content(Whitespace\" \ + \"))))(Secondary((id \ + c1852265-6f47-40cd-83ef-8fe57cae7e70)(content(Comment\"#2x \ + err#\"))))(Secondary((id \ + ce5d18a4-9cc3-4438-a7f3-431f8d3a2461)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + dac99d0f-a7ce-4629-9f71-f49bd6a718c6)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 440becc1-96de-4739-b860-ca47255d3d93)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + d4ab6143-0bfc-4c9e-9bfb-b9ee50bd5289)(content(Whitespace\" \ + \"))))(Tile((id \ + 620340ff-4a97-4b5f-b39b-76f560bf58db)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + e7ff297f-b0a7-4c0d-9772-47acfe9a6d9c)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 6f00d686-a3ff-4431-b4c2-b70d3b4eca14)(content(Whitespace\" \ + \"))))(Tile((id \ + 00df244e-2507-40cf-a767-3a29432ad8fe)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape \ + Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0 1))(children(((Tile((id \ + 130f2a32-39da-49cf-a550-754622dc404a)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 1eab60a0-5c07-4a92-82db-5971b1db666a)(content(Whitespace\" \ + \")))))((Secondary((id \ + f10579e0-e416-410d-8ae3-12925c91671a)(content(Whitespace\" \ + \"))))(Tile((id \ + 16944a0f-57f1-4e24-a573-1d9231d16e57)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 317f017d-a9c9-467d-8cb9-e56c0495a060)(label(::))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 6))(sort \ + Exp))((shape(Concave 6))(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 6aa18463-de32-445c-8338-c11780d4d4d0)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0 1))(children(((Tile((id \ + 4a870256-b389-4bbb-95bd-47834fae994b)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 369ea7b7-0d09-42c6-8b54-6cb084d8270f)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 5c3c92c6-a066-49fb-ba63-589c5b309625)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 6dbcf6a1-4176-46e9-802a-b16c71d040ab)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 9ef098ad-fe36-44f2-9487-6d9ff6656d48)(content(Whitespace\" \ + \"))))(Tile((id \ + 1d8fcf7b-fa79-4de7-a9f4-55fff3ada3bc)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + cca7629b-c4d5-4045-a00e-197b16dffc60)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 7eaffe3b-5b20-4937-a693-400f5a3d7987)(content(Whitespace\" \ + \"))))(Tile((id \ + d1ce8a09-d6e6-443e-8fb6-77904043ba41)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape \ + Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0 1))(children(((Tile((id \ + f2827f6e-aef6-40eb-9e99-959cbeb8f626)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + a5a96d03-071f-4595-bb82-1f287d604bb3)(content(Whitespace\" \ + \")))))((Secondary((id \ + aa9f6dd4-afc8-432f-9060-c140c31c2b5b)(content(Whitespace\" \ + \"))))(Tile((id \ + 9c1620d9-ae11-41e1-ad5e-663b10aa1c56)(label(1.0))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 4c545fe6-4860-489f-aaed-de76ee3722c2)(label(::))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 6))(sort \ + Exp))((shape(Concave 6))(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 90f05b86-6ed6-4da8-a1da-5bc842610088)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0 1))(children(((Tile((id \ + 357ac56b-6008-46c3-823c-f71e965f9072)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + ef444fb8-d541-400d-9576-a500ff7bea51)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 125ff66a-6b89-4566-98fd-2a802fd970b5)(content(Whitespace\" \ + \"))))(Secondary((id \ + 5939a641-eb88-4f4f-a322-69b1571271b5)(content(Comment \ + #err#))))(Secondary((id \ + 7baecabf-72e3-4455-9cfb-16777b0057ac)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + bd06e95c-6b0f-4708-b642-e09aec6b32ef)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + bff70791-8893-4e8b-9f92-e0ac69a6e939)(content(Whitespace\" \ + \"))))(Tile((id \ + 34216c66-e05e-4f03-91a9-61f892a850f8)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + f7733b0c-dd77-44b7-b56e-d0c1a6636b6c)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 8f04892c-18d2-404b-9894-3e9aecc981e2)(content(Whitespace\" \ + \"))))(Tile((id \ + b48afdf7-f131-4d9f-b829-0bb01434f348)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape \ + Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0 1))(children(((Tile((id \ + 2546b193-bb89-4e2c-a1e1-c0c3aa775d8a)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 925587ff-8973-457c-853a-0f6c71cd9c4a)(content(Whitespace\" \ + \")))))((Secondary((id \ + 5ca988e2-330d-4e80-91b9-e9031eba4cef)(content(Whitespace\" \ + \"))))(Tile((id \ + ed424387-c3f5-4d4e-a276-ae526e114f39)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 41bdc089-5d46-461e-91f0-3c4d5c8c975c)(label(::))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 6))(sort \ + Exp))((shape(Concave 6))(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 75eaeaea-6d82-4f4f-8ff2-c3d0163c6017)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0 1))(children(((Tile((id \ + 4516c234-075e-4464-965c-666a0de1e8cd)(label(2.0))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + cb0e4361-9db0-45cf-9b66-9f1812a87332)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 1be9f5d9-ceb5-4b89-811d-6975be2757f4)(content(Whitespace\" \ + \"))))(Secondary((id \ + 8cd1685f-b46f-4d3e-81e3-632df69a6af7)(content(Comment \ + #err#))))(Secondary((id \ + 0193a545-1ce2-4a17-94b8-be94999b8a06)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + b5361ea7-4e12-48c1-8444-5e38cbb19a59)(label(\"\\\"BYE\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))(ancestors())))(caret \ + Outer))"; + backup_text = + "# Internal Regression Tests: Type errors #\n\ + # Each line should show errors or not as indicated #\n\n\ + let _ = unbound in #err#\n\ + let Undefined = Undefined in # 2x err# \n\ + let true = 2 in #err# \n\n\ + let = if true then 1 else 1. in #err# \n\ + let _ = if true then 1 else 1. in #err#\n\ + let _: = if true then 1 else 1. in\n\ + let _: Int = if true then 1 else 1. in #err#\n\ + let _: Fake = if true then 1 else true in #err#\n\ + let _, _ = if true then 1 else 1. in #2x err#\n\ + let _, _ = (if true then 1 else 1.), in #err#\n\ + let _: , _ = (if true then 1 else 1.), in \n\ + let [_] = [(if true then 1 else 1.)] in \n\ + let [_] = (if true then 1 else 1.) in #2x err# \n\n\ + ( )(if true then 1 else 1.);\n\ + 1(if true then 1 else 1.); #err#\n\ + (1)(if true then 1 else 1.); #err#\n\ + (fun -> )(if true then 1 else 1.);\n\ + (fun _ -> )(if true then 1 else 1.);\n\ + (fun _: -> )(if true then 1 else 1.);\n\ + (fun _: Int -> )(if true then 1 else 1.); #err#\n\n\ + let _ = fun x -> if true then 1 else 1. in #err#\n\ + let _: = fun x -> if true then 1 else 1. in\n\ + let _: -> = fun x -> if true then 1 else 1. in\n\ + let _: -> Int = fun x -> if true then 1 else 1. in \ + #err#\n\ + let _: -> [ ] = fun x -> if true then 1 else 1. in \ + #2x err#\n\n\ + ( )::[(if true then 1 else 1.)];\n\ + 1::[(if true then 1 else 1.)]; #err#\n\ + (1, 1)::[(if true then 1 else 1.)]; #2x err#\n\n\ + let = [1, 1., true] in #err: inconsistent#\n\ + let _ = [1, 1., true] in #err: inconsistent#\n\ + let _: = [1, 1., true] in \n\ + let _: [ ] = [1, 1., true] in\n\ + let _: [Int] = [1, 1., true] in #2x err#\n\n\ + let _: [Int] = 1::[2] in\n\ + let _: [Int] = 1.0::[2] in #err#\n\ + let _: [Int] = 1::[2.0] in #err#\n\ + \"BYE\""; + }; + hints = []; + }; } ); ( "ADT Dynamics", { - zipper = - "((selection((focus Left)(content())(mode \ - Normal)))(backpack())(relatives((siblings(()((Secondary((id \ - 579a2658-f19d-496b-83bb-3840422b8218)(content(Comment\"# \ - Lambda Calculus via evaluation by substitution \ - #\"))))(Secondary((id \ - 58d3c269-21cb-4b04-839c-d1e745cd6c9a)(content(Whitespace\"\\n\"))))(Secondary((id \ - b3539b17-f970-4b91-a865-6f442db15e21)(content(Whitespace\"\\n\"))))(Secondary((id \ - 53f9307e-6888-4508-86de-8c15c2a0b734)(content(Comment\"# An \ - Expression is a variable, function, or application \ - #\"))))(Secondary((id \ - c9014d63-730a-4661-b521-6b44ae002db9)(content(Whitespace\"\\n\"))))(Tile((id \ - 3b6f8f45-d98f-453f-815a-57eaf3789cbd)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 904b8eb7-4c19-4abf-8637-740ad6c6186a)(content(Whitespace\" \ - \"))))(Tile((id \ - 66b489b4-bfd2-406f-810e-f47537d21ae6)(label(Exp))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 6d84ad07-906b-4b91-9aa3-18e606c93cf1)(content(Whitespace\" \ - \")))))((Secondary((id \ - e23cac29-dd75-4613-93c9-77f014f56f31)(content(Whitespace\"\\n\"))))(Tile((id \ - 81ac84c9-29d1-463c-941e-57b267719ff3)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ - 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ - b4a22f35-2ed9-430f-919e-b2ee80cee5bd)(content(Whitespace\" \ - \"))))(Tile((id \ - 8b41055c-70d6-45c2-940f-5c2d826e61db)(label(Var))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - bb5c65e6-bd07-41b2-a344-a687b0f42718)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 2))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 6eac0ae4-7b36-443a-88c7-509db5d45436)(label(String))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 354cfa7b-69f9-4d5a-83d6-0a2c199a74c3)(content(Whitespace\"\\n\"))))(Tile((id \ - 35331ee6-8a63-44da-9424-40ac844466c4)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 11))(sort \ - Typ))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 65a261a6-148a-4d37-9ab6-93756a5bc85a)(content(Whitespace\" \ - \"))))(Tile((id \ - e25ed46e-a960-4707-bc68-c0b815371fc1)(label(Lam))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 36db6124-df59-471f-94fc-3a309d41252c)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 2))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 93389af3-f3ed-495b-85cf-3982c385fa1e)(label(String))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - f32f8b6d-872c-441c-b5f3-77d23dc887e8)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 3f06cf74-6b7d-47c6-b07f-05c09466cc24)(content(Whitespace\" \ - \"))))(Tile((id \ - 82369742-b375-4963-99a3-f73ce9d30508)(label(Exp))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 5be3a31d-1b8e-401e-bde0-14ded0a7ff4c)(content(Whitespace\"\\n\"))))(Tile((id \ - 9246efbe-34a1-41f7-92bf-41568937b53a)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 11))(sort \ - Typ))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 68ef1881-fac3-41c7-99ef-a9243d67551f)(content(Whitespace\" \ - \"))))(Tile((id \ - e8e6e9f3-3788-4813-a8ec-850f7cbe3241)(label(Ap))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 2680b9e1-85d9-4910-bfb2-176f29dfa383)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 2))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 73ed87ff-dd1a-4f71-aa3a-5dd42e15b926)(label(Exp))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 442dcc5c-8386-4ec1-bc9f-2685b18ab7d0)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - acf2010e-395f-40c6-a340-59ef389a3e49)(content(Whitespace\" \ - \"))))(Tile((id \ - 7e9227bd-8441-4fa9-9c16-024a91a9e513)(label(Exp))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 39e00c73-a5a2-4249-a0ae-df55a1f0f6b4)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - c2faba41-d1f2-4720-8245-64f06fc2ce13)(content(Whitespace\"\\n\"))))(Secondary((id \ - 4baf2caa-6b6d-4546-b6a2-0cfa47a86289)(content(Whitespace\"\\n\"))))(Secondary((id \ - 18808867-1152-40f9-ad32-2c142d01d247)(content(Comment\"# \ - Syntatic Equality of Expressions #\"))))(Secondary((id \ - 7b04a7ea-2e9a-45bc-bd28-01ca94ab1ce5)(content(Whitespace\"\\n\"))))(Tile((id \ - 9af020ec-3e6a-42b5-ae4a-4416f5b8141a)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 891fac75-70a7-47a2-ae6c-f264a06875c1)(content(Whitespace\" \ - \"))))(Tile((id \ - e4ca9d4f-8942-4826-9fd7-757ca711a3e2)(label(exp_equal))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 3505d0bf-0ff7-4e6e-8e69-bb2a191cf4d4)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - a497eb20-cf3f-4ef7-b165-45a9e855923a)(content(Whitespace\" \ - \"))))(Tile((id \ - afe12787-4b57-49c8-baed-316afa71c5fc)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 192cce66-f0d9-4434-b6d1-7aa733083586)(label(Exp))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 8063def0-fde4-4cab-a9c7-fc7b3f962da9)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 7db42639-afc1-4b83-9b03-639d9edb28b3)(content(Whitespace\" \ - \"))))(Tile((id \ - b2dc55fa-30a5-4cc6-84f7-4c46ad679c4e)(label(Exp))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - d0a96d6b-dff9-48dd-b423-a5968f7e4aed)(content(Whitespace\" \ - \"))))(Tile((id \ - c1175695-ebd5-427d-92d3-fb22474cc58c)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 770f873e-d093-4861-bee2-11d454695ca5)(content(Whitespace\" \ - \"))))(Tile((id \ - ad33920a-601a-4246-9426-7eb90bd7571f)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 05298787-a73a-43ab-8ffc-1046f3fc8b05)(content(Whitespace\" \ - \")))))((Secondary((id \ - 184629c3-7fad-4f2b-9c53-a74ca7a3d63d)(content(Whitespace\"\\n\"))))(Tile((id \ - 98082679-8cc9-4d38-abe5-4ac6e4cea1cd)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 9ec23bc0-f548-42a0-b241-aa75d9fa6527)(content(Whitespace\" \ - \"))))(Tile((id \ - 689fed0b-30e9-4ca4-8fe6-fda72c60e103)(label(es))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 793d6fcd-45b8-4d78-a38e-d3fd69ca38a7)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 3ac5410d-2711-4db4-9ed1-d65e01c6903b)(content(Whitespace\"\\n\"))))(Tile((id \ - 180d0645-b358-424c-b871-1289619589bc)(label(case \ - end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 75d98680-2cfe-4d2c-8005-6f770a2c4a58)(content(Whitespace\" \ - \"))))(Tile((id \ - 4d98706e-25e6-4404-bd81-b4c19b19db2d)(label(es))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - cb5d85d8-6c5f-4d35-acf9-2716f96c11fa)(content(Whitespace\"\\n\"))))(Tile((id \ - f018da47-6f03-4d21-9a18-320122d8ce0d)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 21))(sort \ - Exp))((shape(Concave 21))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 6c565fa4-0199-4227-aad8-50f82c08dad5)(content(Whitespace\" \ - \"))))(Tile((id \ - d6605b32-8436-481e-a4ab-66074fd68305)(label(Var))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - dee86624-d32e-4e70-8edd-d4e7d58d37f7)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 2))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 13b4fe0e-bcaa-4283-8f3f-a0e13dcd40bb)(label(x))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children()))))))))(Tile((id \ - 493926e4-6cbb-44cc-b206-ead1cec82092)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 05377add-3eba-48f8-ada1-26eb74fbc3c0)(content(Whitespace\" \ - \"))))(Tile((id \ - 7945262f-0e83-4a65-a946-bdab7b39424f)(label(Var))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 8de1adaa-fa8e-48ce-89ac-d903791c65a7)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 2))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 322e956e-a064-4731-8ba3-7b5ded46b0b0)(label(y))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - 9707713c-a669-437d-9447-58713fb6b8c5)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 482ff6f8-2d76-455d-9a94-a1c09b073eac)(content(Whitespace\" \ - \"))))(Tile((id \ - ab0ffd4a-8d3a-47d8-9149-2d2b96c45204)(label(x))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 309d2d36-e859-448d-a80c-cea3bc9d3454)(label($==))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 13d30f0b-ebdb-4498-b392-8aa47b849281)(content(Whitespace\" \ - \"))))(Tile((id \ - 32f78d11-4e5c-4bb8-b663-75936231f228)(label(y))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - a6b02ca9-65a3-423c-8a2d-98b69271daa7)(content(Whitespace\"\\n\"))))(Tile((id \ - 315a9b91-39f1-4001-9c52-3ee45f73989f)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 21))(sort \ - Exp))((shape(Concave 21))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - a6917a08-5b7c-4519-a67d-4ea8a31932a6)(content(Whitespace\" \ - \"))))(Tile((id \ - 58e1ac3f-e659-4372-9510-386d7ebe50f7)(label(Lam))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 073c5366-7d94-470f-adb5-f383a9eaa4bb)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 2))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 9b281aa5-8d06-4714-9cd2-ffab5b0c71ea)(label(x1))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - c618ba26-4a6e-4726-bad5-90f9983e6fe5)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 29339c3b-fb4e-41f4-8cd4-cad7426fa6c1)(content(Whitespace\" \ - \"))))(Tile((id \ - fc86dc77-9c0b-4a37-987a-6b9f83dfcd7f)(label(e1))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children()))))))))(Tile((id \ - be7a697f-0d3f-498c-b036-bed60ec00fdd)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - c4083882-1dae-4651-ab52-c9b1c4e7ced1)(content(Whitespace\" \ - \"))))(Tile((id \ - 42b509d9-0759-480f-857c-3d82df96e158)(label(Lam))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 02429a5b-fff7-4b42-a5be-9acd44a729fb)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 2))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - c76367a5-6ef8-41f5-9599-faf285ff1878)(label(x2))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - b7b861e4-22d0-437f-bd2c-95d57d7370fc)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - b7609391-f2ce-4d1e-bbe6-3a25fa099458)(content(Whitespace\" \ - \"))))(Tile((id \ - f3d69f1d-8f6b-4095-a97e-d6e61d97b4b7)(label(e2))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - 0e5305cd-0907-4947-87e9-37da9fcc349d)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 143d94d0-7ea4-4f2d-b70e-e23baf9cd31a)(content(Whitespace\"\\n\"))))(Secondary((id \ - d264c081-8f4b-4254-b6a9-de34f5286a6c)(content(Whitespace\" \ - \"))))(Secondary((id \ - c9d7e936-7bc6-4e4e-b0c2-ce0e25fa93e7)(content(Whitespace\" \ - \"))))(Tile((id \ - 34583060-75ce-4137-802e-b2a55ff9645e)(label(x1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 8f95d04f-b61b-4abb-8b77-3d8e0d535d88)(label($==))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 0938c068-c702-468e-b785-cf7004de3ca2)(content(Whitespace\" \ - \"))))(Tile((id \ - f7399b45-070e-47bc-949f-88f0ea9efc49)(label(x2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 62f423d3-1612-47e6-923e-bbae907e2a35)(content(Whitespace\" \ - \"))))(Tile((id \ - 63b9d6fd-d888-47b4-8364-49366bc74d65)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - cc2ac2c0-43d5-4ce5-a451-18c097e284c4)(content(Whitespace\" \ - \"))))(Tile((id \ - 787f8c3c-346c-4f69-a3d8-14f0ea05d731)(label(exp_equal))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 70ed7427-b523-4292-9805-08aaca91925a)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - fb775b01-d8c1-429f-9bcf-f6072243ecfa)(label(e1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 71bfde98-6188-4e39-8718-53ab06960fd7)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 107a49d0-6226-4c20-b01d-2d186724b94a)(content(Whitespace\" \ - \"))))(Tile((id \ - 83a585a9-cc40-4183-9910-b70254b15874)(label(e2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - d387e36c-ec5c-4782-9d1f-2739c7a7634b)(content(Whitespace\"\\n\"))))(Tile((id \ - af626056-2da3-4259-a568-1f8298527f08)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 21))(sort \ - Exp))((shape(Concave 21))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - f58409e9-8883-4d5b-a2fb-238bdcd2f1a9)(content(Whitespace\" \ - \"))))(Tile((id \ - 19d627fa-ff3f-4bfd-9b0d-e081a5f093cd)(label(Ap))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - ecc7492a-35a5-48dd-b314-052701cebe01)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 2))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 5634f8f7-a1cc-4d2f-a2d9-ee6dd302559e)(label(e1))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 319722e0-1df1-4ff5-85de-637f59e5c6fb)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 46f51f43-b3f1-4894-9c36-054921466663)(content(Whitespace\" \ - \"))))(Tile((id \ - c732f687-3289-4066-b86a-a2d013189e03)(label(e2))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children()))))))))(Tile((id \ - 366fdfb4-ed4b-44ac-9b49-f90cc6f46d8c)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 836b7c9b-ed4b-4a8f-be0f-3ff6c4230d84)(content(Whitespace\" \ - \"))))(Tile((id \ - a876e608-fe27-4de6-9e60-ce7e6d046f36)(label(Ap))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - da2c7661-ffe8-4fdc-a9f0-0aecec3be262)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 2))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 9ed91e1a-c75b-48a4-b5aa-c96dd5ad2e82)(label(e3))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - d18abadc-274b-4d01-a47f-745585122bd5)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - b0a80da2-1d57-4710-8cab-e7df5dc3c53e)(content(Whitespace\" \ - \"))))(Tile((id \ - 013f27da-4aa0-4581-b824-3e4f008684ed)(label(e4))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - 3e11240a-71fc-4de0-ba1c-b5d07365de39)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 2f614776-e35e-462f-b803-96f9be39c6cb)(content(Whitespace\"\\n\"))))(Secondary((id \ - 9a6e76ae-34e3-453c-b347-801f24f509dd)(content(Whitespace\" \ - \"))))(Secondary((id \ - 9488f1ca-eb41-49a0-a0f1-90e9f1864458)(content(Whitespace\" \ - \"))))(Tile((id \ - 7750c1a4-f4cf-4976-a9d3-86c65c012652)(label(exp_equal))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - ba7b5f88-404a-42b1-a8c4-b654f3dc59e5)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 50c34596-30b6-4b5a-87db-27f96170b6a3)(label(e1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - c95da88e-6a74-48d8-9cf6-c605d5c3a701)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 00c73886-9a6c-479a-9a0d-be062ea3910f)(content(Whitespace\" \ - \"))))(Tile((id \ - 26d9bb64-0a0c-4be4-9464-4569661ccf02)(label(e3))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - d1c5b415-ed05-498d-bce0-9de00a700394)(content(Whitespace\" \ - \"))))(Tile((id \ - 08303392-a90c-4d31-814a-2a051d9667b0)(label(&&))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - e7677fe6-48be-4899-9e0f-e1b29280e44a)(content(Whitespace\" \ - \"))))(Tile((id \ - 516eabb3-4a51-4c59-9940-c492b45f3efe)(label(exp_equal))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - e68b5ecb-929f-4854-af5a-024f13d8be93)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 83fa3d15-4b89-45be-965a-227e4fb29bc8)(label(e2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 3d8e63e4-3075-4185-806e-303e0c85fbf7)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 2337432a-0774-4754-b172-a957d6a5c46a)(content(Whitespace\" \ - \"))))(Tile((id \ - 5d704e11-c851-4bee-bd41-fc97c530e003)(label(e4))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 7c28d9c0-a994-4ec0-a985-641ee916988f)(content(Whitespace\"\\n\"))))(Tile((id \ - 81be554c-d1ad-4215-874d-1f4b370c7ce5)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 21))(sort \ - Exp))((shape(Concave 21))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 3f839aa4-9308-4b6b-a336-ddf2f5a35100)(content(Whitespace\" \ - \"))))(Tile((id \ - ef9d6fc5-5b9e-4877-bdc5-bcb5edd5e202)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 4734e14d-af00-46ba-8a2c-29a40730d6bd)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - d7c88fc6-e58f-42f5-9e34-6d7994d3726f)(content(Whitespace\" \ - \"))))(Tile((id \ - 710f92ac-46d8-4cbd-8289-d63621b6a898)(label(false))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - d0c796b9-cf69-4f65-ba17-045f3f632ee3)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - d2a47d78-3131-42d9-af47-7a0d98bebc8a)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - b54c98e0-13ad-4880-9974-791df224ef2a)(content(Whitespace\"\\n\"))))(Secondary((id \ - 3da9af7c-a6d2-495f-80d8-adf3cadde53b)(content(Whitespace\"\\n\"))))(Secondary((id \ - 774b07c3-7264-4e6a-a5c9-d702263f7167)(content(Comment\"# \ - Substitute Exp v for variable name in Exp e \ - #\"))))(Secondary((id \ - 426539c8-aaf5-4b69-869e-f7bafc266eea)(content(Whitespace\"\\n\"))))(Tile((id \ - 74de8fc5-e81b-4634-b34f-da0dbc8b0957)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 352d8989-84fd-4829-b6cb-5bde729ace4e)(content(Whitespace\" \ - \"))))(Tile((id \ - 6001c0ea-e744-4a22-aafb-7c59f5aecadf)(label(subst))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 02602783-0b3d-4b2f-844b-b12be8ed0722)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - a5ed6ba7-8356-475a-a785-d85c450a8bd9)(content(Whitespace\" \ - \"))))(Tile((id \ - c039813e-48cb-4681-98d9-aa8217d8abf5)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 60f7f455-0187-401b-9f2b-ff349d842ebb)(label(Exp))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - f3e7b107-0331-4f65-b4df-85c8a3c7fa6b)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 5a467fb2-10e0-444e-8898-530358640fc5)(content(Whitespace\" \ - \"))))(Tile((id \ - de6c8d61-c9ac-4bd2-b234-cc4d7540bf25)(label(String))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - b07a020f-10c5-450f-9678-3a85e99f8624)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 8f362010-03af-4c45-8517-208f052ccb4a)(content(Whitespace\" \ - \"))))(Tile((id \ - 7ac6150e-560d-4d4e-9d2d-47a7e0542779)(label(Exp))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 4ce3976c-3a90-4642-8cb4-4bb534111764)(content(Whitespace\" \ - \"))))(Tile((id \ - 8c17a6ec-792c-4afb-9b98-3e3981290e9b)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 2901741f-ce3a-4628-9de4-84bdf8dc8813)(content(Whitespace\" \ - \"))))(Tile((id \ - 297eefa1-4efd-450b-8aa2-f78566d739a2)(label(Exp))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))((Secondary((id \ - ab4e863d-fe5e-4773-aee7-47ea69e9a81f)(content(Whitespace\"\\n\"))))(Tile((id \ - 219a6daf-2bc5-4d0b-acf0-9dfc2d57fff8)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - a196a02c-46be-4da2-9762-5c375d09afe7)(content(Whitespace\" \ - \"))))(Tile((id \ - 71fc3e6a-b851-4014-8194-81012a9e6602)(label(v))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 4318d3e7-c631-4b2e-9a7a-0e5bc7898466)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 1abe26ac-ac76-4d60-b72d-4c84b71df926)(content(Whitespace\" \ - \"))))(Tile((id \ - dc4f1bd4-abc3-4d55-b0ef-3d06e7d3d2f6)(label(name))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - a1ec902c-e5b7-42e9-b76a-e0f1c1ce1dd4)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - f39b26a7-18fa-4d6d-bc10-5a86815b580f)(content(Whitespace\" \ - \"))))(Tile((id \ - d0e16c86-d3ec-4e39-98e6-51ab274d8cd1)(label(e))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - e8c29ad7-e1eb-488f-9aab-cb88d6a08484)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 3de61dc3-139e-4ce5-b9c4-92c7d6a7a218)(content(Whitespace\"\\n\"))))(Tile((id \ - 9b89f0ba-7886-4803-aa11-c1a693afc3a4)(label(case \ - end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 7becd8a7-6c1c-4f2f-9c6a-2637e7284820)(content(Whitespace\" \ - \"))))(Tile((id \ - 58e8f274-fa5c-4a08-a050-7840beca26df)(label(e))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - c917b2fc-b1f6-4494-bae7-fdc5d8314ac0)(content(Whitespace\"\\n\"))))(Tile((id \ - ffee5d55-f2d7-4b66-91ca-e199c1eedd44)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 21))(sort \ - Exp))((shape(Concave 21))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - fa4628a7-b6e2-40a9-912d-9ab2003e66ab)(content(Whitespace\" \ - \"))))(Tile((id \ - 4f300848-04c1-4d28-a9ac-34cb3d72005c)(label(Var))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 5d3a134c-3f74-4fdc-818c-037d3ee533b0)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 2))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - ff0ccc42-3ffd-4432-a1d6-a070e2b6f346)(label(n))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - 1561ab66-303f-4871-9b48-1bcc763a671e)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 8b9692ba-3782-4f79-a2e9-2ab485357d4d)(content(Whitespace\"\\n\"))))(Secondary((id \ - 96b3ae46-b8c8-432e-8dce-07b229df5a88)(content(Whitespace\" \ - \"))))(Secondary((id \ - 2f4a7d91-7dc4-4da6-8371-318822592b07)(content(Whitespace\" \ - \"))))(Tile((id \ - 1aedd057-2c2b-455a-a1a2-b5f1e41909e0)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 7738b2b4-d591-4ade-b3b6-f05b1907e6d8)(label(if then \ - else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 13))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - b3306766-434f-425e-bf19-10aeaeec9b99)(content(Whitespace\" \ - \"))))(Tile((id \ - e7d7a06c-4c8d-4852-b69c-2c5a2836c7fb)(label(n))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 712dad6c-a685-4294-88a3-b79fc2e7950f)(label($==))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 87e9ee65-9c06-42ec-acd2-b93b3f777c2f)(content(Whitespace\" \ - \"))))(Tile((id \ - f9e3a6fb-5b11-49c7-b219-741d1ccbd526)(label(name))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 2dc75d3c-7a4f-4b64-9e43-01ac29e2717b)(content(Whitespace\" \ - \")))))((Secondary((id \ - 4683c684-877a-4546-a637-a5a8a03a6822)(content(Whitespace\" \ - \"))))(Tile((id \ - 189fae6c-2558-4681-a09a-1e13f70bb17e)(label(v))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 67ff8509-6b9f-4707-b3a0-63f33fde3378)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 3d008a86-4add-45b4-ae61-6d0c47eb43ad)(content(Whitespace\" \ - \"))))(Tile((id \ - 1fd0007d-1e2e-4149-bf0b-e91bb130fef1)(label(e))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - ad4f733a-2033-4e4a-992b-25cd79c81ec2)(content(Whitespace\"\\n\"))))(Tile((id \ - 50e8ef28-d17c-4c54-b0a8-20182938f045)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 21))(sort \ - Exp))((shape(Concave 21))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 512cb880-2a52-4828-aa7f-c3a497144c27)(content(Whitespace\" \ - \"))))(Tile((id \ - fe07cd73-0165-4a4e-963d-10c0851148d6)(label(Lam))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 583cd22d-feb9-4699-9d2d-a299de446af4)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 2))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 0a213226-4739-4717-b595-5a767c2ac08b)(label(x))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - d986e7be-4ba6-4517-ba63-4353fc7a6590)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 39255e0e-1274-4798-a161-93c16f0c4f6c)(content(Whitespace\" \ - \"))))(Tile((id \ - 9898ec8e-d5bd-4c3f-b3d5-0f068e906326)(label(body))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - 6a4ad6e7-d48b-4866-9ace-cbde29edc492)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 1b1fd754-1200-4a0a-8df2-27b97617942e)(content(Whitespace\"\\n\"))))(Secondary((id \ - 37fcc3ae-97a7-42f8-b795-90b5305cc46f)(content(Whitespace\" \ - \"))))(Secondary((id \ - 898a6aea-5011-41cb-bda5-c4844285deec)(content(Whitespace\" \ - \"))))(Tile((id \ - 4321f0b3-5146-4f8c-9015-3bffaac6537f)(label(Lam))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - c6f6c21b-6ea5-4ef7-bd60-97755a20b4df)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 413bd5cb-afce-4a31-bfec-c4c80e708bcb)(label(x))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 50cb1442-335b-4cd1-b2e4-867579fdaba6)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 2fe3d96e-0c7c-4011-a604-630ca52de2e6)(content(Whitespace\" \ - \"))))(Tile((id \ - 825ea4de-9981-4dfb-969f-5901d16c14f1)(label(subst))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 06e5576f-8c2a-494c-84f0-e6c44b6fc289)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 8e94f35f-fc12-4ef8-9b04-07a56fc5fd9b)(label(v))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 06a8b8a2-261c-4696-b967-3bc77eafc8b3)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Tile((id \ - 905c338c-14ca-4660-bf57-ad2505d50f57)(label(name))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 8fe769e6-8b88-4faf-ba0f-2fb447414e97)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - b72b3481-34de-48f9-a5e5-e68d829a24c4)(content(Whitespace\" \ - \"))))(Tile((id \ - 35e4c324-e7ac-498f-837a-7a9d8d36a734)(label(body))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ - d98eb89a-235e-4376-8349-0fd15b6fae02)(content(Whitespace\"\\n\"))))(Tile((id \ - 198d47d6-6294-43bc-b006-0d85eb8a2669)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 21))(sort \ - Exp))((shape(Concave 21))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - bcc48b90-9af3-4c00-9e0c-ce72bb2b732f)(content(Whitespace\" \ - \"))))(Tile((id \ - 6a1718f8-8022-40b3-ab93-d4211208c29c)(label(Ap))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - b922c7f6-c67c-48f3-8cfb-68c841aa0414)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 2))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 07da188a-2410-44f9-b027-fa69828a2b60)(label(e1))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 8ef9466b-7fcc-4137-bfb4-692ccf70dbd4)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Tile((id \ - f00bb251-cbab-46be-8173-1f6675ee4c12)(label(e2))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - e64b3ba2-1bb9-46f8-af06-493d15f723a6)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 4e59e4ca-6f08-4448-9c58-9483c07efd66)(content(Whitespace\"\\n\"))))(Secondary((id \ - 8ee684cd-2c5a-4253-b301-7cba81099e24)(content(Whitespace\" \ - \"))))(Secondary((id \ - 49bc3c61-c4d8-4dea-aca2-e338d6badf43)(content(Whitespace\" \ - \"))))(Tile((id \ - a52cd9fc-0c23-475b-9415-25f6fa9e6efb)(label(Ap))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 691eae01-24d8-4eef-8f2d-fd96f5655ce1)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 2b9d4d26-68e0-4bcd-8180-4f5604325e72)(label(subst))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 61a618b7-9ee6-4e7f-a857-70e856565de6)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 33aed735-bcb4-4f72-90e7-0905627c1328)(label(v))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - a962694c-b142-42d8-b708-ece24fe1abd5)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 42355414-1a94-465d-b514-efafd3dde3ce)(content(Whitespace\" \ - \"))))(Tile((id \ - 25868761-b6df-412e-ab62-429c9dd56013)(label(name))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 0c61b948-4a9b-4749-94f4-937e40189067)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 6f94e0f0-3a32-42d5-a969-04770fb2f6e9)(content(Whitespace\" \ - \"))))(Tile((id \ - 05ce26ab-13fe-4ca3-b44b-97e1fabbd9aa)(label(e1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - e232b397-8a48-4905-9901-a6614c29b148)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 7cad6a0a-f538-4103-8ea9-a25188ed9c5d)(content(Whitespace\" \ - \"))))(Tile((id \ - c7974f67-be67-4b25-b4e2-792f6271485c)(label(subst))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 33a5c704-20a9-4923-83ee-bc25c55193de)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 13c5b7a5-2e40-4eb5-a453-69244de39c0f)(label(v))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 421e99c0-8c79-4eaf-b157-a55567fc08f2)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - f7a6368c-22ce-4e48-a850-f2b518249ba2)(content(Whitespace\" \ - \"))))(Tile((id \ - b5d916c8-ff45-42d4-87e2-b368456a1b0a)(label(name))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 594de8b9-d5e3-4a8a-b6b4-a88747f4976c)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 4b4d1d9a-6ec5-482a-a2e8-294b620f10b2)(content(Whitespace\" \ - \"))))(Tile((id \ - 8255fbeb-57bc-4623-a976-6a77d4f4bd33)(label(e2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ - 46c0e133-7139-4de4-b049-ea74f738219d)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 1429043f-125e-47a0-a8fa-ea29e06ec217)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 8d62629f-f58f-48a2-b11e-ab9a5b0d075a)(content(Whitespace\"\\n\"))))(Secondary((id \ - 5a13baae-0472-42c0-b42a-b18bdc028226)(content(Whitespace\"\\n\"))))(Secondary((id \ - df60bd6e-a698-4e36-b3df-c41a52d2f078)(content(Comment\"# \ - Evaluation can result in either an Exp or an Error \ - #\"))))(Secondary((id \ - 58373ddf-8053-4524-bca9-0bc2b4fe0c03)(content(Whitespace\"\\n\"))))(Tile((id \ - 02740f27-9216-4848-9d7a-bd63546a65b4)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 79574626-e7d5-4469-ac1a-4bf7e1778c90)(content(Whitespace\" \ - \"))))(Tile((id \ - 3f3b3e16-d51e-4a5a-9a54-86976313e0b8)(label(Result))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 9f5f6df9-a373-4dae-bbd5-57b831001900)(content(Whitespace\" \ - \")))))((Secondary((id \ - 9bb46eba-97cd-417b-a3ca-b29ed881cef1)(content(Whitespace\"\\n\"))))(Tile((id \ - c9642ca4-854a-4892-b89e-a75bf53fa1ae)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape(Concave \ - 11))(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 8b487485-d296-4025-96e7-946b7004739a)(content(Whitespace\" \ - \"))))(Tile((id \ - 8b5d8559-4260-4d99-81bb-af6daf14f123)(label(Error))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 7be3a6fd-5e82-4fd9-837e-89fb8c0e366d)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 2))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - f4205193-6640-4427-84f4-40ef4f1cedbe)(label(String))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 80cdff65-eef1-43f1-97f9-d30e17e39dee)(content(Whitespace\"\\n\"))))(Tile((id \ - 21ae352a-ef43-4cb3-847e-34e1b1b7a641)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 11))(sort \ - Typ))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - c198aad8-d51b-47fd-bef9-4ffea862a94f)(content(Whitespace\" \ - \"))))(Tile((id \ - c5ab73a9-2d90-41ea-a258-a15b8378dc66)(label(Ok))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 1948f709-c832-4bda-b595-d4ba3eec30f3)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 2))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 02eefc25-152c-4a15-9a3d-0e7b2446aead)(label(Exp))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 8a1b9f10-3336-46cb-8d1c-6261b18ec98d)(content(Whitespace\" \ - \"))))(Secondary((id \ - 2fd0b394-0027-409f-b76c-cc62a5341489)(content(Whitespace\" \ - \"))))(Secondary((id \ - 9a1a0fe3-425e-4faf-84ca-958bf64df153)(content(Whitespace\" \ - \"))))(Secondary((id \ - c026c092-01d1-4a54-876d-a09e2d0b1144)(content(Whitespace\" \ - \"))))(Secondary((id \ - 88699c23-fc24-4f2f-8eb6-373b8d0976a4)(content(Whitespace\"\\n\")))))))))(Secondary((id \ - 04a478f9-dd72-4579-8d63-81d2e206e115)(content(Whitespace\"\\n\"))))(Secondary((id \ - 28b33fc5-73ac-4067-80c4-4a32271ae16a)(content(Whitespace\"\\n\"))))(Tile((id \ - beb81d1a-a198-40d6-9110-1fa2ccc5e769)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 1a7d9457-56ca-4dda-9e39-c00f4b23cbbd)(content(Whitespace\" \ - \"))))(Tile((id \ - 2183b6d4-e2cf-4fb2-a1c8-951daffc734b)(label(result_equal))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - e5471c3b-9e87-476c-a358-caf951aa9ec9)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - aeb8b92f-9e0b-43c7-83f5-c27d6e09b287)(content(Whitespace\" \ - \"))))(Tile((id \ - 40d0b893-77a0-4aea-86d4-72ea7904a352)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 1744eba8-f3d0-4e9f-8a60-d120da7f2d99)(label(Result))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 3253b4e3-78bc-45fe-b6d0-9faa079e52a9)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - f96e2cb6-9d53-4085-9b4f-b88ddfafdaa4)(content(Whitespace\" \ - \"))))(Tile((id \ - 68ca4d55-b5f6-466f-9baa-36a381ce0116)(label(Result))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 53c5e2b3-347a-4e30-bd84-0ea4b5a481dd)(content(Whitespace\" \ - \"))))(Tile((id \ - 51039060-7dff-4512-8ad0-b98abe6e6b8c)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 247d57e8-d7b7-45ca-a53f-f2e0276c7112)(content(Whitespace\" \ - \"))))(Tile((id \ - 99201842-52cb-425b-b1d8-8032398f75c9)(label(Bool))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 04507290-1261-42ac-8b6d-69cd54918e86)(content(Whitespace\" \ - \")))))((Secondary((id \ - 85ec6920-78d5-4b9a-9cc9-ed718890c8ce)(content(Whitespace\"\\n\"))))(Tile((id \ - ce3ac16e-7ab8-452e-ab4e-dbd87f27856a)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 88348ff5-afea-4857-8468-ec01391c2297)(content(Whitespace\" \ - \"))))(Tile((id \ - d1c99579-617d-4b09-8684-1ce1055ed1af)(label(rs))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - c0a36a89-6fd6-4b22-a699-b8c021ff931d)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - f8f8b6b7-4db6-4aac-9488-d33fecb329c9)(content(Whitespace\"\\n\"))))(Tile((id \ - 34b48ac0-ccfe-4b44-8559-fd3203569be3)(label(case \ - end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 630d743c-9089-4656-9997-66ebf1043f49)(content(Whitespace\" \ - \"))))(Tile((id \ - 228fc476-f58d-4823-b65b-e0f3b929553a)(label(rs))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - de1b5880-6ad1-4bfe-bee1-dbf8b8ff5774)(content(Whitespace\"\\n\"))))(Tile((id \ - 602fc195-6627-4402-b215-5ac67d06e852)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 21))(sort \ - Exp))((shape(Concave 21))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - c404cd81-10d7-4dce-9052-76296fd5ddd9)(content(Whitespace\" \ - \"))))(Tile((id \ - 8bb36d61-04ad-436f-a131-f6177885e537)(label(Ok))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 5b3a9162-cac2-4316-ade9-f44a1409ef9b)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 2))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 9b7c1b11-29e9-4598-9d83-b9e157342f1a)(label(e1))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children()))))))))(Tile((id \ - 554759e7-cf6a-43b7-8faf-610d1c87786d)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 9a108194-f7a2-4410-bc5e-d95db49fa65c)(content(Whitespace\" \ - \"))))(Tile((id \ - 2beebdc6-f1da-407f-8ec9-41726ce6e6ef)(label(Ok))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 6e37ed75-a301-47c5-9439-3c27a91a68a6)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 2))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - c5a5d70b-5ccc-44df-b9c9-9e1c85f16172)(label(e2))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - 8cad935c-fc62-4ada-9ad0-dc00135ebb51)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - f6ad97cd-c18f-45d2-a8e1-b2b804831906)(content(Whitespace\" \ - \"))))(Tile((id \ - e9a8afa3-d10c-4658-881c-a604a93ca8c5)(label(exp_equal))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 12fb3aba-0317-4ec4-acb7-a6803d8233b6)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - dcbacc26-3050-4757-9cb1-b617738358d1)(label(e1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - f1d55cab-92db-44e2-91f7-9a85f1dfafba)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 4dbdd1ba-8270-4bab-9ad3-583b32aa4aaf)(content(Whitespace\" \ - \"))))(Tile((id \ - e12e4e79-111f-498f-9d80-ad77f5d565c6)(label(e2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 2bb90059-0ee9-423c-8684-472175118a48)(content(Whitespace\"\\n\"))))(Tile((id \ - df9db36d-e7b7-4872-b63f-8dc09760c860)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 21))(sort \ - Exp))((shape(Concave 21))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 4247b0da-3b47-42f5-998c-f68db67c843b)(content(Whitespace\" \ - \"))))(Tile((id \ - 9a19a183-fb5e-443f-af84-f23d720d099a)(label(Error))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 41cab548-8d9e-4a99-9406-3ee89d2fc4ee)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 2))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - a39c2d6a-6de1-46bc-9240-eeeeeec02eb3)(label(e1))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children()))))))))(Tile((id \ - 3cca4788-c110-4d27-a8e7-1777c1d9d30f)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 8287b063-d40b-472d-ae6b-8c392467fbdf)(content(Whitespace\" \ - \"))))(Tile((id \ - 148c57ae-dabb-4487-9fe4-c33c974217f7)(label(Error))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 49335ce1-42aa-412c-9bca-e52a1ee521d6)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 2))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - da2279e4-e383-4954-ae32-3d6f2b9bc4ed)(label(e2))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - a62811b8-2ebe-4ccb-89b4-d96760aa3c3f)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 5741626a-a252-4420-a0b9-e1772e1c0ac5)(content(Whitespace\" \ - \"))))(Tile((id \ - 58cf6b30-b7af-4a5f-ad08-dd02d3fa5f22)(label(e1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - c80a8e71-238d-43d0-a8cd-76d4da6c2532)(label($==))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 9))(sort \ - Exp))((shape(Concave 9))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - bbd48c2e-cd7b-4f99-b274-e36e6c3ecf5e)(content(Whitespace\" \ - \"))))(Tile((id \ - 2c75c7b3-db8d-4f1b-ac2a-4b5ff7fa1e64)(label(e2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - cff7ec82-7993-489f-8385-75b26bf79234)(content(Whitespace\"\\n\"))))(Tile((id \ - 4111f31d-f74a-41ca-bc02-d29e2a0db0b2)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 21))(sort \ - Exp))((shape(Concave 21))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - b2fda54e-371f-4699-a0c5-fd77c89a7a20)(content(Whitespace\" \ - \"))))(Tile((id \ - d5d7f4ab-3067-482a-aefd-9c6a8c4b6fa2)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - f92d3f91-2fb1-4412-8a9c-be22c0700ce3)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 04d95ab6-df9a-4cd3-9bed-4ce41cc1647c)(content(Whitespace\" \ - \"))))(Tile((id \ - 2a98cb80-5b3a-4435-8101-da95240b9f4c)(label(false))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 3176efbf-484a-435a-a07a-675b72c7840a)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 5ad8e2d5-c444-4b65-86f3-6a63013c83eb)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - a3519b0c-9c62-4ec9-a92d-9076f579ffca)(content(Whitespace\"\\n\"))))(Secondary((id \ - cc8c81e6-bcb9-4122-bceb-05a10ebba3cc)(content(Whitespace\"\\n\"))))(Secondary((id \ - be744456-0e46-48a8-8f6d-de6f041effad)(content(Comment\"# \ - Evaluation by substitution #\"))))(Secondary((id \ - 53f494d2-f96b-4730-817f-a7bee7de9a3c)(content(Whitespace\"\\n\"))))(Secondary((id \ - 149c737e-c073-4296-bee6-8355ac15e21b)(content(Comment\"# \ - Evaluation by substitution #\"))))(Secondary((id \ - 0a55cbc6-d5b2-4491-9ecf-749d8d7d15d7)(content(Whitespace\"\\n\"))))(Tile((id \ - 1a88620d-7573-48e8-8fe2-667fc6861380)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - e8657e19-27a0-4614-8e8c-1f68924c7cdf)(content(Whitespace\" \ - \"))))(Tile((id \ - 510ff9dd-fc7a-4c50-a4ba-ff2284732f2a)(label(go))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 2894560c-55f0-4e24-99aa-a120d0db2deb)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 595c66cb-8234-4cb9-a195-5611c63d6fe9)(content(Whitespace\" \ - \"))))(Tile((id \ - 92e454fb-632a-4240-8fae-4684ae730a61)(label(Exp))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 56244e52-c07b-49cb-bf9c-b4d9091881cf)(content(Whitespace\" \ - \"))))(Tile((id \ - df0286bc-8fff-47d7-85f2-fb19a6fafb12)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 88832015-a7e6-4ee6-8a16-1a2aa399774f)(content(Whitespace\" \ - \"))))(Tile((id \ - 237ba37a-5943-47ff-a613-91955a03b50c)(label(Result))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - d6e70935-96cc-4264-8702-1cbb390499fd)(content(Whitespace\" \ - \")))))((Secondary((id \ - b8dfaa39-225a-47fb-ae01-eda3fa2f52aa)(content(Whitespace\"\\n\"))))(Tile((id \ - dd454f86-229f-4717-8b8a-aa52bd1c3b31)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - b4be931c-8a8f-4fec-933e-7a3ed2244406)(content(Whitespace\" \ - \"))))(Tile((id \ - 9d1f5677-7646-4214-ab92-3767945aa471)(label(e))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - d997484f-4c74-4581-ae0f-9a0b2126a8b0)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - f76711b8-c30a-48b1-a991-115ef11ab388)(content(Whitespace\"\\n\"))))(Tile((id \ - 809ef267-e552-4c23-99d0-b39d7935211a)(label(case \ - end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 96ef5d3c-d896-4e8c-a68d-3991351f088a)(content(Whitespace\" \ - \"))))(Tile((id \ - d496c898-71a0-4f3d-91c7-d7fd166818da)(label(e))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 6ddac7aa-028f-4e3f-9ed1-56b8e5232bbd)(content(Whitespace\"\\n\"))))(Tile((id \ - 679021bb-0c1b-4cf5-91d7-908a6f9647f4)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 21))(sort \ - Exp))((shape(Concave 21))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - aef95ec1-6d5d-4e29-a785-2ea83e1e026a)(content(Whitespace\" \ - \"))))(Tile((id \ - 398f1340-2d99-4230-8c20-c51150658002)(label(Var))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 621155bc-7ac6-4d9e-8fd3-4d71ba659185)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 2))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 77f731f7-f0d3-4c1b-9ec3-df7178574c85)(label(n))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - 586d55ac-d88b-4eca-880f-0852604e45bb)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - bff112db-9788-4cc9-939d-3e731fd51833)(content(Whitespace\" \ - \"))))(Tile((id \ - b15c5cc6-a04f-4345-9a39-bc4112a76752)(label(Error))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 24d9b2ca-a41f-4e3b-9950-9073fc4e7ebe)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - fbc61e43-64e8-471e-9297-f8cefa5ece19)(label(\"\\\"Free \ - Variable\\\"\"))(mold((out Exp)(in_())(nibs(((shape \ - Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - ab5b91a4-43f5-4a63-8b87-9f816a0cd01a)(content(Whitespace\"\\n\"))))(Tile((id \ - 6000c5f4-8ba1-461b-85fc-3381115d5350)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 21))(sort \ - Exp))((shape(Concave 21))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 1d231ace-434a-4894-9e67-e1cf43decb46)(content(Whitespace\" \ - \"))))(Tile((id \ - 9a7125df-c40e-4def-9f53-b40dc32731bd)(label(Lam))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 2e8b9b90-d82a-4666-9743-ccf496c5d98d)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 2))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - e64de081-8618-4784-80c7-52d56d51b182)(label(x))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 1dad0ef7-3126-499f-91f3-95ef1ee36ea1)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 47533453-d21e-4f68-986b-9a8707f9acab)(content(Whitespace\" \ - \"))))(Tile((id \ - 4e872a2d-2d3d-46af-8f0d-3588d8af77af)(label(body))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - c1b66e3e-c627-4034-807b-ed0e0aa616e0)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 8f7f6d34-e271-4055-b7b2-0cd964b2d4e6)(content(Whitespace\" \ - \"))))(Tile((id \ - f0325f29-e1c9-4b56-b9bf-80db92f5f575)(label(Ok))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 922e9ce3-6082-4583-9515-fb888bedc37e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 5f7769f9-00df-47fd-9555-dda0625d8fad)(label(Lam))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - e36c23dc-9fc0-41f3-8379-7e6177ca0c1b)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 009acb40-b1cc-40af-93d7-0fc7d2c1e035)(label(x))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - ee16fc3d-7b81-47b4-b020-13ebe276dbf0)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 3068a498-a275-4dab-9567-06987ed9c378)(content(Whitespace\" \ - \"))))(Tile((id \ - e54a8b40-e6cd-4cef-8fcd-77ab29483140)(label(body))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ - 2e9ecdd1-7a70-45c5-84e9-ba636e5cc23b)(content(Whitespace\"\\n\"))))(Tile((id \ - ff2d5608-d410-415b-807a-eda98e6da72d)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 21))(sort \ - Exp))((shape(Concave 21))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 362944fd-aa91-4d59-8aff-d0dec93c2b08)(content(Whitespace\" \ - \"))))(Tile((id \ - a760ce03-9df0-4d61-89e8-88f092c8d0cf)(label(Ap))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 0e07e490-0333-4907-aab8-2da6cd300e7d)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 2))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 0316ae72-05b7-4de1-8bd6-bfc2f5bc5f75)(label(e1))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 5e357626-f992-4f51-9818-0d4409ef920d)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Tile((id \ - d4cb1b5e-971d-4b62-be08-a6b9c5c93764)(label(e2))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - d8e83bb5-0ceb-4027-b529-92c0a1fec26b)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 838b52f1-3737-456c-8a98-5849ec89ad58)(content(Whitespace\"\\n\"))))(Tile((id \ - 69a21eca-495a-4e72-9503-a52cff7dce27)(label(case \ - end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 2e681929-b28a-468f-a959-bfa03d8a3f1a)(content(Whitespace\" \ - \"))))(Tile((id \ - e30771f9-69e7-4841-bee0-e93c23a5303d)(label(go))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 453d4571-f7b6-4c0d-b921-5c8700b1ac3d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 7711c924-5ddd-42be-92dd-4b89b11d2c8a)(label(e1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 2f435c23-83b7-48cd-8f8e-38093dce4fe1)(content(Whitespace\"\\n\"))))(Tile((id \ - f1abca8d-0d37-4661-8b3a-dcae0bd68385)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 21))(sort \ - Exp))((shape(Concave 21))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - bae7e074-dc4e-467f-b341-94fe0040c29d)(content(Whitespace\" \ - \"))))(Tile((id \ - d9236252-5783-4102-8e4d-e7fb3884dc43)(label(Ok))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 8ae539db-b703-4a7a-b8c9-032b815e1557)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 2))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 6a87bcd4-56aa-4c46-8265-e5adfcad8b52)(label(Lam))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - ed7009cd-f8f1-47d4-9c56-5b17b16f0158)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 2))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 6545f504-ff30-47c3-8e4e-8a1e4694211a)(label(x))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - c6954c83-df30-4540-9a20-59139e9e26e1)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 4d9f6d5f-edeb-482d-a605-156a985bcf20)(content(Whitespace\" \ - \"))))(Tile((id \ - 08368e29-416f-4a72-b04c-4a5998f5a269)(label(body))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))))))))))))(Secondary((id \ - 41d43f00-bb5f-46ae-a974-d479a8b20b36)(content(Whitespace\"\\n\"))))(Tile((id \ - e8b7e1bb-9de7-44a5-8f5d-912733872cdd)(label(case \ - end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - fe56b2ed-f7ee-49b0-9c46-2975ee482181)(content(Whitespace\" \ - \"))))(Tile((id \ - 80202d99-f4d1-4213-b548-48c8d8234e71)(label(go))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 8af022d3-b7c6-4e32-9935-a097ffac8761)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - d85c4d54-db76-4d8c-b4e0-258f6375c624)(label(e2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 76db976c-8e31-4f03-a994-d0b352a100d9)(content(Whitespace\"\\n\"))))(Tile((id \ - 47968f50-8bdf-4a54-960a-76b3d0dafef0)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 21))(sort \ - Exp))((shape(Concave 21))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - f646b10f-c12d-428c-8812-94d97ede1b65)(content(Whitespace\" \ - \"))))(Tile((id \ - f3dcf27e-10b6-454f-b1b0-cf9f3f813de2)(label(Error))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 2fe04f9c-7570-4ae0-9715-c18a7eec7dda)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 2))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - b1696163-aab1-451e-967f-90b6cca68795)(label(err))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - 5828bb46-4afb-48e6-9c95-df5cce1b22c9)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 34a5ac81-cac8-4708-aced-1d689ad2820a)(content(Whitespace\" \ - \"))))(Tile((id \ - 64564ff8-b2c6-4bd0-a4ca-6f466ec96931)(label(Error))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 1f20a945-1d22-401f-936b-a5e0100d66a2)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - bb35d07d-2253-4623-9d4e-bd7c0e6324ea)(label(err))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - ca8ba32c-a847-439a-9ae1-7f1aba355a63)(content(Whitespace\"\\n\"))))(Tile((id \ - bc812682-b5ba-465e-9e42-10463bc6c9f0)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 21))(sort \ - Exp))((shape(Concave 21))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - e24708f2-9045-4f99-a395-16bc8e654a0c)(content(Whitespace\" \ - \"))))(Tile((id \ - 4f1a95ab-a787-4f13-a7ec-b69880b9a373)(label(Ok))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 8f520a4a-0d27-429b-afc2-61aa8bfe52cd)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 2))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 8465ef7d-029a-4849-9713-a2d69c850ee4)(label(arg))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - 322f644d-533a-46d6-8a86-690b749e839f)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - fd8f8462-8496-432d-be8e-a69a9e87ae2d)(content(Whitespace\" \ - \"))))(Tile((id \ - efa253d6-e217-48dd-943f-cfbf118c8946)(label(go))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 87eeb534-d395-4c51-b443-be3e4e860a4f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 908f03b6-631f-48eb-922c-97352dac8886)(label(subst))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 50131aba-0fb6-4708-a5ea-0861056a2063)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - b063ede1-590d-413e-914e-bcef1a6c1301)(label(arg))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - b353f46e-47bc-4009-89c2-aa8946ab4212)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 18015c36-5bc6-46c1-9c70-c8e6e2343e72)(content(Whitespace\" \ - \"))))(Tile((id \ - e41a307b-f439-478e-bd2a-d1d0173f2285)(label(x))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 17c186af-c531-46f7-8356-85d00a57763d)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - e9547011-e87e-4c34-bf9b-655966e58b0a)(content(Whitespace\" \ - \"))))(Tile((id \ - bcb35b72-95d4-4f8a-8e9a-3e302315d1e8)(label(body))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ - 7460ce28-26be-40f0-aaa0-9373606f3a17)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 966f0a3b-608b-4080-b391-3d98b6b50492)(content(Whitespace\"\\n\"))))(Tile((id \ - 2a7b400e-409f-4975-98da-545e7964f7bd)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 21))(sort \ - Exp))((shape(Concave 21))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - d64e9337-93a0-4469-9af0-4ee9d6453881)(content(Whitespace\" \ - \"))))(Tile((id \ - dea35fe3-e6cc-43d1-ada2-3d2418e383ba)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 32471666-95d8-4e06-8cd5-95e05c66fdbb)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - a2c25044-816d-40d8-ba13-71eeadd1f966)(content(Whitespace\" \ - \"))))(Tile((id \ - bfb15106-063b-49d1-ac5a-b14164b78f1f)(label(Error))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 11e31114-5874-4f4a-92e7-a1781c293ac3)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 5e356d25-77a5-4339-8a85-5a0a39fc7109)(label(\"\\\"Not a \ - Function\\\"\"))(mold((out Exp)(in_())(nibs(((shape \ - Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 9b853aaf-1e80-4349-9149-8019538df97d)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 74ee3ae0-a7fa-4906-b919-7756de9ec844)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - eaed0d7b-c28e-4a9e-9af2-4df2bf7b4610)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 2742b497-9df3-4103-8300-0ede47600ec9)(content(Whitespace\"\\n\"))))(Secondary((id \ - 6c00d79f-55b7-4af5-86ec-39129c6fab6b)(content(Whitespace\"\\n\"))))(Tile((id \ - bbcb96a7-a381-4560-a5c0-2b9177973a61)(label(test \ - end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - c7150dee-d911-4aff-b2b7-1f1a37ebff6c)(content(Whitespace\" \ - \"))))(Tile((id \ - dc1674b9-b1ce-42ee-b61d-0857d13c138c)(label(result_equal))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 0e5338e2-c213-444e-b75c-e4116320d833)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ - cf5cad9e-e6ec-49c7-bdee-8d4441e325f9)(content(Whitespace\"\\n\"))))(Tile((id \ - 1da27fb9-f992-4af6-8756-1df9c8b59b85)(label(go))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 524da4d2-1c16-4bf5-90a6-6bef130c603f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - fb8d9b13-44d5-4719-9861-0babba4dacff)(label(Var))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - cda6402f-9481-4615-aebe-eb224d76a5d1)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - b44d5596-748a-4cfa-939b-af4d0ca02c5c)(label(\"\\\"yo\\\"\"))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children())))))))))))))(Tile((id \ - 4f792941-af4f-40b6-a394-30895e0f00f9)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 70332ab5-d800-44ad-86b5-d655a88a2c30)(content(Whitespace\"\\n\"))))(Tile((id \ - 413e5e96-795c-4e29-bc37-22acb6c4da0c)(label(Error))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - c3979f6e-937c-4d4c-b9a2-4125ad789bf5)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 551d806c-e0aa-4981-b9df-02321c88a553)(label(\"\\\"Free \ - Variable\\\"\"))(mold((out Exp)(in_())(nibs(((shape \ - Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ - d6d63453-84ab-4a41-9176-6e7dbb4e1943)(content(Whitespace\" \ - \")))))))))(Tile((id \ - feb5bacd-551d-4d07-a1ea-29c39a1fdb79)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - bb64080d-1bc6-4fe7-8d05-c5723be59661)(content(Whitespace\"\\n\"))))(Secondary((id \ - 29176a34-106f-4a75-b5ab-66db54327180)(content(Whitespace\"\\n\"))))(Tile((id \ - 46713147-d60e-4dd7-95ec-16dad85d7b9a)(label(test \ - end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 7f6d14ef-090b-45ce-aebb-ad1fdb0902ef)(content(Whitespace\" \ - \"))))(Tile((id \ - 3ff5d80c-e8d0-4a5e-9027-520af94cfc7e)(label(result_equal))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 32c0c246-b8ce-48c6-812d-bd37a7759924)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ - fb19a67b-b7d3-48f0-b9d1-c98e99c3eae1)(content(Whitespace\"\\n\"))))(Tile((id \ - c30ddb2a-c446-4b39-9d3d-cc12f222cee8)(label(go))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - e9a2d8bc-9bd2-4f6a-88e6-b3e13488756b)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 8814f01d-fc0a-432a-95f9-894aae5eeb4a)(label(Ap))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 772255c2-1dc7-4659-b2fe-e2c6a381c4af)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - ac43ecad-faa9-44fc-a66d-119773496659)(label(Var))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - c47fd37d-7375-4d29-a778-19c186b85152)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - fc04ba8b-e863-4d47-84bc-e76f86aedb8b)(label(\"\\\"no\\\"\"))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 56b7e667-52be-4129-a50f-ca4d7b9e860a)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - b701987e-c54f-44fd-b5ac-071e240664fe)(content(Whitespace\" \ - \"))))(Tile((id \ - 348d7a8d-a9cc-4fe8-86a2-3b5400dd4bc2)(label(Lam))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 33024117-5eee-49a5-ae56-e27b46432d92)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 8a43d100-7c3b-4f17-86d3-edf03d2e3240)(label(\"\\\"bro\\\"\"))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 9de32611-ca41-4e26-a243-6c249cf1909c)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - f8a33080-5694-475e-8e8f-2828c20280dc)(content(Whitespace\" \ - \"))))(Tile((id \ - ef8b3a10-2f0a-4544-9a87-49fc1ed89daa)(label(Var))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 7cafc442-36fe-42a2-bac6-77d6464b2525)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 85f8f49b-9ac0-462f-8ba2-1cfe68a32f2f)(label(\"\\\"bro\\\"\"))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children())))))))))))))))))))))))(Tile((id \ - 79d44841-8089-4483-8a30-9bd77d80e013)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - f1eaab24-ac64-446c-b110-5081e76460e3)(content(Whitespace\"\\n\"))))(Tile((id \ - 6c62d31e-0cd3-4a93-b3a3-e0bfc2b6ee1d)(label(Error))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - b32d4e0f-bac1-4b15-93eb-b31188f3091c)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 3f91fda2-74c6-40df-8438-21d9c20b27d6)(label(\"\\\"Not a \ - Function\\\"\"))(mold((out Exp)(in_())(nibs(((shape \ - Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ - 6ae76fb0-056b-4992-a831-90d2e231da24)(content(Whitespace\" \ - \")))))))))(Tile((id \ - 1bc273a7-62f1-458d-a09d-4bc459b51ff9)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 4db865b2-a2b5-46a2-9b64-eb5c03bba5fc)(content(Whitespace\"\\n\"))))(Secondary((id \ - 5a65f3a4-cccf-47f5-a42c-45f8b6a4c611)(content(Whitespace\"\\n\"))))(Tile((id \ - a0f14269-3b6e-4705-ae46-0659522f7eb7)(label(test \ - end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 60a82b59-576c-466e-b777-162b734366a8)(content(Whitespace\" \ - \"))))(Tile((id \ - bd26bb81-052b-4000-a91d-b18b5f18304a)(label(result_equal))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - e398512c-3c96-421f-a455-0770f2140901)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ - c14e1080-d592-4d1a-8d7c-f6a769ac9817)(content(Whitespace\"\\n\"))))(Tile((id \ - 01eb8e74-dad2-433e-84a3-6db864b278da)(label(go))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - c08d17a3-86f0-44ae-abd8-130ae24f3dc7)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - a3609f3e-e1aa-4710-ab9c-b0a9e1e41cb0)(label(Lam))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 2e9a1702-d984-4664-8871-2ff384af950f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 7a98a8c9-f5c5-4595-b74c-bd7c57200801)(label(\"\\\"yo\\\"\"))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 3092c611-314f-4958-a773-b4972a71e0b1)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 635ca0e5-1a66-4e20-b9ba-a5d4856a438d)(content(Whitespace\" \ - \"))))(Tile((id \ - 529e16d0-74d0-4670-b329-a329c1f4cea1)(label(Var))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - e246b571-1849-4dc7-b821-1a8acea9f001)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - e65e7f5a-000d-4d97-87af-4e948296bd0b)(label(\"\\\"yo\\\"\"))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))))))))))))(Tile((id \ - ca97cbc0-b06d-4ae1-a04b-7eb4879c45dd)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - f9f62ab3-94e1-4460-9e1a-282be3745ad7)(content(Whitespace\"\\n\"))))(Tile((id \ - 48a468f5-bc00-4aa3-811a-50dd0b2e066a)(label(Ok))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 2b2abf13-4865-4d7f-8c3f-abf22f0fe647)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 60f99f2e-0391-4ab7-bc47-9959fc05c337)(label(Lam))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 545c2d2a-aa3a-431b-b9ca-dd716ca6ee59)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 8ec6f6db-756f-4b23-b33f-224024733650)(label(\"\\\"yo\\\"\"))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - b268b8e2-24f3-41c7-9ceb-614175cbdcfd)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 75e15384-186f-409f-8edb-ed5483ef5fe3)(content(Whitespace\" \ - \"))))(Tile((id \ - 3a4e0acc-7c31-4bea-ae4d-1fe250479d35)(label(Var))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 2cc0bd9e-7ab2-4053-a6bf-fa47a4fb584d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - d4f2ee78-1d23-4cba-bd04-cc2a7ceeea0e)(label(\"\\\"yo\\\"\"))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children())))))))))))))))))))))))(Secondary((id \ - c53a30a8-81ef-4c7d-a11a-0e8ead9b8adf)(content(Whitespace\" \ - \")))))))))(Tile((id \ - 48683a3c-af45-4567-a931-2c397fb9c5df)(label(\";\"))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 10))(sort \ - Exp))((shape(Concave 10))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 82e74442-d468-4d67-ab9a-f7283e528d1f)(content(Whitespace\"\\n\"))))(Secondary((id \ - 91ee522a-16d2-4a23-82db-b89e15672bc3)(content(Whitespace\"\\n\"))))(Tile((id \ - 0d7e8380-fd82-42c1-bd68-6794c7add033)(label(test \ - end))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - d5bcc48c-02f0-4ec9-9049-dfed5d9d5fd2)(content(Whitespace\" \ - \"))))(Tile((id \ - ccde96f9-1245-4968-a65e-090d805d2858)(label(result_equal))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 1bccc9ce-f2bd-4975-a1ad-e7b966d4fe9b)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ - a1b785b5-2829-4837-b045-4d3eab2ccf6c)(content(Whitespace\"\\n\"))))(Tile((id \ - 5db82cd6-7826-40fe-8f3b-06294c9f70b5)(label(go))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 6459ae52-fba1-4422-afed-2af890e89881)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - ba3b4488-1a4c-48b7-9b06-dca7cac506d5)(label(Ap))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 53b88c98-5573-4b87-8f94-f230648bc9e3)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - a84b125a-eb33-46fb-b8ec-b5d17012da7a)(label(Lam))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 1f73579e-4516-4cb5-bee1-5c07600b7a46)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - eba58ed1-7aad-4613-84f7-63dcd5233c29)(label(\"\\\"yo\\\"\"))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 7e9403ac-bcb9-4fdf-afff-ac51847b82e1)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - c56293a7-632e-4074-9039-b929e76fcd6b)(content(Whitespace\" \ - \"))))(Tile((id \ - 425c8f21-dda7-4a2b-89a7-4592f5f127c5)(label(Var))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - cf9fe5c2-0358-4bff-93cc-700ee3bd954e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 1adadbe9-b0d2-4eae-beaf-50e53ff674f9)(label(\"\\\"yo\\\"\"))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children())))))))))))))(Tile((id \ - c654e02f-6794-4576-8675-0d687e98d297)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 208a5dc5-30ed-4ab5-8a2a-86013c261c73)(content(Whitespace\" \ - \"))))(Tile((id \ - fbd1675f-de3e-4dbc-bb53-63984df85e96)(label(Lam))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - b5787e6b-5923-4b1e-9d57-80d0a946ff56)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - ca7d0070-f638-4eca-b9dc-1e61585a2da9)(label(\"\\\"bro\\\"\"))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 871b3610-0b08-4b3a-9fd4-b0e507c5352a)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 79a5579c-74c7-4376-ab05-b15f16e99472)(content(Whitespace\" \ - \"))))(Tile((id \ - 58a1aff2-0efc-4809-8bcd-a6807ad6b9da)(label(Var))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 9f7f577b-6809-486e-a519-9ed71836b2dd)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 60f30909-1f83-4a51-9d98-d259495586ee)(label(\"\\\"bro\\\"\"))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children())))))))))))))))))))))))(Tile((id \ - 5482b64b-93fe-4ddc-b4de-1f4e575d284a)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 408c92e3-f951-4f31-8752-862356b88882)(content(Whitespace\"\\n\"))))(Tile((id \ - a64bc919-82b6-498f-a66c-ab5ff390ad76)(label(Ok))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - f49998ee-e91e-4645-9b8b-0ba86a84543d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 6703e9c9-1ab4-414c-9603-8cd0ddb3c949)(label(Lam))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - dc85022b-d88e-4d56-9adf-8db59a35a6a7)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 84005dd9-b58e-4ca3-9074-0456d2f430c3)(label(\"\\\"bro\\\"\"))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 76aa3723-c0f2-41a8-a8aa-ec010969619b)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 478ac908-46d2-4e78-8cae-1a803f6de024)(content(Whitespace\" \ - \"))))(Tile((id \ - c808791b-791c-4340-94b4-23bcf027103a)(label(Var))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 66ba6264-558c-45bc-9dde-a6f0e0820b6d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 7df83f37-87bf-4ca7-be5b-76684bd9b70a)(label(\"\\\"bro\\\"\"))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children())))))))))))))))))))))))(Secondary((id \ - ec814595-1e64-49d1-afcf-91e3ff70e2c2)(content(Whitespace\" \ - \"))))))))))))(ancestors())))(caret Outer))"; - backup_text = - "# Lambda Calculus via evaluation by substitution #\n\n\ - # An Expression is a variable, function, or application #\n\ - type Exp =\n\ - + Var(String)\n\ - + Lam(String, Exp)\n\ - + Ap(Exp, Exp) in\n\n\ - # Syntatic Equality of Expressions #\n\ - let exp_equal: (Exp, Exp) -> Bool =\n\ - fun es ->\n\ - case es\n\ - | Var(x), Var(y) => x$== y\n\ - | Lam(x1, e1), Lam(x2, e2) =>\n\ - \ x1$== x2 && exp_equal(e1, e2)\n\ - | Ap(e1, e2), Ap(e3, e4) =>\n\ - \ exp_equal(e1, e3) && exp_equal(e2, e4)\n\ - | _ => false end in\n\n\ - # Substitute Exp v for variable name in Exp e #\n\ - let subst: (Exp, String, Exp) -> Exp=\n\ - fun v, name, e ->\n\ - case e\n\ - | Var(n) =>\n\ - \ (if n$== name then v else e)\n\ - | Lam(x, body) =>\n\ - \ Lam(x, subst(v,name, body))\n\ - | Ap(e1,e2) =>\n\ - \ Ap(subst(v, name, e1), subst(v, name, e2)) end in\n\n\ - # Evaluation can result in either an Exp or an Error #\n\ - type Result =\n\ - + Error(String)\n\ - + Ok(Exp) \n\ - in\n\n\ - let result_equal: (Result, Result) -> Bool =\n\ - fun rs ->\n\ - case rs\n\ - | Ok(e1), Ok(e2) => exp_equal(e1, e2)\n\ - | Error(e1), Error(e2) => e1$== e2\n\ - | _ => false end in\n\n\ - # Evaluation by substitution #\n\ - # Evaluation by substitution #\n\ - let go: Exp -> Result =\n\ - fun e ->\n\ - case e\n\ - | Var(n) => Error(\"Free Variable\")\n\ - | Lam(x, body) => Ok(Lam(x, body))\n\ - | Ap(e1,e2) =>\n\ - case go(e1)\n\ - | Ok(Lam(x, body))=>\n\ - case go(e2)\n\ - | Error(err) => Error(err)\n\ - | Ok(arg) => go(subst(arg, x, body)) end\n\ - | _ => Error(\"Not a Function\") end end in\n\n\ - test result_equal(\n\ - go(Var(\"yo\")),\n\ - Error(\"Free Variable\")) end;\n\n\ - test result_equal(\n\ - go(Ap(Var(\"no\"), Lam(\"bro\", Var(\"bro\")))),\n\ - Error(\"Not a Function\")) end;\n\n\ - test result_equal(\n\ - go(Lam(\"yo\", Var(\"yo\"))),\n\ - Ok(Lam(\"yo\", Var(\"yo\")))) end;\n\n\ - test result_equal(\n\ - go(Ap(Lam(\"yo\", Var(\"yo\")), Lam(\"bro\", Var(\"bro\")))),\n\ - Ok(Lam(\"bro\", Var(\"bro\")))) end"; + title = ""; + description = ""; + hidden_tests = + { + tests = + { + zipper = + "((selection((focus Left)(content())(mode \ + Normal)))(backpack())(relatives((siblings(()((Secondary((id \ + 1f7bcab0-da00-4299-b43a-3ca1ef8ca2f5)(content(Comment\"# \ + Lambda Calculus via evaluation by substitution \ + #\"))))(Secondary((id \ + a927feba-9938-45cc-88da-4ca88fbace46)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 59554d6d-5be9-43cb-a4d6-1edf55e3c098)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 41573bf5-78b0-4f95-b6e2-3c4ce9dbd6d5)(content(Comment\"# \ + An Expression is a variable, function, or application \ + #\"))))(Secondary((id \ + 5e7af976-9c1e-4841-847a-70c966af0583)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + a76c3b61-221f-4e94-b8fd-5b45183df229)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 40bbb356-6987-428c-a8ed-2a6b99066f39)(content(Whitespace\" \ + \"))))(Tile((id \ + 5b4a5ae1-4e37-4f29-abcf-0ce0108de2c0)(label(Exp))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + 1cc38bcf-e0a0-416f-8cc3-1655722f05a4)(content(Whitespace\" \ + \")))))((Secondary((id \ + 09d316ec-a283-4c84-a902-cdb1b0d8fcc7)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 5c00fca1-9f11-4ed9-bb7b-507bdcb1fae8)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + f097f93b-c8d3-423f-8301-953e7fa560a6)(content(Whitespace\" \ + \"))))(Tile((id \ + f02ccc58-351d-499c-87ed-687857f5aafa)(label(Var))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 8096ab83-dd0c-47c0-bb76-b0e811b0c1bf)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + a375c863-da66-4010-a25f-778944a6db48)(label(String))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 8ee1d2e1-06c2-441c-8fc4-138532d469d2)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + bc72ff0d-8a9d-4ee4-ae45-b2c94f67eca9)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + c7ed4279-1d9d-44bf-af67-23ca84632b04)(content(Whitespace\" \ + \"))))(Tile((id \ + e2c11b78-0c54-448e-9cca-e4c8bfc8bbb2)(label(Lam))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 4d2df657-924d-4f14-9eec-0ecd7f5c21c9)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + a64e19fe-5bc6-4139-8b40-96e3583fa4fc)(label(String))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + f3daa7e8-f243-4222-8ee4-ddc0f9155c46)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 447e6442-bdde-46f7-8882-6bb1f68d67d7)(content(Whitespace\" \ + \"))))(Tile((id \ + 15875387-e3ed-4473-9c6a-453a68e8b117)(label(Exp))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 0f46618b-71ec-4bf5-88ca-75d3bf0a549e)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + cd1bd397-be90-494c-9ea6-17847e56b805)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 04185bae-3d12-4049-affc-da427e740d6b)(content(Whitespace\" \ + \"))))(Tile((id \ + 559ea70c-729f-4295-a48a-c27dd9fad885)(label(Ap))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 2e0537e7-5ee1-499d-9edf-c2eae0b53264)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 2bbfcd7d-a9a0-41f5-9f2b-65e6f4f0fc50)(label(Exp))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 40bda1cf-399a-4368-9a93-1b34120aafac)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 4f27a6c1-9f31-4f48-9f67-81fb4bdb8815)(content(Whitespace\" \ + \"))))(Tile((id \ + f9b126eb-6ecb-42a4-9b11-255fcea67577)(label(Exp))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 297a96d2-948f-4fdd-9884-8e547ed933a8)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 60f3914c-75d8-45b9-91c8-408f8d99eded)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 0a6f99c3-1727-45b2-a08f-1194554cea5f)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + dfed049c-1560-40ad-adef-7de21ec01615)(content(Comment\"# \ + Syntatic Equality of Expressions \ + #\"))))(Secondary((id \ + 02c2cda8-cd30-4c87-8633-79f6279f2923)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d1c59a7b-15de-49ae-aaf5-056c65738d18)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 321c3b7f-71b6-433f-8ba5-3a176f503ee2)(content(Whitespace\" \ + \"))))(Tile((id \ + 20a41284-a854-463e-8f08-880a85b83d3c)(label(exp_equal))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 78495729-2b1d-4e8e-8f1d-c9d28f6a7a60)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + dbee2db7-3f10-4979-9024-bc34f7453770)(content(Whitespace\" \ + \"))))(Tile((id \ + 72d5e73e-ff5a-4bbc-9d1d-7e6e1581e413)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + cf35fc7b-7318-4d81-8163-b650fd7de4f0)(label(Exp))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 3907ffc4-af80-403a-839d-82b1232395f2)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + d7aca28b-65fd-473a-9fb6-65ea96ef78d6)(content(Whitespace\" \ + \"))))(Tile((id \ + 22f01e9c-afbb-4e08-8acc-d315f402817b)(label(Exp))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 4ab91533-0de3-4d84-b8b2-7fbe33be34a4)(content(Whitespace\" \ + \"))))(Tile((id \ + c59e6b78-fc5b-47bb-b830-9d4fe67c0b13)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 7b30dd6b-c498-4637-ae4a-f6afea955a90)(content(Whitespace\" \ + \"))))(Tile((id \ + d000d521-0821-47e0-b655-52db20eb828a)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + af54a209-ee0b-4c7b-961a-d2565352172e)(content(Whitespace\" \ + \")))))((Secondary((id \ + 5668d661-45f0-4cfc-bfb1-264fca05b8d8)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 2b529252-636b-410b-8ff5-c917ee8e8b64)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 64120593-aefa-4317-bd9d-7901b0b718dc)(content(Whitespace\" \ + \"))))(Tile((id \ + 24182c8a-50a3-4da8-be1b-25521534c38f)(label(es))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + db377abb-9d27-4f80-aaee-29019fe3fbee)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + b6e75de0-9f67-4707-b9c0-c1728ae46b3b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 42e957de-23fb-4f1d-b783-5e0467dae1bb)(label(case \ + end))(mold((out Exp)(in_(Rul))(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 41b2af43-6a43-4d11-a81e-d9d17f4bbfd9)(content(Whitespace\" \ + \"))))(Tile((id \ + f8796638-2f86-4f8a-b536-31faba9bb8ac)(label(es))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 31770179-3d0d-4744-81af-ca2b9883eab1)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 2c2de1f3-9f64-4731-b40b-2ae4c85c9487)(label(| \ + =>))(mold((out Rul)(in_(Pat))(nibs(((shape(Concave \ + 19))(sort Exp))((shape(Concave 19))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + e616366b-7709-4c52-9c3e-b4b841ec4de0)(content(Whitespace\" \ + \"))))(Tile((id \ + 26d3098a-59f8-4a5c-8b5c-e0fa8621fcbd)(label(Var))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + ef5324c2-ee25-4eeb-a37b-cfc90fcd42e0)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort \ + Pat))((shape Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + 15ec3550-c2c7-4ea0-97c4-367815d9b5b7)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Tile((id \ + cf5cc86d-6091-4092-99b1-2fe5cf19e552)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 583b25e8-f45f-40d9-b4c5-cb84f2061a99)(content(Whitespace\" \ + \"))))(Tile((id \ + ec7b427c-4313-43f3-bf80-c847e66f65b6)(label(Var))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 257f3750-3762-4685-b1a6-6a6fa861007a)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort \ + Pat))((shape Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + 8006ee75-37d1-4341-8dcf-5a7bcb32460e)(label(y))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + d57b3841-3010-4604-b2fc-c1f1d0aef0e8)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 65d17c9e-a107-4192-9068-c0b205c0069a)(content(Whitespace\" \ + \"))))(Tile((id \ + 7be050aa-cbc5-42cb-8922-53e6e6b12824)(label(x))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 318d3c65-2497-491f-96f7-cfe6394a8b79)(content(Whitespace\" \ + \"))))(Tile((id \ + 853da4a6-5aed-44d8-ab43-75333dd82023)(label($==))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 8))(sort \ + Exp))((shape(Concave 8))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + cea85df5-b3bd-4017-a952-d64ad8459841)(content(Whitespace\" \ + \"))))(Tile((id \ + e7c511c7-5050-44da-b175-da1e4ff92d52)(label(y))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 4f3a5193-c3ac-4370-9c9e-c8df5a37167d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + eb08f193-8966-4277-bc08-9e79add2cde8)(label(| \ + =>))(mold((out Rul)(in_(Pat))(nibs(((shape(Concave \ + 19))(sort Exp))((shape(Concave 19))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 09f89651-2b39-4c39-b0ca-b69b08429670)(content(Whitespace\" \ + \"))))(Tile((id \ + 81672889-56c2-48d7-b53e-bad5b4d1df31)(label(Lam))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + e4c0cf87-1985-4aa9-b4be-8abb8278e176)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort \ + Pat))((shape Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + ce2d28c7-d1d1-4ad5-909e-6421f2f39739)(label(x1))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + b279ac2d-53a0-4899-a3e7-29e45637f1d3)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 54c7c5cc-5009-4243-baec-df198852f9e8)(content(Whitespace\" \ + \"))))(Tile((id \ + 64075130-f088-457a-82f6-ebe5d0be8451)(label(e1))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Tile((id \ + e094bdef-fc38-445e-92b7-a730961c8fdf)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + e88a31af-6149-4000-b8e2-94f31e45d5fe)(content(Whitespace\" \ + \"))))(Tile((id \ + f1ce5a32-e138-43d5-8775-e6f75efe37d1)(label(Lam))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + c6bf010d-869d-4271-b2b7-828dd4f1b553)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort \ + Pat))((shape Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + bb0a3fd6-4dff-422b-bdf1-8460c7d43829)(label(x2))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + ea64a246-122f-41e6-8284-a7b00542c4de)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 6a6b2ec6-56a9-4ad4-8497-ae680f9b1118)(content(Whitespace\" \ + \"))))(Tile((id \ + e17d1a0c-3041-4aae-8312-2164ad00b76a)(label(e2))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + d3650922-ea7a-4f27-89d3-b919d15786be)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + cd0e2d13-9e19-4cf8-b896-32cf152976ce)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + c948dec9-9f62-48db-a69b-7c4734cb8e9a)(content(Whitespace\" \ + \"))))(Secondary((id \ + 8820244d-86e7-467b-b6ee-412309891bf5)(content(Whitespace\" \ + \"))))(Tile((id \ + 6ad0085e-1640-4bcc-966c-63535c4dcb4e)(label(x1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 6a3c75e8-867f-43b4-af30-e3c33700b8ca)(content(Whitespace\" \ + \"))))(Tile((id \ + 98252b63-4ae7-4104-81db-be1b271d1b20)(label($==))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 8))(sort \ + Exp))((shape(Concave 8))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + e85acee5-ac98-4fdb-9b7e-3da31e9a1cdb)(content(Whitespace\" \ + \"))))(Tile((id \ + 517d59c6-6e8a-48e6-9810-deff80d4837b)(label(x2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 64892ab9-5f46-41ec-83ec-830a3771bda2)(content(Whitespace\" \ + \"))))(Tile((id \ + 654196e6-5c40-464b-882e-f000185256ae)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 358e8514-a640-4e35-adc2-89e552b48f63)(content(Whitespace\" \ + \"))))(Tile((id \ + e7e712ff-e6a4-4736-a2a9-1051368e4621)(label(exp_equal))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + be1cd4d0-77ec-4b24-806a-d44ab9406dff)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 2b9171e1-b36a-4b4d-ba94-b1b383e3d876)(label(e1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + ee427415-9cbb-40bb-be41-483d6b055dde)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + c2233df3-e617-438d-a3f3-9764587db421)(content(Whitespace\" \ + \"))))(Tile((id \ + c9f2177c-7b5b-458f-a2c8-f1e5e4b6e938)(label(e2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 9350c7fe-fcd8-4395-b2a5-51f3b4bc28d0)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 4565265b-2b39-4e9d-b8e5-4eac2118eaf5)(label(| \ + =>))(mold((out Rul)(in_(Pat))(nibs(((shape(Concave \ + 19))(sort Exp))((shape(Concave 19))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 7982873e-6820-415f-a686-58b3b38f3af7)(content(Whitespace\" \ + \"))))(Tile((id \ + fc624d2e-62e9-42ea-a935-f0e009fffbc6)(label(Ap))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 39ebe962-9adf-45d0-8874-8bc30d5d4c9f)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort \ + Pat))((shape Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + c3628f0d-0cb8-4954-a16a-e791d0f9a30f)(label(e1))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 4cabbfa5-38b7-45e5-962d-6310e522dc2c)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 9c108b07-27cd-4d7e-b2e4-6ae975db2eb9)(content(Whitespace\" \ + \"))))(Tile((id \ + 7e8c0903-e399-43b6-ba2c-f014879fc966)(label(e2))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Tile((id \ + ad3766ab-7abe-4e5a-b44f-9a9cb6badf3b)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 3170e2a0-ebdc-4b38-b2b7-a09434ec3f1c)(content(Whitespace\" \ + \"))))(Tile((id \ + 545a9cc8-240b-4267-adc8-0b2bbfe70a91)(label(Ap))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + dbc20a7c-0050-4672-bd5b-b298221a315d)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort \ + Pat))((shape Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + 1a06a7c6-f321-428e-b28c-a4f24b3ab556)(label(e3))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + ec1e7e19-8acc-4a77-8ef5-0b9907518462)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + bba30512-7bbc-4930-b198-d12e690a5b93)(content(Whitespace\" \ + \"))))(Tile((id \ + 0d36e488-3e41-46f9-a972-23750bcece8f)(label(e4))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + 4b4d9e3e-ac05-4a5f-b08f-d5563460b5c7)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + f282b2b5-5c36-472a-8375-d1a36a8649ae)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + f3bd6390-5a54-48a1-9640-ccfa45160df0)(content(Whitespace\" \ + \"))))(Secondary((id \ + 7df542d2-05f3-4e21-8c5f-64955731be10)(content(Whitespace\" \ + \"))))(Tile((id \ + f60edbaa-954f-42fe-b431-b9bcc014a9c6)(label(exp_equal))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + b1f04c3d-547f-44e7-8e7a-8a39c04667eb)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 194d5a82-cc1f-4a18-8b5c-c61c904af17e)(label(e1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 75f2818f-2f9c-4049-878f-c81085700db4)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 7b3280d2-d974-4cf6-9bb0-516576217085)(content(Whitespace\" \ + \"))))(Tile((id \ + 4b4990b5-c883-44de-baa5-6298bdcd9c6c)(label(e3))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + e67b82f1-96e5-4d33-b100-3bfe9707c8c6)(content(Whitespace\" \ + \"))))(Tile((id \ + bc816646-333d-45c6-87de-126307d9157f)(label(&&))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 9))(sort \ + Exp))((shape(Concave 9))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + cda90ee2-15a7-475b-a7b7-b58f95ac0541)(content(Whitespace\" \ + \"))))(Tile((id \ + c6cca4d7-4919-46de-8ffb-52071913367e)(label(exp_equal))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 46608290-3577-4831-b399-c80d5d767d86)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + cea40954-b0f5-4ea0-abdb-8f3a0a210bcd)(label(e2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 5d251e7a-9910-4012-9c61-96c776587f87)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + ad817f3f-75bc-46fa-ab0a-86718ad8e04e)(content(Whitespace\" \ + \"))))(Tile((id \ + 2c9c3dcc-3d6c-463e-bcd7-fba48da6ecac)(label(e4))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + a58fe0b7-4a35-4a50-97be-441d4274c616)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + e7572e91-07c2-4d65-abca-dd76ec42dbbf)(label(| \ + =>))(mold((out Rul)(in_(Pat))(nibs(((shape(Concave \ + 19))(sort Exp))((shape(Concave 19))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + c7d795b0-3d34-4bde-aebd-a6712a065da1)(content(Whitespace\" \ + \"))))(Tile((id \ + 68ab1574-8fff-4c61-b8dd-81e4b42bfad5)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 6ee1936d-6b0e-4790-b4fa-a3ec667659a9)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 109c64f2-39ac-480c-b33e-96b08c515ffc)(content(Whitespace\" \ + \"))))(Tile((id \ + 215955f2-8a04-40c6-9f1f-14652d8f2637)(label(false))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 16e0c010-73cd-4dac-ac53-2536fa7068ca)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 4f239c3f-102e-4227-9388-89983d93b887)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 8172db9a-32d5-4ceb-a908-3837509edd80)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + d3329425-9616-473c-9f10-82c062d01611)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 5ed2278f-50d0-4255-94cb-f201169e5a88)(content(Comment\"# \ + Substitute Exp v for variable name in Exp e \ + #\"))))(Secondary((id \ + fdf34800-63c7-4baa-a41e-ec2517696344)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 980a0de3-6dc8-466c-9fc5-57c0161c32ed)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 968f19d7-ca3c-4318-a56c-ddaded903c52)(content(Whitespace\" \ + \"))))(Tile((id \ + a5a4093b-3f2f-4543-a9e6-d915edb78d16)(label(subst))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + bf012f47-7904-4b04-b435-261c6898a74f)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 292ae481-93fe-4e75-b4d1-85a12c13d583)(content(Whitespace\" \ + \"))))(Tile((id \ + 365f62b2-81b6-4a77-aa1a-c14fafc129f1)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 54243b79-d02b-4ca1-a5ea-b6136ac1bba8)(label(Exp))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 15ef7894-18f2-4632-8549-55d65bd68d5e)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 04d28679-49cd-4169-90ac-3ba15295a145)(content(Whitespace\" \ + \"))))(Tile((id \ + 61e87e55-f097-4946-a07e-9608191e9e8d)(label(String))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + fbbe13a3-aa6d-4dd8-b425-66d31fa6ab5c)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 76d1a094-2cfc-4b1b-8491-faa073126a50)(content(Whitespace\" \ + \"))))(Tile((id \ + 11012759-a911-472b-92c4-13c296f014dd)(label(Exp))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 36c53e8b-58b4-4b29-90c7-bcd8283d021a)(content(Whitespace\" \ + \"))))(Tile((id \ + 337cc1de-7007-44a8-b7c0-e2d62dfe038d)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 2cbdefda-74b9-4e12-bb77-968981f48d24)(content(Whitespace\" \ + \"))))(Tile((id \ + 6669c981-844e-4bdb-80e8-49f63a37c170)(label(Exp))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))((Secondary((id \ + c9570d59-780b-491a-84f6-f38720034df1)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + cd3956e2-872a-48d0-b61b-49c9627f7da0)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + d889bd03-eae8-466d-8ab2-6a37b228101b)(content(Whitespace\" \ + \"))))(Tile((id \ + 6f2f5c27-b0c6-4d64-bec4-f59a3d62907e)(label(v))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + b1a377a9-9f1f-46ea-b9c8-4a735177c681)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 4e8b2929-daa4-4997-a50c-41215cd5dc97)(content(Whitespace\" \ + \"))))(Tile((id \ + c6e2f602-5f94-4779-9f7d-6150753e387d)(label(name))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + aa15bace-4f95-4777-ae5a-86efcb21d80b)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 13bc3e73-cc08-426f-b842-8f326d5e06fd)(content(Whitespace\" \ + \"))))(Tile((id \ + 70cea4ed-3f34-4564-b948-5b37698e0059)(label(e))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 6fd33e5b-3792-4bb2-9d66-e7c7cfd82c09)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 90f64cae-e6b1-4c17-a7e8-f843bc7533d8)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 419ebed6-b5b2-4540-a431-3096df690104)(label(case \ + end))(mold((out Exp)(in_(Rul))(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 7f57f5da-29d7-4afe-af81-9ba4cdb84290)(content(Whitespace\" \ + \"))))(Tile((id \ + 84bee910-aedb-4d4c-baff-a4571eabd806)(label(e))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 75df8104-bdda-4020-aa34-461d8ef9a61c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + f680450c-a013-4374-a0d9-3b7395b2d291)(label(| \ + =>))(mold((out Rul)(in_(Pat))(nibs(((shape(Concave \ + 19))(sort Exp))((shape(Concave 19))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 5ba10a8b-3767-4f49-ad59-b4d685b3e8d1)(content(Whitespace\" \ + \"))))(Tile((id \ + c85b62c4-519c-4ff6-b53d-084bfc4b3a4a)(label(Var))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + cbe676ad-d210-4614-a6f4-f1288961392a)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort \ + Pat))((shape Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + b3d931dd-62c9-49d1-9c23-57e51491e2fd)(label(n))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + 39dcfa1c-d518-4072-925b-5a857363d84a)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 28da4de0-f438-42e7-8193-7123c709da52)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + de7081b2-0362-4667-be82-f6b027b192fd)(content(Whitespace\" \ + \"))))(Secondary((id \ + 185f0a9a-db51-48ac-9671-7308af2566a6)(content(Whitespace\" \ + \"))))(Tile((id \ + 94fb704e-4ce9-42e6-ae34-d1b88af3c424)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 9298a278-bffd-4a4c-baf9-1aed6d1562dd)(label(if then \ + else))(mold((out Exp)(in_(Exp Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 12))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 1b07d13e-1cc4-4476-b7aa-1d947539db97)(content(Whitespace\" \ + \"))))(Tile((id \ + 18e2d5d1-c566-4eb6-85a9-8185ac89e46b)(label(n))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 3487f0ad-8f80-41de-905f-5c7681cab87f)(content(Whitespace\" \ + \"))))(Tile((id \ + 53fc5638-04b6-4552-82f6-17a089316a9c)(label($==))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 8))(sort \ + Exp))((shape(Concave 8))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 955e949d-0d06-4724-bd32-3869a60d1509)(content(Whitespace\" \ + \"))))(Tile((id \ + 714480e4-4cc9-4f0a-bb16-fa5eddae8ba7)(label(name))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + cff5290a-3b75-4adc-a07f-57162f45e70a)(content(Whitespace\" \ + \")))))((Secondary((id \ + fd1933b0-7135-44ad-9295-1cdff91a4700)(content(Whitespace\" \ + \"))))(Tile((id \ + f54eda3c-4175-4cdd-a22a-bd44d64754db)(label(v))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 80942fdd-f28f-467c-be15-f40257293d0f)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 59fe67c4-9e46-41da-80c5-94a08d421127)(content(Whitespace\" \ + \"))))(Tile((id \ + 053268f5-aa5f-47d4-bc35-7dd044c4d016)(label(e))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 48783eb9-b6b0-4995-98f9-9dea00a51ea6)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 446ff674-42cd-4716-9ec5-caedd30229e1)(label(| \ + =>))(mold((out Rul)(in_(Pat))(nibs(((shape(Concave \ + 19))(sort Exp))((shape(Concave 19))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 026fbda4-70e7-4982-966e-131e89f8b063)(content(Whitespace\" \ + \"))))(Tile((id \ + 970904cf-54f0-4476-949e-6bff04296230)(label(Lam))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 1c58d46b-701f-4fdd-8122-3a8b6b717fd1)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort \ + Pat))((shape Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + 8ee0764c-6ae1-4a7f-a43a-da8e9e2ef1ff)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 139f7e26-a096-45dc-b86c-b1759995e640)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 584fe536-95b9-467b-9d45-8ff79f932322)(content(Whitespace\" \ + \"))))(Tile((id \ + 44b651bc-58e2-4d0f-8fe7-f9f4ef2df975)(label(body))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + d8b7e4b6-2830-4ae4-8765-ad8787599005)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + df1a1724-1680-4c13-86c4-cf1739d1f2f5)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + b12dc4f1-3584-4d70-9df4-56748637b5d9)(content(Whitespace\" \ + \"))))(Secondary((id \ + 789ee2e2-b17f-46d2-a729-97747b3d3b3c)(content(Whitespace\" \ + \"))))(Tile((id \ + eb31c313-cfaf-4a04-97be-5d02a39afa8e)(label(Lam))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + ebcd5284-9b96-4e09-9e05-1c856050c226)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 33d26cbb-f822-4b7d-a3a9-a76ae159a0c1)(label(x))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + f688d2b2-b8c9-4203-ac30-acb9b78b218b)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 47729e37-9963-4286-9683-323f9b87bceb)(content(Whitespace\" \ + \"))))(Tile((id \ + e5b9286e-a2d4-475c-bbc6-6a0ec96cfa1e)(label(subst))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + cec07007-77a6-4c7c-9ba7-4d851d46afab)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + cc33ccf8-2ba7-420b-b2c6-21aea451a89e)(label(v))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 7d8a5934-f197-4252-a244-ab397fd8f6a5)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + cc112f0c-4bf7-4662-917e-846de267fe34)(label(name))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + b02b84ec-218c-452a-bf1e-9617cef8490d)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + ed7443d9-4404-44fd-a4e0-3f6559f33e82)(content(Whitespace\" \ + \"))))(Tile((id \ + ddac8323-ba4e-4d64-b5cc-7e69c920435a)(label(body))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + a26fdd56-19a1-4583-96b1-b2e6f4dce75b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 4a409d0b-c2f8-4b1c-b160-ff917085bf6e)(label(| \ + =>))(mold((out Rul)(in_(Pat))(nibs(((shape(Concave \ + 19))(sort Exp))((shape(Concave 19))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + da613248-93ad-4ad8-8958-3b005c4c4629)(content(Whitespace\" \ + \"))))(Tile((id \ + de5333b3-77bf-44f1-a7b6-64378045d95c)(label(Ap))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + b29c0da4-d842-4d39-93ea-68ad05af9261)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort \ + Pat))((shape Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + 1e386e4c-0118-4aaa-a61b-7c459652561e)(label(e1))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + ff5111c7-24e2-441c-ba22-b00b9570b868)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + a5e422b7-f453-4fb9-bf2e-d8fbb0f1fc19)(label(e2))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + 2bb31630-3fbf-41d5-a19f-37006e884723)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 334192b2-d1f8-4e50-84a9-f63119f5ea66)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 5cdcd943-3223-4e31-a4c9-230ddd7cadbc)(content(Whitespace\" \ + \"))))(Secondary((id \ + 04ea99ba-c0d4-4f96-8514-512d2679d38b)(content(Whitespace\" \ + \"))))(Tile((id \ + 6698f873-dfec-429f-aa2e-5b753a0e0b13)(label(Ap))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + fd041cbd-11e7-483f-9894-149d647575df)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 9b6f0264-1a4e-436d-a922-f0325bc2e4db)(label(subst))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 7a495fb0-7163-4e39-9013-81f4b1b49d70)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 54fc8758-e83a-451d-bb69-409eb19c6735)(label(v))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + c3e19a5a-f9b6-4f24-8f7b-64f099967f9f)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 71fca11a-3419-4757-b711-fdd18405d97c)(content(Whitespace\" \ + \"))))(Tile((id \ + a763abee-d9b7-45b1-8424-3ef1a0a271e5)(label(name))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 4faf4138-d473-4173-95a6-eea2542573f7)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 9e46b718-8343-46e5-8691-99218fd48457)(content(Whitespace\" \ + \"))))(Tile((id \ + 2a42a695-0600-4732-b130-fdb906e39384)(label(e1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 9346f2a0-c777-409b-91ae-ac99409e69dd)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 175d0889-9c8a-40ce-a0d3-9e16bd3e343a)(content(Whitespace\" \ + \"))))(Tile((id \ + 0c57d2e8-6a01-4794-9165-25cbc0175a5e)(label(subst))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 05ee19ae-081d-4fb0-affb-ecad3fc03096)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 7c14b792-807c-4156-af95-90f4cce11fba)(label(v))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 3341286f-c3ba-4879-a6f4-24cc00343cee)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 80da2600-590e-496c-9670-31ea4bc2e302)(content(Whitespace\" \ + \"))))(Tile((id \ + 5a0ea697-f4c2-4fca-879b-a4b7ac213c8e)(label(name))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 2d9420c7-44dc-4781-8c4f-fabd96d95ad4)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 7bf8c927-0575-470b-b3c5-a29a553b6830)(content(Whitespace\" \ + \"))))(Tile((id \ + 5739b8d1-04a1-4835-8688-50bb5a0929dc)(label(e2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + cf9ea30f-5bce-4d8f-bcf1-f47ab170f0a6)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 140b4e40-9a69-4603-a8ff-f54f43833aea)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 83a2646d-03af-4380-950e-4ffbec2efecc)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 60a803a0-45dd-4d26-9e50-9d41b42e060b)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 55f117b1-90ee-4043-97a5-eaad60fbf8d8)(content(Comment\"# \ + Evaluation can result in either an Exp or an Error \ + #\"))))(Secondary((id \ + 75edeef0-b93a-4e52-8eb7-956406120f02)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d9758f2e-b154-4d74-9d8d-ddb629f96371)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 4e0f5968-053b-43c6-8ee7-f9e839b0d176)(content(Whitespace\" \ + \"))))(Tile((id \ + 0ee7d546-e23e-4b2c-808e-01af4f749706)(label(Result))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + bd8a61cf-b940-40b0-9fbd-c698a60e9df6)(content(Whitespace\" \ + \")))))((Secondary((id \ + 8a5beda5-5224-4e5c-8dc0-79e6db7f1fd3)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 91cccf23-4d44-46e7-a81e-a046a2566144)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 24bf5ab5-af15-4566-9884-a2061fb39d79)(content(Whitespace\" \ + \"))))(Tile((id \ + 4d58cbe8-1f96-4129-a6bc-5fa73566b2cf)(label(Error))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + a9b509d2-8f56-48d1-8e5f-3fdafc9415e5)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 9f7a0898-680d-4868-a84c-5bb556f1612c)(label(String))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 689974ef-89e4-498f-bd4e-34a6720427d3)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 52b2d13f-c806-4877-84fe-6d32ab1182b6)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + ecf58e9e-0efb-4e01-ae05-1fe9b21d03b3)(content(Whitespace\" \ + \"))))(Tile((id \ + afce6860-9293-4f8e-9ef7-dd0c60ca95ab)(label(Ok))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + aea698dd-d63d-4fe2-9fcf-7f224c41a59c)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 40472e30-a169-465e-af55-751ecf617aa0)(label(Exp))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 2cf73080-004a-4f90-b789-9221717f6081)(content(Whitespace\" \ + \"))))(Secondary((id \ + b27f5376-58b7-4974-beaf-4de3558d93bf)(content(Whitespace\" \ + \"))))(Secondary((id \ + f43fd6da-318e-4965-a2a5-42ed801cc41f)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ + 82677a8a-59a2-49cb-845a-3c3876b5b300)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 4f966c26-0371-4ef8-a075-127d1f0321f7)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 621fd573-caa6-4583-87f9-b5825e167918)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + cfd16b5f-c56a-49a9-a7f2-44b0be14f475)(content(Whitespace\" \ + \"))))(Tile((id \ + 8581c765-76a3-422c-9479-8eb2cf7c104a)(label(result_equal))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 125cc189-7080-41e8-a196-b7ab8ad54f77)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + db9bdbd0-7b2e-478c-bd6e-8f8b5c508ecc)(content(Whitespace\" \ + \"))))(Tile((id \ + 1041388d-9c06-4d8a-a535-05b540bff54d)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 2ed6f843-67da-461a-80ca-5d01c34c12c5)(label(Result))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + a73ace3b-2a20-43c9-8697-861ce8173c07)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 320fb96f-b4ff-4d76-a951-a09df19091e0)(content(Whitespace\" \ + \"))))(Tile((id \ + cd4f3152-7c7f-4a71-be23-f9d7c0388c9d)(label(Result))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + a92c9445-e047-476f-a541-5edeeeb864ee)(content(Whitespace\" \ + \"))))(Tile((id \ + ca0ae608-6978-4d91-a8cf-9103dc0e87c6)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 6b67160f-a805-4eab-a904-5786bc35aa7d)(content(Whitespace\" \ + \"))))(Tile((id \ + cbd87072-37ba-47ef-b34d-4d2da770afe3)(label(Bool))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 7c817c8f-ce88-4e4b-b96a-e26c7da1c387)(content(Whitespace\" \ + \")))))((Secondary((id \ + 64f3bd36-89a3-46b3-bc72-98972d735233)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 5f64f54c-d03a-4e99-b8e8-cf42d0043c9e)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 0286c456-4807-4a6f-91d4-10e73c6aa351)(content(Whitespace\" \ + \"))))(Tile((id \ + 075698c5-49d1-4818-a2a0-925e47ebb73c)(label(rs))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 79fb8f75-8463-4067-bc1f-8a01459d9cd4)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 055d2b42-baca-4a18-94a8-2dd4163c3cf9)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 4666bb19-2d4f-4d4e-acd4-3b375a5d357c)(label(case \ + end))(mold((out Exp)(in_(Rul))(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 53c9f8b8-bc8b-4251-ba44-04c921e86785)(content(Whitespace\" \ + \"))))(Tile((id \ + a21b674d-34f5-4d6d-9f85-144377e105c3)(label(rs))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 36300ef2-f0a3-4e40-99de-9e3d54bfcfe0)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 7d884095-55c3-4b3c-add1-d24317fc7080)(label(| \ + =>))(mold((out Rul)(in_(Pat))(nibs(((shape(Concave \ + 19))(sort Exp))((shape(Concave 19))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 9a9b1e20-4bc2-496c-8619-b0a889a7aef8)(content(Whitespace\" \ + \"))))(Tile((id \ + 262fd22c-29f4-48cc-9b52-e7176e683b94)(label(Ok))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + f8074977-f93a-463b-98e4-d69bfc55307b)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort \ + Pat))((shape Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + 9bb655c2-b54d-4741-a1ab-0addfd13c98f)(label(e1))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Tile((id \ + f9451c6a-d4bd-4b58-b077-397aaa290272)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 6f3b3236-cdce-41a4-9232-0006322b7b57)(content(Whitespace\" \ + \"))))(Tile((id \ + e2d471ef-1c46-4a9c-a54a-fe1ef3cbb19b)(label(Ok))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 60028cb7-d928-4ee8-aa7b-9dc38e3a7e18)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort \ + Pat))((shape Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + 3a1ad870-b7bc-43d0-b716-12cb9c23597d)(label(e2))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + c50a22f8-4eb0-49cd-8144-2300c10e107a)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + fbb838b6-e6e9-4dff-a09c-523e350c630d)(content(Whitespace\" \ + \"))))(Tile((id \ + 00557cb6-1130-4a7d-8368-3412f00d393d)(label(exp_equal))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + ba4eb367-ef3f-4525-93f9-bfa92d9d7c97)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 2502b290-8870-4d81-8f5d-76609e24860d)(label(e1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + f484106b-41ee-4800-9a7a-a6a885e60b45)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 96e06e4d-be79-4633-a71a-a32b52a6153b)(content(Whitespace\" \ + \"))))(Tile((id \ + e4b1e526-e611-443f-b5aa-6be2f7aa6253)(label(e2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 73ddc6f1-7d14-4b25-9602-96415acda0e6)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 5f5c67e0-4040-410e-92f6-62a141252bd0)(label(| \ + =>))(mold((out Rul)(in_(Pat))(nibs(((shape(Concave \ + 19))(sort Exp))((shape(Concave 19))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + ab885d68-e990-49bb-a610-a53b37d77456)(content(Whitespace\" \ + \"))))(Tile((id \ + cfa1b087-0510-4b36-ac15-5a61f8aafa38)(label(Error))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 74c5a935-852f-4da5-878c-887bc26c98e9)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort \ + Pat))((shape Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + 3ff6542d-a8bb-4716-99da-9367ecbd49a9)(label(e1))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Tile((id \ + 58f2f26d-e37e-41cd-b13f-8d7e74228172)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 1e2b816e-7642-4f4e-b95f-adf12abbc8ae)(content(Whitespace\" \ + \"))))(Tile((id \ + 8416cd9f-2529-4db1-9035-20229b62df28)(label(Error))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + dff4702f-08b6-447d-98c5-0f1fd993e456)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort \ + Pat))((shape Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + ace2fdc0-80dc-4300-97ea-843487707e22)(label(e2))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + 21a5a76f-b56e-4eab-bc27-4365a8a5c5fe)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 987928b6-2cd7-4cd8-92c5-dca894fee268)(content(Whitespace\" \ + \"))))(Tile((id \ + 39426536-b6ae-4d23-b940-c09166c487f3)(label(e1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + ddc21c27-b545-4704-9b83-73a54e7f97c5)(content(Whitespace\" \ + \"))))(Tile((id \ + b46541b7-7399-43b2-acee-ef0325e8909d)(label($==))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 8))(sort \ + Exp))((shape(Concave 8))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + c9a08e3b-dc53-4576-b101-94199ea10081)(content(Whitespace\" \ + \"))))(Tile((id \ + 4aae0476-095c-4045-843a-f7dd32925cdd)(label(e2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 0606e959-ddcf-4d32-b61d-68b1bf791355)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 70cb209e-2fbd-4019-8a9c-f55ae2b12881)(label(| \ + =>))(mold((out Rul)(in_(Pat))(nibs(((shape(Concave \ + 19))(sort Exp))((shape(Concave 19))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + ea405901-ebf8-4432-9bc9-2ff5ee8500f1)(content(Whitespace\" \ + \"))))(Tile((id \ + bbc620b9-6f94-49ea-8ed2-4c7b6bb323ea)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 460c3b9c-9811-4fe0-a6a3-453ffaf1290e)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + e36568cc-f82c-438a-9b67-2098c7bfb269)(content(Whitespace\" \ + \"))))(Tile((id \ + 1c3d6b48-108a-431c-817f-138af3f8a50d)(label(false))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a61bcd07-c82b-4dd6-838f-f4d9762a0a2e)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 0e699793-d7c9-477d-834f-c62eb4458558)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + e06c3270-8e19-4c45-8888-e9301f3629cf)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 88cd77a5-2e10-4d67-86dc-c0acddaf3a7f)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 1f1fecf6-bddb-4813-9c11-306183d4da10)(content(Comment\"# \ + Evaluation by substitution #\"))))(Secondary((id \ + 5ea9e27d-1731-4316-8506-fc45c5e70003)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 5fb6f0e7-3581-4553-95f8-a84bd4161861)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 1af286e3-978a-4ff8-a94f-5f2891068195)(content(Whitespace\" \ + \"))))(Tile((id \ + e1e44354-cb44-4d2b-8560-e8ad5adb5dd3)(label(eval))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 25a60777-31c2-4b6b-b06d-cf6d67d61e3f)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + b3f75514-9770-47c1-9545-9e19f15df048)(content(Whitespace\" \ + \"))))(Tile((id \ + 62603e3e-6bba-44d5-bc4a-206542a22f33)(label(Exp))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 4f14df0f-7731-4364-9efe-7a353e852f82)(content(Whitespace\" \ + \"))))(Tile((id \ + 202553fc-31fa-4c18-afc4-2ebca2469d9b)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 846d17c4-4bc7-44c0-8167-cb7b5f7338a9)(content(Whitespace\" \ + \"))))(Tile((id \ + fc4991bd-f326-428d-a8cc-44bd3c40b891)(label(Result))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 90e6f91f-19c9-4e74-9ece-c08e8cfdb26c)(content(Whitespace\" \ + \")))))((Secondary((id \ + 2916646c-3df4-49f6-86de-25e96dfaa42f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 070d68c0-e8a6-4ccc-80df-51fd8782e5e9)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 10982210-ebae-46dd-8fa5-34a0e418a12a)(content(Whitespace\" \ + \"))))(Tile((id \ + 083a4aba-2a8a-4bd0-a272-ac89effa0f9c)(label(e))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + e2da86a1-b62f-4be6-ad50-bf10dfe5e93c)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + f4abddd0-6c1e-4227-beba-dc836f87d938)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + dc129b5a-7dc2-4b69-8c7f-28ba0e70a587)(label(case \ + end))(mold((out Exp)(in_(Rul))(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 6c3d599d-67f7-4278-ace2-e76739314f6d)(content(Whitespace\" \ + \"))))(Tile((id \ + fbdd7d29-dde8-4fe5-944f-cb29f3309bf4)(label(e))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + e4b8056b-10eb-4155-a896-24716bd904a9)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + ac689c9a-3569-4419-8081-5276776f7435)(label(| \ + =>))(mold((out Rul)(in_(Pat))(nibs(((shape(Concave \ + 19))(sort Exp))((shape(Concave 19))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 4244d236-5133-45aa-8b62-20cca6dc5a77)(content(Whitespace\" \ + \"))))(Tile((id \ + cef34e10-3604-4ce6-910b-2fa21cd6d2f2)(label(Var))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 3cb54504-edb9-4812-be0f-bea0fdc875e0)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort \ + Pat))((shape Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + 3e8b501d-9a2e-4a7d-833d-89a526a5fb8c)(label(n))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + 191e6fef-b0be-4e08-a147-64ae2537fdf7)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 1de92859-2011-4c76-866f-c882d0c1cc38)(content(Whitespace\" \ + \"))))(Tile((id \ + d00194a9-72cc-45ca-9c73-5d46869f610a)(label(Error))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + c0a0ce90-81d8-4b09-ba8a-98934dd238bb)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 17469555-3ef2-4223-81a3-3e09a59f7c61)(label(\"\\\"Free \ + Variable\\\"\"))(mold((out Exp)(in_())(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + f5ae48cd-7b58-4b89-99d0-ae90a87cfba8)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 28d4ec8f-4748-49f2-8af0-aed3a76b2701)(label(| \ + =>))(mold((out Rul)(in_(Pat))(nibs(((shape(Concave \ + 19))(sort Exp))((shape(Concave 19))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 52fc7222-801f-4ff1-9367-4021e1a8cc1f)(content(Whitespace\" \ + \"))))(Tile((id \ + 82301ff9-b986-49ee-a14d-eed128b05b7b)(label(Lam))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 13384c5c-89b2-4e49-9c29-ff28cdb24c5f)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort \ + Pat))((shape Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + 2e67fc4b-20fb-48fd-aec5-5c5e6a3c9cf2)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 117717d0-9155-4b0f-8082-a371cc2d3555)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 9ab8747c-aee4-46b5-855f-07d5c1188b32)(content(Whitespace\" \ + \"))))(Tile((id \ + ce6325f6-7892-4116-acbf-aa92206a96b0)(label(body))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + 89c70863-8308-4aee-9a98-28d74dd74526)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + d38b5a87-d86d-4461-8ee3-e4b504aea6ac)(content(Whitespace\" \ + \"))))(Tile((id \ + c0309d83-842f-4163-ba0c-00274c4c765a)(label(Ok))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + a168e86f-de75-4996-b05a-b76c84dc9c83)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 37b7507b-be1a-4d12-a966-9ad509579bca)(label(Lam))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + ae281f5e-25e5-4970-86f2-1ddbca9b48d9)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + f83349a9-1cb1-445b-9d8b-0cb26cf0b432)(label(x))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 5315a959-83e9-4805-9bc4-dc227d30c63f)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 7a01c28d-bc24-4523-af0f-a19527a9d15e)(content(Whitespace\" \ + \"))))(Tile((id \ + c658b71e-92ce-427a-99dd-d14e07d4b579)(label(body))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + 2ce50808-b44c-435e-87f2-a277c5be92aa)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 1380b225-c096-4d8e-a111-39f805c15707)(label(| \ + =>))(mold((out Rul)(in_(Pat))(nibs(((shape(Concave \ + 19))(sort Exp))((shape(Concave 19))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + f0c7a241-6ee1-4097-bdd8-d39550de3ad8)(content(Whitespace\" \ + \"))))(Tile((id \ + d41bc9fb-4280-4c3a-86fe-724f87ca056c)(label(Ap))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + b63a9734-7644-4072-a5bb-d8b2397a7dd8)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort \ + Pat))((shape Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + 2aa0a5e0-c746-4ee7-af22-61de73933464)(label(e1))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + b1308751-e597-4f83-8bdd-f11a6cd7c646)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + df669107-279b-4daa-a84f-0749a93573c7)(label(e2))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + 26880146-1ff6-4797-8c69-313cd096525b)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 2fcf5303-c991-46fe-92b1-8dc91a89f05e)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 8067ba50-823f-4583-b983-fe007004442b)(label(case \ + end))(mold((out Exp)(in_(Rul))(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + c2900d76-5805-4b52-b24f-2f09d3078093)(content(Whitespace\" \ + \"))))(Tile((id \ + 3b19a74d-4f02-4bb0-a68b-0f2b9459060a)(label(eval))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 0443a8d6-3210-49a2-bd1a-43350c73bc6f)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 966493b6-5a35-434e-ae30-f28eaf26ac7a)(label(e1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 18904f6e-8219-42b7-bc23-a52869c83453)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + fb1b10f7-a7aa-4b2a-b1e1-868c9cf6700d)(label(| \ + =>))(mold((out Rul)(in_(Pat))(nibs(((shape(Concave \ + 19))(sort Exp))((shape(Concave 19))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + aef8a32d-571e-4aef-92fe-a133e61561df)(content(Whitespace\" \ + \"))))(Tile((id \ + 1622c6b0-1aa1-4a9f-9ad1-0ee2f44e440c)(label(Ok))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 53c740db-a127-4286-bbaa-fc1f6bfd897e)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort \ + Pat))((shape Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + 86981a7b-1855-493a-bb5b-bd50acbb393b)(label(Lam))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 5e484724-9f82-4027-82b8-3b9c2201e4bf)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort \ + Pat))((shape Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + 8b69eb6e-d632-45a7-84b8-c2f552f1cb2e)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 516a2ade-2d02-46f6-b79e-6f262e8774c8)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 94ecff3b-c7f6-47a8-88d5-26fbb6602902)(content(Whitespace\" \ + \"))))(Tile((id \ + 88490ba8-3f86-411b-a6e9-817f4f662690)(label(body))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))))))))))))(Secondary((id \ + 6ef6102d-78b5-418d-84e5-9349d627fbfa)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + e35cd324-d16a-4d68-a97a-b6ca15cfe3f3)(label(case \ + end))(mold((out Exp)(in_(Rul))(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 446fdd16-d54b-4be9-9b0c-0d8eeafc0543)(content(Whitespace\" \ + \"))))(Tile((id \ + 2cd4a45a-528f-4945-998a-3c0b9cf9c2c6)(label(eval))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 3c39677a-03f1-428f-b295-7a33f2fe9466)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 1aec83cb-0253-4eab-8bfc-73f5c6ddc33b)(label(e2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + b0b29140-8d63-441e-a576-1a3ab3f24521)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + c15d05bf-8519-455a-b0be-d1b096b074df)(label(| \ + =>))(mold((out Rul)(in_(Pat))(nibs(((shape(Concave \ + 19))(sort Exp))((shape(Concave 19))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 4d0f5b8e-1a10-409e-b434-2bdff88856df)(content(Whitespace\" \ + \"))))(Tile((id \ + 136333af-71db-4b8f-bf85-bf623512b58b)(label(Error))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + f0793b56-f2cb-4a53-823a-49dd57145a53)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort \ + Pat))((shape Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + 9456aff2-b841-41a0-b360-ba6adf6af864)(label(err))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + cb066a61-a29e-4636-9e26-a15ca426b0b5)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 4ee95925-905e-459a-8bb5-b39ec5767d45)(content(Whitespace\" \ + \"))))(Tile((id \ + 3c2afa8d-cc20-4d23-a6fc-64fc225fe1c1)(label(Error))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 9e259835-32b3-4d25-b557-fd1b9308b451)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + e6c214e7-1c90-4ac4-9d87-82c9c3f5f71e)(label(err))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + e2d4aebb-8638-43d4-a0a9-b7dfaf103905)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + c79c0790-1bae-4fb9-8d15-28b090a7bc01)(label(| \ + =>))(mold((out Rul)(in_(Pat))(nibs(((shape(Concave \ + 19))(sort Exp))((shape(Concave 19))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 9c30c747-f0e7-4cc7-a456-7dfe67178cf9)(content(Whitespace\" \ + \"))))(Tile((id \ + 1ec5195e-9152-40f7-8116-ccc26b2c8209)(label(Ok))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 3ababe4d-2781-429f-98a9-f502d9dded33)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort \ + Pat))((shape Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + 49228f0b-a42b-4651-a72b-1517623527be)(label(arg))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + a42e030d-5e30-45ca-8417-58a64f6ff13c)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 7b39247b-9eb3-4eae-b44f-90edd3df62f1)(content(Whitespace\" \ + \"))))(Tile((id \ + 0595a373-e5e2-4e31-a669-95d86097e70b)(label(eval))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 82a478f5-4725-472b-a5dd-6cfe2e76f11c)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + b6be841c-aaf7-4070-a3e5-a726db8865d9)(label(subst))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 144a7fbf-4378-46bb-89ac-79cb25a98c3f)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + e30e8889-ff79-4ebd-8fbb-9402f15aa19b)(label(arg))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 7d914adc-3684-411e-af89-b4e8071ec029)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 1a41d8cd-22a5-40e7-844a-ab4a97c3bcfe)(content(Whitespace\" \ + \"))))(Tile((id \ + a5480aef-5c47-4ace-b998-5be13ee9629b)(label(x))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + a78fb2be-cb85-4ead-af7f-55cce846673f)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 6bcb096a-7abc-451c-a5a9-ab38b4af844c)(content(Whitespace\" \ + \"))))(Tile((id \ + 079f72b2-aba6-494b-9058-3e20faa9d8e2)(label(body))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + 13b45363-8f7a-4f40-8523-60c70ae7c46c)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 83893eed-46bd-447e-b7bd-83d79a38dbb4)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 2d63cd2a-1308-4775-a9bf-061a4d2fea11)(label(| \ + =>))(mold((out Rul)(in_(Pat))(nibs(((shape(Concave \ + 19))(sort Exp))((shape(Concave 19))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 401c3082-3f59-414b-be4e-a13645eb647d)(content(Whitespace\" \ + \"))))(Tile((id \ + cb0c360a-dec4-4a40-a1aa-24869a58fc13)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 898f50b1-2368-4f52-a9c6-cd969565f49a)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 9798505e-5af9-4e57-93c7-6f71648ff0c0)(content(Whitespace\" \ + \"))))(Tile((id \ + ef2d1259-52ef-4da0-94ec-570086258675)(label(Error))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 5aada76e-7e1f-4ca7-b2c6-8dd086becf92)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 01634b4c-d027-4844-9f86-dadd64218852)(label(\"\\\"Not \ + a Function\\\"\"))(mold((out Exp)(in_())(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + c9b5cbea-1cf6-464c-8cf4-0ed77a1e18f5)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 3d67d23c-c9c3-4c4a-b56f-a16e505ce1a6)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + ff921f44-34e5-46e7-993c-6f7dff22bf38)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 3fc86b20-6a2b-43b4-8034-94d052a0df3d)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 673e832f-5fc1-4af6-bc50-4cd857d08c52)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + f3613090-1dfd-4946-bbfd-3d652d389e93)(label(test \ + end))(mold((out Exp)(in_(Exp))(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 3447e25a-ee47-4222-8bb1-828d0830b231)(content(Whitespace\" \ + \"))))(Tile((id \ + a0e96ed0-2f67-4271-904c-07744c73b7c6)(label(result_equal))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 95ba3fae-6bf1-479a-b63a-6035111e0ebe)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + d846ac6d-a212-4661-a1ed-2bf31f39fd8f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 798271d1-e065-4eb1-8e4d-908ab5f140fe)(label(eval))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + adb0fce9-0053-4a86-8b79-6784f476c68b)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + ca7069de-be87-454c-9b0c-3d643c480ed4)(label(Var))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + ff999918-31f2-4bfa-b172-5a905e962eba)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 607cbd1d-522a-40d0-bb3d-b8b45de732df)(label(\"\\\"yo\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Tile((id \ + 6e383875-6c3a-4f2c-a401-91ec7bc58276)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + aa7b31b1-3aef-45b3-ad22-0e5d7059a49e)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + f7b206f6-d2a5-480a-abc0-b9cacabb4689)(label(Error))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 8945a9d0-81eb-4b24-966f-a818217214ef)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 8794ac1c-4080-48ff-8840-6e796567dd87)(label(\"\\\"Free \ + Variable\\\"\"))(mold((out Exp)(in_())(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + 70900efe-dc3a-48d5-9f91-c70edcedaa33)(content(Whitespace\" \ + \")))))))))(Tile((id \ + e3c9daf5-57f5-47ef-9b24-a7e6d6936805)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + bad9600b-50a3-4377-8ac7-da71b362083c)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + a6e44360-03aa-490d-9e69-7783234649f9)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 64a486fe-c95c-4d78-862e-b0d2cc480928)(label(test \ + end))(mold((out Exp)(in_(Exp))(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 931264d4-b6f4-4c62-92e1-0196ed942eb2)(content(Whitespace\" \ + \"))))(Tile((id \ + 1c9eda3f-b714-4c05-9c74-506bd14f6fb5)(label(result_equal))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 4cd76acd-9533-406c-ab10-13cd09fbfe12)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + afdaeff5-0984-4feb-9862-b326d63da2c0)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 93745552-a939-4d1a-94a8-0b642e9da80b)(label(eval))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + e0aa7d92-c7cf-416d-98c2-737ed6338a36)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + ab486f19-c1ed-4a4b-9604-4be2afe0b0d4)(label(Ap))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + b233e5b7-65d7-4be3-af87-c80e69046876)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + f414241f-8fdc-40a3-a775-3d8b903ac358)(label(Var))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 395ceecd-3b18-4153-9800-e329c7a5598e)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + b9ea6977-82ae-4e10-8f43-f3ebe314826e)(label(\"\\\"no\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + ec9c2830-8c19-4483-8b29-90f246a6067a)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 83f58d35-a260-4168-a7c9-ac3f29f9d5af)(content(Whitespace\" \ + \"))))(Tile((id \ + 7e9ce79a-243d-41bb-a607-18a5b570fc7a)(label(Lam))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + c121d549-80c7-4b6b-aed9-f6652df7d1a9)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 7b74c555-9efd-4351-8d0e-d6bd96f522c5)(label(\"\\\"bro\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + ed288520-0baa-4871-b514-49e06f702b9f)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + aa546db0-cfa4-4049-8ade-00c91c2d9a55)(content(Whitespace\" \ + \"))))(Tile((id \ + cd5050cd-9f89-440b-a764-46510d8a918d)(label(Var))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + dd639cdd-c2ab-48d9-b7c1-bf7d1e5359e6)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 78ea24ff-db16-4799-941c-563b8f536566)(label(\"\\\"bro\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))))))))))))(Tile((id \ + 65acf282-5b10-4c18-9d05-ccc5b7a17286)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + bbba711a-f484-4101-9aaf-286054cc8f2e)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 9fcc45ca-c64f-45d4-9ff7-13acf6aaaf73)(label(Error))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + a361013a-f8c8-4887-9a10-26b954165ab2)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 2a3a4f6b-dc4f-47a2-abcd-10af0387e047)(label(\"\\\"Not \ + a Function\\\"\"))(mold((out Exp)(in_())(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + 8cb6eac9-4e2a-44ea-aa95-e39f67531832)(content(Whitespace\" \ + \")))))))))(Tile((id \ + 9bd804ee-2b9a-432d-a097-988afb9b59c2)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 18dcc81d-619c-4b42-af2e-4056040039d4)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + bce6c1d2-113d-40e3-a191-b64c2935564d)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 6e8df04b-e852-4d0e-8f1d-fbc121575946)(label(test \ + end))(mold((out Exp)(in_(Exp))(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + edcaf4e5-eb6e-4180-8a6d-0cc69001dbc3)(content(Whitespace\" \ + \"))))(Tile((id \ + 27acf41b-ea89-4ff0-899c-8c3d9be0b3ba)(label(result_equal))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + d6debeb0-6fb3-4ab0-86cb-d4bb187c8c63)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 4030662c-5407-4ffc-9c27-e4b3e8d5ccfa)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 0ab33bc9-c61e-474c-bd64-1a4650e90b3d)(label(eval))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + be5d6f5f-2e9e-4c55-82e7-0f2950749625)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 6ec85bf2-374e-4ad4-82c9-9394b268f779)(label(Lam))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + b618b7e5-b03e-4014-b091-604e08e9eda0)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + f856cd2d-583e-4b89-80e4-77bfe5bafa3b)(label(\"\\\"yo\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 62e293ef-5518-40f7-8782-404f25940817)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 04647702-4dbf-4851-a845-ef76cea684a8)(content(Whitespace\" \ + \"))))(Tile((id \ + b75e01ef-ee6c-421c-8599-991fe24e1e13)(label(Var))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 002b0979-7e4e-4e55-964d-634f97797462)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 7566c730-a883-4559-aafd-36ea07e85266)(label(\"\\\"yo\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))))))))))))(Tile((id \ + 87489b74-6fea-4bb7-b188-cc0f293f1501)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 5f9cb66a-3c69-44fc-98f9-8d33c2242e62)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 305c178a-7da5-485c-9212-97518172660b)(label(Ok))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + b9c49a17-ddb8-4412-ab2d-e84a31674c1e)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 6d928f5a-76ba-432f-84c9-8985bdfbae21)(label(Lam))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + dd04ac7f-c000-46e2-9346-68de5ccb2c37)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 09183f09-b197-4dab-9712-2ad6ec8053c1)(label(\"\\\"yo\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 2bac98eb-578c-4187-8d5d-0e428872fabe)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 2f510267-53e4-441f-8c4e-164a43cb1d76)(content(Whitespace\" \ + \"))))(Tile((id \ + 9f53f3e1-50c4-41f6-9e69-d60a4bac4562)(label(Var))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 37e690bc-a872-42fb-a204-ac507f930218)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + bfa62c97-6b4f-485c-91a5-f28b7d3429dc)(label(\"\\\"yo\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))))))))))))(Secondary((id \ + 4c3b2e45-d2b9-42a4-9096-00e583a9d66d)(content(Whitespace\" \ + \")))))))))(Tile((id \ + 2fe2dd64-bbdc-483d-a33c-8607a5a74f99)(label(\";\"))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 10))(sort \ + Exp))((shape(Concave 10))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + ad91ebe7-fd4d-4455-bd38-c279a70de5d3)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 461d55f6-6f2e-457a-b986-ba720f4d3dd4)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + ab21e019-9c01-4fa7-a20b-de67b02612f4)(label(test \ + end))(mold((out Exp)(in_(Exp))(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + fed3fa2c-11a4-4564-8eff-e7704b696268)(content(Whitespace\" \ + \"))))(Tile((id \ + 1fc38e53-5324-4b3b-8a05-04211a30616e)(label(result_equal))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + e63a04ff-39de-4da8-af96-438a294a9c92)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Secondary((id \ + 22edf468-f96f-4297-bae1-f1db449a5712)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + dd1f6a2a-39be-4937-9dca-ea18760871ce)(label(eval))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 3ce8a7ac-fd0d-48ae-b434-59ee497324c1)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 567af97e-40c4-4b66-b5c0-c7dde61131a2)(label(Ap))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 3a8e1695-9c19-4860-be5a-b2bf92046582)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 5c422f00-d26f-46d5-92b4-849556a6cffd)(label(Lam))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 2eeb6db0-38aa-4479-bcfe-197543180463)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 84ff238e-dcf0-4449-b9b7-8d1ecd08d65c)(label(\"\\\"yo\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 5eef209e-e9e3-46fd-a7d2-ee1d841fdfd1)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 627c15eb-037b-461e-a999-b5c720c0c27b)(content(Whitespace\" \ + \"))))(Tile((id \ + e329ba5b-ff65-4a54-bd79-11119d2456b3)(label(Var))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + e07b3d06-1fec-4d51-9424-4863f3d93d4d)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + f029b961-fcc9-4f8b-899a-0e7fa1cf11d1)(label(\"\\\"yo\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Tile((id \ + 729a33c6-6475-485d-a8ae-d48ac1c2bf6c)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 87f21d69-952d-449f-84d7-1ee2ab05d40b)(content(Whitespace\" \ + \"))))(Tile((id \ + 075b586b-fb78-4d80-8704-b63a67e7cd3b)(label(Lam))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 94246c4e-444f-4b3e-bf20-fd2a13fc27ef)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 208a8991-100f-4cef-b433-eca8159ac882)(label(\"\\\"bro\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 53653980-ea4f-40b8-9d29-d359d33fa7bf)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + ae6269c2-ff33-4f78-83c0-cdf02b2cdc28)(content(Whitespace\" \ + \"))))(Tile((id \ + 5d26a17d-feb7-4d81-b23c-d80ae50d9dd6)(label(Var))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 71b62601-4be1-4205-8377-9ea8c5bd26c5)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + ed958ead-78f6-4f5a-bd6c-94d57f8393f7)(label(\"\\\"bro\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))))))))))))(Tile((id \ + 15383e63-cf89-4209-a0bf-6c3d86d862d6)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + fd335c92-161b-4e37-988d-acfd90066a8e)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 0a5045cb-aada-489d-ab45-dbacd4fe44ed)(label(Ok))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + aa0170f4-3445-4a3c-bfd6-9dd4bc5349ff)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + d68e6fef-70ce-4b20-b210-e41015a4027a)(label(Lam))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + cda0a2c8-1d02-4e25-ba06-7fb9900cab81)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 36f04861-35cc-4eb9-83d0-01085dcf7656)(label(\"\\\"bro\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + e502a97c-aa0c-4e34-a1c9-9d86454fe1c5)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 62eb476d-c91c-4c67-bd46-be123833cbdf)(content(Whitespace\" \ + \"))))(Tile((id \ + 1ff88e88-1e7c-4117-8cfa-6431b1c60b5e)(label(Var))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 4e3e4ddd-946c-4afa-ad49-4dc4096d8f9d)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + e9180871-be73-4a92-a949-010ae5b1a3f8)(label(\"\\\"bro\\\"\"))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))))))))))))(Secondary((id \ + 88a4c943-608e-454a-94ad-7dcc08046493)(content(Whitespace\" \ + \"))))))))))))(ancestors())))(caret Outer))"; + backup_text = + "# Lambda Calculus via evaluation by substitution #\n\n\ + # An Expression is a variable, function, or \ + application #\n\ + type Exp =\n\ + + Var(String)\n\ + + Lam(String, Exp)\n\ + + Ap(Exp, Exp) in\n\n\ + # Syntatic Equality of Expressions #\n\ + let exp_equal: (Exp, Exp) -> Bool =\n\ + fun es ->\n\ + case es\n\ + | Var(x), Var(y) => x $== y\n\ + | Lam(x1, e1), Lam(x2, e2) =>\n\ + \ x1 $== x2 && exp_equal(e1, e2)\n\ + | Ap(e1, e2), Ap(e3, e4) =>\n\ + \ exp_equal(e1, e3) && exp_equal(e2, e4)\n\ + | _ => false end in\n\n\ + # Substitute Exp v for variable name in Exp e #\n\ + let subst: (Exp, String, Exp) -> Exp=\n\ + fun v, name, e ->\n\ + case e\n\ + | Var(n) =>\n\ + \ (if n $== name then v else e)\n\ + | Lam(x, body) =>\n\ + \ Lam(x, subst(v,name, body))\n\ + | Ap(e1,e2) =>\n\ + \ Ap(subst(v, name, e1), subst(v, name, e2)) end in\n\n\ + # Evaluation can result in either an Exp or an Error #\n\ + type Result =\n\ + + Error(String)\n\ + + Ok(Exp) \n\ + in\n\n\ + let result_equal: (Result, Result) -> Bool =\n\ + fun rs ->\n\ + case rs\n\ + | Ok(e1), Ok(e2) => exp_equal(e1, e2)\n\ + | Error(e1), Error(e2) => e1 $== e2\n\ + | _ => false end in\n\n\ + # Evaluation by substitution #\n\ + let eval: Exp -> Result =\n\ + fun e ->\n\ + case e\n\ + | Var(n) => Error(\"Free Variable\")\n\ + | Lam(x, body) => Ok(Lam(x, body))\n\ + | Ap(e1,e2) =>\n\ + case eval(e1)\n\ + | Ok(Lam(x, body))=>\n\ + case eval(e2)\n\ + | Error(err) => Error(err)\n\ + | Ok(arg) => eval(subst(arg, x, body)) end\n\ + | _ => Error(\"Not a Function\") end end in\n\n\ + test result_equal(\n\ + eval(Var(\"yo\")),\n\ + Error(\"Free Variable\")) end;\n\n\ + test result_equal(\n\ + eval(Ap(Var(\"no\"), Lam(\"bro\", Var(\"bro\")))),\n\ + Error(\"Not a Function\")) end;\n\n\ + test result_equal(\n\ + eval(Lam(\"yo\", Var(\"yo\"))),\n\ + Ok(Lam(\"yo\", Var(\"yo\")))) end;\n\n\ + test result_equal(\n\ + eval(Ap(Lam(\"yo\", Var(\"yo\")), Lam(\"bro\", \ + Var(\"bro\")))),\n\ + Ok(Lam(\"bro\", Var(\"bro\")))) end"; + }; + hints = []; + }; } ); ( "Polymorphism", { - zipper = - "((selection((focus Left)(content())(mode \ - Normal)))(backpack())(relatives((siblings(()((Secondary((id \ - f531d966-9656-4cd1-82eb-4a80ce2a0e92)(content(Comment\"# \ - Polymorphism #\"))))(Secondary((id \ - 5d4daeae-ecdc-47bb-9992-ce5024c2275a)(content(Whitespace\"\\n\"))))(Secondary((id \ - f0d8f788-9aab-4b69-a3f9-3cd9a1a70a34)(content(Whitespace\"\\n\"))))(Secondary((id \ - cc230dc8-58b5-4cb5-8aa5-0bfbe1177102)(content(Comment\"# We \ - can take types as parameters to type functions, \ - #\"))))(Secondary((id \ - e3ed5d2e-ab27-412f-943e-879e38ac559b)(content(Whitespace\"\\n\"))))(Secondary((id \ - 4c6236c2-fcd4-436a-8b7c-3d43650efc34)(content(Comment\"# and \ - use them in annoatations in the body: #\"))))(Secondary((id \ - a619a88d-7e97-42da-86e7-01cf8dae47f1)(content(Whitespace\"\\n\"))))(Tile((id \ - 8fe814f0-7895-4bcf-8682-048682dafad6)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 7a2fbf23-0e73-48d9-8acb-c44e9de98ab0)(content(Whitespace\" \ - \"))))(Tile((id \ - 09c2d8c4-44bd-46ac-88e1-4b59ac422cd0)(label(id))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 3e02eb03-cc7e-4bf5-aa55-ad0711844d4f)(content(Whitespace\" \ - \")))))((Secondary((id \ - 74d633aa-7732-4047-942f-27acd258c1f2)(content(Whitespace\" \ - \"))))(Tile((id \ - b26bcb03-3d9a-4c2d-be3f-114342660b72)(label(typfun \ - ->))(mold((out Exp)(in_(TPat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - fed3d945-d2ba-4c7d-882d-fea46a9cfc64)(content(Whitespace\" \ - \"))))(Tile((id \ - 97a3afb8-5ba2-41ca-ba64-e1a9927ae4d5)(label(A))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - fce66ca9-fac6-4fd4-a549-98523b937dac)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 7229523f-57df-4078-ae8f-537742066b36)(content(Whitespace\" \ - \"))))(Tile((id \ - f343ddc7-57cf-4625-b9b8-d42e4265375a)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - e3bf119b-c817-467f-800c-6169bff4819b)(content(Whitespace\" \ - \"))))(Tile((id \ - 2a54e776-4210-4996-893c-280d9d0544dd)(label(x))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 1e085266-26a8-4803-bdd9-737e13c30194)(content(Whitespace\" \ - \"))))(Tile((id \ - c936896e-5dff-49bf-aa98-11b4ce862761)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - f6b1032e-1e9e-433e-86ab-456f90af4222)(content(Whitespace\" \ - \"))))(Tile((id \ - d5a47c6d-d24d-4ef1-a060-606484b965d5)(label(A))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - bdcc8870-b74b-4553-977b-757a485b10e5)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 2072eb8a-d2ee-49a6-b6ec-7cafbbde3033)(content(Whitespace\" \ - \"))))(Tile((id \ - 5dca5191-0403-436d-a497-f652cbad5254)(label(x))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - b4cb6907-0c38-4b67-ad96-45b705bfae1a)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 6aff849b-59d0-46a0-b781-8678637e1073)(content(Whitespace\"\\n\"))))(Secondary((id \ - dd8ae2d5-654a-4b51-9417-480b68a56dc1)(content(Whitespace\"\\n\"))))(Secondary((id \ - 8d899bc1-ee49-450e-a084-5ac90ffefc82)(content(Comment\"# Such \ - functions are applied like so: #\"))))(Secondary((id \ - a5a251b0-eeff-4256-9c72-996faea5a498)(content(Whitespace\"\\n\"))))(Tile((id \ - 2a93c2ca-b6ab-4a7a-87b0-839aa512a691)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 9c13bf6a-f462-4648-a65f-2ad55c680536)(content(Whitespace\" \ - \"))))(Tile((id \ - 97c53ee2-470d-4e7d-b812-4d4a69455557)(label(ex1))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 91b09e76-1e5b-4933-80c5-0b9f239a109f)(content(Whitespace\" \ - \")))))((Secondary((id \ - cb270ebd-2836-4130-8fad-aeaa67b7f980)(content(Whitespace\" \ - \"))))(Tile((id \ - 7877499d-8e57-4741-a58f-ff125003f013)(label(id))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - bd57d181-948f-4fb2-8bde-9561b1683c7d)(label(@< >))(mold((out \ - Exp)(in_(Typ))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - b605dff8-7b5d-41d7-b163-ed66ada5dad6)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ - 23a880e4-666f-41fa-acb7-edc3faafe278)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - abd95a67-518c-43cd-b0b0-09139ea11f68)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 6e67188c-d54f-4182-b6e4-e20be7409fe7)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - c856a4ab-7681-4169-85cc-4003aa80bc52)(content(Whitespace\" \ - \"))))(Secondary((id \ - d01b7960-22ce-4418-92ef-1be2bb1c0fbc)(content(Comment\"# 1 \ - #\"))))(Secondary((id \ - 777d62f8-331f-4d1e-8a5a-1a09a9f89ec3)(content(Whitespace\"\\n\"))))(Secondary((id \ - 90e879b8-483e-4c4c-b233-2b31b7c2dfb7)(content(Whitespace\"\\n\"))))(Secondary((id \ - 491a90e6-ead6-42a9-8284-279180c8c580)(content(Comment\"# We \ - can annotate the type of a type function with a forall. \ - #\"))))(Secondary((id \ - c624f13c-9188-4c91-ace5-e7224e6a6dbc)(content(Whitespace\"\\n\"))))(Tile((id \ - 1af4a4d0-b52a-4ec9-979a-9ae451f1f848)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - a719a29e-7014-4e0c-b5e9-cfdfe8d414f5)(content(Whitespace\" \ - \"))))(Tile((id \ - c2aabeb4-a488-452f-88a5-0e19c623103c)(label(const))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 81273931-7fe2-47cb-a084-f4b062107fab)(content(Whitespace\" \ - \"))))(Tile((id \ - 03fb0ac4-7aa9-445f-a553-93f4f07d6e8d)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 7b7acab2-079f-41d6-a0e4-baaa4d119467)(content(Whitespace\" \ - \"))))(Tile((id \ - 0980446a-d625-4b8f-990a-e68e1654e767)(label(forall \ - ->))(mold((out Typ)(in_(TPat))(nibs(((shape Convex)(sort \ - Typ))((shape(Concave 14))(sort Typ))))))(shards(0 \ - 1))(children(((Secondary((id \ - a3659d37-0062-4269-ab07-8d0d7b8495d4)(content(Whitespace\" \ - \"))))(Tile((id \ - 880b2494-aae9-4110-8880-1f3ef78c91e4)(label(A))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 9afdb2cc-c50c-438d-b204-af497695d4c6)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 86b64f50-4921-4a9b-8724-dbf6044084fc)(content(Whitespace\" \ - \"))))(Tile((id \ - f22c1d66-073c-41f8-8af0-aa16e606fa9f)(label(forall \ - ->))(mold((out Typ)(in_(TPat))(nibs(((shape Convex)(sort \ - Typ))((shape(Concave 14))(sort Typ))))))(shards(0 \ - 1))(children(((Secondary((id \ - 41e37e8e-f6b4-4dfa-adb5-c0ee132c4dc2)(content(Whitespace\" \ - \"))))(Tile((id \ - d61481c8-74a7-4f04-a2f6-427060e232b2)(label(B))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 4efbad43-f2cf-408e-afbf-d5bffbaf1a6c)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 51b65168-3574-45e5-8451-55997f736b2d)(content(Whitespace\" \ - \"))))(Tile((id \ - ac21fbdf-6530-4b72-b1fb-74abf3975f88)(label(A))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - aaf75b4a-c5ec-4f37-b2c6-6b4f15dcae18)(content(Whitespace\" \ - \"))))(Tile((id \ - ffe8fd86-e515-4f69-a4d6-38e4e7ae4d74)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 7b01f898-6c54-4555-ae46-1e2c9af28bbc)(content(Whitespace\" \ - \"))))(Tile((id \ - 9d309ec8-ddc9-4ffc-80ca-bdec1e3ccffb)(label(B))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 1eca4b4a-ffa5-46f1-9767-78d4952e1a46)(content(Whitespace\" \ - \"))))(Tile((id \ - e1004d45-7d54-4c88-96f1-a90babcf6f9d)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 5d787dd9-3512-4925-be9b-916d5789e28c)(content(Whitespace\" \ - \"))))(Tile((id \ - 0c06f6e7-7dd3-48c9-b0a8-117db18aaaab)(label(A))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 4af87200-4db4-4611-8a0d-8a0f083f4a7c)(content(Whitespace\" \ - \")))))((Secondary((id \ - d0ee9bca-78ae-47ce-8795-e87c4239c739)(content(Whitespace\" \ - \"))))(Secondary((id \ - 6a9df067-0f29-4d2b-aba0-a7ab5afc7e21)(content(Whitespace\"\\n\"))))(Tile((id \ - e761af48-6948-4c83-883c-0e9fa89f9a1d)(label(typfun \ - ->))(mold((out Exp)(in_(TPat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - f072f4c2-dcb9-4182-adcd-433a36a42b8d)(content(Whitespace\" \ - \"))))(Tile((id \ - 17a08b3c-da24-4e44-8953-921e0c73680e)(label(A))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 891ca871-9727-4705-b878-5e82d3625ede)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 3ff764fb-ef53-4705-8ed6-171207b256fb)(content(Whitespace\" \ - \"))))(Tile((id \ - 2f418fb0-c8ef-4fd9-8b50-ec9575b5a458)(label(typfun \ - ->))(mold((out Exp)(in_(TPat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - ae807fa3-1fed-4da9-90a6-fc58d4ec301d)(content(Whitespace\" \ - \"))))(Tile((id \ - c847d8bd-9673-4b12-acb0-02dfba49b563)(label(B))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 9da551bf-6d99-41f2-9ee7-9ecf8f3cc89e)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - b68ff96e-5b2c-43f3-97de-2210bc6f45b2)(content(Whitespace\" \ - \"))))(Tile((id \ - a82fc1f7-d380-4f4b-a60c-a73fd5d5c4d6)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 477e839a-f2a5-4369-8b77-c19ce17f5322)(content(Whitespace\" \ - \"))))(Tile((id \ - fef58639-ec8c-4f32-b5cd-c7153ca05b92)(label(x))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 3ad7ee34-1220-4bec-a3ef-650c974f359c)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 1dafda4f-127b-42eb-8b08-55ac80a054aa)(content(Whitespace\" \ - \"))))(Tile((id \ - e544daee-4385-42a1-9cc2-4708b057889f)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 0d8d1d8f-8713-421c-baaf-da411dcc7b74)(content(Whitespace\" \ - \"))))(Tile((id \ - 0dc1646e-31a6-436e-bf65-106fff46a092)(label(y))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - d99c1964-c99f-40b6-9c0a-4d747ec9f86d)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 0a88281f-b566-455a-b43f-74771b0755dc)(content(Whitespace\" \ - \"))))(Tile((id \ - 7674afa5-ffc8-4495-841c-a4b824600f71)(label(x))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 25b8b32f-748f-46c7-adf9-8ac6e31f5bfc)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 0f10c6ea-fd53-44a7-bb5e-b7544d5afd53)(content(Whitespace\"\\n\"))))(Tile((id \ - ff8bf9e3-827d-4498-b5e3-dc15f2906c9e)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 569eea44-b925-44d3-b672-71aecd314eac)(content(Whitespace\" \ - \"))))(Tile((id \ - 5f78e422-c81d-4645-8f8b-75e5889f43de)(label(ex2))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 5e458e17-0203-478b-8666-a1e29450d3fb)(content(Whitespace\" \ - \")))))((Secondary((id \ - 190f76c7-6e6b-4c35-8f86-51cef18a3df7)(content(Whitespace\" \ - \"))))(Tile((id \ - 9536d2f4-8316-4978-8371-6d0a86a9b677)(label(const))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 5d051810-8d64-40ff-b214-2372624e9bea)(label(@< >))(mold((out \ - Exp)(in_(Typ))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 2ae66b1d-78a3-4839-9aef-266d2349c19e)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ - ed677876-82d0-4581-914d-359724e7fd53)(label(@< >))(mold((out \ - Exp)(in_(Typ))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 8fa49cf3-08de-4247-97b1-7c323ff7ec6a)(label(String))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ - 73a0b92a-d758-4398-afbe-c83bc7b23959)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 9f946b7c-2d19-4a7a-a82d-48b1fb4760ca)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 708f700a-7a19-4f4a-b6ba-a1241725a0d5)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 39e303a9-3721-41a8-b09c-172523651fce)(label(\"\\\"Hello \ - World\\\"\"))(mold((out Exp)(in_())(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 6e81a335-af2e-437f-8aa2-0b009a287a69)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - b06989a9-a343-4ed5-aa57-f9b6d96cd364)(content(Whitespace\" \ - \"))))(Secondary((id \ - 2c773f43-68f4-4a52-8743-4a890df42a1d)(content(Comment\"# 2 \ - #\"))))(Secondary((id \ - 0cf2b674-45a3-4693-a653-6691294b21b7)(content(Whitespace\"\\n\"))))(Secondary((id \ - dfa95686-38ba-4934-9d02-649085112f75)(content(Whitespace\"\\n\"))))(Secondary((id \ - e8b4cb22-1948-4261-b2f1-a50eaa6f691a)(content(Comment\"# We \ - can go beyond rank 1 polymorphism: #\"))))(Secondary((id \ - 864d8804-e86e-4c0b-8572-427b16ba6aa0)(content(Whitespace\"\\n\"))))(Tile((id \ - a72b10be-c84d-4753-a24c-26b8adb8bfcf)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 74ae57ec-bd10-4ea7-b1b2-108823a70df1)(content(Whitespace\" \ - \"))))(Tile((id \ - 713e8f6b-2bdd-47c4-9c06-4c660db94082)(label(apply_both))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - a773ab3c-890d-4557-a2db-b51c6b7fafdf)(content(Whitespace\" \ - \"))))(Tile((id \ - 2834a349-3ab1-41cb-9443-12ae9bae030b)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - b523b63a-21ad-4097-86fa-01e02f6f2a25)(content(Whitespace\" \ - \"))))(Tile((id \ - a848e5a4-4c65-402a-8343-90394464cae6)(label(forall \ - ->))(mold((out Typ)(in_(TPat))(nibs(((shape Convex)(sort \ - Typ))((shape(Concave 14))(sort Typ))))))(shards(0 \ - 1))(children(((Secondary((id \ - 5cfd60b2-4a15-4d9e-a3d5-55de09eedd85)(content(Whitespace\" \ - \"))))(Tile((id \ - 7c4d5bc3-ef2b-4c09-a1f8-f3828bfdb18c)(label(A))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 03198080-2201-464f-bc0c-000e1792807c)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 45919e57-7c8b-400f-8dca-e663677cc170)(content(Whitespace\" \ - \"))))(Tile((id \ - 588b01fa-731b-4f1a-860e-0acd7e743c69)(label(forall \ - ->))(mold((out Typ)(in_(TPat))(nibs(((shape Convex)(sort \ - Typ))((shape(Concave 14))(sort Typ))))))(shards(0 \ - 1))(children(((Secondary((id \ - 9326ba1d-011f-4769-a001-b4430521e63f)(content(Whitespace\" \ - \"))))(Tile((id \ - a2668af7-cfe6-4215-9601-89a5d5b1bfc5)(label(B))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - a9e24fb9-2bf3-467d-a4a1-8acacab7b473)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - bc66f626-a852-4726-93bd-f2980f5aaec8)(content(Whitespace\" \ - \"))))(Tile((id \ - 0c3e5b3e-fe7d-400d-b362-a86a1e3930f2)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - b8bfdb8d-395b-4dda-b95f-f59d5713d282)(label(forall \ - ->))(mold((out Typ)(in_(TPat))(nibs(((shape Convex)(sort \ - Typ))((shape(Concave 14))(sort Typ))))))(shards(0 \ - 1))(children(((Secondary((id \ - 9fff6852-4fc9-45f3-b152-b92118560cac)(content(Whitespace\" \ - \"))))(Tile((id \ - d5d76155-964c-4c24-97cb-6e57afe3505b)(label(D))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - b2b87c72-a6d8-4b92-88de-dc3958f0c10a)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - fb3b11fb-b48b-4686-9c48-1f980298431a)(content(Whitespace\" \ - \"))))(Tile((id \ - 5e2daa4e-b957-45c9-ae31-ce9572e54e1c)(label(D))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 5e2702de-94ef-4d9d-9f6e-0ff3a700a4d6)(content(Whitespace\" \ - \"))))(Tile((id \ - 5d0bd610-edb7-46d4-9a35-7197172614ad)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 6687d2fc-ae58-413a-8946-5d969cab3758)(content(Whitespace\" \ - \"))))(Tile((id \ - f92d33cc-0f33-481c-ba59-a89e4b7e41d5)(label(D))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - c7c293db-f64f-4e35-9b7b-652c40a75a45)(content(Whitespace\" \ - \"))))(Tile((id \ - 7cb8df24-1ad6-428b-a416-719555cfe5bf)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 789b186e-63d8-447e-83a1-05e97111be8f)(content(Whitespace\" \ - \"))))(Tile((id \ - 1bc3a100-c80b-4ca2-8233-86c17fdc0b4f)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - ea90a5ab-dbc4-4473-b6d8-8363af6157e3)(label(A))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 49c20c01-3a04-4ade-9c8c-0ecaddc3d912)(content(Whitespace\" \ - \"))))(Tile((id \ - 961de683-be3c-4ca8-94d4-fcee6c22f4e6)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 4f1b7cf7-e1ca-4e0e-a6fe-a1b7e2664b41)(content(Whitespace\" \ - \"))))(Tile((id \ - 99a7b5b3-227b-4a7a-ab49-9b471b1fc858)(label(B))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 7755d5ee-c4cb-442c-8aa5-5a4cd77e6227)(content(Whitespace\" \ - \"))))(Tile((id \ - 9f11b960-7216-4e89-8b4c-28de72037f0a)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 5))(sort \ - Typ))((shape(Concave 5))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - f0d0d1bf-38ea-4e45-9c41-3954ce5b1654)(content(Whitespace\" \ - \"))))(Tile((id \ - 3f10dba0-23b1-4ac4-a39c-79b0953c0b76)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 37b9f9c9-3e3d-405a-96f0-50f9dee7bb36)(label(A))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 624c3292-c45c-4e2a-bd5f-71aad635f912)(content(Whitespace\" \ - \"))))(Tile((id \ - f1e7c535-177b-4eb3-b9ef-d108bdf2d80f)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - f0bd4515-5061-4f4f-8135-84b64516baab)(content(Whitespace\" \ - \"))))(Tile((id \ - 05f45730-5f3d-493b-be64-15246a06812d)(label(B))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - aba4127b-a850-46c0-b26a-b98dc86e57f6)(content(Whitespace\" \ - \")))))((Secondary((id \ - 0b56511b-f2da-40ca-b25c-6aa12d3d991b)(content(Whitespace\"\\n\"))))(Tile((id \ - 650e5460-7ac1-458d-bdad-b45f47272b9b)(label(typfun \ - ->))(mold((out Exp)(in_(TPat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - e1bbc884-ca8c-4bac-8867-782a899719b5)(content(Whitespace\" \ - \"))))(Tile((id \ - 83491d6b-5752-476f-9801-71d67ff763ba)(label(A))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 401e28d4-cedd-4309-aeeb-97e3cfefa369)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - b4526770-054a-4f3d-8b82-f7b10924f832)(content(Whitespace\" \ - \"))))(Tile((id \ - 29519b18-fa3e-40f0-b935-42f2e9649315)(label(typfun \ - ->))(mold((out Exp)(in_(TPat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - fec62505-1774-4ac5-bd9e-437fd59a7495)(content(Whitespace\" \ - \"))))(Tile((id \ - 6fcdd577-54a1-4fc2-902b-b4f7aba72836)(label(B))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 00215cff-c2c2-4a20-a461-c004af470500)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - e86bc17a-2c2d-489d-8bcc-db8ab6738c53)(content(Whitespace\" \ - \"))))(Tile((id \ - e2e58581-8998-4472-9247-075785e8292d)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 80d1dd00-4243-4383-88d0-0a0d1b71be43)(content(Whitespace\" \ - \"))))(Tile((id \ - 3ae90889-b335-4186-9a1a-718431ecc580)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - abaddb89-7296-4a54-a8e1-454898bfde1a)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 372b86a6-7255-4f30-a517-8e213edb3460)(content(Whitespace\" \ - \"))))(Tile((id \ - 0ed01a72-b787-4568-b0ca-188fdd902f77)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 99f48b1f-b2e6-42ab-8f8f-5ba269beeb79)(content(Whitespace\" \ - \"))))(Tile((id \ - b246de16-13f4-487f-8a4f-5549a31246e2)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - e33d4fd0-7719-4c4a-b71d-2f19a3e4d71b)(label(x))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - 300cc080-a9db-40fc-adc3-dfa730eb2242)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 2823bd71-c744-4f9e-9c87-381ef96d340f)(content(Whitespace\" \ - \"))))(Tile((id \ - c5c8f8a2-4d59-4079-acad-b2bcf019f9e3)(label(y))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - 792f602b-22af-45bb-82be-9c7a00639832)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - aa749037-40ac-4197-8ec8-8fb9e8a2f221)(content(Whitespace\" \ - \"))))(Tile((id \ - ed250982-f47f-4d71-a1b4-0a2598ef4c9d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - b7ff20f6-7bd1-4981-9578-d35194a1e3ff)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 5835feb9-874e-4f39-be1a-e2d70ddc7b5b)(label(@< >))(mold((out \ - Exp)(in_(Typ))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 206f376a-1102-489d-afaa-ca5b871a1d76)(label(A))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ - abae9529-6df2-4f38-85f2-cdd005bd7858)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 11dcccae-8205-4517-bad3-1d695be3f4ac)(label(x))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 95ed452a-cac8-4bd7-b366-7c4af6ca74cc)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 5ffa3423-f41a-4c16-82b7-43927c0b87a3)(content(Whitespace\" \ - \"))))(Tile((id \ - 01499c1b-793b-4576-b965-625d42c6cac3)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - a21a36c3-c69a-44ef-98fa-bb925f93eaab)(label(@< >))(mold((out \ - Exp)(in_(Typ))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 8bae21c0-1ec9-4805-a777-bfb960868dba)(label(B))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ - 9e93c075-3a9b-4402-8ebd-1746c0a2c533)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 52cb9652-519a-4216-a37e-0a3b99a60f20)(label(y))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ - a482e6bf-3a73-47c8-ad77-e8da7d060699)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 1992530b-83bd-4fc1-b64b-b762337b441a)(content(Whitespace\" \ - \"))))(Secondary((id \ - 4505e7f8-c371-4d63-9226-2cb1db7a776a)(content(Whitespace\" \ - \"))))(Secondary((id \ - 5b2f834a-900e-4712-93d5-8084e2ee105a)(content(Whitespace\"\\n\"))))(Tile((id \ - aa131b2f-8fd1-49c0-b1f8-a7a817328684)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 44ac7379-5064-49fa-a47c-5d1f4d7a033a)(content(Whitespace\" \ - \"))))(Tile((id \ - fdf7b9e1-2248-43b7-9d62-bb6c1dfba927)(label(ex3))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 39c1b2cc-b821-40eb-9262-f60d248087c2)(content(Whitespace\" \ - \")))))((Secondary((id \ - 8c379c65-4133-4c60-b528-cdd8917a16d5)(content(Whitespace\" \ - \"))))(Tile((id \ - 918b43e8-2c6e-4a6d-a23c-b8750fc6fe07)(label(apply_both))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - f59c4fdd-ee19-4416-9b6f-fb530f9313e2)(label(@< >))(mold((out \ - Exp)(in_(Typ))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 2e12a616-ad04-4bd7-8bf6-c0d1ff9d3cac)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ - a873ce8d-436c-4895-bdde-82312941e0b8)(label(@< >))(mold((out \ - Exp)(in_(Typ))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 6a3a1811-626a-477f-8703-50c88edc2f7a)(label(String))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ - 7b6d0235-738c-4da8-babe-b43f2c7c2407)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 44fdf322-e56b-49ed-a990-8c2539103d66)(label(id))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - b2dd10ff-7614-45e0-8e4c-d98cdf93d2a5)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 72013761-1107-4eb5-b717-138b1dadebab)(label(3))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 6dd2fcc5-d54a-484e-b2c1-e15ac383adfb)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 6c1129be-37d5-41c4-b1d8-34a5a778e27f)(content(Whitespace\" \ - \"))))(Tile((id \ - 722e5e59-175f-4825-9f53-4fee84e47110)(label(\"\\\"Hello \ - World\\\"\"))(mold((out Exp)(in_())(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 620cd7f3-f19a-4a16-8f16-1e5daabdc518)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 36358b92-807c-419e-9c5e-171bac510ab6)(content(Whitespace\" \ - \"))))(Secondary((id \ - 0b305e22-e1eb-4c1a-8952-b9da2e034727)(content(Comment\"# (3, \ - \\\"Hello World\\\") #\"))))(Secondary((id \ - 26d407b0-00c4-4ac0-9ebd-3b2b89d05779)(content(Whitespace\" \ - \"))))(Secondary((id \ - 805af9ea-db80-4d26-a3c0-b61e88745606)(content(Whitespace\"\\n\"))))(Secondary((id \ - 04efc942-ed8e-4ef3-bbd5-76016d5d60aa)(content(Whitespace\"\\n\"))))(Secondary((id \ - b247ac7f-b577-4dc3-abc8-7975b08a83f7)(content(Comment\"# \ - Finally, here is a more in-depth, yet applicable example: \ - polymorphic map #\"))))(Secondary((id \ - 89f53214-166d-4338-b236-b772778394cb)(content(Whitespace\"\\n\"))))(Tile((id \ - e8b1419e-be47-4665-871c-c6a87c975f3b)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - e8ee7a26-9f5a-445c-b42c-062f082286c0)(content(Whitespace\" \ - \"))))(Tile((id \ - 18a0485c-7e0b-4edc-9526-15dbc922f0d0)(label(emptylist))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 6c173016-999c-4827-acca-0465520e5849)(content(Whitespace\" \ - \"))))(Tile((id \ - 718ac4d5-9144-43ce-8790-4bbf79ef7d4d)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - fa0fe8d5-10cc-434f-abf5-0b17fd54c6a9)(content(Whitespace\" \ - \"))))(Tile((id \ - 80182513-dc22-4780-bc8b-e20aac6b8720)(label(forall \ - ->))(mold((out Typ)(in_(TPat))(nibs(((shape Convex)(sort \ - Typ))((shape(Concave 14))(sort Typ))))))(shards(0 \ - 1))(children(((Secondary((id \ - e5d3eacd-9ebd-4e11-af72-0b0f3d443a93)(content(Whitespace\" \ - \"))))(Tile((id \ - 2d09af7d-31c0-481e-ad0a-220902a961be)(label(A))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 0e6b2f9d-53a1-4a23-9553-c2ada6a9d200)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - b871237f-ac5e-477d-a034-4fff429fd57e)(content(Whitespace\" \ - \"))))(Tile((id 7d3e5e8b-18a1-4d82-9029-27fd05e6a012)(label([ \ - ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ - Typ))((shape Convex)(sort Typ))))))(shards(0 \ - 1))(children(((Tile((id \ - 9c6fe512-4adc-425f-87d3-9627364feafa)(label(A))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 32ec6834-4a0a-4e8c-a425-57b1a58543ea)(content(Whitespace\" \ - \")))))((Secondary((id \ - e5cf60ff-e708-4f65-93a1-a02ab339984e)(content(Whitespace\" \ - \"))))(Tile((id \ - 1058a77d-cbcf-4256-af65-dd3c9fec0c1c)(label(typfun \ - ->))(mold((out Exp)(in_(TPat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 0ea49e33-0a5f-496b-940d-d5eff5635fe0)(content(Whitespace\" \ - \"))))(Tile((id \ - a8b79247-8cd1-4b01-8b91-b174f12ad5f7)(label(A))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - ea9e0ce8-5fa1-463e-a06c-c0a866e52557)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - b1a7ed0e-f851-4666-94f0-277786e920b5)(content(Whitespace\" \ - \"))))(Tile((id \ - 261b4411-16a5-4c4d-88c3-1fc9612302db)(label([]))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 791a7096-cf86-41e0-8bce-690c3e251122)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - b5dea30c-f191-4a05-9362-74f8de09ffd7)(content(Whitespace\" \ - \"))))(Secondary((id \ - 45c14057-f7a1-480c-a4fd-ae67e37350af)(content(Comment\"# \ - polymorphic constant #\"))))(Secondary((id \ - 0491cda9-5ff4-4b07-9c2f-7a056c5f9e75)(content(Whitespace\"\\n\"))))(Tile((id \ - a1735f6a-91a6-45be-a84b-c778661af5e0)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 7b451ae0-0a8c-4d45-ab61-f5269d27ad8a)(content(Whitespace\" \ - \"))))(Tile((id \ - 4b4f1fc4-9ced-4da9-affb-120d01001bf1)(label(map))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - f55de4bd-d0ac-4de0-89d2-4cb12b3a1f15)(content(Whitespace\" \ - \"))))(Tile((id \ - e5aa9153-05c2-4371-972c-0ab0469580d3)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 51b7bf81-8c96-4951-b9c7-3b1a5f78c227)(content(Whitespace\" \ - \"))))(Tile((id \ - ef122e48-5039-4710-ab57-637a803eaf65)(label(forall \ - ->))(mold((out Typ)(in_(TPat))(nibs(((shape Convex)(sort \ - Typ))((shape(Concave 14))(sort Typ))))))(shards(0 \ - 1))(children(((Secondary((id \ - afbf62bf-8d85-4750-83ce-142f7857e7ab)(content(Whitespace\" \ - \"))))(Tile((id \ - 716b8698-13f2-4423-93f1-3d41d9077ad1)(label(A))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 00dcf751-b0bd-4d11-8f85-44704156970d)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - d8afdcbf-1ff8-462e-9207-cde50bbf928c)(content(Whitespace\" \ - \"))))(Tile((id \ - 6268905f-a4eb-4089-891e-9715976d05f1)(label(forall \ - ->))(mold((out Typ)(in_(TPat))(nibs(((shape Convex)(sort \ - Typ))((shape(Concave 14))(sort Typ))))))(shards(0 \ - 1))(children(((Secondary((id \ - 734d0e70-1b40-400e-97f8-a8927a0b01ee)(content(Whitespace\" \ - \"))))(Tile((id \ - f30c744b-d461-495e-871a-ef8a00d4925b)(label(B))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 43eb5cd4-8dff-445e-ada1-9fb3f2fd01eb)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 99d2a63a-c75e-4aac-945b-9b51ef8d3641)(content(Whitespace\" \ - \"))))(Tile((id \ - d69df440-6bb3-4f1a-9010-8566a674b2f8)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 94017fe0-b9c4-4338-a94e-42968a62582a)(label(A))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 9d04cf49-aa7d-413c-b7fa-3dcd61dc16df)(content(Whitespace\" \ - \"))))(Tile((id \ - b0073f69-09ff-4b66-a0e2-8918bfd8e943)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 763e3955-1401-4bf4-9594-9d49ec111517)(content(Whitespace\" \ - \"))))(Tile((id \ - ecf07fae-923f-4680-8326-11b86ee80172)(label(B))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - df13dc42-b21f-4be8-a9ac-b097806b84fe)(content(Whitespace\" \ - \"))))(Tile((id \ - 0fa9d012-65e9-4d27-8e75-7fc41ea51729)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 3825f0c0-87ce-4775-b2c7-46f44e23e0df)(content(Whitespace\" \ - \"))))(Tile((id \ - eff4e6d0-751e-4042-8bba-7c83f68313e0)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - efdc7224-f91e-4b3c-b79a-bb62563d3746)(label([ ]))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 04f8fb9c-0aa9-460b-b5ae-b03addabf4d3)(label(A))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 8de1b3a4-ef1b-48a9-a559-4e2492b54b6c)(content(Whitespace\" \ - \"))))(Tile((id \ - 7a0e1ccc-cec6-45d7-8afe-b2d79bcb5f1b)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - dd513952-8f39-402f-8e97-e0770a847369)(content(Whitespace\" \ - \"))))(Tile((id b1e18385-d748-47ce-abe8-990287bd44a8)(label([ \ - ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ - Typ))((shape Convex)(sort Typ))))))(shards(0 \ - 1))(children(((Tile((id \ - 1c114f9c-2ca6-455d-b507-ad54cfd3dbc2)(label(B))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ - 2e0a9417-b7a1-418d-9d3f-d118c41418d7)(content(Whitespace\" \ - \")))))((Secondary((id \ - 86d559d4-f157-4a10-a1e1-2902c38d915c)(content(Whitespace\" \ - \"))))(Secondary((id \ - fa6eea12-346b-42b9-bc7f-1ef395cdd8aa)(content(Whitespace\"\\n\"))))(Tile((id \ - b5d37432-d50b-4a85-8c01-e97f1d51ea7c)(label(typfun \ - ->))(mold((out Exp)(in_(TPat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 43b8fd95-6a47-4eb1-a07e-42f02ea31048)(content(Whitespace\" \ - \"))))(Tile((id \ - b462674a-ade0-46de-a2bb-df8d40cc4cd2)(label(A))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 213d30e7-92d9-4db7-9b44-c9c03fd3c1e2)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 1cde8fe3-c1f3-4dc5-8f00-2c14323ad872)(content(Whitespace\" \ - \"))))(Tile((id \ - e2f7b035-67dd-4408-9a84-554e7dabfe32)(label(typfun \ - ->))(mold((out Exp)(in_(TPat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 3905d27b-3694-41ca-b39d-345f634ab322)(content(Whitespace\" \ - \"))))(Tile((id \ - 5934c422-2352-46eb-9821-4dbfa3d3743c)(label(B))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - ae0e0124-e777-4952-a9b2-d3db1c2ad67e)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 36082b3c-e70d-44ca-9f49-9eff16b44092)(content(Whitespace\" \ - \"))))(Tile((id \ - c9170552-5cd9-406e-aabd-1a68acef88d8)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 461cfc94-9b02-4990-ba72-860a7f31e177)(content(Whitespace\" \ - \"))))(Tile((id \ - 91c378c2-c8d0-467e-b8e6-55da3859c11d)(label(f))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 2d435273-37ac-42e2-9ae9-5c76164d345a)(content(Whitespace\" \ - \"))))(Tile((id \ - 3c505ec4-22ee-445e-b548-47704f5adf96)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - c8048b99-ea66-4d6f-bd44-afabc4eefda1)(content(Whitespace\" \ - \"))))(Tile((id \ - 2f725824-dd41-41fc-b46b-97b3474b4299)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 366d80ae-0cb8-44bc-9426-5681aa164bdb)(label(A))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - c2d5a5d6-d4a0-482f-ac09-77cab97b7ff4)(content(Whitespace\" \ - \"))))(Tile((id \ - 8922d842-b30f-49ab-ae7b-f3239cf33dee)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - a9ae4c3d-3add-4cf6-8325-83afca10417a)(content(Whitespace\" \ - \"))))(Tile((id \ - 5b480e67-1570-4124-a87a-093e86b7e842)(label(B))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - b6c29744-e6b6-4185-87c0-1e7d4aa69827)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 9ab8707c-63cb-4ae5-9b2d-782489b9a3a4)(content(Whitespace\" \ - \"))))(Tile((id \ - 8ab07af7-f6a7-4af5-baae-a52af342e1af)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 7739dcf7-6b50-42a3-a10b-51d76f23ade8)(content(Whitespace\" \ - \"))))(Tile((id \ - a440417f-fb02-4baf-b3bb-be193427f3a4)(label(l))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 023dc101-5cf4-450d-ba7c-de438a849914)(content(Whitespace\" \ - \"))))(Tile((id \ - d87315f5-bc92-413d-8772-7c4c16800f1c)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - b1a43246-b48f-4e40-aec8-589065f0cf79)(content(Whitespace\" \ - \"))))(Tile((id 9e172882-19c8-4234-aa32-97ac31bb7638)(label([ \ - ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ - Typ))((shape Convex)(sort Typ))))))(shards(0 \ - 1))(children(((Tile((id \ - c4e7ec8d-b9a1-45e3-a7c1-0b5cba65b733)(label(A))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - ecad1cc2-2bb7-4030-9c29-4e3394eaea9c)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - f273752c-7c93-41f5-a950-efb299c434a5)(content(Whitespace\" \ - \"))))(Secondary((id \ - 0ffe5898-902f-486c-9ef9-1716c2e56371)(content(Whitespace\"\\n\"))))(Tile((id \ - acf5a599-1e6e-464b-b31b-88f2be84712e)(label(case \ - end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 231c3ecc-3f5e-4bcc-9a39-cb831c1a82ef)(content(Whitespace\" \ - \"))))(Tile((id \ - c8b91530-32ad-4c07-9b11-e5bc10e7a0be)(label(l))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - d1d46cbc-4b79-4173-a688-494d5586f8a8)(content(Whitespace\"\\n\"))))(Tile((id \ - 482446aa-235e-4c19-a168-b68a2b8e88e7)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 21))(sort \ - Exp))((shape(Concave 21))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 0d73225d-f546-4112-af8c-65c0a344e23c)(content(Whitespace\" \ - \"))))(Tile((id \ - a4b17590-c7be-4dcb-b06f-1bc91489f7a3)(label(h))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 03a9b07f-f7e9-4a71-8067-f98f2c939a6e)(content(Whitespace\" \ - \"))))(Tile((id \ - 9c2381ba-f9bb-4d4a-920c-59e60b2258e7)(label(::))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 7))(sort \ - Pat))((shape(Concave 7))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - d67ae940-b511-4eac-8693-1d1a5ed8015b)(content(Whitespace\" \ - \"))))(Tile((id \ - e8e2dd04-ebdc-44d4-9229-2f8b2ec3927d)(label(t))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 89fdee6d-69af-4a14-9fc6-0a38dd72b854)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 42385fbd-9a79-48f6-bc6a-647f4b671cfb)(content(Whitespace\" \ - \"))))(Tile((id \ - d7ca47cc-9857-419a-a246-499e7faf6f6b)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - b5282cc7-7bf8-462c-801c-e295a6c6f541)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - a04da67e-f10f-4641-9e20-413e821900f0)(label(h))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 72aed549-fe1e-434b-b92b-7f08597c991c)(content(Whitespace\" \ - \"))))(Tile((id \ - 9f4a3be0-248c-4c47-8995-9a274fa44087)(label(::))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 7))(sort \ - Exp))((shape(Concave 7))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 184f51ce-215d-40f3-b804-5f8fdb27a7ca)(content(Whitespace\" \ - \"))))(Tile((id \ - ad3c008f-7301-4c0f-a6f0-fd1c4dcf5be2)(label(map))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 3fe4dede-7c77-4b75-a5aa-8e87e2c3657d)(label(@< >))(mold((out \ - Exp)(in_(Typ))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 10ea9efa-8723-47c2-ab46-cbf31133819d)(label(A))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ - 29768b2c-2c2e-48e3-97f0-930e20b8d3e5)(label(@< >))(mold((out \ - Exp)(in_(Typ))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - f2a7ccb0-e9cf-46b2-957e-0ae5066d6a28)(label(B))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ - 157670dc-2108-4052-b2d6-a1b8b00fcfdf)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 7f71b4d1-1220-4eda-a79b-1cdb506714b7)(label(f))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - be25767c-b347-4c12-b126-d24b53066beb)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 5d6f6685-7205-44ff-874b-0164963452c6)(label(t))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 2f6fe856-ff3f-463c-8fbb-b59ab43afe32)(content(Whitespace\"\\n\"))))(Tile((id \ - 8ea66631-5419-43bd-b3ac-76f4f3638cd5)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 21))(sort \ - Exp))((shape(Concave 21))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 492343ae-def9-4122-9f4d-3f567141f17f)(content(Whitespace\" \ - \"))))(Tile((id \ - bff3bb91-04f5-4bf4-a5b2-cb086adf7aff)(label(_))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - d61a5e2e-7426-48e3-8c83-de59c2acfbe0)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 60b24f2d-1c2b-45ab-953a-61279f1caab7)(content(Whitespace\" \ - \"))))(Tile((id \ - 7aa4bbeb-88cb-477b-96be-aaf33e5e68dd)(label(emptylist))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 7d3d6781-833b-4b44-a899-a1cf408b4a85)(label(@< >))(mold((out \ - Exp)(in_(Typ))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - f85a6825-07e5-4279-b9c0-291b8b46ae96)(label(B))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 6ccf14f3-cb77-4918-990e-fb4649d8b6ad)(content(Whitespace\" \ - \"))))(Secondary((id \ - 38056c0c-89be-479c-9bef-9a96d35f3ba9)(content(Whitespace\" \ - \"))))(Secondary((id \ - 89e44c95-f8f9-4cfa-ba91-772c34297f6e)(content(Whitespace\" \ - \"))))(Secondary((id \ - de3c8839-e2ce-4994-94af-08a3eea5c8d1)(content(Whitespace\"\\n\")))))))))(Secondary((id \ - 49506921-cf28-44b7-85fd-5e91a3efe24f)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 232ebce2-9079-48f1-9b5f-5fe8362728cd)(content(Whitespace\"\\n\"))))(Tile((id \ - 4e48867c-8db2-4567-9fe0-f49d1f02f342)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - c8705ea3-ce1b-4bf6-863c-b001f5b1aa3d)(content(Whitespace\" \ - \"))))(Tile((id \ - 6e9c34c5-69eb-47a4-bfb9-926fcd58db9d)(label(ex4))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 4648bbe6-ef61-474a-a912-54436cb9c6d1)(content(Whitespace\" \ - \")))))((Secondary((id \ - 93e5e35f-1cf2-4cce-bc67-651b31e63fe1)(content(Whitespace\" \ - \"))))(Tile((id \ - 6b6e8972-dfaf-418a-9c17-b1b929935d70)(label(map))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - fa2afdb2-d2ca-44af-a3f8-1a9af285341c)(label(@< >))(mold((out \ - Exp)(in_(Typ))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 30ceb9f6-3dda-4be6-8866-e1f1a0bd14f0)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ - 36c03a4b-6c7d-4636-a94f-9363a3352b35)(label(@< >))(mold((out \ - Exp)(in_(Typ))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - fb55dd08-3fda-4b09-bc3a-bdbadefbcef5)(label(String))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children()))))))))(Tile((id \ - e4a882cc-37cd-408b-93fb-d99f413a7e1f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 85d5ea6d-2039-469e-b784-54ce01255241)(label(string_of_int))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children()))))))))(Tile((id \ - 0a69f22e-0f8c-4a62-9377-a5eed1dae0d5)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 5105173d-d3f0-47ab-887c-cf2dca5961a6)(label([ ]))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 6b9d93ad-ed2c-4c75-82fa-3d3ec82ac44a)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 420cbfd9-2da6-442b-af95-00f732dd7595)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Tile((id \ - 85771edb-344c-410c-82b8-15b3fb67846b)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - cbbbf31b-cf31-49c6-868b-d4e0d287afe0)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Tile((id \ - 19b42047-3917-4d09-a639-9e9127314ca2)(label(3))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ - eb82736e-0c2c-41f2-a65f-a6ceca289c98)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 447d4a28-2169-48fa-b1ba-a169b2bf0edb)(content(Whitespace\" \ - \"))))(Secondary((id \ - 2bdbbe84-65ea-4fe6-8934-0b2eba00f5f8)(content(Comment\"# \ - [\\\"1\\\", \\\"2\\\", \\\"3\\\"] #\"))))(Secondary((id \ - a318ec9a-6779-4687-8370-bfd52d9d9ded)(content(Whitespace\"\\n\"))))(Secondary((id \ - 7cc4142f-caeb-44c2-a96a-ee8a36ad04e4)(content(Whitespace\"\\n\"))))(Secondary((id \ - 3dc35bbf-ce65-4d90-8de7-1563f1358fb7)(content(Whitespace\"\\n\"))))(Secondary((id \ - 10fa6385-866d-48e2-858d-30872b6b8c63)(content(Comment\"# \ - Recursive types #\"))))(Secondary((id \ - 9e1352d8-4281-4f4d-9234-44fa1cd202b4)(content(Whitespace\"\\n\"))))(Secondary((id \ - b81bd44f-73d1-4522-b085-46b3b4bd73c3)(content(Whitespace\"\\n\"))))(Secondary((id \ - c345417f-9c42-4dbb-9d02-79a50271ace3)(content(Comment\"# We \ - can express types that are the least fixed point of \ - #\"))))(Secondary((id \ - 2aed461a-73d2-4b64-8d5d-cce45598d222)(content(Whitespace\"\\n\"))))(Secondary((id \ - 2965cdfd-570f-40db-bff2-bfb94653c6d6)(content(Comment\"# some \ - type function with the rec keyword. #\"))))(Secondary((id \ - 11563965-8f26-4678-8861-923801a76f11)(content(Whitespace\"\\n\"))))(Tile((id \ - a4e85005-1fd2-4a9b-9563-61fc5bf5a3f4)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 1313decc-3fff-415b-9784-9ed1777b6ee1)(content(Whitespace\" \ - \"))))(Tile((id \ - f03503f8-ae34-46ab-88c4-ba836dd5e036)(label(MyList))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - d58f98a5-4438-478a-84fa-5b5326249101)(content(Whitespace\" \ - \")))))((Secondary((id \ - 9d676f45-e3b7-423a-a893-4b9f5fae84ca)(content(Whitespace\" \ - \"))))(Tile((id \ - cc757750-769e-4b66-b934-64bd045e67a1)(label(rec \ - ->))(mold((out Typ)(in_(TPat))(nibs(((shape Convex)(sort \ - Typ))((shape(Concave 14))(sort Typ))))))(shards(0 \ - 1))(children(((Secondary((id \ - 6c01b9a2-369c-41ee-a50a-4ff936cf6429)(content(Whitespace\" \ - \"))))(Tile((id \ - 15dda9dc-54c8-4d69-bc43-152bf92e7739)(label(A))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 5897403d-b63d-4cc9-b9c2-4507b56a530f)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - f1d2d2bc-6d1c-47cf-9285-6c7be2bbea63)(content(Whitespace\" \ - \"))))(Tile((id \ - 87c4686c-9c90-45d4-8ca3-76d1a11b0fda)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 6d33f00c-fc5f-40f4-be57-abbb5b34d0d9)(label(Nil))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 38d2b064-d7cf-47ce-9617-9de757dffa26)(content(Whitespace\" \ - \"))))(Tile((id \ - 6ce4a0e1-1340-41cc-8dbf-28850989cbd1)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 11))(sort \ - Typ))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 0beab19f-adb8-4eba-8e76-25744860892a)(content(Whitespace\" \ - \"))))(Tile((id \ - 411e14ae-3702-4e6a-8afc-5c06086d227c)(label(Cons))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - fc18b9e2-16dd-47ea-afef-6614b47baadc)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 2))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - d8141f6d-983b-4e7e-a3e4-ae8d9161dfa7)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 28f2b782-dbfc-4077-bd76-1fbf1645c838)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - dc4423b7-c82e-4185-943d-e1f5648ea120)(content(Whitespace\" \ - \"))))(Tile((id \ - e5d2acce-68db-448d-8cc0-bf4984154edc)(label(A))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ - 96cf1a82-f8a8-4d80-8913-085df0c08c13)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - ce5f884f-b166-4229-82dc-8f63f57adea9)(content(Whitespace\"\\n\"))))(Secondary((id \ - caf3425f-2a3b-41a2-a7c1-54b114516486)(content(Whitespace\"\\n\"))))(Secondary((id \ - c6048be2-bd6c-4125-81ce-882a9995f8b8)(content(Comment\"# \ - Hazel does not (yet) support higher-kinded or existential \ - types, #\"))))(Secondary((id \ - f599444a-c756-430c-b95e-dfb37ebc5ba3)(content(Whitespace\"\\n\"))))(Secondary((id \ - a4cb6fa4-95c4-4a1e-83e0-aee6faf28274)(content(Comment\"# So \ - we cannot implement our own polymorphic lists. \ - #\"))))(Secondary((id \ - 459721ed-2da6-4305-84fb-05174d296fb3)(content(Whitespace\"\\n\"))))(Secondary((id \ - 8a4f841b-1d46-456e-83fd-6cc8e0def87f)(content(Whitespace\"\\n\"))))(Secondary((id \ - de5094a7-d1b1-43b7-80a2-baa03c9ac327)(content(Comment\"# Now \ - anything that returns an element of the least fixed point \ - matches MyList. #\"))))(Secondary((id \ - 0fc57d97-2f81-496e-a0ed-5a29f98f041c)(content(Whitespace\"\\n\"))))(Tile((id \ - aa27eca1-91a4-4b37-af52-4696c18b7134)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - e0c4d089-4099-4a1a-83ff-3bd6c3cae9e9)(content(Whitespace\" \ - \"))))(Tile((id \ - aac7f4f6-67c9-45b6-bf86-fd0a783fa2d6)(label(x))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - a15942a7-b0d3-486e-9ad6-21c51ff59e86)(content(Whitespace\" \ - \"))))(Tile((id \ - 1143ad5c-81f3-4cee-a0bb-c86feff32bda)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 07ed8ab7-19f9-4ab5-88e8-23238dc52fbe)(content(Whitespace\" \ - \"))))(Tile((id \ - a6e8c11f-c7ac-49e0-8f04-dfbc17d94680)(label(MyList))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 75005215-aa4e-4590-b0e8-7618b5c239b1)(content(Whitespace\" \ - \")))))((Secondary((id \ - 06154ff2-caa2-46c8-b2af-3d2aaafe9b01)(content(Whitespace\" \ - \"))))(Tile((id \ - 84156c26-cb86-4c86-aec5-9eb23512914e)(label(Cons))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 9140b606-ad9e-4efe-887b-dd85869dd8fc)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 230d17fc-4ed9-424f-8234-0e104187d4a5)(label(1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - d9cbd3c6-b30c-42c9-a5af-e7db45d3c674)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 9b41f61a-4f33-4471-a151-502a75aa797f)(content(Whitespace\" \ - \"))))(Tile((id \ - cca56564-49cb-4d2c-a41b-90138f5ed45b)(label(Cons))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 0723f810-c901-4d35-b8c3-879dc47f0011)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 308c52b4-8761-4bba-92f9-6d7e551c8e7b)(label(2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 84174d3d-d8cb-402b-847c-a1ca74a01edd)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 826ba090-6484-407d-8f9d-4fc82aa5e262)(content(Whitespace\" \ - \"))))(Tile((id \ - 6526cc0e-21e6-4999-8165-317606413606)(label(Cons))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - f5509196-25c5-4078-9f93-79a844ac6a01)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - cd772d9a-9849-4bdd-b1ce-c112929a6037)(label(3))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - b18eca82-fdaa-47f9-a692-dcae6d2d7b9f)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - bdb4f1fe-b646-4038-a5c6-02fd5180eae6)(content(Whitespace\" \ - \"))))(Tile((id \ - 5b3dc9a2-776a-4f30-a5e4-9ea629c4fc8f)(label(Nil))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))))))))))))(Secondary((id \ - cd14adaf-2eaf-4683-b212-c3f1ae40c258)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - d3c31f12-2f54-4ffe-ac8e-8af9952b4e44)(content(Whitespace\"\\n\"))))(Secondary((id \ - 45e15030-54bf-4bf6-bb2e-71d3f1393882)(content(Whitespace\"\\n\"))))(Secondary((id \ - 149652ce-dc20-4064-9798-ae70ad885b09)(content(Comment\"# Note \ - that if the sum is the top level operator, \ - #\"))))(Secondary((id \ - c432fee2-53b2-46f9-b952-28c6e199c3d3)(content(Whitespace\"\\n\"))))(Secondary((id \ - 86024019-cc4a-4063-931b-96e183d13bcc)(content(Comment\"# type \ - aliases are implicitly least fixed points on their own name: \ - #\"))))(Secondary((id \ - 02a76b43-546d-4831-9e4f-8224ccbd3f4f)(content(Whitespace\"\\n\"))))(Tile((id \ - 6d7a7d09-7c09-42ca-af90-ca118d62e09a)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - f1ae62e5-5035-4370-b152-33d926dfcb7d)(content(Whitespace\" \ - \"))))(Tile((id \ - 156beede-4adc-4099-8bfb-e2392bbb984b)(label(MyList2))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 64b19283-c87f-4578-a9eb-cf6c88a7140d)(content(Whitespace\" \ - \")))))((Secondary((id \ - c56603ae-3f6f-49ac-b092-9636774b47db)(content(Whitespace\" \ - \"))))(Tile((id \ - c608445a-7dc1-4b4d-b59b-476eae965de8)(label(Nil))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 318b2a8a-adf4-44d0-921e-20f264679c64)(content(Whitespace\" \ - \"))))(Tile((id \ - 5cd528ef-218c-42a7-a034-6c726453671c)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 11))(sort \ - Typ))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - effc4dbd-344f-45b7-8f6a-a933b0ab1b15)(content(Whitespace\" \ - \"))))(Tile((id \ - 534989eb-ef91-4e5b-9e06-1a6ce71bd4b1)(label(Cons))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 38dcfa59-8b96-4eef-8f2f-db936f62adde)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 2))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 3acee723-61df-4844-99c8-33376981b6b8)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 80608a67-8896-48ce-b205-419504ae0bec)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 7042c45e-38e0-4652-94e3-ee244ccb0f7e)(content(Whitespace\" \ - \"))))(Tile((id \ - 430531d8-b78d-493b-a2d3-0f1d7f06003d)(label(MyList2))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - edd1fdea-8937-4145-a28c-923838c88dc9)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - a21e5bff-afdf-41ee-b14e-7d14671af520)(content(Whitespace\"\\n\"))))(Tile((id \ - 647c53f1-a325-49af-847f-7f0367f263e2)(label(type = \ - in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - b08631c3-e866-4c41-9dbd-b6730e2ffa34)(content(Whitespace\" \ - \"))))(Tile((id \ - 2dd7c5d1-446b-4a76-90af-cfc9aadebf71)(label(Broken))(mold((out \ - TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ - Convex)(sort \ - TPat))))))(shards(0))(children())))(Secondary((id \ - 99d8e0e2-641f-4b2e-81f2-e0230a5f1992)(content(Whitespace\" \ - \")))))((Secondary((id \ - 435116c5-cace-4bd5-b0bd-2f7d08a1ec67)(content(Whitespace\" \ - \"))))(Tile((id \ - 71444689-330b-4a1d-84f0-2079af4a5f8b)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 024c5fc1-02fd-45cb-99d7-4d3fc6daa657)(content(Whitespace\" \ - \"))))(Tile((id \ - 3188cc81-c93d-4674-98c4-217dac34d119)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 20bd1412-4c8b-4c92-b601-fa2ffc86b1f5)(content(Whitespace\" \ - \"))))(Tile((id \ - fb0afc69-44de-4c2a-b662-b002dc0b641e)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - fa9408d4-ff19-4104-9a28-f15af2ac0cb2)(label(HasInt))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 071e5ed6-10d0-4a9e-94c4-abd8515f63a4)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 2))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 98baba7d-e8dd-4c5c-a849-665c99f0b805)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children()))))))))(Secondary((id \ - 6d6328cb-b0a2-4e6e-8023-93a9b73b2cdf)(content(Whitespace\" \ - \"))))(Tile((id \ - 7a71eb31-9849-4573-99f5-e6a277ad0c4d)(label(+))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 11))(sort \ - Typ))((shape(Concave 11))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - dea94b6a-85ac-4f1a-bdb7-b8eb0652ae0d)(content(Whitespace\" \ - \"))))(Tile((id \ - e4a7913a-31f6-48d8-91d2-5e0a12b7714c)(label(HasMore))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 557c9b57-e2a0-4278-bb76-a62b919dd2b8)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape(Concave 2))(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 4421eb2e-f93d-484a-9792-2cd840406c8f)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Tile((id \ - 4173a4e6-11fa-4063-ab15-dd5a61add46c)(label(,))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 15))(sort \ - Typ))((shape(Concave 15))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 4cfdbfe3-6130-4d32-ae6b-62d74abedca2)(content(Whitespace\" \ - \"))))(Tile((id \ - be40b96d-c951-4309-a15f-5973e0c11660)(label(Broken))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ - 47f144e6-a9a5-4a7d-a860-266826834565)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 5ce94e31-60f7-4774-9ff7-7ca91720ca89)(content(Whitespace\" \ - \"))))(Secondary((id \ - fc799434-6fb9-4755-8743-6a34da9348dc)(content(Whitespace\"\\n\"))))(Secondary((id \ - 19a903fa-b5cc-44a9-ac71-c1ae0553bbf6)(content(Whitespace\"\\n\"))))(Secondary((id \ - 6a50a4e5-30db-4018-bc21-5443216343eb)(content(Whitespace\"\\n\"))))(Tile((id \ - 83d6e4b0-c6fe-4fd0-bdb6-8266174e1ccb)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - 79b8633d-b993-4c75-adbd-a191454fb8ed)(content(Whitespace\" \ - \"))))(Tile((id \ - 1bbe8db1-4775-4b08-bdd2-72d2adcb5fd7)(label(list_of_mylist))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - a74ae3db-66e8-4716-9a46-25d33152c1c8)(content(Whitespace\" \ - \"))))(Tile((id \ - 393e1773-3bd4-441a-938b-e28907ba3946)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 77da75ad-e1cf-45f8-8772-fb684f09ffc5)(content(Whitespace\" \ - \"))))(Tile((id \ - ed987cc5-4219-448f-945a-c55d5c0eac52)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0 1))(children(((Tile((id \ - 7f173ed8-2d37-46c7-bed6-0a4afce9fcd7)(label(MyList))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 43c3df10-d037-4153-b248-e6c3de4ff279)(content(Whitespace\" \ - \"))))(Tile((id \ - ac646643-33c2-4b5e-9085-5f99acc62762)(label(->))(mold((out \ - Typ)(in_())(nibs(((shape(Concave 6))(sort \ - Typ))((shape(Concave 6))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 08f93e65-6c66-40cf-825d-132b7c67eeda)(content(Whitespace\" \ - \"))))(Tile((id 3677baf2-d481-4777-bddb-b61cd811e184)(label([ \ - ]))(mold((out Typ)(in_(Typ))(nibs(((shape Convex)(sort \ - Typ))((shape Convex)(sort Typ))))))(shards(0 \ - 1))(children(((Tile((id \ - 11e1e3f4-56cf-48ab-a52c-2bb2f23c66cc)(label(Int))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort \ - Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ - 202cf2f6-62b2-4c08-a113-534301c3879d)(content(Whitespace\" \ - \")))))((Secondary((id \ - 30e71f4c-4ad9-4692-a970-f874ab571cb5)(content(Whitespace\" \ - \"))))(Tile((id \ - ae51048d-9641-4fd8-a5a0-88740b93275f)(label(fun \ - ->))(mold((out Exp)(in_(Pat))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 14))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 9fc792fb-850f-4fad-a5ca-f69c32d4d9ca)(content(Whitespace\" \ - \"))))(Tile((id \ - d4fc4896-fe4a-497c-b6de-b6f57b1e5ce7)(label(myl))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 36e3e23a-a76d-4053-a67b-2504f81aa539)(content(Whitespace\" \ - \"))))(Tile((id \ - 2196e702-dfcc-400b-a60f-c7c70a2d436b)(label(:))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 12))(sort \ - Pat))((shape(Concave 12))(sort \ - Typ))))))(shards(0))(children())))(Secondary((id \ - 3fca45c6-7f3c-4747-b148-6a0a7a81a508)(content(Whitespace\" \ - \"))))(Tile((id \ - cbb9a721-ff64-4b99-8c0b-6efb6af68901)(label(MyList))(mold((out \ - Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ - Convex)(sort Typ))))))(shards(0))(children())))(Secondary((id \ - 07de10c3-5227-44c8-91c5-b418ef6d7d66)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 4524d42f-a7df-45d7-8b6f-2d601a9391fa)(content(Whitespace\" \ - \"))))(Secondary((id \ - 887db3b7-3a63-4cb4-b436-13af4cdd550e)(content(Whitespace\"\\n\"))))(Tile((id \ - 7a60578e-cf14-4c3a-838e-6e8c665e0902)(label(case \ - end))(mold((out Exp)(in_(Rul))(nibs(((shape Convex)(sort \ - Exp))((shape Convex)(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 8b2c0d0c-487f-4d7d-b1ac-798cdba2b45f)(content(Whitespace\" \ - \"))))(Tile((id \ - 477624b4-1c5c-4551-9b6a-7b7b2ebab334)(label(myl))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 7dfe5c52-7562-47d1-816e-5af852d7ba49)(content(Whitespace\" \ - \"))))(Secondary((id \ - 62b0e919-8dd0-48d0-beb2-9d14c902d6bc)(content(Whitespace\"\\n\"))))(Tile((id \ - 5085a225-6112-41cc-baeb-e897da68b922)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 21))(sort \ - Exp))((shape(Concave 21))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - f345fd55-3574-4d1d-baa2-5a291243e8aa)(content(Whitespace\" \ - \"))))(Tile((id \ - f84cd3b0-ea8b-4968-8ede-afe6a0b47838)(label(Nil))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 5ec88331-d28a-4c0c-85f5-111642556151)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 1fecafa6-926e-4939-9d4e-2f60c57ccd20)(content(Whitespace\" \ - \"))))(Tile((id \ - 252c76b2-4b7c-4150-a3ee-661f3b31719e)(label([]))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 4215632d-7a07-493d-92e7-2b7eb8d80ec4)(content(Whitespace\"\\n\"))))(Tile((id \ - 2e023d3f-d3c1-4523-989d-b3be6bd3bf07)(label(| =>))(mold((out \ - Rul)(in_(Pat))(nibs(((shape(Concave 21))(sort \ - Exp))((shape(Concave 21))(sort Exp))))))(shards(0 \ - 1))(children(((Secondary((id \ - 59e13a8b-9c07-44d3-90df-6d97b7e4682f)(content(Whitespace\" \ - \"))))(Tile((id \ - a01b2174-32af-49c7-ae2f-27d5367651a8)(label(Cons))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - ffe18856-82c6-4b9a-aec7-acbe352b2481)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape(Concave 2))(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ - 1f132481-79c3-4311-a73f-78431282f222)(label(h))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Tile((id \ - c1ba4810-ce3f-4c29-92ac-51de5fd6647e)(label(,))(mold((out \ - Pat)(in_())(nibs(((shape(Concave 15))(sort \ - Pat))((shape(Concave 15))(sort \ - Pat))))))(shards(0))(children())))(Secondary((id \ - 3cc5248e-5c9f-4213-980a-4a9954f0d0e5)(content(Whitespace\" \ - \"))))(Tile((id \ - e9b7d57a-223a-4f05-a593-7c6dedaf041c)(label(t))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort \ - Pat))))))(shards(0))(children()))))))))(Secondary((id \ - 8a6d6443-ad77-4538-a473-fc7984a46623)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 0d200042-cf30-41bb-bc17-e7ec2102adbb)(content(Whitespace\" \ - \"))))(Tile((id \ - 8c8d8699-5d50-4559-a777-258dc39138af)(label(h))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Secondary((id \ - 7b07f85a-77c6-4892-9b37-ed58ef37de5b)(content(Whitespace\" \ - \"))))(Tile((id \ - 5d697673-224c-4286-b050-2d7b22d45f68)(label(::))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 7))(sort \ - Exp))((shape(Concave 7))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - abc17ad0-806c-4460-b56f-2d409e1e148c)(content(Whitespace\" \ - \"))))(Tile((id \ - aaf1bfc4-35db-48dd-bda7-b1998e888b62)(label(list_of_mylist))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 4dcc8cc7-da9c-4075-9941-84b547b75443)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - 74b76516-fa73-4e40-88ea-373f0bd66560)(label(t))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 954678b7-044c-44ae-8009-7ffeaadeb8a2)(content(Whitespace\" \ - \"))))(Secondary((id \ - 9b358a1d-5b2a-4b15-a585-4b48232dd712)(content(Whitespace\" \ - \"))))(Secondary((id \ - ba59b233-f10e-4c73-915b-a8b8661a612b)(content(Whitespace\" \ - \"))))(Secondary((id \ - e69a6392-8b62-4f85-8f81-38ed98e7372f)(content(Whitespace\" \ - \"))))(Secondary((id \ - 7a3e1339-6277-42a6-a5a9-6eddf0fdfe2a)(content(Whitespace\"\\n\")))))))))(Secondary((id \ - f537135f-30be-4360-a5b6-90269136e275)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - 2dd2bf49-93f0-487e-abfc-eb01031c27b2)(content(Whitespace\"\\n\"))))(Tile((id \ - adb827e5-6130-4050-bd5e-2c7d4389a53d)(label(let = \ - in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort \ - Exp))((shape(Concave 17))(sort Exp))))))(shards(0 1 \ - 2))(children(((Secondary((id \ - fa0bf5f6-5a3b-44e8-8bbe-ec3ada77bb93)(content(Whitespace\" \ - \"))))(Tile((id \ - c016161b-23fd-4267-a75a-43218f4b0317)(label(ex5))(mold((out \ - Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ - Convex)(sort Pat))))))(shards(0))(children())))(Secondary((id \ - 20a4148b-853f-484d-8423-bae1dc00286b)(content(Whitespace\" \ - \")))))((Secondary((id \ - 9e848c9f-27b0-4b08-ab1b-24b05c16cd00)(content(Whitespace\" \ - \"))))(Tile((id \ - 5b494e56-3450-4893-a1ff-780b3264f923)(label(list_of_mylist))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 43da4f1c-8e84-42c8-9cc9-97d6ebeee657)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape(Concave 2))(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - f559334b-0f30-4e33-be02-af706c8f4d96)(label(x))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 42b7ffd5-8f17-4ded-aba5-2eadb5821520)(content(Whitespace\" \ - \")))))))))(Secondary((id \ - fb69fc73-8a28-48a3-aeee-3a75e1cdedb8)(content(Whitespace\" \ - \"))))(Secondary((id \ - 7a2e9eaa-4405-457f-9e63-36eac807087e)(content(Comment\"# [1, \ - 2, 3] #\"))))(Secondary((id \ - b687ad12-d0bb-4f0d-bde1-0bcb776e4443)(content(Whitespace\"\\n\"))))(Secondary((id \ - cda2e5c7-45a8-4879-88dc-9b1b651cdca4)(content(Whitespace\"\\n\"))))(Secondary((id \ - d8cc89a9-5bf4-4b78-81a0-b1c5d9451ad4)(content(Whitespace\"\\n\"))))(Secondary((id \ - a8c91397-927d-46e0-b6ae-8b74ac2a8ad2)(content(Comment\"# All \ - output from examples: #\"))))(Secondary((id \ - 3b97ec16-3f61-4f68-b248-aaca867a2a49)(content(Whitespace\"\\n\"))))(Tile((id \ - 179da491-661b-4ba4-a24e-7d00e4062471)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ - eb8715c6-7afe-4f23-84cf-31c9c391506d)(label(ex1))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 7a46cceb-444c-4343-8d87-a55cd2c1eedc)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - eed590f1-fb2f-4a68-ac6b-c4e93fb9f7e8)(content(Whitespace\" \ - \"))))(Tile((id \ - 07c52a26-01b7-4d87-8cdf-b657273e67e8)(label(ex2))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - e2c29b4c-3e9b-443f-888b-f5df11670119)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 443e38d3-fa67-4415-8b28-5ee13f05f3f6)(content(Whitespace\" \ - \"))))(Tile((id \ - 5cffb2ac-001a-42a6-8ff6-22fd5cb26efc)(label(ex3))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 1522405c-6b51-47bb-aa60-89671a27d71a)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - e5154891-4ad3-4d95-8601-a311f10de5d0)(content(Whitespace\" \ - \"))))(Tile((id \ - 97f8fd65-6b1c-430f-b73c-50db1333c457)(label(ex4))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort Exp))))))(shards(0))(children())))(Tile((id \ - 6bd8095b-89b6-419f-9de1-19c5e746c4a9)(label(,))(mold((out \ - Exp)(in_())(nibs(((shape(Concave 15))(sort \ - Exp))((shape(Concave 15))(sort \ - Exp))))))(shards(0))(children())))(Secondary((id \ - 44c1f515-be13-4026-80b2-48556eee832b)(content(Whitespace\" \ - \"))))(Tile((id \ - 268a3ed0-8342-423d-a603-7e3b19243afa)(label(ex5))(mold((out \ - Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ - Convex)(sort \ - Exp))))))(shards(0))(children())))))))))))(ancestors())))(caret \ - Outer))"; - backup_text = - "# Polymorphism #\n\n\ - # We can take types as parameters to type functions, #\n\ - # and use them in annoatations in the body: #\n\ - let id = typfun A -> fun x : A -> x in\n\n\ - # Such functions are applied like so: #\n\ - let ex1 = id@(1) in # 1 #\n\n\ - # We can annotate the type of a type function with a forall. #\n\ - let const : forall A -> forall B -> A -> B -> A = \n\ - typfun A -> typfun B -> fun x -> fun y -> x in\n\ - let ex2 = const@@(2)(\"Hello World\") in # 2 #\n\n\ - # We can go beyond rank 1 polymorphism: #\n\ - let apply_both : forall A -> forall B -> (forall D -> D -> D) \ - -> (A , B) -> (A , B) =\n\ - typfun A -> typfun B -> fun f -> fun (x, y) -> (f@(x), \ - f@(y)) in \n\ - let ex3 = apply_both@@(id)(3, \"Hello World\") \ - in # (3, \"Hello World\") # \n\n\ - # Finally, here is a more in-depth, yet applicable example: \ - polymorphic map #\n\ - let emptylist : forall A -> [A] = typfun A -> [] in # \ - polymorphic constant #\n\ - let map : forall A -> forall B -> (A -> B) -> ([A] -> [B]) = \n\ - typfun A -> typfun B -> fun f : (A -> B) -> fun l : [A] -> \n\ - case l\n\ - | h :: t => f(h) :: map@@(f)(t)\n\ - | _ => emptylist@ \n\ - end in\n\ - let ex4 = map@@(string_of_int)([1,2,3]) in # \ - [\"1\", \"2\", \"3\"] #\n\n\n\ - # Recursive types #\n\n\ - # We can express types that are the least fixed point of #\n\ - # some type function with the rec keyword. #\n\ - type MyList = rec A -> (Nil + Cons(Int, A)) in\n\n\ - # Hazel does not (yet) support higher-kinded or existential \ - types, #\n\ - # So we cannot implement our own polymorphic lists. #\n\n\ - # Now anything that returns an element of the least fixed \ - point matches MyList. #\n\ - let x : MyList = Cons(1, Cons(2, Cons(3, Nil))) in\n\n\ - # Note that if the sum is the top level operator, #\n\ - # type aliases are implicitly least fixed points on their own \ - name: #\n\ - type MyList2 = Nil + Cons(Int, MyList2) in\n\ - type Broken = Int -> (HasInt(Int) + HasMore(Int, Broken)) in \ - \n\n\n\ - let list_of_mylist : (MyList -> [Int]) = fun myl : MyList -> \n\ - case myl \n\ - | Nil => []\n\ - | Cons(h, t) => h :: list_of_mylist(t) \n\ - end in\n\ - let ex5 = list_of_mylist(x) in # [1, 2, 3] #\n\n\n\ - # All output from examples: #\n\ - (ex1, ex2, ex3, ex4, ex5)"; + title = ""; + description = ""; + hidden_tests = + { + tests = + { + zipper = + "((selection((focus Left)(content())(mode \ + Normal)))(backpack())(relatives((siblings(((Secondary((id \ + ce06e01f-9b12-4ea1-8549-c5615ca7e52a)(content(Comment\"# \ + Polymorphism #\"))))(Secondary((id \ + 3b3f93ba-ca3c-4c1b-8346-2d68f5504958)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + abf1a875-4891-4386-8c1c-a77ad171a596)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + e8268e68-25db-4119-aaf2-c1e01ab024a0)(content(Comment\"# \ + We can take types as parameters to type functions, \ + #\"))))(Secondary((id \ + 70f57795-15c2-4826-b2d4-b1c2414b09fc)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 28bfb176-1ada-450a-9a2e-9ee4f68b9271)(content(Comment\"# \ + and use them in annoatations in the body: \ + #\"))))(Secondary((id \ + 6c16f965-ddc2-4208-8161-9d17a4f71e84)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + dbc1d50f-0873-4a56-becd-184560be6a16)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 3265ecf6-f14c-4851-87bd-29b1c48ad60d)(content(Whitespace\" \ + \"))))(Tile((id \ + 2f057ddc-b7b4-4a90-8772-0f54a9e6a0f1)(label(id))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 9e9a0675-cf88-464e-a5b2-22ec197d871a)(content(Whitespace\" \ + \")))))((Secondary((id \ + 7c246b01-e879-4704-ab40-1ad600b6a05d)(content(Whitespace\" \ + \"))))(Tile((id \ + 357bc39e-7763-4d16-856a-30f2fdb89cd2)(label(typfun \ + ->))(mold((out Exp)(in_(TPat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + f9f6be49-c063-4799-a630-a15c13dc2416)(content(Whitespace\" \ + \"))))(Tile((id \ + d45a8f80-0658-42a7-bff7-6bfbf36e910d)(label(A))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + 9f37693a-1d0d-4720-a547-0bde3a0cf043)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 0f5c9f28-98cf-4704-be01-3789b89325ad)(content(Whitespace\" \ + \"))))(Tile((id \ + c41ee313-ae0d-46e3-8763-3c0003823bf6)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 5a50ead3-2382-4702-8edc-82df727a9f98)(content(Whitespace\" \ + \"))))(Tile((id \ + 95012d29-d892-46f6-9d41-9d5b6a1991ea)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 8134e2f9-624a-43ff-9e7e-f4f2fb3c44db)(content(Whitespace\" \ + \"))))(Tile((id \ + e9602009-d959-44c3-bae1-2fcca11436e0)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + d8b777e0-ebea-423b-99cd-6777245529d4)(content(Whitespace\" \ + \"))))(Tile((id \ + 1e025399-f3a3-40e9-b623-4269d2b4ee01)(label(A))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 89d852f5-e16c-4b7c-af4b-064b73a7d0b0)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 56b281c4-857e-4223-b818-b33e503e6340)(content(Whitespace\" \ + \"))))(Tile((id \ + fc41c74e-bd60-4cf6-8400-aa6cd0b485d2)(label(x))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + b4b1ea56-6958-44fc-89bd-b6f22e6bade3)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 5c77f088-a1f3-4ba8-b7ef-efe73f27f855)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + d7c28f98-90c1-46ca-9827-7fb78625c981)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + a979ad79-2705-4ca1-9cf2-cccfec5e0086)(content(Comment\"# \ + Such functions are applied like so: \ + #\"))))(Secondary((id \ + 5c84aefa-4652-4c4c-89ff-f05f4da85b58)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 2e888173-4ece-4010-a674-13a32957493e)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 32c1835b-c27f-4ccf-be61-a270b6e9c5ba)(content(Whitespace\" \ + \"))))(Tile((id \ + 1c2ef7e4-4439-4110-976e-41a1e8ff3d6b)(label(ex1))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 859ef193-f93b-4ae5-b070-4731bf77bc97)(content(Whitespace\" \ + \")))))((Secondary((id \ + ddb1f2b6-3fe6-4079-a75d-dcaebe48bc6f)(content(Whitespace\" \ + \"))))(Tile((id \ + 8439b029-0b7c-47cb-9867-c4c16ed4e733)(label(id))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + c5fe892a-4d64-4346-95bd-056a11c3f7ad)(label(@< \ + >))(mold((out Exp)(in_(Typ))(nibs(((shape(Concave \ + 1))(sort Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 7079f97d-6950-4fd4-b76e-f6924cd0ed7e)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Tile((id \ + 35b79c01-e4db-4671-a26a-ec0a7933c24f)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 83c93244-e705-4189-a816-70dd13a963ec)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 7e153b1d-8ee5-4f89-a01a-1242f0565511)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 5d0ec35e-42f0-41e6-810c-b4163164e51e)(content(Whitespace\" \ + \"))))(Secondary((id \ + fdb7e231-ff3c-4d22-a8d2-308db57999e4)(content(Comment\"# \ + 1 #\"))))(Secondary((id \ + a4b7e97a-83dd-492f-ae20-a84b2a979e30)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 8c74bef9-7177-4774-89aa-805787cf673f)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 7309f6e2-2d49-45af-b7c6-0ec75a57fc2b)(content(Comment\"# \ + We can annotate the type of a type function with a \ + forall. #\"))))(Secondary((id \ + 4fda5632-5de3-4c5d-b424-bf16d704f35a)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + d1ace50b-2196-477e-aeda-e84f61901017)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + b1df318d-3e75-4630-8f19-d3cbc69bb8ee)(content(Whitespace\" \ + \"))))(Tile((id \ + 7a283681-40a7-483c-ab85-ab4916479faa)(label(const))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 69a7673c-e766-4409-852e-03c46fbbbf56)(content(Whitespace\" \ + \"))))(Tile((id \ + f5115707-8100-478a-bf56-748777fdd0c3)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 8bc19b04-eb77-4c2a-9668-4350e26a309d)(content(Whitespace\" \ + \"))))(Tile((id \ + a7889e83-9fe8-49ad-9bef-44e8ce448a64)(label(forall \ + ->))(mold((out Typ)(in_(TPat))(nibs(((shape \ + Convex)(sort Typ))((shape(Concave 13))(sort \ + Typ))))))(shards(0 1))(children(((Secondary((id \ + f70ea1f6-288e-407f-8594-1736b20cce67)(content(Whitespace\" \ + \"))))(Tile((id \ + 57bed8d9-e4fb-47da-b21b-fe51fb8ee9e6)(label(A))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + 48e84944-6794-4ec4-9809-f8c9689fd797)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 0d8e46dc-456d-471e-9387-04fe16526ad6)(content(Whitespace\" \ + \"))))(Tile((id \ + 913ff727-11a1-4e0d-83fc-99e4de6e34f3)(label(forall \ + ->))(mold((out Typ)(in_(TPat))(nibs(((shape \ + Convex)(sort Typ))((shape(Concave 13))(sort \ + Typ))))))(shards(0 1))(children(((Secondary((id \ + fea1b479-fbd8-4564-8a3a-93e7e3d5374b)(content(Whitespace\" \ + \"))))(Tile((id \ + d97d38b4-0e17-4bb8-b342-50937dff5896)(label(B))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + e43565a7-cbb9-45aa-ab46-5cda424a47c5)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + f9ead65c-4436-4958-898c-a7ed360b5b46)(content(Whitespace\" \ + \"))))(Tile((id \ + d6a5887c-ef92-4773-9429-919995401912)(label(A))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + c5801121-b4f8-4751-bca0-6b48d487a7e6)(content(Whitespace\" \ + \"))))(Tile((id \ + a3f602fe-03e9-4b18-8c75-2699369b969e)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + b59e20fa-3d31-411e-b242-a371c0e04d03)(content(Whitespace\" \ + \"))))(Tile((id \ + 20b8244e-580b-450c-9cd2-db7cc09f9171)(label(B))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 4e1ba90f-c253-4ea0-af95-d1fe89e671f6)(content(Whitespace\" \ + \"))))(Tile((id \ + 3263d74a-307a-4e5d-afc3-74a9344f4b0d)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + b3466ca7-a0f4-4aa2-a5a3-f9d1646f5033)(content(Whitespace\" \ + \"))))(Tile((id \ + 0c0fa783-0e0e-4c53-9dc6-ae591f4c9649)(label(A))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + b5d049f6-643b-4a28-b9d0-8ebacdca3665)(content(Whitespace\" \ + \")))))((Secondary((id \ + 4cf96db7-3321-47be-bbc0-7c6df9c84aac)(content(Whitespace\" \ + \"))))(Secondary((id \ + 26600e0d-d6eb-40b6-9357-12b948bb85f8)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 1992686c-e8b9-4473-a1ae-d2c08a08bd83)(label(typfun \ + ->))(mold((out Exp)(in_(TPat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + a13a91a2-4077-4cc3-9f3d-574983bc9b3a)(content(Whitespace\" \ + \"))))(Tile((id \ + 4a3d43e1-6d91-48f8-941f-fc2caa196468)(label(A))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + c26137e3-a766-4717-a269-2ba155800b8a)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 96004d3c-f493-4c07-bd6f-e717bd487554)(content(Whitespace\" \ + \"))))(Tile((id \ + ece966f5-4bfa-4f08-99ce-0a1f41c64f48)(label(typfun \ + ->))(mold((out Exp)(in_(TPat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + d9a1daf2-50e7-413b-9254-395a44586281)(content(Whitespace\" \ + \"))))(Tile((id \ + f5d75275-fa16-42f3-ad3c-6c422427c84e)(label(B))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + da14e1ca-0903-4b7a-9f3d-e4d64ca651ed)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 3154b641-f630-4c85-a591-78d0ea4c6aa4)(content(Whitespace\" \ + \"))))(Tile((id \ + 4b5a8664-1772-4700-bad2-4b186a35dc5a)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 5f4ee7eb-858b-4375-8bae-ecb4688adca7)(content(Whitespace\" \ + \"))))(Tile((id \ + 4cb9bfb4-56f0-47a1-b6be-9f0a16c98e9d)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 586ac15a-3af8-4b3f-99b0-0446efd5bd1c)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 5b0b25b1-b94b-45f8-9a89-3e9fe8cd1222)(content(Whitespace\" \ + \"))))(Tile((id \ + b1f6c96a-f3a7-43ea-b304-acf5a99b5d95)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 3cf3fd73-b0f4-4e68-8324-41f2c1a34db5)(content(Whitespace\" \ + \"))))(Tile((id \ + 0d9b9fbe-2609-4aeb-894a-e4d883971862)(label(y))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + f9eacdec-ff0f-487f-b4e7-016b5eee0516)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 6dc0f10f-31b0-47f2-876c-973a06e137a6)(content(Whitespace\" \ + \"))))(Tile((id \ + 84678463-bd3d-495b-8787-5e15e9f2fb76)(label(x))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 6b03a744-056f-4464-a52c-a0152aaa7165)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 378239c7-2535-4a78-8fb0-8d19433db26b)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + f686ce31-58f6-4e46-9c6c-7ee24a13619b)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 89f204f3-4bc8-4dc3-a31c-9e5d99cb1242)(content(Whitespace\" \ + \"))))(Tile((id \ + c0fd6ffc-1cb2-4d82-a6b4-798bc6251af7)(label(ex2))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 85333d35-a563-44eb-8102-a64226fc9c37)(content(Whitespace\" \ + \")))))((Secondary((id \ + 20d23ebb-f489-4103-a55f-0c6024c82896)(content(Whitespace\" \ + \"))))(Tile((id \ + 2e160900-ad22-4eb4-93f9-499a2179dc8d)(label(const))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + b64dd6ef-3a63-40ca-a9b3-85453bf6649f)(label(@< \ + >))(mold((out Exp)(in_(Typ))(nibs(((shape(Concave \ + 1))(sort Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + c45a9241-5e40-42bb-9738-16984f9cced5)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Tile((id \ + 6bb9e3d9-9127-4b3e-b129-63e461202adb)(label(@< \ + >))(mold((out Exp)(in_(Typ))(nibs(((shape(Concave \ + 1))(sort Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 2fa8b7dd-6963-4688-a0d3-c4ea84e886dd)(label(String))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Tile((id \ + 137358f3-a48c-4169-a855-495f7fb95ba4)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 36d3b274-ad9b-4057-aa23-b0481d7c6a59)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 42a0f2f0-96bd-4896-960f-2c5e623c5af1)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + f282d501-c0bd-434e-873e-30b7e520cf20)(label(\"\\\"Hello \ + World\\\"\"))(mold((out Exp)(in_())(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 084144f9-6c79-422a-96d8-1ab0db271dde)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + b7c097ca-897c-4549-85b1-a3aa34bd3e48)(content(Whitespace\" \ + \"))))(Secondary((id \ + 17b2ff69-f022-4365-9611-19e153ab3510)(content(Comment\"# \ + 2 #\"))))(Secondary((id \ + 8e6a1044-6ea7-481f-b35c-f5dc277406e7)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + d9204a7d-8903-426c-a2a3-e298948f6645)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 93e3db1d-a91f-4b86-9085-4907952180d9)(content(Comment\"# \ + We can go beyond rank 1 polymorphism: \ + #\"))))(Secondary((id \ + b3a81efa-f007-4976-8864-f0a563e7efd7)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 5a144dcf-d9f2-402d-9556-b6e8ee0647e5)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + a3f3a127-a472-431b-a04d-20dfb03fee37)(content(Whitespace\" \ + \"))))(Tile((id \ + 7560359f-5145-4674-9e5d-0427f75cc171)(label(apply_both))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 2b179ba5-1578-439f-8899-d72c14f7780d)(content(Whitespace\" \ + \"))))(Tile((id \ + 453fb383-28b8-466a-ba99-063b848e02c2)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 462a9b5f-e582-4d33-bbfa-791e557df360)(content(Whitespace\" \ + \"))))(Tile((id \ + 6c464286-72b3-49ad-b83f-571c66c1ade6)(label(forall \ + ->))(mold((out Typ)(in_(TPat))(nibs(((shape \ + Convex)(sort Typ))((shape(Concave 13))(sort \ + Typ))))))(shards(0 1))(children(((Secondary((id \ + 4885ff9c-656c-4cac-94d3-9946c87758d1)(content(Whitespace\" \ + \"))))(Tile((id \ + b1ef3819-7e49-4952-9b4d-4553df2c1b22)(label(A))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + 699dc9bb-69ee-4f0d-8eb8-4d08ca395ac0)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + fb4c51ac-dd80-4b42-b18a-3460c39ba250)(content(Whitespace\" \ + \"))))(Tile((id \ + a3a5af75-2734-473b-a402-3339b5a5aed3)(label(forall \ + ->))(mold((out Typ)(in_(TPat))(nibs(((shape \ + Convex)(sort Typ))((shape(Concave 13))(sort \ + Typ))))))(shards(0 1))(children(((Secondary((id \ + 14b786ee-56d3-4868-9048-38d18607b3ed)(content(Whitespace\" \ + \"))))(Tile((id \ + e3ad6862-da04-4d40-b14d-773a130d2a4f)(label(B))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + c3613e98-7473-49d7-9dcb-9e35f7d7b10d)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + e4f9136f-ecd7-497c-989d-dd9ba87a3d11)(content(Whitespace\" \ + \"))))(Tile((id \ + 9f0b4530-be66-4001-ad6d-5008ade448f5)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + ebeb7669-44b8-433a-9944-dc027f8f7003)(label(forall \ + ->))(mold((out Typ)(in_(TPat))(nibs(((shape \ + Convex)(sort Typ))((shape(Concave 13))(sort \ + Typ))))))(shards(0 1))(children(((Secondary((id \ + 37725f50-74ae-4651-a13a-489eddb08955)(content(Whitespace\" \ + \"))))(Tile((id \ + 20a12d27-d6b5-4514-ad6f-1e951c2d0391)(label(D))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + c70dd6ff-391d-4c7c-a73d-62b8af7a5c10)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 084c5f67-3772-473b-8121-b5593490d98d)(content(Whitespace\" \ + \"))))(Tile((id \ + 374c499d-fbaf-4a2c-8e95-a8c4aab55992)(label(D))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 636bf99a-c682-4a09-9bc3-02abf03a2a95)(content(Whitespace\" \ + \"))))(Tile((id \ + 8f3851f6-33da-415b-82bc-8d7734089747)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + df4c4c83-a640-4b98-9992-cc466142b237)(content(Whitespace\" \ + \"))))(Tile((id \ + bc020cbc-2bee-4d21-aada-486e4657ca1a)(label(D))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 80178c33-42d1-40a8-9f89-6cd7257cec81)(content(Whitespace\" \ + \"))))(Tile((id \ + c028b69c-8544-40ce-bd46-b370f61b6050)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + c7feb1ec-8ee4-4a45-852c-61dab26295d1)(content(Whitespace\" \ + \"))))(Tile((id \ + 69097f40-c4b8-40fc-8c3f-83320bb1c7f7)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 9dfe9156-9cc5-4484-ad1b-6c2e1ba76e00)(label(A))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 68821505-6886-4514-9cb7-ca680ef6f9fe)(content(Whitespace\" \ + \"))))(Tile((id \ + f0a182a8-44ea-4c80-b37e-26545127421e)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + ee9e3c98-29c3-4191-96f7-d759ba9831d0)(content(Whitespace\" \ + \"))))(Tile((id \ + 03c0b912-b205-4ee3-83f4-20654cef76a4)(label(B))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 704883ad-e1f1-4931-8c20-75137f6125bb)(content(Whitespace\" \ + \"))))(Tile((id \ + e57b4dfc-0ec1-4c60-9114-4db7ed161100)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 12d67f9f-300d-47d2-9456-b46834577095)(content(Whitespace\" \ + \"))))(Tile((id \ + 8f554256-0ab9-4c84-a1c2-63596877e225)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + b9860364-7fb8-4a87-9813-2bd5178200fd)(label(A))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 6e303e7d-fe77-4b6d-80eb-674991ecebb2)(content(Whitespace\" \ + \"))))(Tile((id \ + f6db9b79-e371-44cd-acf3-18fd4f06770b)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 8bdca6d8-d33a-4c35-9f51-021fc98c298e)(content(Whitespace\" \ + \"))))(Tile((id \ + 4fb9e567-2954-4690-b71e-8cc92ca17d13)(label(B))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 19eece83-ea6a-4e60-a5d6-4207048bc574)(content(Whitespace\" \ + \")))))((Secondary((id \ + 4b9fc364-d0a1-435e-a0d6-3a490349b143)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + b8c143a9-c3ee-41ad-81d4-53d28c0c861c)(label(typfun \ + ->))(mold((out Exp)(in_(TPat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 2029fa53-3073-4967-87a8-b0869112189f)(content(Whitespace\" \ + \"))))(Tile((id \ + 454ea17c-4c69-456f-bf12-55d3e1142ab1)(label(A))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + 23c91397-4f7f-4121-8e3b-bbdb2cf73612)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 60524143-0ca7-4857-8f40-cf6deea6407d)(content(Whitespace\" \ + \"))))(Tile((id \ + 24999367-7d4d-4a2f-888a-01caf8064af4)(label(typfun \ + ->))(mold((out Exp)(in_(TPat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 697b85eb-ebaa-4da2-b3ff-f8784abce982)(content(Whitespace\" \ + \"))))(Tile((id \ + 9268bf3d-d2ad-45b8-a656-4c5fc7da9a8e)(label(B))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + f7a80654-16be-46ef-84dc-cbbfe538eec1)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 4fac1b77-6181-4276-8df7-69ec0b498670)(content(Whitespace\" \ + \"))))(Tile((id \ + 14f05a85-9351-421d-8012-e644bee593b8)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + ec293b56-ef71-4d52-80e8-1dbf69fedf52)(content(Whitespace\" \ + \"))))(Tile((id \ + b3b4e67e-ec31-48d0-99c8-1fd0b776e3f3)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 8e65f50b-e702-4a38-b590-d3a8aa14e619)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + e2228bb4-f45a-4e38-aff2-f1a03def3d5e)(content(Whitespace\" \ + \"))))(Tile((id \ + 7359ea14-3040-402e-89dc-74daf4cb2482)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 6023ad37-b805-415b-954e-30ac1380b014)(content(Whitespace\" \ + \"))))(Tile((id \ + 1528bbe3-9456-4d4e-92d7-43b29196f1a7)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + c2919cb1-233a-4283-8b66-cf44fc4afef9)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 409eb345-2d10-4fa9-aa11-126678ce05bc)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 8a2cb8b6-9d5a-4754-8dda-8d8fe0e94e09)(content(Whitespace\" \ + \"))))(Tile((id \ + d0bd6124-c271-46ed-9371-5ff172659e12)(label(y))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + 1ede3347-889a-421e-ab9f-9a76bb89b547)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 025702d6-85bb-4492-b77a-fcd80ce5b1d9)(content(Whitespace\" \ + \"))))(Tile((id \ + 44d77c85-e077-410e-850c-ccc2c10fc818)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 22214cfb-eb83-4531-b73e-7aed1cbee876)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 38c3df7e-a52e-488b-8153-cc0a0e400c81)(label(@< \ + >))(mold((out Exp)(in_(Typ))(nibs(((shape(Concave \ + 1))(sort Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 82ad7a3a-04a9-451b-aa97-19bc0c7ecb39)(label(A))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Tile((id \ + d315a9cd-9383-456f-a0d1-9b96b08aed99)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + ffdcd079-0c86-4fb9-9a32-a6f10114522f)(label(x))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + c343faf6-4aec-4789-a364-1c38747c0ede)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 972f8813-9085-4dcf-8f65-91f4ccfff5f6)(content(Whitespace\" \ + \"))))(Tile((id \ + ad7b36cb-7b61-4988-af73-1751a7f90e5a)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 35f5379e-f09a-4416-8881-b3e555caa977)(label(@< \ + >))(mold((out Exp)(in_(Typ))(nibs(((shape(Concave \ + 1))(sort Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 8c539c0f-b853-4aa4-98bf-874aa0d5487d)(label(B))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Tile((id \ + 0d94b84a-aba2-4fdd-bbeb-c6e96990f257)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 6346a4a7-211a-4b7b-af7a-8d3980f344b6)(label(y))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + 1374a8af-7da6-432f-8448-bf31d19fa4a1)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 4bad67e9-e3ec-4331-9db9-85eb4d51c10d)(content(Whitespace\" \ + \"))))(Secondary((id \ + 8ff64639-9a3a-4439-8dd4-a3e15280dd33)(content(Whitespace\" \ + \"))))(Secondary((id \ + 694712fd-f999-48ff-93c7-fc33b9b77094)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + fef28f13-33fe-449b-8cdb-6ebfd5762e15)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + ac4c6231-9f82-4ade-b8c9-d91728bf8ad4)(content(Whitespace\" \ + \"))))(Tile((id \ + 5de84be0-f611-4281-a794-7a0b0ff1118c)(label(ex3))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 3cb05235-9882-4486-b265-1cc2556c796f)(content(Whitespace\" \ + \")))))((Secondary((id \ + 5d92ec2c-1d17-4c65-bca3-9f32260e8b3e)(content(Whitespace\" \ + \"))))(Tile((id \ + cf076596-5f1d-4628-8197-5a5fec90a125)(label(apply_both))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + e1f8fd16-f236-4fc9-bc9a-b9289a4112f5)(label(@< \ + >))(mold((out Exp)(in_(Typ))(nibs(((shape(Concave \ + 1))(sort Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 09beab66-f457-4dad-8f46-8e195d6e5e65)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Tile((id \ + 98181850-6a50-4513-827b-4a9c90873912)(label(@< \ + >))(mold((out Exp)(in_(Typ))(nibs(((shape(Concave \ + 1))(sort Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + cbf816ab-0f3a-47e0-8a6c-5d2394e0a427)(label(String))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Tile((id \ + f703fbc5-53b3-49db-8748-d10d150098c0)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 797110e6-521d-4cbb-9941-19fccd65f36a)(label(id))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 51783bd8-663f-4e46-b00a-a0296c8cd7ac)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 8fc7176c-fa6c-4cd7-9245-83b8702a4428)(label(3))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 8116ef96-1cab-42f4-81de-213ecf812970)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 2f20f0f7-1675-4468-b2b6-cd7405f5aee4)(content(Whitespace\" \ + \"))))(Tile((id \ + 9f229a7b-bbad-4a9a-9e62-d9904862374c)(label(\"\\\"Hello \ + World\\\"\"))(mold((out Exp)(in_())(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 1906060c-28fe-4257-8be4-2fd05219ef29)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 63719044-8f1c-4920-ba4f-e4b2170077c4)(content(Whitespace\" \ + \"))))(Secondary((id \ + 06d1fe4e-1834-48c0-ba2d-71886eefb57a)(content(Comment\"# \ + (3, \\\"Hello World\\\") #\"))))(Secondary((id \ + 9a45a5ec-c346-4ba0-b534-37ee71f5fdd1)(content(Whitespace\" \ + \"))))(Secondary((id \ + edef7a1c-2899-4e18-8228-c750ceff7ec8)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + b700ee2a-c5eb-4ee1-bbab-c4539ed9d797)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + df508fd5-afc8-4de6-8261-7425fd25105b)(content(Comment\"# \ + Finally, here is a more in-depth, yet applicable \ + example: polymorphic map #\"))))(Secondary((id \ + e354e9fe-f5ad-4c87-be05-96335dffbe31)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 202cef82-1c4d-4655-b6b6-41f9e9f7a73b)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 78570e13-c5ca-49d9-b93b-fd18ffc9a429)(content(Whitespace\" \ + \"))))(Tile((id \ + e91519e6-a65e-491f-b9a4-18b547b30d3a)(label(emptylist))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 7a1b5f10-90ae-48e0-b0f9-36ca4d2d3107)(content(Whitespace\" \ + \"))))(Tile((id \ + a72887db-4aaf-49cc-8e67-0f7541880f76)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + ebfa5ee4-9fd0-4f8d-bc75-47444311729d)(content(Whitespace\" \ + \"))))(Tile((id \ + 592e5425-2459-41ff-9228-07f766f8ccf7)(label(forall \ + ->))(mold((out Typ)(in_(TPat))(nibs(((shape \ + Convex)(sort Typ))((shape(Concave 13))(sort \ + Typ))))))(shards(0 1))(children(((Secondary((id \ + 803a7b56-e0b3-4d80-ba8c-b65ff8517d93)(content(Whitespace\" \ + \"))))(Tile((id \ + 87240474-a39f-4923-85a5-2f102c7d0e32)(label(A))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + 6e4a8b34-2119-4f41-a61a-463ef0198a04)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + b1ab0026-aae9-4be9-b36d-eb3dd781adb1)(content(Whitespace\" \ + \"))))(Tile((id \ + 8085a4f3-a54a-4666-9242-6184af5353c0)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape \ + Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0 1))(children(((Tile((id \ + 7559f86c-1c2c-4542-b97d-35f9fc803fe4)(label(A))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + a7d1783a-03d9-4a83-a20c-224d0591481f)(content(Whitespace\" \ + \")))))((Secondary((id \ + 8a9f101c-6584-44e7-99a3-e372048b7445)(content(Whitespace\" \ + \"))))(Tile((id \ + 68c3ed3d-f500-4bd3-bcaf-ea9bdf9451ae)(label(typfun \ + ->))(mold((out Exp)(in_(TPat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + faa1695b-2e55-4667-8ec7-1558b3d85850)(content(Whitespace\" \ + \"))))(Tile((id \ + 38b03267-319e-4664-8372-efcdd79e85f4)(label(A))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + 228c224a-afad-44f4-a22a-eddf73b8d974)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 5ca59d99-25f7-486d-ac51-f549cb0a91b3)(content(Whitespace\" \ + \"))))(Tile((id \ + 0981b8f1-b372-41ba-bf9d-9e13d779a5a3)(label([]))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 9c58a1b5-6df1-4868-a078-9ee9a15baa7c)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + e188133e-4924-4f2e-be27-fcf311628729)(content(Whitespace\" \ + \"))))(Secondary((id \ + ee875eb7-54d4-4f95-886b-c49fe80ef2be)(content(Comment\"# \ + polymorphic constant #\"))))(Secondary((id \ + dd6f9538-a844-49fd-a02a-ac3a01e89512)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + eccaa669-c774-4a4d-bfdf-fc6f85153e3c)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + aa9c739b-6bf6-49fd-bd3b-40f2f9017ae4)(content(Whitespace\" \ + \"))))(Tile((id \ + 0f2b46f6-0a6f-4c5c-8682-3f59ad4b751f)(label(map))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 37696633-3cee-49a1-b614-1f87c67e2b70)(content(Whitespace\" \ + \"))))(Tile((id \ + 0dfd3441-ca14-4837-8b6e-152899e6d301)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 4215c01a-0f39-4671-8210-aff41079081d)(content(Whitespace\" \ + \"))))(Tile((id \ + 88c46e29-1562-41bb-8c58-3a70ca2b7337)(label(forall \ + ->))(mold((out Typ)(in_(TPat))(nibs(((shape \ + Convex)(sort Typ))((shape(Concave 13))(sort \ + Typ))))))(shards(0 1))(children(((Secondary((id \ + c0d24d93-992b-40a9-8d3a-b16aa88a939c)(content(Whitespace\" \ + \"))))(Tile((id \ + 15ea1b72-ecb0-451c-91e5-e55c0283ff01)(label(A))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + ecfd54e9-8baa-4a1c-8f98-5f8657ba550d)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 6fe8a5a8-f3af-4a76-b03a-7843dca9f959)(content(Whitespace\" \ + \"))))(Tile((id \ + 155d7295-5673-4c5a-87b8-68d3053df95a)(label(forall \ + ->))(mold((out Typ)(in_(TPat))(nibs(((shape \ + Convex)(sort Typ))((shape(Concave 13))(sort \ + Typ))))))(shards(0 1))(children(((Secondary((id \ + d64b0ee3-fcce-40bb-976d-149ce33e0b05)(content(Whitespace\" \ + \"))))(Tile((id \ + 722893eb-79bf-4a75-9491-d5e696d80fe9)(label(B))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + 1fb2d0cc-1057-4c09-b0dc-eda66ca91edf)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + b491ae64-7e22-48fe-85f9-5c4c9fb6a864)(content(Whitespace\" \ + \"))))(Tile((id \ + 43465c96-ccf8-4251-aeb5-06f86e7a9ec0)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 8918e371-6bc8-4291-b8fc-92f0ac4afa4a)(label(A))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 6164fe07-2c6f-4daf-9c3e-5ec6468e0c02)(content(Whitespace\" \ + \"))))(Tile((id \ + 8bc001b1-7710-4877-b8fd-6fb9eba7c39d)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 07510d7e-5ccc-46e7-9d96-456f01270a3e)(content(Whitespace\" \ + \"))))(Tile((id \ + a753c673-92ed-44c4-923b-8a95152174b2)(label(B))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 523f8d85-4fe6-494d-8699-a5438e0b960e)(content(Whitespace\" \ + \"))))(Tile((id \ + 66564dc5-1126-45b1-96b5-6e591777773b)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + a43abf64-f5d9-4b52-85ff-d962bc2408bf)(content(Whitespace\" \ + \"))))(Tile((id \ + a0be16ac-54d0-4529-b9e6-6347996157a3)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 28a5752a-c74f-432c-99b5-aa7539198b49)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape \ + Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0 1))(children(((Tile((id \ + f393e48d-68a3-446d-befb-87f27012a0e3)(label(A))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 2e71f6dd-e285-47cf-b2a6-e1a4b9f45db3)(content(Whitespace\" \ + \"))))(Tile((id \ + e4f1cd33-3003-49be-98a4-ee4ad279b2b6)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 0950551e-141b-4a64-8297-21259177b3bb)(content(Whitespace\" \ + \"))))(Tile((id \ + 3e01b2d4-90ac-441e-aa07-eee0abf36091)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape \ + Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0 1))(children(((Tile((id \ + c72fce8d-fade-423e-965c-fec2b626373f)(label(B))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + e8f716f5-1b3f-4ee6-962e-4e078ce0bd37)(content(Whitespace\" \ + \")))))((Secondary((id \ + d067ebe8-0d92-451f-8093-5520bf5fb45d)(content(Whitespace\" \ + \"))))(Secondary((id \ + 419f3418-e474-41c3-ad4c-3b22a8dd9a61)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 0b4c829b-646e-4473-8d56-826d11fded2c)(label(typfun \ + ->))(mold((out Exp)(in_(TPat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + faaa1f96-c99c-4430-a432-32be33368118)(content(Whitespace\" \ + \"))))(Tile((id \ + 3167378f-47ff-4023-8c32-62977c64c1bc)(label(A))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + 9b40799d-499e-4cf0-b5e1-c77c9db980e2)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 17cd6904-a1de-419b-bc8b-551ae07e88df)(content(Whitespace\" \ + \"))))(Tile((id \ + a74f4763-dd86-4124-840a-ac14797d15fa)(label(typfun \ + ->))(mold((out Exp)(in_(TPat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 30a14f5e-ca39-4f7d-bfb0-03e3f6281c58)(content(Whitespace\" \ + \"))))(Tile((id \ + 58c4bb9f-8a30-480e-a52b-38df655f9164)(label(B))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + dfad2a33-2a2d-4df9-be18-2fe06e3548bb)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + f9b87bc9-1128-4dec-bf0c-014baff77334)(content(Whitespace\" \ + \"))))(Tile((id \ + 1fde687f-dfdb-4b5a-a8cc-9e81d9e6b522)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + dd314134-b69e-4426-b1a6-999a28f427fd)(content(Whitespace\" \ + \"))))(Tile((id \ + ae115273-4b54-46ce-a192-10047fe9e951)(label(f))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 11aa5133-b04f-4100-a2e3-9695c08e4e09)(content(Whitespace\" \ + \"))))(Tile((id \ + 1cb85726-ab00-4149-8246-c9440cde31c3)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + de0c889c-43ea-4f05-bf55-abf04c9d0d59)(content(Whitespace\" \ + \"))))(Tile((id \ + 4a5c3924-a66d-4067-8f6b-89ec8d7234ec)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + f2a159b3-e8b9-40ff-9f79-5ca041c21a77)(label(A))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 2c18b0d4-9eb0-430d-b72d-6d8c6e21be1e)(content(Whitespace\" \ + \"))))(Tile((id \ + 00a6aaf9-db5a-4aa1-9c65-b0d933a7553f)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + ce1cc890-5fe0-4bbc-a55e-ec4d56cc7ef7)(content(Whitespace\" \ + \"))))(Tile((id \ + 2fa7a2b3-bb79-497b-b83f-e203a3d0abe3)(label(B))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + ccad4dbb-bd06-4483-9828-276555d352de)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 336ec250-d844-403f-b23f-fa7753dc5068)(content(Whitespace\" \ + \"))))(Tile((id \ + 05929dbf-0f8d-4a96-83d1-3d993326c4e0)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 8f63a82f-5f21-4948-8824-0346d46d1d46)(content(Whitespace\" \ + \"))))(Tile((id \ + 36ec28dd-5dfb-4745-9297-c026b99a54ed)(label(l))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + ebeb2e6e-f6f2-4e00-b98a-640b41f05e5c)(content(Whitespace\" \ + \"))))(Tile((id \ + f4ad62e1-8361-4bcd-aaf7-b68fea88eac6)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 776f0b9d-1e87-45a8-b2a8-c51a6d7551f4)(content(Whitespace\" \ + \"))))(Tile((id \ + 0f555e5d-4c58-49a6-a83f-a02000e3a9b9)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape \ + Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0 1))(children(((Tile((id \ + 0506c0fd-a136-45a0-9b58-8818281c6192)(label(A))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + fe663aa2-62a0-481c-8076-902ec6e80465)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + ac80020e-0679-444c-908a-664fd265d287)(content(Whitespace\" \ + \"))))(Secondary((id \ + 0532ce74-b1fd-47cd-afd8-536a76b56eac)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 5cb54d04-1620-4898-b5ee-171a13a55cb2)(label(case \ + end))(mold((out Exp)(in_(Rul))(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 826841f4-cbf3-4158-a661-b7915909567d)(content(Whitespace\" \ + \"))))(Tile((id \ + f2738d6c-44d1-4477-9320-98664a2abebf)(label(l))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 0f7ec861-3dd7-48c7-bb98-1068d6018711)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 666f3305-9623-472a-a8e5-4a4821bdac0c)(label(| \ + =>))(mold((out Rul)(in_(Pat))(nibs(((shape(Concave \ + 19))(sort Exp))((shape(Concave 19))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + d5a09c88-8fb8-4ea9-be8a-852be89e4f6c)(content(Whitespace\" \ + \"))))(Tile((id \ + 1417ddf8-e63c-463e-b541-e36920b01149)(label(h))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + d2e0fe19-dd90-445e-bd58-cf97d46d9b9a)(content(Whitespace\" \ + \"))))(Tile((id \ + ff3d12e2-c357-42a7-8f3e-a21c9fb9d451)(label(::))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 6))(sort \ + Pat))((shape(Concave 6))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 2a6b7167-756b-4d3d-9f07-98e53f430cca)(content(Whitespace\" \ + \"))))(Tile((id \ + ea24b8b4-1664-4b46-b9ad-c74d7bb8b2c4)(label(t))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + dbf53a0c-d1df-4fcf-b833-2ca674b3118a)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + e5b78a12-bf5c-41b7-a607-81db98a7709c)(content(Whitespace\" \ + \"))))(Tile((id \ + bcb2ac89-9866-44b7-ac86-bfa367efb43e)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 274061ca-2c5f-4cff-ab7f-e034d6165d6a)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + e1822bcd-8a53-428d-9568-08ce796791ba)(label(h))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 8261c12e-167c-4b97-b895-076b16cb8956)(content(Whitespace\" \ + \"))))(Tile((id \ + 134da227-54ae-4138-bfd3-0ffd5bbb35bf)(label(::))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 6))(sort \ + Exp))((shape(Concave 6))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + cde794e2-1514-4ee5-8722-b4d27751fc43)(content(Whitespace\" \ + \"))))(Tile((id \ + 48901d44-b0e6-4948-90d0-99d20334c456)(label(map))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 5f38a51a-94ff-4f13-ba3b-312e507ab73a)(label(@< \ + >))(mold((out Exp)(in_(Typ))(nibs(((shape(Concave \ + 1))(sort Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 7539694b-4e31-49a6-a32d-dbdf0a55ef35)(label(A))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Tile((id \ + 7f4d954d-2861-4c11-bec6-fb759b5a0ffe)(label(@< \ + >))(mold((out Exp)(in_(Typ))(nibs(((shape(Concave \ + 1))(sort Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + d67b39fa-c196-4262-9888-426de588572e)(label(B))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Tile((id \ + c51f52dc-b5ca-4bf4-a2ab-ed899b19cd24)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + af6d37cf-fc46-4007-90f3-60bce7e9157d)(label(f))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 3c421466-068a-48d3-8367-5e9ecffdb962)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 33bdc742-e6a9-4f94-86c9-406c3aae5f29)(label(t))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + aa7f11a8-0790-4b02-8466-3a3a9aa0c628)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 977253f6-0679-49a0-a5ae-bf8804d4d272)(label(| \ + =>))(mold((out Rul)(in_(Pat))(nibs(((shape(Concave \ + 19))(sort Exp))((shape(Concave 19))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + c4956a98-232b-45c1-8ba7-5730e460512e)(content(Whitespace\" \ + \"))))(Tile((id \ + 4460a1f9-8f3e-4c6e-8ef9-50d18ff587eb)(label(_))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 762cb02f-c9a4-4913-91f6-c3e63c1cdf08)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 44404719-7532-4ef8-a4e0-ef40b69eb8ac)(content(Whitespace\" \ + \"))))(Tile((id \ + bbe24e20-53c7-49a7-83e9-65f8ba722e51)(label(emptylist))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 321a3266-20dc-4471-a74f-a95a466e7e31)(label(@< \ + >))(mold((out Exp)(in_(Typ))(nibs(((shape(Concave \ + 1))(sort Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 6c978a1d-d8a2-4ca6-8a8f-1d35c5fd21d5)(label(B))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + d9bbddf3-7123-496d-ac83-8e7ceef5b6de)(content(Whitespace\" \ + \"))))(Secondary((id \ + 01684518-f444-4731-852b-69ef9a5d9b43)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ + 3edb8b70-1ae0-496b-ad02-eb3693fc8f56)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 36c28bc5-a5cf-4acc-985c-2c955c7d820e)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 97de8089-37ac-4509-acc9-39012a0fdf3e)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 80d05981-1920-44d8-b42e-f18175935f70)(content(Whitespace\" \ + \"))))(Tile((id \ + 72ae731d-de2f-4ad8-a2d6-356bceae5577)(label(ex4))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 7028d808-2b29-4ca9-a4d3-1a5dacd93fa0)(content(Whitespace\" \ + \")))))((Secondary((id \ + 77fd1b46-bf93-4844-8f57-b111ba33d8d3)(content(Whitespace\" \ + \"))))(Tile((id \ + d18a0774-cfc4-4907-b460-b469053a3c0c)(label(map))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 504e60fc-928d-4308-96ca-fd31df0da48a)(label(@< \ + >))(mold((out Exp)(in_(Typ))(nibs(((shape(Concave \ + 1))(sort Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 4f0f6316-3dd0-4479-bbd4-762b82b7c37e)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Tile((id \ + 14993ad8-445e-45b3-b828-e4c0b43c834b)(label(@< \ + >))(mold((out Exp)(in_(Typ))(nibs(((shape(Concave \ + 1))(sort Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + e91f5e5f-40db-4039-86de-833746dfac39)(label(String))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Tile((id \ + ddbda949-29b7-4b34-8f11-05ed3fcd6f01)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 6d6bee77-2fa1-478e-997c-3540a5e97174)(label(string_of_int))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Tile((id \ + 42c0e873-c3f1-4106-80a6-a2ed60f806f5)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 9cdabbd2-8198-4864-8f41-e855415362ea)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0 1))(children(((Tile((id \ + 6484bcbc-b4cf-4c4c-b20f-7f554010051c)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 85ce0fb1-0fd5-4ec6-bd55-a32bf8920ff2)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + fc87be7f-7ae8-495d-9beb-8a214a49f71c)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 2dc60eb3-a968-4efd-9f71-36058601c0c7)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 8c971b0e-ea6d-41df-b8c2-b5c3c2a4f908)(label(3))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))))))))))))(Secondary((id \ + 935f2c82-7dc7-4899-b2aa-d473ad9e1cdc)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 7d0cb752-8863-4cf3-8b39-a859475c9eb5)(content(Whitespace\" \ + \"))))(Secondary((id \ + 1e8050d0-bbc2-467e-a83e-29856cace3c4)(content(Comment\"# \ + [\\\"1\\\", \\\"2\\\", \\\"3\\\"] \ + #\"))))(Secondary((id \ + 8abda13b-ad37-4604-8f9a-d187bfd0c494)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + bf822fc1-bfad-46a5-970d-79a0d86ba99d)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 698e99c5-fbfc-467c-ac98-60fe4bb2ac9e)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 6de45367-5e16-4d4b-861c-e668d080fd94)(content(Comment\"# \ + Recursive types #\"))))(Secondary((id \ + 528d4204-ce5a-4d4d-8a65-499c165a93a6)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 22c11a80-9716-4d85-8478-84acbb2bb3e2)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 7c21acf4-f87c-4f87-96ed-9f3ce7854bee)(content(Comment\"# \ + We can express types that are the least fixed point \ + of #\"))))(Secondary((id \ + eb66d375-5bc4-4510-9213-406754f1b3ab)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 5bd07da0-2cdc-4bed-b10e-8afdf2d40ed4)(content(Comment\"# \ + some type function with the rec keyword. \ + #\"))))(Secondary((id \ + d563fa59-b243-4ee7-87ef-3393d1850a36)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 0a9260b0-6cb1-4f99-bfa5-07bc929cdbc2)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 7ad3ae39-3be4-4998-86a7-9c94d619ba34)(content(Whitespace\" \ + \"))))(Tile((id \ + 49357b25-92c9-4cd3-b04c-fea7d3c2ee30)(label(MyList))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + b193ab38-767a-485a-9bda-27fe181a70fb)(content(Whitespace\" \ + \")))))((Secondary((id \ + cdadc496-6611-4ffc-b135-643b2b6e58fb)(content(Whitespace\" \ + \"))))(Tile((id \ + d8af8722-cf91-4f15-9c32-2eecdbb5d1dd)(label(rec \ + ->))(mold((out Typ)(in_(TPat))(nibs(((shape \ + Convex)(sort Typ))((shape(Concave 13))(sort \ + Typ))))))(shards(0 1))(children(((Secondary((id \ + 16ba3fd3-2845-490b-a056-b8379608f7c8)(content(Whitespace\" \ + \"))))(Tile((id \ + 35911a26-36a2-4755-a0d5-40663bd5e3e3)(label(A))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + 32b2fb6f-0a3d-41bf-b4d7-90c0411c4a4f)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + a5c9177a-1a19-4bf5-968b-79dcd8a5f1ae)(content(Whitespace\" \ + \"))))(Tile((id \ + 21645f30-7293-4698-a5ef-c03a43418311)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 2236339d-9e54-45ca-b4f0-a2adcf62fdd4)(label(Nil))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 2eda9a70-f5e3-4430-8ac3-94060fd5b62a)(content(Whitespace\" \ + \"))))(Tile((id \ + 724193cc-c749-44c9-86c9-24c6d5f02b21)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 494ef4ee-7336-4d8a-991b-843e8e09e6a4)(content(Whitespace\" \ + \"))))(Tile((id \ + 36cbd19c-bd46-418c-ac05-7ca72e3efc03)(label(Cons))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 4681bbb3-42ce-46c8-8a22-3259057a14a6)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 8213139c-073b-46ca-a434-e32ffd0d2388)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + fffa4b09-8032-4007-a8e9-c1b4c9b3e4cf)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 61db4da2-294b-4285-96e3-718cb15577c8)(content(Whitespace\" \ + \"))))(Tile((id \ + 9692e5ad-a529-43ef-a693-413e0ab21a31)(label(A))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 990cc418-00f2-4c98-9395-ad95bca66884)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 3701484f-c796-4d38-bce7-4f25b4c3637d)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 193cfb02-bcdb-47e2-80c5-4775c7f11a82)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 8c0f2c04-fc2c-4fdf-8f0c-83644d1be509)(content(Comment\"# \ + Hazel does not (yet) support higher-kinded or \ + existential types, #\"))))(Secondary((id \ + 4810f7f2-213a-465d-9b61-81cf18482fa8)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 0eaf40c5-5a8b-4cbb-aa19-18ba099847eb)(content(Comment\"# \ + So we cannot implement our own polymorphic lists. \ + #\"))))(Secondary((id \ + 579ceeeb-258a-4089-a115-5627e2eaea58)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 7bfbd599-e516-45a7-a725-cb39be5c8729)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 887616c9-6707-4e70-ab3d-62996ce73e70)(content(Comment\"# \ + Now anything that returns an element of the least \ + fixed point matches MyList. #\"))))(Secondary((id \ + 6f06209e-4913-4da3-ae91-5bd283668594)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 33ed3a5b-0867-43d7-8cc2-2c8ca4c758e7)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 0370f42e-bd6c-490a-bb7d-920d2f8a8aae)(content(Whitespace\" \ + \"))))(Tile((id \ + 5bae080b-2019-4ffd-a2a9-2a972fcda28d)(label(x))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 4079c066-6ef0-4310-83c6-56fe7fd7670e)(content(Whitespace\" \ + \"))))(Tile((id \ + a0c477e1-9ef3-4b38-a67c-d5d22e96471d)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 93cd7df1-2b4d-4582-acf7-2cb0d46f6313)(content(Whitespace\" \ + \"))))(Tile((id \ + e62970f7-e979-49fb-bde6-c008d8d79a70)(label(MyList))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 1b69d275-5bd5-489b-a340-7aafdfd14d12)(content(Whitespace\" \ + \")))))((Secondary((id \ + 5c867417-e06d-4873-b84d-041e25dcb2d0)(content(Whitespace\" \ + \"))))(Tile((id \ + 2cf5af86-df22-4aba-a044-17d75a3ae989)(label(Cons))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 7e122a6b-5f64-4a7e-90ae-0878e0d82f03)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 1d783d64-398f-4ad6-9eae-b3490775e34c)(label(1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + df60de96-d925-4ca9-beca-a392fa9d3a33)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a798be71-5b99-4f2e-a8e2-e923f9609370)(content(Whitespace\" \ + \"))))(Tile((id \ + 8565ea1f-2353-458d-9439-7f379d71cebd)(label(Cons))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 7ece0aa1-030f-42ec-98ef-b2628aac965c)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + e755b115-0361-453e-b274-9f9cb8a0c262)(label(2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 4459b0c1-70f4-4101-a896-21725d8c2a4e)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 9bc6d0d7-59d4-4cff-819a-6fa718e28414)(content(Whitespace\" \ + \"))))(Tile((id \ + 9bcc25fd-a616-49f1-9f53-f12a36e09354)(label(Cons))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + e5ad642e-1071-4a7b-ae6f-d6c8b4b34403)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + fcd291b3-e052-402b-be90-a4a138f94cce)(label(3))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + bab8fe07-56b3-4a03-8a70-cad1d19c41ce)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 952bc037-e9e7-42a4-9dd8-24f64cbaedd9)(content(Whitespace\" \ + \"))))(Tile((id \ + 63e70629-8a00-4987-adcc-d9b7edb62ecc)(label(Nil))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))))))))))))(Secondary((id \ + 3c1a3bf1-ed31-4739-885e-ad254fc292f2)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + b75b8ab1-8759-45b5-ad5b-ed90197258da)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 935b835c-261d-47fc-bee8-068e25da32a8)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + fb36a038-d3c2-48ec-9310-1ccb658b327a)(content(Comment\"# \ + Note that if the sum is the top level operator, \ + #\"))))(Secondary((id \ + 3c729241-60ac-46a3-86db-92a070ffa4d5)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + f7670b91-4175-4a41-b92a-232fd61e8eec)(content(Comment\"# \ + type aliases are implicitly least fixed points on \ + their own name: #\"))))(Secondary((id \ + ff8533bf-ba1e-4237-8c1c-e3130b234e64)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + e940b831-775d-4d20-8c4e-cf380df7c704)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + fa4039e4-3ac6-4d02-9df8-449e895958cd)(content(Whitespace\" \ + \"))))(Tile((id \ + 05f24c94-0119-4bd5-b234-a1dbdaeab975)(label(MyList2))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + a5939fcf-4a82-49d3-a9dc-8d899ad579f6)(content(Whitespace\" \ + \")))))((Secondary((id \ + 4e843e4a-0c21-4bd3-9163-bad05c819bc8)(content(Whitespace\" \ + \"))))(Tile((id \ + 8f4764bd-552d-47b3-a75f-8177eacbfad3)(label(Nil))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 2b1728e8-6ba7-4cbb-9064-aec652c83d87)(content(Whitespace\" \ + \"))))(Tile((id \ + 6585a36d-b5e9-4a63-8d45-bca7e5c38cf0)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 77c58ade-ef24-46bd-8fad-1fe0dacbc953)(content(Whitespace\" \ + \"))))(Tile((id \ + a97829e0-ec9c-4941-affb-26a072f73fc5)(label(Cons))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 12e14808-3cec-40de-88dc-d9d030c3e0a8)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + b501c4ea-e896-49a6-a03e-e15a8d8e9a51)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + e853b31d-1d90-47b0-a37c-9fbec3a18544)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 6fa80101-ad62-45fb-b1a3-ebb1a1cfb16d)(content(Whitespace\" \ + \"))))(Tile((id \ + 22588755-b59d-4f05-9905-b901a1db3f30)(label(MyList2))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + c8115f34-99e0-441c-9313-b15a577eb3eb)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 56e8a3e4-e828-44df-a3c8-e7b1f883e6fc)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + ecf2538d-f121-418b-b6ec-ffb5c0a67f70)(label(type = \ + in))(mold((out Exp)(in_(TPat Typ))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + de814c18-7e95-4f76-9ee7-d20266a3d78e)(content(Whitespace\" \ + \"))))(Tile((id \ + cd5bc989-4ae9-48fa-82fb-a5ab4e320674)(label(Broken))(mold((out \ + TPat)(in_())(nibs(((shape Convex)(sort TPat))((shape \ + Convex)(sort \ + TPat))))))(shards(0))(children())))(Secondary((id \ + 8a26bf51-7c01-4f19-b61d-3f6cf0d623e7)(content(Whitespace\" \ + \")))))((Secondary((id \ + c8f6eebf-2e02-444f-b76a-e447af05ce9b)(content(Whitespace\" \ + \"))))(Tile((id \ + 0d01d510-b89e-44f8-b5fa-51b2ae3019d9)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + b7bf4f3b-2c80-48b8-9216-3ced31d7e2e7)(content(Whitespace\" \ + \"))))(Tile((id \ + 8e13455f-e289-48c1-9c66-c1d26e2092c7)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + c0577a87-5d87-4f80-861a-c1ef1406b627)(content(Whitespace\" \ + \"))))(Tile((id \ + af30d9ee-ba31-4634-aee7-8671323584d8)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 8026c0f4-2334-4d9e-beec-c84c887da32c)(label(HasInt))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + e6c62de9-7dbe-4551-b683-eafeb333cbf1)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 7cfa00aa-8ac0-428c-a4d8-3e1522f514d3)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children()))))))))(Secondary((id \ + 1843b6d8-6591-45a8-b6d1-735229c0966a)(content(Whitespace\" \ + \"))))(Tile((id \ + ac02cd59-e2b2-4ddb-b3ed-34f055d805c6)(label(+))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 10))(sort \ + Typ))((shape(Concave 10))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + cac41e52-5cc4-46f3-bb90-a3abaaeee9ca)(content(Whitespace\" \ + \"))))(Tile((id \ + 389c16e0-7203-4142-9eca-b4246ce61c4c)(label(HasMore))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 6624e15f-6510-40e3-b646-de90440393f8)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape(Concave 1))(sort \ + Typ))((shape Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + e1076ac2-2a95-4a69-a62c-261ab97d6dde)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Tile((id \ + 1ba0a1ea-2382-4a3c-95d2-bca9f7ba6d79)(label(,))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 14))(sort \ + Typ))((shape(Concave 14))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 57b01c61-7ac0-4dfc-9ed4-6f5a6d38e57d)(content(Whitespace\" \ + \"))))(Tile((id \ + 45ddb6b3-449e-49f9-9ac7-0a65fe083166)(label(Broken))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 7849f81d-3ffc-45fb-8c6f-deca793f4340)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + e520d9d4-efc0-4050-9d28-9408015601f0)(content(Whitespace\" \ + \"))))(Secondary((id \ + 9d15c792-44f0-4b64-96b4-c01553f092ac)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + b5ac9def-818d-4cc9-a69e-b6c48bb3cf4a)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 16e84b97-6c21-457e-a9db-be37201ee08c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + dcec6c2e-de60-4b66-a700-5ebe7a65b3cc)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 805fb44d-81bc-4f8e-b6d6-7fecccd366d6)(content(Whitespace\" \ + \"))))(Tile((id \ + 1b33ea74-291d-4177-a4cc-32150cc262c6)(label(list_of_mylist))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + fa5b0bfb-d0db-47f1-9248-36b4ca53105a)(content(Whitespace\" \ + \"))))(Tile((id \ + 0329d949-b67e-4f75-84c5-dac81ce19f53)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 6fafb86c-61e0-4497-9b66-088252c58d00)(content(Whitespace\" \ + \"))))(Tile((id \ + eaf6d9b9-9e6f-4399-b3e5-208475e22a8a)(label(\"(\"\")\"))(mold((out \ + Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort Typ))))))(shards(0 \ + 1))(children(((Tile((id \ + 0cc9f249-f565-4923-936a-423a5c420bba)(label(MyList))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 909fa81c-98c3-4b79-8995-efb831fb05a8)(content(Whitespace\" \ + \"))))(Tile((id \ + 9e28a68b-7554-4af2-a9be-942c1110024e)(label(->))(mold((out \ + Typ)(in_())(nibs(((shape(Concave 6))(sort \ + Typ))((shape(Concave 6))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + fb0b7814-07ee-4953-95d4-f30c5d1a28df)(content(Whitespace\" \ + \"))))(Tile((id \ + 1d502020-0204-4ae8-8192-d1967f0631c0)(label([ \ + ]))(mold((out Typ)(in_(Typ))(nibs(((shape \ + Convex)(sort Typ))((shape Convex)(sort \ + Typ))))))(shards(0 1))(children(((Tile((id \ + 11378050-b326-435e-8af8-6f42f2e49778)(label(Int))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))))))))))))(Secondary((id \ + 1bf827f8-b572-4b9c-b34a-e1f5b0f0da30)(content(Whitespace\" \ + \")))))((Secondary((id \ + 66da49bf-a4d2-4e29-b778-b452a83e05e9)(content(Whitespace\" \ + \"))))(Tile((id \ + dce1d474-d747-4379-8ac6-f763c0983a91)(label(fun \ + ->))(mold((out Exp)(in_(Pat))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 13))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 197cb6d3-e061-47d2-a835-ddb8f7a2d20e)(content(Whitespace\" \ + \"))))(Tile((id \ + acca15d8-ce9c-4705-9b01-752506a181a1)(label(myl))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + c284858d-33ee-41e8-bb6b-e7a3785347d5)(content(Whitespace\" \ + \"))))(Tile((id \ + b6b34912-9e5d-46db-8e71-da92a30d8530)(label(:))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 11))(sort \ + Pat))((shape(Concave 11))(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + b6c140b8-77c7-4678-8600-86bf855f47dc)(content(Whitespace\" \ + \"))))(Tile((id \ + 335ac528-48d9-4e90-8d14-daf02bc2e744)(label(MyList))(mold((out \ + Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape \ + Convex)(sort \ + Typ))))))(shards(0))(children())))(Secondary((id \ + 9b635b29-dd86-41a5-afe5-98e20f056263)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 3da32ede-874a-49f7-992d-94a620f990e3)(content(Whitespace\" \ + \"))))(Secondary((id \ + 3ceacb87-72e8-4cef-8154-190452625783)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 56e4366c-41dc-4518-bfad-e088baae8ae1)(label(case \ + end))(mold((out Exp)(in_(Rul))(nibs(((shape \ + Convex)(sort Exp))((shape Convex)(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + a35555f6-5351-4d16-a0bd-d1e18d7801ce)(content(Whitespace\" \ + \"))))(Tile((id \ + b17c5c27-7cbe-454e-b611-0d90f795189b)(label(myl))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + afdb8805-7c66-4af2-873e-24813d6529ce)(content(Whitespace\" \ + \"))))(Secondary((id \ + 28d13098-67c5-4ed6-9526-099cd842b85c)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 07d15b6d-f0f4-4670-820a-0fbd56a208c7)(label(| \ + =>))(mold((out Rul)(in_(Pat))(nibs(((shape(Concave \ + 19))(sort Exp))((shape(Concave 19))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + 94141f1d-753d-4ab9-a519-f781bdda56dd)(content(Whitespace\" \ + \"))))(Tile((id \ + e4a58087-c41a-4a12-a8da-c45bd917c0a1)(label(Nil))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 00902ec1-0666-4bb6-858b-db5295b6271e)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 4ab05820-b00e-422a-a998-5f14b49a46a9)(content(Whitespace\" \ + \"))))(Tile((id \ + b88b20fc-86fb-48e2-badf-06f6c0ad4a87)(label([]))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + b55be10d-dbce-43f5-a69b-64450d2f0eae)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + ca06d3d8-49e0-45ae-9fa3-c369c7d63deb)(label(| \ + =>))(mold((out Rul)(in_(Pat))(nibs(((shape(Concave \ + 19))(sort Exp))((shape(Concave 19))(sort \ + Exp))))))(shards(0 1))(children(((Secondary((id \ + ebc90337-9c9a-48f3-982e-78dd373c2af4)(content(Whitespace\" \ + \"))))(Tile((id \ + c94a1c23-2922-4b09-8c90-ab1859a2f652)(label(Cons))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 280a5024-fe68-4508-919b-bc6072aa320c)(label(\"(\"\")\"))(mold((out \ + Pat)(in_(Pat))(nibs(((shape(Concave 1))(sort \ + Pat))((shape Convex)(sort Pat))))))(shards(0 \ + 1))(children(((Tile((id \ + e1241ab0-e63e-46c0-bcb1-d5cf501c7d68)(label(h))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Tile((id \ + 7076e557-cff2-4587-99d8-7323b637eaa5)(label(,))(mold((out \ + Pat)(in_())(nibs(((shape(Concave 14))(sort \ + Pat))((shape(Concave 14))(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + b15f353d-22a1-4f82-962b-21eeb1709a3b)(content(Whitespace\" \ + \"))))(Tile((id \ + 29908b41-4852-4fed-a2be-a8201b46b324)(label(t))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children()))))))))(Secondary((id \ + 282a4121-76db-46b2-92f2-c0b3bea39dab)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + d2bace67-f8aa-4fb7-b767-ff056b2db439)(content(Whitespace\" \ + \"))))(Tile((id \ + 52d40c83-e37a-4e99-a9f9-cce2a9bee532)(label(h))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 726272aa-84f1-4832-bce7-abf746dd38ac)(content(Whitespace\" \ + \"))))(Tile((id \ + cdc66ee5-157b-46bd-bd7b-1f5adf1eaf00)(label(::))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 6))(sort \ + Exp))((shape(Concave 6))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 6a2d26fd-953a-4bd7-96af-01a5e67c5164)(content(Whitespace\" \ + \"))))(Tile((id \ + 3d383ccc-98af-43c0-811c-71cf543f3560)(label(list_of_mylist))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 34f0131a-6046-42b7-acc3-0e9b115598e9)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 7644fb73-3d7b-4647-89a1-17ac8db02acf)(label(t))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + 4c34a3ca-0ad2-4452-8353-edc564632dd3)(content(Whitespace\" \ + \"))))(Secondary((id \ + b46b62aa-f261-440b-a185-d0d676172b7e)(content(Whitespace\" \ + \"))))(Secondary((id \ + a48cde36-a585-4160-9422-90e3f070e845)(content(Whitespace\"\\226\\143\\142\")))))))))(Secondary((id \ + cd5ed745-ec98-409e-ac1f-234b381dce78)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 6dece3b9-a529-490e-91f2-12e76091b87f)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 287d9620-78ca-4128-9b32-8f9cb6b58760)(label(let = \ + in))(mold((out Exp)(in_(Pat Exp))(nibs(((shape \ + Convex)(sort Exp))((shape(Concave 16))(sort \ + Exp))))))(shards(0 1 2))(children(((Secondary((id \ + 80255e8c-d69c-49e8-a4da-becb2c97c9a6)(content(Whitespace\" \ + \"))))(Tile((id \ + 5e33ed39-557f-4503-a948-ffc0a793cd4d)(label(ex5))(mold((out \ + Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort \ + Pat))))))(shards(0))(children())))(Secondary((id \ + 9fbd2e14-8f09-4035-8020-e8f44fba8526)(content(Whitespace\" \ + \")))))((Secondary((id \ + f767e5a7-54ab-44d3-a224-fffdadf9da4a)(content(Whitespace\" \ + \"))))(Tile((id \ + ad84dbab-bb06-43c8-8920-1b9e5e8c9cd8)(label(list_of_mylist))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + cefbaa1c-b1dc-4728-a64d-1663b18eec41)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape(Concave 1))(sort \ + Exp))((shape Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 8dd0ee06-28a5-424b-93b3-2c269447b2fa)(label(x))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children()))))))))(Secondary((id \ + c24e59ed-e80f-4816-afcc-d222b126c80a)(content(Whitespace\" \ + \")))))))))(Secondary((id \ + 140a3fe3-246f-4a21-bf2d-aac3c7ea1eab)(content(Whitespace\" \ + \"))))(Secondary((id \ + d006bb40-713e-4973-9d8b-34ff0316612c)(content(Comment\"# \ + [1, 2, 3] #\"))))(Secondary((id \ + 2fff78bc-2182-4db7-bfa8-33fe02a69a5b)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 1096a58b-888f-47e9-9318-313d0f728a9c)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + 26bec031-02af-4b4d-967f-a3b8fa91866b)(content(Whitespace\"\\226\\143\\142\"))))(Secondary((id \ + ec44021a-5905-4176-8a43-e4b18ecee191)(content(Comment\"# \ + All output from examples: #\"))))(Secondary((id \ + a54fbe78-5b70-4bff-a1b0-f75d699e2d17)(content(Whitespace\"\\226\\143\\142\"))))(Tile((id \ + 7f3190eb-b200-4e27-b89e-64483682f7cb)(label(\"(\"\")\"))(mold((out \ + Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 \ + 1))(children(((Tile((id \ + 8a74a004-7d34-4e27-8fa7-bc1464a894d7)(label(ex1))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 4ecc4b06-6a0d-449d-a7a9-507babe76cf8)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + a14aabb1-2f9e-405f-a6b1-49e947e6f8f0)(content(Whitespace\" \ + \"))))(Tile((id \ + bb8c31bc-af07-43ea-aa54-cebe3b7fe4c7)(label(ex2))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + e365c1ab-868b-419e-96e8-c11185577df8)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + adc45428-7b5c-4e79-9f5d-a70170063fc5)(content(Whitespace\" \ + \"))))(Tile((id \ + f25fdd38-87ca-44b2-bd55-3b1c13e31c51)(label(ex3))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 848d336b-5c6a-4c2f-848d-474fdb03b8d7)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + 6dfa74ec-c592-42a4-a583-96e241120cef)(content(Whitespace\" \ + \"))))(Tile((id \ + 521e9214-e5ca-4c1d-995c-1d0b12a4aa20)(label(ex4))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))(Tile((id \ + 4a995d1a-3021-45dd-a4d7-13cff4af4385)(label(,))(mold((out \ + Exp)(in_())(nibs(((shape(Concave 14))(sort \ + Exp))((shape(Concave 14))(sort \ + Exp))))))(shards(0))(children())))(Secondary((id \ + f335f93b-9ff4-47f8-8043-301b1f88d1f7)(content(Whitespace\" \ + \"))))(Tile((id \ + 6d11e3ff-91bd-4a63-8233-0f2ff4c37428)(label(ex5))(mold((out \ + Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort \ + Exp))))))(shards(0))(children())))))))))()))(ancestors())))(caret \ + Outer))"; + backup_text = + "# Polymorphism #\n\n\ + # We can take types as parameters to type functions, #\n\ + # and use them in annoatations in the body: #\n\ + let id = typfun A -> fun x : A -> x in\n\n\ + # Such functions are applied like so: #\n\ + let ex1 = id@(1) in # 1 #\n\n\ + # We can annotate the type of a type function with a \ + forall. #\n\ + let const : forall A -> forall B -> A -> B -> A = \n\ + typfun A -> typfun B -> fun x -> fun y -> x in\n\ + let ex2 = const@@(2)(\"Hello World\") in \ + # 2 #\n\n\ + # We can go beyond rank 1 polymorphism: #\n\ + let apply_both : forall A -> forall B -> (forall D -> \ + D -> D) -> (A , B) -> (A , B) =\n\ + typfun A -> typfun B -> fun f -> fun (x, y) -> \ + (f@(x), f@(y)) in \n\ + let ex3 = apply_both@@(id)(3, \"Hello \ + World\") in # (3, \"Hello World\") # \n\n\ + # Finally, here is a more in-depth, yet applicable \ + example: polymorphic map #\n\ + let emptylist : forall A -> [A] = typfun A -> [] in # \ + polymorphic constant #\n\ + let map : forall A -> forall B -> (A -> B) -> ([A] -> \ + [B]) = \n\ + typfun A -> typfun B -> fun f : (A -> B) -> fun l : \ + [A] -> \n\ + case l\n\ + | h :: t => f(h) :: map@@(f)(t)\n\ + | _ => emptylist@ \n\ + end in\n\ + let ex4 = map@@(string_of_int)([1,2,3]) \ + in # [\"1\", \"2\", \"3\"] #\n\n\n\ + # Recursive types #\n\n\ + # We can express types that are the least fixed point \ + of #\n\ + # some type function with the rec keyword. #\n\ + type MyList = rec A -> (Nil + Cons(Int, A)) in\n\n\ + # Hazel does not (yet) support higher-kinded or \ + existential types, #\n\ + # So we cannot implement our own polymorphic lists. #\n\n\ + # Now anything that returns an element of the least \ + fixed point matches MyList. #\n\ + let x : MyList = Cons(1, Cons(2, Cons(3, Nil))) in\n\n\ + # Note that if the sum is the top level operator, #\n\ + # type aliases are implicitly least fixed points on \ + their own name: #\n\ + type MyList2 = Nil + Cons(Int, MyList2) in\n\ + type Broken = Int -> (HasInt(Int) + HasMore(Int, \ + Broken)) in \n\n\n\ + let list_of_mylist : (MyList -> [Int]) = fun myl : \ + MyList -> \n\ + case myl \n\ + | Nil => []\n\ + | Cons(h, t) => h :: list_of_mylist(t) \n\ + end in\n\ + let ex5 = list_of_mylist(x) in # [1, 2, 3] #\n\n\n\ + # All output from examples: #\n\ + (ex1, ex2, ex3, ex4, ex5)"; + }; + hints = []; + }; } ); - ( "Expressive Programming", + ( "Programming Expressively", { - zipper = - "((selection((focus Left)(content())(mode \ - Normal)))(backpack())(relatives((siblings(()((Grout((id \ - 527b01da-5acd-4de7-99a0-02510f2fbe0f)(shape \ - Convex))))))(ancestors())))(caret Outer))"; - backup_text = " "; + title = ""; + description = ""; + hidden_tests = + { + tests = + { + zipper = + "((selection((focus Left)(content())(mode \ + Normal)))(backpack())(relatives((siblings(()((Grout((id \ + 73cb2f1d-94b4-42eb-9d77-a832748556b0)(shape \ + Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + }; + hints = []; + }; } ); - ( "Composing Expressions", + ( "Composing Arithmetic Expressions", { - zipper = - "((selection((focus Left)(content())(mode \ - Normal)))(backpack())(relatives((siblings(()((Grout((id \ - 3767c92f-8a0e-4b82-8407-7e33c55a07be)(shape \ - Convex))))))(ancestors())))(caret Outer))"; - backup_text = " "; + title = ""; + description = ""; + hidden_tests = + { + tests = + { + zipper = + "((selection((focus Left)(content())(mode \ + Normal)))(backpack())(relatives((siblings(()((Grout((id \ + 41444a61-1cf6-408b-82c6-464f3ca6750e)(shape \ + Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + }; + hints = []; + }; } ); ( "Computing Equationally", { - zipper = - "((selection((focus Left)(content())(mode \ - Normal)))(backpack())(relatives((siblings(()((Grout((id \ - 293ef06a-03d2-4770-8282-f6bbc4aeea08)(shape \ - Convex))))))(ancestors())))(caret Outer))"; - backup_text = " "; + title = ""; + description = ""; + hidden_tests = + { + tests = + { + zipper = + "((selection((focus Left)(content())(mode \ + Normal)))(backpack())(relatives((siblings(()((Grout((id \ + c7e3b9bd-efaa-41f2-800d-9986a6e814d6)(shape \ + Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + }; + hints = []; + }; } ); ( "Variables", { - zipper = - "((selection((focus Left)(content())(mode \ - Normal)))(backpack())(relatives((siblings(()((Grout((id \ - 878e0a53-88e7-489c-8f30-b60405bb8eb7)(shape \ - Convex))))))(ancestors())))(caret Outer))"; - backup_text = " "; + title = ""; + description = ""; + hidden_tests = + { + tests = + { + zipper = + "((selection((focus Left)(content())(mode \ + Normal)))(backpack())(relatives((siblings(()((Grout((id \ + 92e68905-30cc-415b-b920-6323180c56d1)(shape \ + Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + }; + hints = []; + }; } ); ( "Compositionality", { - zipper = - "((selection((focus Left)(content())(mode \ - Normal)))(backpack())(relatives((siblings(()((Grout((id \ - 67f58c5b-14f7-4b5d-9478-1e66a9bb97ba)(shape \ - Convex))))))(ancestors())))(caret Outer))"; - backup_text = " "; + title = ""; + description = ""; + hidden_tests = + { + tests = + { + zipper = + "((selection((focus Left)(content())(mode \ + Normal)))(backpack())(relatives((siblings(()((Grout((id \ + 661cbe22-ffdc-4fa3-b227-f7b56a1c8ed6)(shape \ + Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + }; + hints = []; + }; } ); ( "Scope", { - zipper = - "((selection((focus Left)(content())(mode \ - Normal)))(backpack())(relatives((siblings(()((Grout((id \ - a48ecbfe-f027-4482-b40c-d59c7a79b52e)(shape \ - Convex))))))(ancestors())))(caret Outer))"; - backup_text = " "; + title = ""; + description = ""; + hidden_tests = + { + tests = + { + zipper = + "((selection((focus Left)(content())(mode \ + Normal)))(backpack())(relatives((siblings(()((Grout((id \ + f213697c-e203-41c4-8888-fc12e3ac46bf)(shape \ + Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + }; + hints = []; + }; } ); ( "Shadowing", { - zipper = - "((selection((focus Left)(content())(mode \ - Normal)))(backpack())(relatives((siblings(()((Grout((id \ - fa020b7e-8025-47eb-b6ce-5b5797358e67)(shape \ - Convex))))))(ancestors())))(caret Outer))"; - backup_text = " "; + title = ""; + description = ""; + hidden_tests = + { + tests = + { + zipper = + "((selection((focus Left)(content())(mode \ + Normal)))(backpack())(relatives((siblings(()((Grout((id \ + 3d8e1707-1e20-4160-946e-73cdb9e98ee1)(shape \ + Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + }; + hints = []; + }; } ); ( "Booleans and Types", { - zipper = - "((selection((focus Left)(content())(mode \ - Normal)))(backpack())(relatives((siblings(()((Grout((id \ - c19d2704-759a-401a-af23-b6c5263f7c7b)(shape \ - Convex))))))(ancestors())))(caret Outer))"; - backup_text = " "; + title = ""; + description = ""; + hidden_tests = + { + tests = + { + zipper = + "((selection((focus Left)(content())(mode \ + Normal)))(backpack())(relatives((siblings(()((Grout((id \ + f49430b2-1265-4e87-a6d6-795eb57c37f8)(shape \ + Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + }; + hints = []; + }; } ); ( "Conditional Expressions", { - zipper = - "((selection((focus Left)(content())(mode \ - Normal)))(backpack())(relatives((siblings(()((Grout((id \ - 5eb4e750-954c-46e7-a785-d8af9e1b8e40)(shape \ - Convex))))))(ancestors())))(caret Outer))"; - backup_text = " "; + title = ""; + description = ""; + hidden_tests = + { + tests = + { + zipper = + "((selection((focus Left)(content())(mode \ + Normal)))(backpack())(relatives((siblings(()((Grout((id \ + e2b7d6b9-5b95-4fad-9278-60097f30375f)(shape \ + Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + }; + hints = []; + }; } ); ( "Functions", { - zipper = - "((selection((focus Left)(content())(mode \ - Normal)))(backpack())(relatives((siblings(()((Grout((id \ - a1407558-57b7-45ea-b4d6-83771ae62b46)(shape \ - Convex))))))(ancestors())))(caret Outer))"; - backup_text = " "; + title = ""; + description = ""; + hidden_tests = + { + tests = + { + zipper = + "((selection((focus Left)(content())(mode \ + Normal)))(backpack())(relatives((siblings(()((Grout((id \ + b60e7d0e-e290-4b23-b03c-7fe121fb5dcd)(shape \ + Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + }; + hints = []; + }; } ); ], [ diff --git a/src/haz3lweb/ScratchSlide.re b/src/haz3lweb/ScratchSlide.re index 554beab53d..518fb59ff8 100644 --- a/src/haz3lweb/ScratchSlide.re +++ b/src/haz3lweb/ScratchSlide.re @@ -1,20 +1,49 @@ open Haz3lcore; +open Util; [@deriving (show({with_path: false}), sexp, yojson)] -type state = Editor.t; +type hidden_tests('code) = { + tests: 'code, + hints: list(string), +}; + +[@deriving (show({with_path: false}), sexp, yojson)] +type p('code) = { + title: string, + description: string, + hidden_tests: hidden_tests('code), +}; + +[@deriving (show({with_path: false}), sexp, yojson)] +type state = p(Editor.t); [@deriving (show({with_path: false}), sexp, yojson)] -type persistent_state = PersistentZipper.t; +type persistent_state = p(PersistentZipper.t); let scratch_key = n => "scratch_" ++ n; -let persist = (editor: Editor.t): persistent_state => { - PersistentZipper.persist(editor.state.zipper); +let persist = (state: state): persistent_state => { + { + title: state.title, + description: state.description, + hidden_tests: { + tests: PersistentZipper.persist(state.hidden_tests.tests.state.zipper), + hints: state.hidden_tests.hints, + }, + }; }; let unpersist = (zipper: persistent_state, ~settings: CoreSettings.t): state => { - let zipper = PersistentZipper.unpersist(zipper); - Editor.init(zipper, ~read_only=false, ~settings); + let editor_zipped = PersistentZipper.unpersist(zipper.hidden_tests.tests); + let editor = Editor.init(editor_zipped, ~read_only=false, ~settings); + { + title: zipper.title, + description: zipper.description, + hidden_tests: { + tests: editor, + hints: zipper.hidden_tests.hints, + }, + }; }; let serialize = (state: state): string => { diff --git a/src/haz3lweb/ScratchSlidesInit.re b/src/haz3lweb/ScratchSlidesInit.re index 00720b0bd9..84af43bc72 100644 --- a/src/haz3lweb/ScratchSlidesInit.re +++ b/src/haz3lweb/ScratchSlidesInit.re @@ -1,8 +1,15 @@ let filled_slides = []; let empty: ScratchSlide.persistent_state = { - zipper: "((selection((focus Left)(content())))(backpack())(relatives((siblings(()((Grout((id 0)(shape Convex))))))(ancestors())))(caret Outer))", - backup_text: "", + title: "", + description: "", + hidden_tests: { + tests: { + zipper: "((selection((focus Left)(content())))(backpack())(relatives((siblings(()((Grout((id 0)(shape Convex))))))(ancestors())))(caret Outer))", + backup_text: "", + }, + hints: [], + }, }; let num_empty = 8; diff --git a/src/haz3lweb/Store.re b/src/haz3lweb/Store.re index f30a18ab85..c8d6628357 100644 --- a/src/haz3lweb/Store.re +++ b/src/haz3lweb/Store.re @@ -115,7 +115,7 @@ module Scratch = { type persistent = PersistentData.scratch; [@deriving (show({with_path: false}), sexp, yojson)] - type t = (int, list(Editor.t), ModelResults.M.t(ModelResult.t)); + type t = (int, list(ScratchSlide.state), ModelResults.M.t(ModelResult.t)); let to_persistent = ((idx, slides, results)): persistent => ( idx, @@ -184,7 +184,7 @@ module Documentation = { [@deriving (show({with_path: false}), sexp, yojson)] type t = ( string, - list((string, Editor.t)), + list((string, ScratchSlide.state)), ModelResults.M.t(ModelResult.t), ); @@ -197,19 +197,49 @@ module Documentation = { (name, Editor.init(zipper, ~read_only=false, ~settings)); }; - let to_persistent = ((string, slides, results)): persistent => ( - string, - List.map(persist, slides), + let to_persistent = ((doc_name, slides, results)): persistent => ( + doc_name, + List.map( + ((name, editor): (string, Editor.t)) => { + let persistent_slide: ScratchSlide.persistent_state = { + title: name, + description: "Description for " ++ name, + hidden_tests: { + tests: PersistentZipper.persist(editor.state.zipper), + hints: [], + }, + }; + (name, persistent_slide); + }, + slides, + ), results |> ModelResults.map(ModelResult.to_persistent) |> ModelResults.bindings, ); let of_persistent = - (~settings: CoreSettings.t, (string, slides, results): persistent): t => { + (~settings: CoreSettings.t, (id, slides, results): persistent): t => { + let convert_to_editor_tuple = + ((name, slide): (string, ScratchSlide.persistent_state)) + : (string, ScratchSlide.state) => { + let zipper = PersistentZipper.unpersist(slide.hidden_tests.tests); + let editor = Editor.init(zipper, ~read_only=false, ~settings); + + let state: ScratchSlide.state = { + title: slide.title, + description: slide.description, + hidden_tests: { + tests: editor, + hints: slide.hidden_tests.hints, + }, + }; + (name, state); + }; + ( - string, - List.map(unpersist(~settings), slides), + id, + List.map(convert_to_editor_tuple, slides), results |> List.to_seq |> ModelResults.of_seq @@ -220,7 +250,21 @@ module Documentation = { }; let serialize = (slides: t): string => { - slides |> to_persistent |> sexp_of_persistent |> Sexplib.Sexp.to_string; + let (id, slides_with_ids, results) = slides; + + let slides_as_editors = + List.map( + ((name, slide: ScratchSlide.state)) => { + let editor = slide.hidden_tests.tests; + (name, editor); + }, + slides_with_ids, + ); + + (id, slides_as_editors, results) + |> to_persistent + |> sexp_of_persistent + |> Sexplib.Sexp.to_string; }; let deserialize = (~settings: CoreSettings.t, data: string): t => { diff --git a/src/haz3lweb/Update.re b/src/haz3lweb/Update.re index 1aacb159f3..fd6e8983c6 100644 --- a/src/haz3lweb/Update.re +++ b/src/haz3lweb/Update.re @@ -318,20 +318,57 @@ let switch_exercise_editor = state. The latter is intentional as we don't want to persist this between users. The former is a TODO, currently difficult due to the more complex architecture of Exercises. */ +let to_persistent_documentation = + (docs: Store.Documentation.t): PersistentData.documentation => { + let (doc_name, slides_with_ids, results) = docs; + + let convert_slide = + (slide: ScratchSlide.state): ScratchSlide.persistent_state => { + { + title: slide.title, + description: slide.description, + hidden_tests: + // Persisting the tests correctly + { + tests: + PersistentZipper.persist(slide.hidden_tests.tests.state.zipper), + hints: slide.hidden_tests.hints, + }, + }; + }; + + let persistent_slides = + List.map( + ((id, slide): (string, ScratchSlide.state)) => + (id, convert_slide(slide)), + slides_with_ids, + ); + + let persistent_results = + ModelResults.bindings(results) + |> List.map(((key, result)) => + (key, ModelResult.to_persistent(result)) + ); + + (doc_name, persistent_slides, persistent_results); +}; + let export_persistent_data = () => { - // TODO Is this parsing and reserializing? let settings = Store.Settings.load(); + let data: PersistentData.t = { documentation: Store.Documentation.load(~settings=settings.core) - |> Store.Documentation.to_persistent, + |> to_persistent_documentation, scratch: Store.Scratch.load(~settings=settings.core) |> Store.Scratch.to_persistent, settings, }; + let contents = "let startup : PersistentData.t = " ++ PersistentData.show(data); + JsUtil.download_string_file( ~filename="Init.ml", ~content_type="text/plain", @@ -339,8 +376,19 @@ let export_persistent_data = () => { ); print_endline("INFO: Persistent data exported to Init.ml"); }; + let export_scratch_slide = (editor: Editor.t): unit => { - let json_data = ScratchSlide.export(editor); + let scratch_slide: ScratchSlide.state = { + title: "", + description: "", + hidden_tests: { + tests: editor, + hints: [], + }, + }; + + // Export the slide as JSON + let json_data = ScratchSlide.export(scratch_slide); JsUtil.download_json("hazel-scratchpad", json_data); }; From 3f1838ef1e64d095ab272569e2588d5723b54e8c Mon Sep 17 00:00:00 2001 From: reevafaisal Date: Thu, 31 Oct 2024 10:21:26 -0400 Subject: [PATCH 02/11] copied over everything for tutorial state - small bug in saving --- src/haz3lschool/Tutorial.re | 675 ++++++++++++++++++++++++++++ src/haz3lweb/Editors.re | 106 ++++- src/haz3lweb/Init.ml | 322 ++++++++++++- src/haz3lweb/Log.re | 2 + src/haz3lweb/Model.re | 11 + src/haz3lweb/PersistentData.re | 8 + src/haz3lweb/Settings.re | 2 + src/haz3lweb/SlideContent.re | 38 +- src/haz3lweb/Store.re | 161 +++++++ src/haz3lweb/Tutorial.re | 10 + src/haz3lweb/Update.re | 41 ++ src/haz3lweb/UpdateAction.re | 8 + src/haz3lweb/view/EditorModeView.re | 59 ++- src/haz3lweb/view/NutMenu.re | 4 + src/haz3lweb/view/Page.re | 29 ++ src/haz3lweb/view/TutorialMode.re | 187 ++++++++ 16 files changed, 1632 insertions(+), 31 deletions(-) create mode 100644 src/haz3lschool/Tutorial.re create mode 100644 src/haz3lweb/Tutorial.re create mode 100644 src/haz3lweb/view/TutorialMode.re diff --git a/src/haz3lschool/Tutorial.re b/src/haz3lschool/Tutorial.re new file mode 100644 index 0000000000..66caf264c4 --- /dev/null +++ b/src/haz3lschool/Tutorial.re @@ -0,0 +1,675 @@ +open Util; +open Haz3lcore; + +module type TutorialEnv = { + type node; + let default: node; + let output_header: string => string; +}; + +let output_header_grading = _module_name => + "module Documentation = GradePrelude.Documentation\n" ++ "let prompt = ()\n"; + +module D = (TutorialEnv: TutorialEnv) => { + [@deriving (show({with_path: false}), sexp, yojson)] + type wrong_impl('code) = { + impl: 'code, + hint: string, + }; + + [@deriving (show({with_path: false}), sexp, yojson)] + type hidden_tests('code) = { + tests: 'code, + hints: list(string), + }; + + [@deriving (show({with_path: false}), sexp, yojson)] + type hint = string; + + [@deriving (show({with_path: false}), sexp, yojson)] + type your_tests('code) = { + tests: 'code, + required: int, + provided: int, + }; + + [@deriving (show({with_path: false}), sexp, yojson)] + type point_distribution = { + test_validation: int, + mutation_testing: int, + impl_grading: int, + }; + + let validate_point_distribution = + ({test_validation, mutation_testing, impl_grading}: point_distribution) => + test_validation + mutation_testing + impl_grading == 100 + ? () : failwith("Invalid point distribution in tutorial."); + + [@deriving (show({with_path: false}), sexp, yojson)] + type p('code) = { + title: string, + description: string, + your_impl: 'code, + hidden_tests: hidden_tests('code), + }; + + [@deriving (show({with_path: false}), sexp, yojson)] + type key = string; + + let key_of_string = (p): string => { + p.title; + }; + + let key_of = p => { + p.title; + }; + + let find_key_opt = (key, specs: list(p('code))) => { + specs |> Util.ListUtil.findi_opt(spec => key_of(spec) == key); + }; + + [@deriving (show({with_path: false}), sexp, yojson)] + type pos = + | YourImpl + | HiddenTests; + + [@deriving (show({with_path: false}), sexp, yojson)] + type spec = p(Zipper.t); + + [@deriving (show({with_path: false}), sexp, yojson)] + type transitionary_spec = p(CodeString.t); + + let map = (p: p('a), f: 'a => 'b): p('b) => { + { + title: p.title, + description: p.description, + your_impl: f(p.your_impl), + hidden_tests: { + tests: PersistentZipper.persist(p.hidden_tests.tests), + hints: p.hidden_tests.hints, + }, + }; + }; + + [@deriving (show({with_path: false}), sexp, yojson)] + type eds = p(Editor.t); + + [@deriving (show({with_path: false}), sexp, yojson)] + type state = { + pos, + eds, + }; + + let key_of_state = ({eds, _}) => key_of(eds); + + [@deriving (show({with_path: false}), sexp, yojson)] + type persistent_state = { + focus: pos, + title: string, + description: string, + editors: list((pos, PersistentZipper.t)), + }; + + let editor_of_state: state => Editor.t = + ({pos, eds, _}) => + switch (pos) { + | YourImpl => eds.your_impl + | HiddenTests => eds.hidden_tests.tests + }; + + let put_editor = ({pos, eds} as state: state, editor: Editor.t) => + switch (pos) { + | YourImpl => { + ...state, + eds: { + ...eds, + your_impl: editor, + }, + } + | HiddenTests => { + ...state, + eds: { + ...eds, + hidden_tests: { + ...eds.hidden_tests, + tests: editor, + }, + }, + } + }; + + let editors = ({eds, _}: state) => [ + eds.your_impl, + eds.hidden_tests.tests, + ]; + + let editor_positions = [YourImpl, HiddenTests]; + + let positioned_editors = state => + List.combine(editor_positions, editors(state)); + + let idx_of_pos = (pos, p: p('code)) => + switch (pos) { + | YourImpl => 0 + + | HiddenTests => 0 + List.length(p.hidden_tests.tests) // NEED TO FIGURE OUT HOW TO ACTUALLY MAKE THIS WORK + }; + + let pos_of_idx = (p: p('code), idx: int) => + switch (idx) { + | 0 => YourImpl + | _ => + if (idx < 0) { + failwith( + "negative idx", + // } else if (idx < 5 + List.length(p.hidden_bugs)) { + // HiddenBugs(idx - 5); + ); + } else if (idx == 0 + (+ List.length(p.hidden_tests.tests))) { + HiddenTests; + } else { + failwith("element idx"); + } + }; + + let switch_editor = (~pos, instructor_mode, ~documentation) => + if (!instructor_mode) { + switch (pos) { + | HiddenTests + | _ => {eds: documentation.eds, pos} + }; + } else { + {eds: documentation.eds, pos}; + }; + + let zipper_of_code = code => { + switch (Printer.zipper_of_string(code)) { + | None => failwith("Transition failed.") + | Some(zipper) => zipper + }; + }; + + let transition: transitionary_spec => spec = + ({title, description, your_impl, hidden_tests}) => { + let your_impl = zipper_of_code(your_impl); + let hidden_tests = { + let {tests, hints} = hidden_tests; + let tests = zipper_of_code(tests); + {tests, hints}; + }; + {title, description, your_impl, hidden_tests}; + }; + + let transition: transitionary_spec => spec = + ({title, description, your_impl, hidden_tests}) => { + let your_impl = zipper_of_code(your_impl); + + let hidden_tests = { + let {tests, hints} = hidden_tests; + let tests = zipper_of_code(tests); + {tests, hints}; + }; + {title, description, your_impl, hidden_tests}; + }; + + let eds_of_spec = + ( + {title, description, your_impl, hidden_tests}, + ~settings: CoreSettings.t, + ) + : eds => { + let editor_of_serialization = Editor.init(~settings); + let your_impl = editor_of_serialization(your_impl); + let hidden_tests = { + let {tests, hints} = hidden_tests; + let tests = editor_of_serialization(tests); + {tests, hints}; + }; + {title, description, your_impl, hidden_tests}; + }; + + let set_instructor_mode = ({eds, _} as state: state, new_mode: bool) => { + let updated_hidden_tests = { + ...eds.hidden_tests, + tests: Editor.set_read_only(eds.hidden_tests.tests, !new_mode), + }; + + { + ...state, + eds: { + ...eds, + hidden_tests: updated_hidden_tests, + }, + }; + }; + + let visible_in = (pos, ~instructor_mode) => { + switch (pos) { + | YourImpl => true + | HiddenTests => instructor_mode + }; + }; + + let state_of_spec = + (spec, ~instructor_mode: bool, ~settings: CoreSettings.t): state => { + let eds = eds_of_spec(~settings, spec); + set_instructor_mode({pos: YourImpl, eds}, instructor_mode); + }; + + let persistent_state_of_state = (state: state, ~instructor_mode: bool) => { + let zippers = + positioned_editors(state) + |> List.filter(((pos, _)) => visible_in(pos, ~instructor_mode)) + |> List.map(((pos, editor)) => { + (pos, PersistentZipper.persist(Editor.(editor.state.zipper))) + }); + { + focus: state.pos, + editors: zippers, + title: state.eds.title, + description: state.eds.description, + }; + }; + + let unpersist_state = + ( + {focus, editors, _}: persistent_state, + ~spec: spec, + ~instructor_mode: bool, + ~settings: CoreSettings.t, + ) + // ~editing_title: bool, + : state => { + let lookup = (pos, default) => + if (visible_in(pos, ~instructor_mode)) { + let persisted_zipper = List.assoc(pos, editors); + let zipper = PersistentZipper.unpersist(persisted_zipper); + // Ensure that zipper is the correct type for Editor.init + Editor.init(zipper, ~read_only=false, ~settings); // Pass required settings if needed + } else { + Editor.init( + default, + ~read_only=false, + ~settings // Use a default that matches + ); + }; + let your_impl = lookup(YourImpl, spec.your_impl); + let hidden_tests_tests = lookup(HiddenTests, spec.hidden_tests.tests); + + set_instructor_mode( + { + pos: focus, + eds: { + title: spec.title, + description: spec.description, + your_impl, + hidden_tests: { + tests: hidden_tests_tests, + hints: spec.hidden_tests.hints, + }, + }, + }, + instructor_mode, + ); + }; + + // # Stitching + + // module TermItem = { + // type t = { + // term: TermBase.UExp.t, + // term_ranges: TermRanges.t, + // }; + // }; + + // module StaticsItem = { + // type t = CachedStatics.statics; + // }; + + type stitched('a) = { + user_impl: 'a, // prelude + your_impl + instructor: 'a, // prelude + correct_impl + hidden_tests.tests // TODO only needs to run in instructor mode + hidden_tests: 'a, + }; + + let wrap_filter = (act: FilterAction.action, term: UExp.t): UExp.t => + Exp.{ + term: + Exp.Filter( + Filter({ + act: FilterAction.(act, One), + pat: { + term: Constructor("$e", Unknown(Internal) |> Typ.temp), + copied: false, + ids: [Id.mk()], + }, + }), + term, + ), + copied: false, + ids: [Id.mk()], + }; + + // let wrap = (term, editor: Editor.t): TermItem.t => { + // term, + // term_ranges: editor.state.meta.term_ranges, + // }; + + let term_of = (editor: Editor.t): UExp.t => + MakeTerm.from_zip_for_sem(editor.state.zipper).term; + + let stitch3 = (ed1: Editor.t, ed2: Editor.t, ed3: Editor.t) => + EditorUtil.append_exp( + EditorUtil.append_exp(term_of(ed1), term_of(ed2)), + term_of(ed3), + ); + + let stitch1 = (ed1: Editor.t) => + // EditorUtil.append_exp( + EditorUtil.append_exp(term_of(ed1)); + + let stitch_term = ({eds, _}: state): stitched(UExp.t) => { + let instructor = eds.hidden_tests.tests |> term_of; + let user_impl_term = { + eds.your_impl |> term_of |> wrap_filter(FilterAction.Step); + }; + + // No combining of your_impl_term with hidden_tests + let hidden_tests_term = + EditorUtil.append_exp(user_impl_term, term_of(eds.hidden_tests.tests)); + + {user_impl: user_impl_term, instructor, hidden_tests: hidden_tests_term}; + }; + + let stitch_term = Core.Memo.general(stitch_term); + + type stitched_statics = stitched(Editor.CachedStatics.t); + + /* Multiple stitchings are needed for each exercise + (see comments in the stitched type above) + + Stitching is necessary to concatenate terms + from different editors, which are then typechecked. */ + + let stitch_static = + (settings: CoreSettings.t, t: stitched(UExp.t)): stitched_statics => { + let mk = (term: UExp.t): Editor.CachedStatics.t => { + let info_map = Statics.mk(settings, Builtins.ctx_init, term); + {term, error_ids: Statics.Map.error_ids(info_map), info_map}; + }; + let instructor = mk(t.instructor); + { + user_impl: mk(t.user_impl), + instructor, + hidden_tests: mk(t.hidden_tests), + }; + }; + + let stitch_static = Core.Memo.general(stitch_static); + + // let statics_of_stiched = + // (state: state, s: stitched(StaticsItem.t)): StaticsItem.t => + // switch (state.pos) { + // | YourImpl => s.user_impl + // | HiddenTests => s.hidden_tests + // }; + + // let statics_of = (~settings, documentation: state): StaticsItem.t => + // documentation + // |> stitch_term + // |> stitch_static(settings) + // |> statics_of_stiched(documentation); + + let prelude_key = "prelude"; + let test_validation_key = "test_validation"; + let user_impl_key = "user_impl"; + let user_tests_key = "user_tests"; + let instructor_key = "instructor"; + let hidden_bugs_key = n => "hidden_bugs_" ++ string_of_int(n); + let hidden_tests_key = "hidden_tests"; + + let key_for_statics = (state: state): string => + switch (state.pos) { + | YourImpl => user_impl_key + | HiddenTests => hidden_tests_key + }; + + let spliced_elabs = + (settings: CoreSettings.t, state: state) + : list((ModelResults.key, Elaborator.Elaboration.t)) => { + let {user_impl, instructor, hidden_tests} = + stitch_static(settings, stitch_term(state)); + let elab = (s: Editor.CachedStatics.t): Elaborator.Elaboration.t => { + d: Interface.elaborate(~settings, s.info_map, s.term), + }; + [ + (user_impl_key, elab(user_impl)), + (instructor_key, elab(instructor)), + (hidden_tests_key, elab(hidden_tests)), + ]; + // @ ( + // hidden_bugs + // |> List.mapi((n, hidden_bug: Editor.CachedStatics.t) => + // (hidden_bugs_key(n), elab(hidden_bug)) + // ) + // ); + }; + + module DynamicsItem = { + type t = { + statics: Editor.CachedStatics.t, + result: ModelResult.t, + }; + let empty: t = {statics: Editor.CachedStatics.empty, result: NoElab}; + let statics_only = (statics: Editor.CachedStatics.t): t => { + statics, + result: NoElab, + }; + }; + + let statics_of_stiched_dynamics = + (state: state, s: stitched(DynamicsItem.t)): Editor.CachedStatics.t => + switch (state.pos) { + | YourImpl => s.user_impl.statics + | HiddenTests => s.hidden_tests.statics + }; + + /* Given the evaluation results, collects the + relevant information for producing dynamic + feedback*/ + let stitch_dynamic = + ( + settings: CoreSettings.t, + state: state, + results: option(ModelResults.t), + ) + : stitched(DynamicsItem.t) => { + let { + // test_validation, + user_impl, + // user_tests, + // prelude, + instructor, + // hidden_bugs, + hidden_tests, + } = + stitch_static(settings, stitch_term(state)); + let result_of = key => + switch (results) { + | None => ModelResult.NoElab + | Some(results) => + ModelResults.lookup(results, key) + |> Option.value(~default=ModelResult.NoElab) + }; + + let user_impl = + DynamicsItem.{statics: user_impl, result: result_of(user_impl_key)}; + + let instructor = + DynamicsItem.{statics: instructor, result: result_of(instructor_key)}; + + let hidden_tests = + DynamicsItem.{ + statics: hidden_tests, + result: result_of(hidden_tests_key), + }; + { + // test_validation, + user_impl, + // user_tests, + instructor, + // prelude, + // hidden_bugs, + hidden_tests, + }; + }; + + let stitch_dynamic = + ( + settings: CoreSettings.t, + state: state, + results: option(ModelResults.t), + ) + : stitched(DynamicsItem.t) => + if (settings.statics && settings.dynamics) { + stitch_dynamic(settings, state, results); + } else if (settings.statics) { + let t = stitch_static(settings, stitch_term(state)); + { + // test_validation: DynamicsItem.statics_only(t.test_validation), + user_impl: DynamicsItem.statics_only(t.user_impl), + // user_tests: DynamicsItem.statics_only(t.user_tests), + instructor: DynamicsItem.statics_only(t.instructor), + // prelude: DynamicsItem.statics_only(t.prelude), + // hidden_bugs: List.map(DynamicsItem.statics_only, t.hidden_bugs), + hidden_tests: DynamicsItem.statics_only(t.hidden_tests), + }; + } else { + { + // test_validation: DynamicsItem.empty, + user_impl: DynamicsItem.empty, + // user_tests: DynamicsItem.empty, + instructor: DynamicsItem.empty, + // prelude: DynamicsItem.empty, + // hidden_bugs: + // List.init(List.length(state.eds.hidden_bugs), _ => + // DynamicsItem.empty + // ), + hidden_tests: DynamicsItem.empty, + }; + }; + let stitch_dynamic = Core.Memo.general(stitch_dynamic); + + // Module Export + + let editor_pp = (fmt, editor: Editor.t) => { + let zipper = editor.state.zipper; + let serialization = Zipper.show(zipper); + // let string_literal = "\"" ++ String.escaped(serialization) ++ "\""; + Format.pp_print_string(fmt, serialization); + }; + + let export_module = (module_name, {eds, _}: state) => { + let prefix = + "let prompt = " + ++ module_name + ++ "_prompt.prompt\n" + ++ "let exercise: Exercise.spec = "; + let record = show_p(editor_pp, eds); + let data = prefix ++ record ++ "\n"; + data; + }; + + let transitionary_editor_pp = (fmt, editor: Editor.t) => { + let zipper = editor.state.zipper; + let code = Printer.to_string_basic(zipper); + Format.pp_print_string(fmt, "\"" ++ String.escaped(code) ++ "\""); + }; + + let export_transitionary_module = (module_name, {eds, _}: state) => { + let prefix = + "let prompt = " + ++ module_name + ++ "_prompt.prompt\n" + ++ "let exercise: Exercise.spec = Exercise.transition("; + let record = show_p(transitionary_editor_pp, eds); + let data = prefix ++ record ++ ")\n"; + data; + }; + + let export_grading_module = (module_name, {eds, _}: state) => { + let header = output_header_grading(module_name); + let prefix = "let exercise: Exercise.spec = "; + let record = show_p(editor_pp, eds); + let data = header ++ prefix ++ record ++ "\n"; + data; + }; + + let blank_spec = (~title, ~description) => { + // ~point_distribution, + // ~required_tests, + // ~provided_tests, + // ~num_wrong_impls, + + // let prelude = Zipper.next_blank(); + // let correct_impl = Zipper.next_blank(); + // let your_tests_tests = Zipper.next_blank(); + let your_impl = Zipper.next_blank(); + // let hidden_bugs = + // List.init( + // num_wrong_impls, + // i => { + // let zipper = Zipper.next_blank(); + // {impl: zipper, hint: "TODO: hint " ++ string_of_int(i)}; + // }, + // ); + let hidden_tests_tests = Zipper.next_blank(); + { + title, + description, + // version: 1, + // module_name, + // prompt: ExerciseEnv.default, + // point_distribution, + // prelude, + // correct_impl, + // your_tests: { + // tests: your_tests_tests, + // required: required_tests, + // provided: provided_tests, + // }, + your_impl, + // hidden_bugs, + hidden_tests: { + tests: hidden_tests_tests, + hints: [], + }, + // syntax_tests: [], + }; + }; + + // From Store + + [@deriving (show({with_path: false}), sexp, yojson)] + type exercise_export = { + cur_exercise: key, + exercise_data: list((key, persistent_state)), + }; + + let serialize_exercise = (exercise, ~instructor_mode) => { + persistent_state_of_state(exercise, ~instructor_mode) + |> sexp_of_persistent_state + |> Sexplib.Sexp.to_string; + }; + + let deserialize_exercise = (data, ~spec, ~instructor_mode) => { + data + |> Sexplib.Sexp.of_string + |> persistent_state_of_sexp + |> unpersist_state(~spec, ~instructor_mode); + }; + + let deserialize_exercise_export = data => { + data |> Sexplib.Sexp.of_string |> exercise_export_of_sexp; + }; +}; diff --git a/src/haz3lweb/Editors.re b/src/haz3lweb/Editors.re index f47e95cbdc..ec0dfecc08 100644 --- a/src/haz3lweb/Editors.re +++ b/src/haz3lweb/Editors.re @@ -14,6 +14,7 @@ type exercises = (int, list(Exercise.spec), Exercise.state); type t = | Scratch(int, list(ScratchSlide.state)) | Documentation(string, list((string, ScratchSlide.state))) + | Tutorial(string, list((string, Tutorial.state))) | Exercises(int, list(Exercise.spec), Exercise.state); let get_editor = (editors: t): Editor.t => @@ -24,9 +25,16 @@ let get_editor = (editors: t): Editor.t => | Documentation(name, slides) => assert(List.mem_assoc(name, slides)); List.assoc(name, slides).hidden_tests.tests; + | Tutorial(name, slides) => + assert(List.mem_assoc(name, slides)); + let slide_state = List.assoc(name, slides); + Tutorial.editor_of_state(slide_state); | Exercises(_, _, exercise) => Exercise.editor_of_state(exercise) }; +let update_assoc = ((k, v), lst) => + List.map(((k', v')) => k == k' ? (k, v) : (k', v'), lst); + let put_editor = (ed: Editor.t, eds: t): t => switch (eds) { | Scratch(n, slides) => @@ -43,19 +51,56 @@ let put_editor = (ed: Editor.t, eds: t): t => Scratch(n, Util.ListUtil.put_nth(n, updatedSlide, slides)); | Documentation(name, slides) => assert(List.mem_assoc(name, slides)); - let originalSlide = List.assoc(name, slides); - let updatedSlide: ScratchSlide.state = { - title: originalSlide.title, - description: originalSlide.description, + // let originalSlide = List.assoc(name, slides); + // let updatedSlide: ScratchSlide.state = { + // title: originalSlide.title, + // description: originalSlide.description, + // hidden_tests: { + // tests: ed, + // hints: originalSlide.hidden_tests.hints, + // }, + // }; + // Documentation( + // name, + // slides |> ListUtil.update_assoc((name, updatedSlide)), + // ); + let new_ed: ScratchSlide.state = { + title: "", + description: "", hidden_tests: { tests: ed, - hints: originalSlide.hidden_tests.hints, + hints: [], }, }; - Documentation( - name, - slides |> ListUtil.update_assoc((name, updatedSlide)), - ); + Documentation(name, slides |> update_assoc((name, new_ed))); + + | Tutorial(name, slides) => + assert(List.mem_assoc(name, slides)); + + // Function to update the slide based on `editor` + let update_slide = + (hint: string, state: Tutorial.state): (string, Tutorial.state) => + if (hint == name) { + print_endline(hint); + print_endline(name); + + let updatedState = Tutorial.put_editor(state, ed); + + (hint, updatedState); + } else { + (hint, state); + }; + + let updatedSlides = + List.map( + slide => { + let (hint, state) = slide; + update_slide(hint, state); + }, + slides, + ); + + Tutorial(name, updatedSlides); | Exercises(n, specs, exercise) => Exercises(n, specs, Exercise.put_editor(exercise, ed)) }; @@ -91,6 +136,7 @@ let get_ctx_init = (~settings as _: Settings.t, editors: t): Ctx.t => | Scratch(_) | Exercises(_) | Documentation(_) => Builtins.ctx_init + | Tutorial(_) => Builtins.ctx_init }; let get_env_init = (~settings as _: Settings.t, editors: t): Environment.t => @@ -98,6 +144,7 @@ let get_env_init = (~settings as _: Settings.t, editors: t): Environment.t => | Scratch(_) | Exercises(_) | Documentation(_) => Builtins.env_init + | Tutorial(_) => Builtins.env_init }; /* Each mode (e.g. Scratch, School) requires @@ -121,6 +168,9 @@ let get_spliced_elabs = let statics = get_editor(editors).state.meta.statics; let d = Interface.elaborate(~settings, statics.info_map, statics.term); [(key, {d: d})]; + | Tutorial(name, slides) => + let slideState = List.assoc(name, slides); + Tutorial.spliced_elabs(settings, slideState); | Exercises(_, _, exercise) => Exercise.spliced_elabs(settings, exercise) }; @@ -128,6 +178,19 @@ let set_instructor_mode = (editors: t, instructor_mode: bool): t => switch (editors) { | Scratch(_) | Documentation(_) => editors + | Tutorial(name, slides) => + // Assuming you want to pass instructor_mode down to each slide + let updated_slides = + List.map( + ((slide_name, slide_state)) => { + ( + slide_name, + Tutorial.set_instructor_mode(slide_state, instructor_mode), + ) + }, + slides, + ); + Tutorial(name, updated_slides); | Exercises(n, specs, exercise) => Exercises( n, @@ -179,6 +242,29 @@ let reset_current = | Scratch(n, slides) => Scratch(n, reset_nth_slide(~settings, n, slides)) | Documentation(name, slides) => Documentation(name, reset_named_slide(~settings, name, slides)) + | Tutorial(name, slides) => + let from_tup = ((word: string, status: Tutorial.state)) => { + let your_impl_zipper = status.eds.your_impl.state.zipper; + let hidden_tests_zipper = status.eds.hidden_tests.tests.state.zipper; + let spec: Tutorial.spec = { + title: status.eds.title, + description: status.eds.description, + your_impl: your_impl_zipper, + hidden_tests: { + tests: hidden_tests_zipper, + hints: status.eds.hidden_tests.hints, + }, + }; + + let new_state = + Tutorial.state_of_spec(spec, ~settings, ~instructor_mode); + (word, new_state); + }; + + let updatedSlides = List.map(from_tup, slides); + + Tutorial(name, updatedSlides); + | Exercises(n, specs, _) => Exercises( n, @@ -191,6 +277,7 @@ let reset_current = let import_current = (~settings, editors: t, data: option(string)): t => switch (editors) { | Documentation(_) + | Tutorial(_) | Exercises(_) => failwith("impossible") | Scratch(idx, slides) => switch (data) { @@ -210,4 +297,5 @@ let switch_example_slide = (editors: t, name: string): option(t) => when !List.mem_assoc(name, slides) || cur == name => None | Documentation(_, slides) => Some(Documentation(name, slides)) + | Tutorial(_, slides) => Some(Tutorial(name, slides)) }; diff --git a/src/haz3lweb/Init.ml b/src/haz3lweb/Init.ml index 51f3397b11..dc006ff7af 100644 --- a/src/haz3lweb/Init.ml +++ b/src/haz3lweb/Init.ml @@ -27,7 +27,7 @@ let startup : PersistentData.t = context_inspector = false; instructor_mode = true; benchmark = false; - mode = Documentation; + mode = Tutorial; explainThis = { show = true; show_feedback = false; highlight = NoHighlight }; }; @@ -210,7 +210,7 @@ let startup : PersistentData.t = ], [ ("scratch_0", Evaluation) ] ); documentation = - ( "Programming Expressively", + ( "Casting", [ ( "Casting", { @@ -18385,6 +18385,324 @@ let startup : PersistentData.t = }; } ); ], + [ + ("scratch_Basic Reference", Evaluation); + ("scratch_Casting Expressively", Evaluation); + ] ); + tutorial = + ( "Programming Expressively", + [ + ( "Programming Expressively", + { + focus = YourImpl; + title = "Programming Expressively"; + description = ""; + editors = + [ + ( YourImpl, + { + zipper = + "((selection((focus \ + Left)(content())))(backpack())(relatives((siblings(()((Grout((id \ + 0)(shape Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + } ); + ( HiddenTests, + (* hidden_tests = *) + { + (* tests = + { *) + zipper = + "((selection((focus Left)(content())(mode \ + Normal)))(backpack())(relatives((siblings(()((Grout((id \ + 73cb2f1d-94b4-42eb-9d77-a832748556b0)(shape \ + Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + } + (* hints = []; + }; *) ); + ]; + } ); + ( "Composing Arithmetic Expressions", + { + focus = YourImpl; + title = "Composing Arithmetic Expressions"; + description = ""; + editors = + [ + ( YourImpl, + { + zipper = + "((selection((focus \ + Left)(content())))(backpack())(relatives((siblings(()((Grout((id \ + 0)(shape Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + } ); + ( HiddenTests, + (* hidden_tests = *) + (* { + tests = *) + { + zipper = + "((selection((focus Left)(content())(mode \ + Normal)))(backpack())(relatives((siblings(()((Grout((id \ + 41444a61-1cf6-408b-82c6-464f3ca6750e)(shape \ + Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + } + (* hints = []; + }; *) ); + ]; + } ); + ( "Computing Equationally", + { + focus = YourImpl; + title = "Computing Equationally"; + description = ""; + editors = + [ + ( YourImpl, + { + zipper = + "((selection((focus \ + Left)(content())))(backpack())(relatives((siblings(()((Grout((id \ + 0)(shape Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + } ); + ( HiddenTests, + (* hidden_tests = *) + (* { + tests = *) + { + zipper = + "((selection((focus Left)(content())(mode \ + Normal)))(backpack())(relatives((siblings(()((Grout((id \ + c7e3b9bd-efaa-41f2-800d-9986a6e814d6)(shape \ + Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + } + (* hints = []; + }; *) ); + ]; + } ); + ( "Variables", + { + focus = YourImpl; + title = "Variables"; + description = ""; + editors = + [ + ( YourImpl, + { + zipper = + "((selection((focus \ + Left)(content())))(backpack())(relatives((siblings(()((Grout((id \ + 0)(shape Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + } ); + ( HiddenTests, + (* hidden_tests = *) + (* { + tests = *) + { + zipper = + "((selection((focus Left)(content())(mode \ + Normal)))(backpack())(relatives((siblings(()((Grout((id \ + 92e68905-30cc-415b-b920-6323180c56d1)(shape \ + Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + } + (* hints = []; + }; *) ); + ]; + } ); + ( "Compositionality", + { + focus = YourImpl; + title = "Compositionality"; + description = ""; + editors = + [ + ( YourImpl, + { + zipper = + "((selection((focus \ + Left)(content())))(backpack())(relatives((siblings(()((Grout((id \ + 0)(shape Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + } ); + ( HiddenTests, + (* hidden_tests = *) + (* { + tests = *) + { + zipper = + "((selection((focus Left)(content())(mode \ + Normal)))(backpack())(relatives((siblings(()((Grout((id \ + 661cbe22-ffdc-4fa3-b227-f7b56a1c8ed6)(shape \ + Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + } + (* hints = []; + }; *) ); + ]; + } ); + ( "Scope", + { + focus = YourImpl; + title = "Scope"; + description = ""; + editors = + [ + ( YourImpl, + { + zipper = + "((selection((focus \ + Left)(content())))(backpack())(relatives((siblings(()((Grout((id \ + 0)(shape Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + } ); + ( HiddenTests, + (* hidden_tests = *) + (* { + tests = *) + { + zipper = + "((selection((focus Left)(content())(mode \ + Normal)))(backpack())(relatives((siblings(()((Grout((id \ + f213697c-e203-41c4-8888-fc12e3ac46bf)(shape \ + Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + } + (* hints = []; + }; *) ); + ]; + } ); + ( "Shadowing", + { + focus = YourImpl; + title = "Shadowing"; + description = ""; + editors = + [ + ( YourImpl, + { + zipper = + "((selection((focus \ + Left)(content())))(backpack())(relatives((siblings(()((Grout((id \ + 0)(shape Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + } ); + ( HiddenTests, + (* hidden_tests = *) + (* { + tests = *) + { + zipper = + "((selection((focus Left)(content())(mode \ + Normal)))(backpack())(relatives((siblings(()((Grout((id \ + 3d8e1707-1e20-4160-946e-73cdb9e98ee1)(shape \ + Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + } + (* hints = []; + }; *) ); + ]; + } ); + ( "Booleans and Types", + { + focus = YourImpl; + title = "Booleans and Types"; + description = ""; + editors = + [ + ( YourImpl, + { + zipper = + "((selection((focus \ + Left)(content())))(backpack())(relatives((siblings(()((Grout((id \ + 0)(shape Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + } ); + ( HiddenTests, + (* hidden_tests = *) + (* { + tests = *) + { + zipper = + "((selection((focus Left)(content())(mode \ + Normal)))(backpack())(relatives((siblings(()((Grout((id \ + f49430b2-1265-4e87-a6d6-795eb57c37f8)(shape \ + Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + } + (* hints = []; + }; *) ); + ]; + } ); + ( "Conditional Expressions", + { + focus = YourImpl; + title = "Conditional Expressions"; + description = ""; + editors = + [ + ( YourImpl, + { + zipper = + "((selection((focus \ + Left)(content())))(backpack())(relatives((siblings(()((Grout((id \ + 0)(shape Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + } ); + ( HiddenTests, + (* hidden_tests = *) + (* { + tests = *) + { + zipper = + "((selection((focus Left)(content())(mode \ + Normal)))(backpack())(relatives((siblings(()((Grout((id \ + e2b7d6b9-5b95-4fad-9278-60097f30375f)(shape \ + Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + } + (* hints = []; *) + (* }; *) ); + ]; + } ); + ( "Functions", + { + focus = YourImpl; + title = "Functions"; + description = ""; + editors = + [ + ( YourImpl, + { + zipper = + "((selection((focus \ + Left)(content())))(backpack())(relatives((siblings(()((Grout((id \ + 0)(shape Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + } ); + ( HiddenTests, + (* hidden_tests = *) + (* { + tests = *) + { + zipper = + "((selection((focus Left)(content())(mode \ + Normal)))(backpack())(relatives((siblings(()((Grout((id \ + b60e7d0e-e290-4b23-b03c-7fe121fb5dcd)(shape \ + Convex))))))(ancestors())))(caret Outer))"; + backup_text = " "; + } + (* hints = []; + }; *) ); + ]; + } ); + ], [ ("scratch_ADT Dynamics", Evaluation); ("scratch_ADT Statics", Evaluation); diff --git a/src/haz3lweb/Log.re b/src/haz3lweb/Log.re index 7c87a640f6..aa89a47b76 100644 --- a/src/haz3lweb/Log.re +++ b/src/haz3lweb/Log.re @@ -19,7 +19,9 @@ let is_action_logged: UpdateAction.t => bool = | Set(_) | SwitchScratchSlide(_) | SwitchDocumentationSlide(_) + | SwitchTutorialSlide(_) | SwitchEditor(_) + | SwitchTutEditor(_) | ResetCurrentEditor | PerformAction(_) | Undo diff --git a/src/haz3lweb/Model.re b/src/haz3lweb/Model.re index e4939b3af0..503e9bb38d 100644 --- a/src/haz3lweb/Model.re +++ b/src/haz3lweb/Model.re @@ -64,6 +64,11 @@ let load_editors = | Documentation => let (name, slides, results) = Store.Documentation.load(~settings); (Documentation(name, slides), results); + | Tutorial => + print_endline("hi im in load editors"); + let (name, slides, results) = Store.Tutorial.load(~settings); + + (Tutorial(name, slides), results); | Exercises => let (n, specs, exercise) = Store.Exercise.load( @@ -81,6 +86,11 @@ let save_editors = | Scratch(n, slides) => Store.Scratch.save((n, slides, results)) | Documentation(name, slides) => Store.Documentation.save((name, slides, results)) + | Tutorial(name, slides) => + print_endline("hi im in save editors"); + + // Call save with the converted slides + Store.Tutorial.save((name, slides, results)); | Exercises(n, specs, exercise) => Store.Exercise.save((n, specs, exercise), ~instructor_mode) }; @@ -117,6 +127,7 @@ let reset = (model: t): t => { ignore(Store.ExplainThisModel.init()); ignore(Store.Scratch.init(~settings)); ignore(Store.Documentation.init(~settings)); + ignore(Store.Tutorial.init(~settings)); ignore(Store.Exercise.init(~settings, ~instructor_mode=true)); let new_model = load(blank); { diff --git a/src/haz3lweb/PersistentData.re b/src/haz3lweb/PersistentData.re index 8b606f4d17..ac53120030 100644 --- a/src/haz3lweb/PersistentData.re +++ b/src/haz3lweb/PersistentData.re @@ -16,9 +16,17 @@ type documentation = ( [@default []] list((string, ModelResult.persistent)), ); +[@deriving (show({with_path: false}), sexp, yojson)] +type tutorial = ( + string, + list((string, Tutorial.persistent_state)), + [@default []] list((string, ModelResult.persistent)), +); + [@deriving (show({with_path: false}), sexp, yojson)] type t = { settings: Settings.t, scratch, + tutorial, documentation, }; diff --git a/src/haz3lweb/Settings.re b/src/haz3lweb/Settings.re index 1481b54621..0a0edd4c17 100644 --- a/src/haz3lweb/Settings.re +++ b/src/haz3lweb/Settings.re @@ -4,12 +4,14 @@ open Util; type mode = | Scratch | Documentation + | Tutorial | Exercises; let mode_of_string = (s: string): mode => switch (s) { | "Scratch" => Scratch | "Documentation" => Documentation + | "Tutorial" => Tutorial | "Exercises" => Exercises | _ => failwith("mode_of_string: unknown mode:" ++ s) }; diff --git a/src/haz3lweb/SlideContent.re b/src/haz3lweb/SlideContent.re index 639f55dd70..7d2788cee7 100644 --- a/src/haz3lweb/SlideContent.re +++ b/src/haz3lweb/SlideContent.re @@ -23,7 +23,7 @@ let em = content => span(~attrs=[Attr.class_("em")], [text(content)]); let get_content = fun - | Documentation("Expressive Programming", _) => + | Tutorial("Expressive Programming", _) => Some( slide( "Expressive Programming", @@ -51,7 +51,7 @@ let get_content = ], ), ) - | Documentation("Composing Expressions", _) => + | Tutorial("Composing Expressions", _) => Some( slide( "Composing Expressions", @@ -96,7 +96,7 @@ let get_content = ], ), ) - | Documentation("Computing Equationally", _) => + | Tutorial("Computing Equationally", _) => Some( slide( "Computing Equationally", @@ -120,7 +120,7 @@ let get_content = ], ), ) - | Documentation("Variables", _) => + | Tutorial("Variables", _) => Some( slide( "Variables", @@ -153,7 +153,7 @@ let get_content = ], ), ) - | Documentation("Compositionality", _) => + | Tutorial("Compositionality", _) => Some( slide( "Compositionality", @@ -164,7 +164,7 @@ let get_content = ], ), ) - | Documentation("Scope", _) => + | Tutorial("Scope", _) => Some( slide( "Scope", @@ -179,7 +179,7 @@ let get_content = ], ), ) - | Documentation("Shadowing", _) => + | Tutorial("Shadowing", _) => Some( slide( "Shadowing", @@ -201,7 +201,7 @@ let get_content = ], ), ) - | Documentation("Booleans and Types", _) => + | Tutorial("Booleans and Types", _) => Some( slide( "Booleans and Types", @@ -256,7 +256,7 @@ let get_content = ], ), ) - | Documentation("Conditional Expressions", _) => + | Tutorial("Conditional Expressions", _) => Some( slide( "Conditional Expressions", @@ -275,7 +275,7 @@ let get_content = ], ), ) - | Documentation("Functions", _) => + | Tutorial("Functions", _) => Some( slide( "Functions", @@ -306,19 +306,19 @@ let get_content = ], ), ) - | Documentation("Tuples", _) => Some(slide("Tuples", [])) - | Documentation("Pattern Matching on Tuples", _) => + | Tutorial("Tuples", _) => Some(slide("Tuples", [])) + | Tutorial("Pattern Matching on Tuples", _) => Some(slide("Pattern Matching on Tuples", [])) - | Documentation("Recursion", _) => Some(slide("Recursion", [])) - | Documentation("Lists", _) => Some(slide("Lists", [])) - | Documentation("Pattern Matching on Lists", _) => + | Tutorial("Recursion", _) => Some(slide("Recursion", [])) + | Tutorial("Lists", _) => Some(slide("Lists", [])) + | Tutorial("Pattern Matching on Lists", _) => Some(slide("Pattern Matching on Lists", [])) - | Documentation("Recursion on Lists: length", _) => + | Tutorial("Recursion on Lists: length", _) => Some(slide("Recursion on Lists: length", [])) - | Documentation("Recursion on Lists: sum", _) => + | Tutorial("Recursion on Lists: sum", _) => Some(slide("Recursion on Lists: sum", [])) - | Documentation("Recursion on Lists: num_zeros", _) => + | Tutorial("Recursion on Lists: num_zeros", _) => Some(slide("Recursion on Lists: num_zeros", [])) - | Documentation("Higher-Order Functions", _) => + | Tutorial("Higher-Order Functions", _) => Some(slide("Higher-Order Functions", [])) | _ => None; diff --git a/src/haz3lweb/Store.re b/src/haz3lweb/Store.re index c8d6628357..11510a2844 100644 --- a/src/haz3lweb/Store.re +++ b/src/haz3lweb/Store.re @@ -299,6 +299,167 @@ module Documentation = { save(deserialize(~settings, data)); }; +module Tutorial = { + let save_tutorial_key: string = "SAVE_TUTORIAL"; + + [@deriving (show({with_path: false}), sexp, yojson)] + type t = ( + string, + list((string, Tutorial.state)), + ModelResults.M.t(ModelResult.t), + ); + + [@deriving (show({with_path: false}), sexp, yojson)] + type persistent = PersistentData.tutorial; + + let persist = ((name, editor: Editor.t)) => { + (name, PersistentZipper.persist(editor.state.zipper)); + }; + + let pzipper_to_pstate = + (slide: PersistentZipper.t): Tutorial.persistent_state => { + focus: YourImpl, + title: "", + description: "", + editors: [(HiddenTests, slide)], + }; + + let state_to_persistent = (state: Tutorial.state): Tutorial.persistent_state => { + { + focus: YourImpl, + title: state.eds.title, + description: state.eds.description, + editors: [ + ( + YourImpl, + PersistentZipper.persist(state.eds.your_impl.state.zipper), + ), + ( + HiddenTests, + PersistentZipper.persist(state.eds.hidden_tests.tests.state.zipper), + ), + ], + }; + }; + + let to_persistent = + ((name, slides: list((string, Tutorial.state)), results)): persistent => { + let persistent_slides: list((string, Tutorial.persistent_state)) = + List.map( + ((id, state): (string, Tutorial.state)) => { + let persistent_state = state_to_persistent(state); + (id, persistent_state); + }, + slides, + ); + + ( + name, + persistent_slides, + results + |> ModelResults.map(ModelResult.to_persistent) + |> ModelResults.bindings, + ); + }; + + // let to_persistent = + // ( + // (string, slides: list((string, Tutorial.state)), results), + // ) + // : persistent => { + // ( + // // Convert slides from PersistentZipper.t to Tutorial.persistent_state + // // let slides = + // // List.map( + // // ((name, zipper)) => (name, pzipper_to_pstate(zipper)), // Convert using pzipper_to_pstate + // // List.map(persist, slides) // Get list of (name, PersistentZipper.t) + // // ); + // string, + // slides, + // results + // |> ModelResults.map(ModelResult.to_persistent) + // |> ModelResults.bindings, + // ); + // }; + + let unpersist = ((name, zipper), ~settings: CoreSettings.t) => { + let zipper = PersistentZipper.unpersist(zipper); + (name, Editor.init(zipper, ~read_only=false, ~settings)); + }; + + let of_persistent = (~settings, (name, slides, results): persistent): t => { + let state_to_editor = ((str: string, status: Tutorial.persistent_state)) => { + let your_impl_zipper = List.assoc(Tutorial.YourImpl, status.editors); + let hidden_tests_zipper = + List.assoc(Tutorial.HiddenTests, status.editors); + + let (_, your_impl_editor) = + unpersist((str, your_impl_zipper), ~settings); + let (_, hidden_tests_editor) = + unpersist((str, hidden_tests_zipper), ~settings); + + let tutorial_state: Tutorial.state = { + pos: YourImpl, + eds: { + title: status.title, + description: status.description, + your_impl: your_impl_editor, + hidden_tests: { + tests: hidden_tests_editor, + hints: [], + }, + }, + }; + + (str, tutorial_state); + }; + + let converted_slides = List.map(state_to_editor, slides); + + let mapped_results = + results + |> List.to_seq + |> ModelResults.of_seq + |> ModelResults.map( + ModelResult.of_persistent(~settings=settings.evaluation), + ); + + (name, converted_slides, mapped_results); + }; + + let serialize = (slides: t): string => { + slides |> to_persistent |> sexp_of_persistent |> Sexplib.Sexp.to_string; + }; + + let deserialize = (~settings: CoreSettings.t, data: string): t => { + data + |> Sexplib.Sexp.of_string + |> persistent_of_sexp + |> of_persistent(~settings); + }; + + let save = (slides: t): unit => { + JsUtil.set_localstore(save_tutorial_key, serialize(slides)); + }; + + let init = (~settings: CoreSettings.t): t => { + let documentation = of_persistent(~settings, Init.startup.tutorial); + save(documentation); + documentation; + }; + let load = (~settings: CoreSettings.t): t => + switch (JsUtil.get_localstore(save_tutorial_key)) { + | None => init(~settings) + | Some(data) => + try(deserialize(~settings, data)) { + | _ => init(~settings) + } + }; + + let export = (~settings) => serialize(load(~settings)); + let import = (settings, data) => save(deserialize(~settings, data)); +}; + module Exercise = { open Exercise; diff --git a/src/haz3lweb/Tutorial.re b/src/haz3lweb/Tutorial.re new file mode 100644 index 0000000000..25c0ac8eac --- /dev/null +++ b/src/haz3lweb/Tutorial.re @@ -0,0 +1,10 @@ +open Virtual_dom.Vdom; + +module TutorialEnv = { + type node = Node.t; + let default = Node.text("TODO: prompt"); + let output_header = module_name => + "let prompt = " ++ module_name ++ "_prompt.prompt\n"; +}; + +include Haz3lschool.Tutorial.D(TutorialEnv); diff --git a/src/haz3lweb/Update.re b/src/haz3lweb/Update.re index fd6e8983c6..1a47210a0e 100644 --- a/src/haz3lweb/Update.re +++ b/src/haz3lweb/Update.re @@ -285,6 +285,7 @@ let switch_scratch_slide = : option(Editors.t) => switch (editors) { | Documentation(_) => None + | Tutorial(_) => None | Scratch(n, _) when n == idx => None | Scratch(_, slides) when idx >= List.length(slides) => None | Scratch(_, slides) => Some(Scratch(idx, slides)) @@ -301,6 +302,7 @@ let switch_exercise_editor = (editors: Editors.t, ~pos, ~instructor_mode): option(Editors.t) => switch (editors) { | Documentation(_) + | Tutorial(_) | Scratch(_) => None | Exercises(m, specs, exercise) => let exercise = Exercise.switch_editor(~pos, instructor_mode, ~exercise); @@ -309,6 +311,31 @@ let switch_exercise_editor = Some(Exercises(m, specs, exercise)); }; +let switch_tut_editor = + (editors: Editors.t, ~pos, ~instructor_mode): option(Editors.t) => + switch (editors) { + | Tutorial(name, slides) => + let tutorial_states = + List.map( + ((hint, tutorial_state)) => + if (hint == name) { + print_endline("Inside switch_doc_editor"); + let updated_state = + Tutorial.switch_editor( + ~pos, + instructor_mode, + ~documentation=tutorial_state, + ); + (hint, updated_state); + } else { + (hint, tutorial_state); + }, + slides, + ); + Some(Tutorial(name, tutorial_states)); + | _ => None + }; + /* This action saves a file which serializes all current editor settings, including the states of all Scratch and Example slides. This saved file can directly replace Haz3lweb/Init.ml, allowing @@ -360,6 +387,9 @@ let export_persistent_data = () => { documentation: Store.Documentation.load(~settings=settings.core) |> to_persistent_documentation, + tutorial: + Store.Tutorial.load(~settings=settings.core) + |> Store.Tutorial.to_persistent, scratch: Store.Scratch.load(~settings=settings.core) |> Store.Scratch.to_persistent, @@ -551,12 +581,23 @@ let apply = (model: Model.t, update: t, ~schedule_action): Result.t(Model.t) => | None => Error(FailedToSwitch) | Some(editors) => Model.save_and_return({...model, editors}) } + | SwitchTutorialSlide(name) => + switch (Editors.switch_example_slide(model.editors, name)) { + | None => Error(FailedToSwitch) + | Some(editors) => Model.save_and_return({...model, editors}) + } | SwitchEditor(pos) => let instructor_mode = model.settings.instructor_mode; switch (switch_exercise_editor(model.editors, ~pos, ~instructor_mode)) { | None => Error(FailedToSwitch) | Some(editors) => Ok({...model, editors}) }; + | SwitchTutEditor(pos) => + let instructor_mode = model.settings.instructor_mode; + switch (switch_tut_editor(model.editors, ~pos, ~instructor_mode)) { + | None => Error(FailedToSwitch) + | Some(editors) => Ok({...model, editors}) + }; | TAB => /* Attempt to act intelligently when TAB is pressed. * TODO: Consider more advanced TAB logic. Instead diff --git a/src/haz3lweb/UpdateAction.re b/src/haz3lweb/UpdateAction.re index cd2f145f3e..2fdbf90e30 100644 --- a/src/haz3lweb/UpdateAction.re +++ b/src/haz3lweb/UpdateAction.re @@ -69,7 +69,9 @@ type t = | InitImportAll([@opaque] Js_of_ocaml.Js.t(Js_of_ocaml.File.file)) | FinishImportAll(option(string)) | SwitchEditor(Exercise.pos) //exercisemode only + | SwitchTutEditor(Tutorial.pos) | SwitchDocumentationSlide(string) //examplemode only + | SwitchTutorialSlide(string) // editors: scratchmode only | InitImportScratchpad([@opaque] Js_of_ocaml.Js.t(Js_of_ocaml.File.file)) | FinishImportScratchpad(option(string)) @@ -130,6 +132,7 @@ let is_edit: t => bool = | Redo | SwitchScratchSlide(_) | SwitchDocumentationSlide(_) + | SwitchTutorialSlide(_) | ToggleStepper(_) | StepperAction(_) | FinishImportAll(_) @@ -139,6 +142,7 @@ let is_edit: t => bool = | TAB => true | UpdateResult(_) | SwitchEditor(_) + | SwitchTutEditor(_) | Export(_) | Save | UpdateExplainThisModel(_) @@ -187,6 +191,7 @@ let reevaluate_post_update: t => bool = | Export(_) | UpdateResult(_) | SwitchEditor(_) + | SwitchTutEditor(_) | DebugConsole(_) | Benchmark(_) => false | TAB @@ -197,6 +202,7 @@ let reevaluate_post_update: t => bool = | ResetCurrentEditor | SwitchScratchSlide(_) | SwitchDocumentationSlide(_) + | SwitchTutorialSlide(_) | Reset | Undo | Redo @@ -233,8 +239,10 @@ let should_scroll_to_caret = | FinishImportAll(_) | ResetCurrentEditor | SwitchEditor(_) + | SwitchTutEditor(_) | SwitchScratchSlide(_) | SwitchDocumentationSlide(_) + | SwitchTutorialSlide(_) | Reset | Undo | Redo diff --git a/src/haz3lweb/view/EditorModeView.re b/src/haz3lweb/view/EditorModeView.re index dea884266f..4ba42a0e9e 100644 --- a/src/haz3lweb/view/EditorModeView.re +++ b/src/haz3lweb/view/EditorModeView.re @@ -20,7 +20,7 @@ let mode_menu = (~inject: Update.t => 'a, ~mode: Settings.mode) => ], List.map( option_view(Settings.show_mode(mode)), - ["Scratch", "Documentation", "Exercises"], + ["Scratch", "Documentation", "Tutorial", "Exercises"], ), ), ], @@ -105,6 +105,61 @@ let instructor_toggle = (~inject, ~instructor_mode) => ] : []; +let tutorial_view = (~inject, ~name, ~slides, ~instructor_mode) => { + let editor_names = List.map(fst, slides); + let rec find_prev_next: list(string) => (option(string), option(string)) = + fun + | [] + | [_] => (None, None) + | [x, y] when name == x => (None, Some(y)) + | [x, y] when name == y => (Some(x), None) + | [_, _] => (None, None) + | [x, y, ..._] when name == x => (None, Some(y)) + | [x, y, z, ..._] when name == y => (Some(x), Some(z)) + | [_, ...ys] => find_prev_next(ys); + let (prev, next) = find_prev_next(editor_names); + let prev = + prev + |> Option.map(s => + button(Icons.back, _ => inject(Update.SwitchTutorialSlide(s))) + ) + |> Option.value( + ~default= + button_d( + Icons.back, + inject(Update.SwitchTutorialSlide("none")), + ~disabled=true, + ), + ); + let next = + next + |> Option.map(s => + button(Icons.forward, _ => inject(Update.SwitchTutorialSlide(s))) + ) + |> Option.value( + ~default= + button_d( + Icons.forward, + inject(Update.SwitchTutorialSlide("none")), + ~disabled=true, + ), + ); + [mode_menu(~inject, ~mode=Tutorial)] + @ instructor_toggle(~inject, ~instructor_mode) + @ [ + prev, + next, + select( + ~attrs=[ + Attr.on_change((_, name) => + inject(Update.SwitchTutorialSlide(name)) + ), + ], + List.map(option_view(name), editor_names), + ), + ]; +}; + let exercises_view = (~inject, ~cur_slide, ~specs, ~instructor_mode) => { [text("/"), mode_menu(~inject, ~mode=Exercises), text("/")] @ instructor_toggle(~inject, ~instructor_mode) @@ -125,6 +180,8 @@ let view = scratch_view(~inject, ~cur_slide, ~slides) | Documentation(name, editors) => documentation_view(~inject, ~name, ~editors) + | Tutorial(name, slides) => + tutorial_view(~inject, ~name, ~slides, ~instructor_mode) | Exercises(cur_slide, specs, _) => exercises_view(~cur_slide, ~specs, ~inject, ~instructor_mode) }; diff --git a/src/haz3lweb/view/NutMenu.re b/src/haz3lweb/view/NutMenu.re index b67f406504..612e0f44cf 100644 --- a/src/haz3lweb/view/NutMenu.re +++ b/src/haz3lweb/view/NutMenu.re @@ -174,6 +174,10 @@ let file_menu = (~inject, ~settings: Settings.t, editors: Editors.t) => file_group_scratch(~inject), reset_group_scratch(~inject), ] + | Tutorial(_) => [ + ScratchMode.import_button(inject), + ScratchMode.reset_button(inject), + ] | Documentation(_) => [ file_group_scratch(~inject), reset_group_scratch(~inject), diff --git a/src/haz3lweb/view/Page.re b/src/haz3lweb/view/Page.re index df98ba5ee9..d2585076fd 100644 --- a/src/haz3lweb/view/Page.re +++ b/src/haz3lweb/view/Page.re @@ -109,6 +109,35 @@ let main_view = editor, ); (view, cursor_info); + + | Tutorial(name, slides) => + print_endline("hi" ++ name); + let info = + SlideContent.get_content(editors) + |> Option.map(i => div(~attrs=[Attr.id("slide")], [i])) + |> Option.to_list; + + let matching_slide = + List.find_opt(((slide_name, _)) => slide_name == name, slides); + + let result = + switch (matching_slide) { + | None => [] + | Some((_, tutorial_state)) => + TutorialMode.view( + ~inject, + ~ui_state, + ~settings, + ~highlights, + ~results, + ~tutorial=tutorial_state, + // ~results, + // ~highlights, + // ~editor, + ) + }; + + (info @ result, cursor_info); | Documentation(name, _) => let result_key = ScratchSlide.scratch_key(name); let view = diff --git a/src/haz3lweb/view/TutorialMode.re b/src/haz3lweb/view/TutorialMode.re new file mode 100644 index 0000000000..6b46245b35 --- /dev/null +++ b/src/haz3lweb/view/TutorialMode.re @@ -0,0 +1,187 @@ +open Haz3lcore; +open Virtual_dom.Vdom; +open Util; +// open Node; + +type vis_marked('a) = + | InstructorOnly(unit => 'a) + | Always('a); + +let render_cells = (settings: Settings.t, v: list(vis_marked(Node.t))) => { + List.filter_map( + vis => + switch (vis) { + | InstructorOnly(f) => settings.instructor_mode ? Some(f()) : None + | Always(node) => Some(node) + }, + v, + ); +}; + +let view = + ( + ~inject, + ~ui_state: Model.ui_state, + ~settings: Settings.t, + ~tutorial, + ~results, + ~highlights, + ) => { + // editor : Editor.t, + + // let result = ModelResults.lookup(results, result_key); + let Tutorial.{eds, pos} = tutorial; + let stitched_dynamics = + Tutorial.stitch_dynamic( + settings.core, + tutorial, + settings.core.dynamics ? Some(results) : None, + ); + let { + // test_validation, + user_impl, + // user_tests, + // prelude, + instructor, + // hidden_bugs, + hidden_tests: _, + }: + Tutorial.stitched(Tutorial.DynamicsItem.t) = stitched_dynamics; + + let editor_view = + ( + ~editor: Editor.t, + ~caption: string, + ~subcaption: option(string)=?, + ~footer=?, + ~di: Tutorial.DynamicsItem.t, + this_pos, + ) => { + Cell.editor_view( + ~selected=pos == this_pos, + ~override_statics=di.statics, + ~inject, + ~ui_state, + ~mousedown_updates=[SwitchTutEditor(this_pos)], + ~settings, + ~highlights, + ~caption=Cell.caption(caption, ~rest=?subcaption), + ~target_id=Tutorial.show_pos(this_pos), + ~test_results=ModelResult.test_results(di.result), + ~footer?, + editor, + ); + }; + + let title_view = Cell.title_cell(eds.title); + + let your_impl_view = { + Always( + editor_view( + YourImpl, + ~caption="Your Implementation", + ~editor=eds.your_impl, + ~di=user_impl, + ~footer= + Cell.footer( + ~locked=true, + ~settings, + ~inject, + ~ui_state, + ~result=user_impl.result, + ~result_key=Tutorial.user_impl_key, + ), + ), + ); + }; + + let hidden_tests_view = + InstructorOnly( + () => + editor_view( + HiddenTests, + ~caption="Hidden Tests", + ~editor=eds.hidden_tests.tests, + ~di=instructor, + ), + ); + + [title_view] @ render_cells(settings, [your_impl_view, hidden_tests_view]); +}; + +let reset_button = inject => + Widgets.button_named( + Icons.trash, + _ => { + let confirmed = + JsUtil.confirm( + "Are you SURE you want to reset this exercise? You will lose any existing code that you have written, and course staff have no way to restore it!", + ); + if (confirmed) { + inject(UpdateAction.ResetCurrentEditor); + } else { + Virtual_dom.Vdom.Effect.Ignore; + }; + }, + ~tooltip="Reset Exercise", + ); + +let instructor_export = (exercise: Tutorial.state) => + Widgets.button_named( + Icons.star, + _ => { + // .ml files because show uses OCaml syntax (dune handles seamlessly) + let module_name = exercise.eds.title; + let filename = exercise.eds.title ++ ".ml"; + let content_type = "text/plain"; + let contents = Tutorial.export_module(module_name, exercise); + JsUtil.download_string_file(~filename, ~content_type, ~contents); + Virtual_dom.Vdom.Effect.Ignore; + }, + ~tooltip="Export Exercise Module", + ); + +let instructor_transitionary_export = (exercise: Tutorial.state) => + Widgets.button_named( + Icons.star, + _ => { + // .ml files because show uses OCaml syntax (dune handles seamlessly) + let module_name = exercise.eds.title; + let filename = exercise.eds.title ++ ".ml"; + let content_type = "text/plain"; + let contents = + Tutorial.export_transitionary_module(module_name, exercise); + JsUtil.download_string_file(~filename, ~content_type, ~contents); + Virtual_dom.Vdom.Effect.Ignore; + }, + ~tooltip="Export Transitionary Exercise Module", + ); + +let download_editor_state = (~instructor_mode) => + Log.get_and(log => { + let data = Export.export_all(~instructor_mode, ~log); + JsUtil.download_json(ExerciseSettings.filename, data); + }); + +let export_submission = (~settings: Settings.t) => + Widgets.button_named( + Icons.star, + _ => { + download_editor_state(~instructor_mode=settings.instructor_mode); + Virtual_dom.Vdom.Effect.Ignore; + }, + ~tooltip="Export Submission", + ); + +let import_submission = (~inject) => + Widgets.file_select_button_named( + "import-submission", + Icons.star, + file => { + switch (file) { + | None => Virtual_dom.Vdom.Effect.Ignore + | Some(file) => inject(UpdateAction.InitImportAll(file)) + } + }, + ~tooltip="Import Submission", + ); From 4af08b6c4c1f33416ed84a16937f7beaf65be3ac Mon Sep 17 00:00:00 2001 From: reevafaisal Date: Thu, 31 Oct 2024 19:15:53 -0400 Subject: [PATCH 03/11] merged with dev --- src/haz3lcore/Measured.re | 87 ++++++++-- src/haz3lcore/assistant/AssistantCtx.re | 25 ++- src/haz3lcore/assistant/AssistantForms.re | 17 +- src/haz3lcore/assistant/TyDi.re | 15 +- src/haz3lcore/dynamics/Builtins.re | 13 +- src/haz3lcore/dynamics/Casts.re | 12 +- src/haz3lcore/dynamics/DHExp.re | 46 +++++- src/haz3lcore/dynamics/Elaborator.re | 6 +- src/haz3lcore/dynamics/EvaluatorState.re | 20 ++- src/haz3lcore/dynamics/EvaluatorStep.re | 50 +++++- src/haz3lcore/dynamics/Stepper.re | 66 ++++++-- src/haz3lcore/dynamics/Transition.re | 49 +++++- src/haz3lcore/dynamics/TypeAssignment.re | 22 ++- src/haz3lcore/dynamics/VarBstMap.re | 40 ++++- src/haz3lcore/lang/Form.re | 6 +- src/haz3lcore/lang/term/IdTagged.re | 26 ++- src/haz3lcore/lang/term/Typ.re | 7 +- src/haz3lcore/prog/CachedStatics.re | 7 +- src/haz3lcore/prog/Interface.re | 6 +- src/haz3lcore/prog/ModelResult.re | 24 ++- src/haz3lcore/prog/ModelResults.re | 15 +- src/haz3lcore/statics/CoCtx.re | 10 +- src/haz3lcore/statics/Ctx.re | 19 ++- src/haz3lcore/statics/Info.re | 67 +++++++- src/haz3lcore/statics/MakeTerm.re | 108 ++++++++++-- src/haz3lcore/statics/Self.re | 15 +- src/haz3lcore/statics/Statics.re | 40 ++++- src/haz3lcore/statics/TermBase.re | 12 +- src/haz3lcore/tiles/Base.re | 7 +- src/haz3lcore/tiles/Grout.re | 5 +- src/haz3lcore/tiles/Id.re | 5 +- src/haz3lcore/tiles/Mold.re | 144 +++++++++++++--- src/haz3lcore/tiles/Nib.re | 5 +- src/haz3lcore/tiles/Piece.re | 50 +++++- src/haz3lcore/tiles/Secondary.re | 5 +- src/haz3lcore/tiles/Segment.re | 24 ++- src/haz3lcore/tiles/Skel.re | 18 +- src/haz3lcore/tiles/Tile.re | 23 ++- src/haz3lcore/zipper/Ancestor.re | 8 +- src/haz3lcore/zipper/Backpack.re | 5 +- src/haz3lcore/zipper/Editor.re | 41 ++++- src/haz3lcore/zipper/EditorUtil.re | 31 +++- src/haz3lcore/zipper/Projector.re | 11 +- src/haz3lcore/zipper/ProjectorBase.re | 11 +- src/haz3lcore/zipper/Relatives.re | 68 ++++++-- src/haz3lcore/zipper/Selection.re | 27 ++- src/haz3lcore/zipper/Zipper.re | 136 ++++++++++++--- src/haz3lcore/zipper/ZipperBase.re | 18 +- src/haz3lcore/zipper/action/Move.re | 25 ++- src/haz3lcore/zipper/action/Perform.re | 10 +- .../zipper/action/ProjectorPerform.re | 42 ++++- src/haz3lschool/Exercise.re | 111 ++++++++++--- src/haz3lschool/Gradescope.re | 10 +- src/haz3lschool/Grading.re | 6 +- src/haz3lschool/Tutorial.re | 101 ++++++++---- src/haz3lweb/Export.re | 9 +- src/haz3lweb/FailedInput.re | 10 +- src/haz3lweb/FontMetrics.re | 5 +- src/haz3lweb/Keyboard.re | 8 +- src/haz3lweb/Model.re | 8 +- src/haz3lweb/Settings.re | 5 +- src/haz3lweb/Update.re | 155 ++++++++++++++---- src/haz3lweb/explainthis/Example.re | 22 ++- src/haz3lweb/explainthis/ExplainThisModel.re | 12 +- src/haz3lweb/explainthis/ExplainThisUpdate.re | 55 ++++++- src/haz3lweb/explainthis/data/AppExp.re | 15 +- src/haz3lweb/explainthis/data/AppPat.re | 5 +- src/haz3lweb/explainthis/data/ArrowTyp.re | 10 +- src/haz3lweb/explainthis/data/CaseExp.re | 5 +- src/haz3lweb/explainthis/data/ForallTyp.re | 5 +- src/haz3lweb/explainthis/data/FunctionExp.re | 21 ++- src/haz3lweb/explainthis/data/HoleExp.re | 10 +- src/haz3lweb/explainthis/data/HolePat.re | 17 +- src/haz3lweb/explainthis/data/HoleTPat.re | 10 +- src/haz3lweb/explainthis/data/HoleTemplate.re | 7 +- src/haz3lweb/explainthis/data/HoleTyp.re | 17 +- src/haz3lweb/explainthis/data/IfExp.re | 5 +- src/haz3lweb/explainthis/data/LetExp.re | 36 +++- src/haz3lweb/explainthis/data/ListExp.re | 15 +- src/haz3lweb/explainthis/data/ListPat.re | 20 ++- src/haz3lweb/explainthis/data/ListTyp.re | 5 +- src/haz3lweb/explainthis/data/OpExp.re | 35 +++- src/haz3lweb/explainthis/data/RecTyp.re | 5 +- src/haz3lweb/explainthis/data/SeqExp.re | 5 +- src/haz3lweb/explainthis/data/TerminalExp.re | 30 +++- src/haz3lweb/explainthis/data/TerminalPat.re | 35 +++- src/haz3lweb/explainthis/data/TerminalTyp.re | 25 ++- src/haz3lweb/explainthis/data/TestExp.re | 5 +- src/haz3lweb/explainthis/data/TupleExp.re | 15 +- src/haz3lweb/explainthis/data/TuplePat.re | 15 +- src/haz3lweb/explainthis/data/TupleTyp.re | 20 ++- src/haz3lweb/explainthis/data/TyAliasExp.re | 5 +- src/haz3lweb/explainthis/data/TypAnnPat.re | 5 +- src/haz3lweb/explainthis/data/TypAppExp.re | 5 +- .../explainthis/data/TypFunctionExp.re | 15 +- src/haz3lweb/explainthis/data/UndefinedExp.re | 5 +- src/haz3lweb/util/SegmentTree.re | 28 +++- src/haz3lweb/util/SvgUtil.re | 134 ++++++++++++--- src/haz3lweb/util/WeakMap.re | 5 +- src/haz3lweb/view/BackpackView.re | 10 +- src/haz3lweb/view/Cell.re | 5 +- src/haz3lweb/view/Deco.re | 49 +++++- src/haz3lweb/view/ProjectorView.re | 6 +- src/haz3lweb/view/dec/DecUtil.re | 37 ++++- src/haz3lweb/view/dec/Diag.re | 73 +++++++-- src/haz3lweb/view/dec/EmptyHoleDec.re | 15 +- src/haz3lweb/view/dec/PieceDec.re | 45 ++++- src/haz3lweb/view/dhcode/DHCode.re | 6 +- src/haz3lweb/view/dhcode/Decoration_common.re | 21 ++- src/pretty/Cost.re | 10 +- src/pretty/Doc.re | 5 +- src/pretty/MeasuredLayout.re | 47 +++++- src/pretty/MeasuredLayout.rei | 17 +- src/pretty/MeasuredPosition.re | 5 +- src/util/Point.re | 5 +- src/util/Web.re | 10 +- test/Test_Elaboration.re | 19 ++- 117 files changed, 2523 insertions(+), 523 deletions(-) diff --git a/src/haz3lcore/Measured.re b/src/haz3lcore/Measured.re index 61dad8a831..d1814e804f 100644 --- a/src/haz3lcore/Measured.re +++ b/src/haz3lcore/Measured.re @@ -128,7 +128,13 @@ let rec add_n_rows = (origin: Point.t, row_indent, n: abs_indent, map: t): t => | _ => map |> add_n_rows(origin, row_indent, n - 1) - |> add_row(origin.row + n - 1, {indent: row_indent, max_col: origin.col}) + |> add_row( + origin.row + n - 1, + { + indent: row_indent, + max_col: origin.col, + }, + ) }; let add_lb = (id, indent, map) => { @@ -180,7 +186,10 @@ let find_t = (t: Tile.t, map): measurement => { }) { | _ => failwith("find_t: inconsistent shard infor between tile and map") }; - {origin: first.origin, last: last.last}; + { + origin: first.origin, + last: last.last, + }; }; let find_p = (~msg="", p: Piece.t, map): measurement => try( @@ -212,7 +221,10 @@ let find_by_id = (id: Id.t, map: t): option(measurement) => { shards, "find_by_id", ); - Some({origin: first.origin, last: last.last}); + Some({ + origin: first.origin, + last: last.last, + }); | None => switch (Id.Map.find_opt(id, map.projectors)) { | Some(m) => Some(m) @@ -332,39 +344,90 @@ let of_segment = (seg: Segment.t, info_map: Statics.Map.t): t => { contained_indent + (Id.Map.find(w.id, is_indented) ? 2 : 0); }; let last = - Point.{row: origin.row + 1, col: container_indent + indent}; + Point.{ + row: origin.row + 1, + col: container_indent + indent, + }; let map = map - |> add_w(w, {origin, last}) + |> add_w( + w, + { + origin, + last, + }, + ) |> add_row( origin.row, - {indent: row_indent, max_col: origin.col}, + { + indent: row_indent, + max_col: origin.col, + }, ) |> add_lb(w.id, indent); (indent, last, map); | Secondary(w) => let wspace_length = Unicode.length(Secondary.get_string(w.content)); - let last = {...origin, col: origin.col + wspace_length}; - let map = map |> add_w(w, {origin, last}); + let last = { + ...origin, + col: origin.col + wspace_length, + }; + let map = + map + |> add_w( + w, + { + origin, + last, + }, + ); (contained_indent, last, map); | Grout(g) => - let last = {...origin, col: origin.col + 1}; - let map = map |> add_g(g, {origin, last}); + let last = { + ...origin, + col: origin.col + 1, + }; + let map = + map + |> add_g( + g, + { + origin, + last, + }, + ); (contained_indent, last, map); | Projector(p) => let token = Projector.placeholder(p, Id.Map.find_opt(p.id, info_map)); let last = last_of_token(token, origin); let map = extra_rows(token, origin, map); - let map = add_pr(p, {origin, last}, map); + let map = + add_pr( + p, + { + origin, + last, + }, + map, + ); (contained_indent, last, map); | Tile(t) => let add_shard = (origin, shard, map) => { let token = List.nth(t.label, shard); let map = extra_rows(token, origin, map); let last = last_of_token(token, origin); - let map = add_s(t.id, shard, {origin, last}, map); + let map = + add_s( + t.id, + shard, + { + origin, + last, + }, + map, + ); (last, map); }; let (last, map) = diff --git a/src/haz3lcore/assistant/AssistantCtx.re b/src/haz3lcore/assistant/AssistantCtx.re index 0caee1f921..76ab123c05 100644 --- a/src/haz3lcore/assistant/AssistantCtx.re +++ b/src/haz3lcore/assistant/AssistantCtx.re @@ -10,7 +10,10 @@ let free_variables = | None => let joint_use_typ = CoCtx.join(ctx, entries); if (Typ.is_consistent(ctx, expected_ty, joint_use_typ)) { - Some({content: name, strategy: Pat(FromCoCtx(joint_use_typ))}); + Some({ + content: name, + strategy: Pat(FromCoCtx(joint_use_typ)), + }); } else { None; }; @@ -26,7 +29,10 @@ let bound_variables = (ty_expect: Typ.t, ctx: Ctx.t): list(Suggestion.t) => fun | Ctx.VarEntry({typ, name, _}) when Typ.is_consistent(ctx, ty_expect, typ) => - Some({content: name, strategy: Exp(Common(FromCtx(typ)))}) + Some({ + content: name, + strategy: Exp(Common(FromCtx(typ))), + }) | _ => None, ctx, ); @@ -39,7 +45,10 @@ let bound_constructors = fun | Ctx.ConstructorEntry({typ, name, _}) when Typ.is_consistent(ctx, ty, typ) => - Some({content: name, strategy: wrap(FromCtx(typ))}) + Some({ + content: name, + strategy: wrap(FromCtx(typ)), + }) | _ => None, ctx, ); @@ -72,7 +81,10 @@ let bound_constructor_aps = (wrap, ty: Typ.t, ctx: Ctx.t): list(Suggestion.t) => when Typ.is_consistent(ctx, ty, ty_out) && !Typ.is_consistent(ctx, ty, ty_arr) => - Some({content: name ++ "(", strategy: wrap(FromCtxAp(ty_out))}) + Some({ + content: name ++ "(", + strategy: wrap(FromCtxAp(ty_out)), + }) | _ => None, ctx, ); @@ -82,7 +94,10 @@ let typ_context_entries = (ctx: Ctx.t): list(Suggestion.t) => List.filter_map( fun | Ctx.TVarEntry({kind: Singleton(_), name, _}) => - Some({content: name, strategy: Typ(FromCtx)}) + Some({ + content: name, + strategy: Typ(FromCtx), + }) | _ => None, ctx, ); diff --git a/src/haz3lcore/assistant/AssistantForms.re b/src/haz3lcore/assistant/AssistantForms.re index f3551ac0eb..998288a581 100644 --- a/src/haz3lcore/assistant/AssistantForms.re +++ b/src/haz3lcore/assistant/AssistantForms.re @@ -181,18 +181,29 @@ let suggest_form = (ty_map, delims_of_sort, ci: Info.t): list(Suggestion.t) => { | Exp => List.map( ((content, ty)) => - Suggestion.{content, strategy: Exp(Common(NewForm(ty)))}, + Suggestion.{ + content, + strategy: Exp(Common(NewForm(ty))), + }, filtered, ) | Pat => List.map( ((content, ty)) => - Suggestion.{content, strategy: Pat(Common(NewForm(ty)))}, + Suggestion.{ + content, + strategy: Pat(Common(NewForm(ty))), + }, filtered, ) | _ => delims - |> List.map(content => Suggestion.{content, strategy: Typ(NewForm)}) + |> List.map(content => + Suggestion.{ + content, + strategy: Typ(NewForm), + } + ) }; }; diff --git a/src/haz3lcore/assistant/TyDi.re b/src/haz3lcore/assistant/TyDi.re index 1118fc115f..0af2429b43 100644 --- a/src/haz3lcore/assistant/TyDi.re +++ b/src/haz3lcore/assistant/TyDi.re @@ -9,7 +9,10 @@ let suggest_backpack = (z: Zipper.t): list(Suggestion.t) => { | [{content, _}, ..._] => switch (content) { | [Tile({label, shards: [idx], _})] when Zipper.can_put_down(z) => [ - {content: List.nth(label, idx), strategy: Any(FromBackpack)}, + { + content: List.nth(label, idx), + strategy: Any(FromBackpack), + }, ] | _ => [] } @@ -52,7 +55,15 @@ let token_to_left = (z: Zipper.t): option(string) => let mk_unparsed_buffer = (~sort: Sort.t, sibs: Siblings.t, t: Token.t): Segment.t => { let mold = Siblings.mold_fitting_between(sort, Precedence.max, sibs); - [Tile({id: Id.mk(), label: [t], shards: [0], children: [], mold})]; + [ + Tile({ + id: Id.mk(), + label: [t], + shards: [0], + children: [], + mold, + }), + ]; }; /* If 'current' is a proper prefix of 'candidate', return the diff --git a/src/haz3lcore/dynamics/Builtins.re b/src/haz3lcore/dynamics/Builtins.re index 4479989fd5..2162f397aa 100644 --- a/src/haz3lcore/dynamics/Builtins.re +++ b/src/haz3lcore/dynamics/Builtins.re @@ -362,9 +362,18 @@ let ctx_init: Ctx.t = { }); List.map( fun - | (name, Const(typ, _)) => Ctx.VarEntry({name, typ, id: Id.invalid}) + | (name, Const(typ, _)) => + Ctx.VarEntry({ + name, + typ, + id: Id.invalid, + }) | (name, Fn(t1, t2, _)) => - Ctx.VarEntry({name, typ: Arrow(t1, t2) |> Typ.fresh, id: Id.invalid}), + Ctx.VarEntry({ + name, + typ: Arrow(t1, t2) |> Typ.fresh, + id: Id.invalid, + }), Pervasives.builtins, ) |> Ctx.extend(_, meta) diff --git a/src/haz3lcore/dynamics/Casts.re b/src/haz3lcore/dynamics/Casts.re index 170d057e76..b7517dc9b7 100644 --- a/src/haz3lcore/dynamics/Casts.re +++ b/src/haz3lcore/dynamics/Casts.re @@ -187,7 +187,11 @@ let pattern_fixup = (p: DHPat.t): DHPat.t => { let (p1, d1) = unwrap_casts(p1); ( p1, - {term: DHExp.Cast(d1, t1, t2), copied: p.copied, ids: p.ids} + { + term: DHExp.Cast(d1, t1, t2), + copied: p.copied, + ids: p.ids, + } |> transition_multiple, ); | _ => (p, hole) @@ -198,7 +202,11 @@ let pattern_fixup = (p: DHPat.t): DHPat.t => { | EmptyHole => p | Cast(d1, t1, t2) => let p1 = rewrap_casts((p, d1)); - {term: DHPat.Cast(p1, t1, t2), copied: d.copied, ids: d.ids}; + { + term: DHPat.Cast(p1, t1, t2), + copied: d.copied, + ids: d.ids, + }; | FailedCast(d1, t1, t2) => let p1 = rewrap_casts((p, d1)); { diff --git a/src/haz3lcore/dynamics/DHExp.re b/src/haz3lcore/dynamics/DHExp.re index f7651ba963..2bf3a461c1 100644 --- a/src/haz3lcore/dynamics/DHExp.re +++ b/src/haz3lcore/dynamics/DHExp.re @@ -11,17 +11,51 @@ let term_of: t => term = IdTagged.term_of; let fast_copy: (Id.t, t) => t = IdTagged.fast_copy; let mk = (ids, term): t => { - {ids, copied: true, term}; + { + ids, + copied: true, + term, + }; }; // TODO: make this function emit a map of changes let replace_all_ids = map_term( - ~f_exp=(continue, exp) => {...exp, ids: [Id.mk()]} |> continue, - ~f_pat=(continue, exp) => {...exp, ids: [Id.mk()]} |> continue, - ~f_typ=(continue, exp) => {...exp, ids: [Id.mk()]} |> continue, - ~f_tpat=(continue, exp) => {...exp, ids: [Id.mk()]} |> continue, - ~f_rul=(continue, exp) => {...exp, ids: [Id.mk()]} |> continue, + ~f_exp= + (continue, exp) => + { + ...exp, + ids: [Id.mk()], + } + |> continue, + ~f_pat= + (continue, exp) => + { + ...exp, + ids: [Id.mk()], + } + |> continue, + ~f_typ= + (continue, exp) => + { + ...exp, + ids: [Id.mk()], + } + |> continue, + ~f_tpat= + (continue, exp) => + { + ...exp, + ids: [Id.mk()], + } + |> continue, + ~f_rul= + (continue, exp) => + { + ...exp, + ids: [Id.mk()], + } + |> continue, ); // TODO: make this function emit a map of changes diff --git a/src/haz3lcore/dynamics/Elaborator.re b/src/haz3lcore/dynamics/Elaborator.re index bdc5baf621..f58ca1c6ec 100644 --- a/src/haz3lcore/dynamics/Elaborator.re +++ b/src/haz3lcore/dynamics/Elaborator.re @@ -393,7 +393,11 @@ let rec elaborate = (m: Statics.Map.t, uexp: UExp.t): (DHExp.t, Typ.t) => { let kind' = switch (kind) { | Residue(_) => kind - | Filter({act, pat}) => Filter({act, pat: elaborate(m, pat) |> fst}) + | Filter({act, pat}) => + Filter({ + act, + pat: elaborate(m, pat) |> fst, + }) }; Filter(kind', e') |> rewrap |> cast_from(t); | Closure(env, e) => diff --git a/src/haz3lcore/dynamics/EvaluatorState.re b/src/haz3lcore/dynamics/EvaluatorState.re index bb85612d05..35210b2b59 100644 --- a/src/haz3lcore/dynamics/EvaluatorState.re +++ b/src/haz3lcore/dynamics/EvaluatorState.re @@ -4,7 +4,10 @@ type t = { tests: TestMap.t, }; -let init = {stats: EvaluatorStats.initial, tests: TestMap.empty}; +let init = { + stats: EvaluatorStats.initial, + tests: TestMap.empty, +}; let take_step = ({stats, _} as es) => { ...es, @@ -13,13 +16,22 @@ let take_step = ({stats, _} as es) => { let get_step = ({stats, _}) => stats |> EvaluatorStats.get_step; -let put_step = (step, es) => {...es, stats: EvaluatorStats.put_step(step)}; +let put_step = (step, es) => { + ...es, + stats: EvaluatorStats.put_step(step), +}; let add_test = ({tests, _} as es, id, report) => { let tests = tests |> TestMap.extend((id, report)); - {...es, tests}; + { + ...es, + tests, + }; }; let get_tests = ({tests, _}) => tests; -let put_tests = (tests, es) => {...es, tests}; +let put_tests = (tests, es) => { + ...es, + tests, +}; diff --git a/src/haz3lcore/dynamics/EvaluatorStep.re b/src/haz3lcore/dynamics/EvaluatorStep.re index 0882fa223f..fb2919096e 100644 --- a/src/haz3lcore/dynamics/EvaluatorStep.re +++ b/src/haz3lcore/dynamics/EvaluatorStep.re @@ -19,7 +19,12 @@ module EvalObj = { knd: step_kind, }; - let mk = (ctx, env, d_loc, knd) => {ctx, env, d_loc, knd}; + let mk = (ctx, env, d_loc, knd) => { + ctx, + env, + d_loc, + knd, + }; let get_ctx = (obj: t): EvalCtx.t => { obj.ctx; @@ -237,7 +242,11 @@ let rec matches = }; let (let+) = map; let (ract, ridx, rctx) = { - let wrap_ids = (ids, ctx) => EvalCtx.Term({term: ctx, ids}); + let wrap_ids = (ids, ctx) => + EvalCtx.Term({ + term: ctx, + ids, + }); switch (ctx) { | Mark => (act, idx, EvalCtx.Mark) | Term({term, ids}) => @@ -382,7 +391,10 @@ let rec matches = | _ when midx > pidx && mact |> snd == All => ( ract, ridx, - Term({term: Filter(Residue(midx, mact), rctx), ids: [Id.mk()]}), + Term({ + term: Filter(Residue(midx, mact), rctx), + ids: [Id.mk()], + }), ) | _ => (ract, ridx, rctx) }; @@ -396,8 +408,20 @@ let should_hide_eval_obj = let (act, _, ctx) = matches(ClosureEnvironment.empty, [], x.ctx, x.d_loc, (Step, One), 0); switch (act) { - | (Eval, _) => (Eval, {...x, ctx}) - | (Step, _) => (Step, {...x, ctx}) + | (Eval, _) => ( + Eval, + { + ...x, + ctx, + }, + ) + | (Step, _) => ( + Step, + { + ...x, + ctx, + }, + ) }; }; @@ -408,8 +432,20 @@ let should_hide_step = (~settings, x: step): (FilterAction.action, step) => let (act, _, ctx) = matches(ClosureEnvironment.empty, [], x.ctx, x.d_loc, (Step, One), 0); switch (act) { - | (Eval, _) => (Eval, {...x, ctx}) - | (Step, _) => (Step, {...x, ctx}) + | (Eval, _) => ( + Eval, + { + ...x, + ctx, + }, + ) + | (Step, _) => ( + Step, + { + ...x, + ctx, + }, + ) }; }; diff --git a/src/haz3lcore/dynamics/Stepper.re b/src/haz3lcore/dynamics/Stepper.re index 8b977cdf5f..67a5da98d2 100644 --- a/src/haz3lcore/dynamics/Stepper.re +++ b/src/haz3lcore/dynamics/Stepper.re @@ -47,7 +47,11 @@ let rec matches = switch (ctx) { | Mark => (act, idx, EvalCtx.Mark) | Term({term, ids}) => - let rewrap = term => EvalCtx.Term({term, ids}); + let rewrap = term => + EvalCtx.Term({ + term, + ids, + }); switch ((term: EvalCtx.term)) { | Closure(env, ctx) => let+ ctx = matches(env, flt, ctx, exp, act, idx); @@ -167,7 +171,10 @@ let rec matches = | _ when midx > pidx && mact |> snd == All => ( ract, ridx, - Term({term: Filter(Residue(midx, mact), rctx), ids: [Id.mk()]}), + Term({ + term: Filter(Residue(midx, mact), rctx), + ids: [Id.mk()], + }), ) | _ => (ract, ridx, rctx) }; @@ -181,8 +188,20 @@ let should_hide_eval_obj = let (act, _, ctx) = matches(ClosureEnvironment.empty, [], x.ctx, x.d_loc, (Step, One), 0); switch (act) { - | (Eval, _) => (Eval, {...x, ctx}) - | (Step, _) => (Step, {...x, ctx}) + | (Eval, _) => ( + Eval, + { + ...x, + ctx, + }, + ) + | (Step, _) => ( + Step, + { + ...x, + ctx, + }, + ) }; }; @@ -193,8 +212,20 @@ let should_hide_step = (~settings, x: step): (FilterAction.action, step) => let (act, _, ctx) = matches(ClosureEnvironment.empty, [], x.ctx, x.d_loc, (Step, One), 0); switch (act) { - | (Eval, _) => (Eval, {...x, ctx}) - | (Step, _) => (Step, {...x, ctx}) + | (Eval, _) => ( + Eval, + { + ...x, + ctx, + }, + ) + | (Step, _) => ( + Step, + { + ...x, + ctx, + }, + ) }; }; @@ -210,7 +241,10 @@ let current_expr = ({history, _}: t) => Aba.hd(history) |> fst; let current_state = ({history, _}: t) => Aba.hd(history) |> snd; let step_pending = (idx: int, stepper: t) => { - {...stepper, stepper_state: StepPending(idx)}; + { + ...stepper, + stepper_state: StepPending(idx), + }; }; let init = (~settings, {d}: Elaborator.Elaboration.t) => { @@ -232,8 +266,15 @@ let rec evaluate_pending = (~settings, s: t) => { List.find_opt(((_, (act, _))) => act == FilterAction.Eval, next') ) { | Some((i, (_, _))) => - {...s, stepper_state: StepPending(i)} |> evaluate_pending(~settings) - | None => {...s, stepper_state: StepperDone} + { + ...s, + stepper_state: StepPending(i), + } + |> evaluate_pending(~settings) + | None => { + ...s, + stepper_state: StepperDone, + } }; | StepPending(i) => let (_, eo) = List.nth(s.next_options, i); @@ -392,7 +433,12 @@ let get_history = (~settings, stepper) => { (Option.map(x => (x, x.d_loc' |> DHExp.rep_id), previous_step), []), hidden_steps, ); - {d, previous_step, hidden_steps, chosen_step}; + { + d, + previous_step, + hidden_steps, + chosen_step, + }; }; let padded = grouped_steps |> Aba.bab_triples; let result = padded |> List.map(track_ids); diff --git a/src/haz3lcore/dynamics/Transition.re b/src/haz3lcore/dynamics/Transition.re index 5c936426b9..f344e19bc5 100644 --- a/src/haz3lcore/dynamics/Transition.re +++ b/src/haz3lcore/dynamics/Transition.re @@ -161,7 +161,11 @@ module Transition = (EV: EV_MODE) => { let transition = (req, state, env, d): 'a => { // Split DHExp into term and id information let (term, rewrap) = DHExp.unwrap(d); - let wrap_ctx = (term): EvalCtx.t => Term({term, ids: [rep_id(d)]}); + let wrap_ctx = (term): EvalCtx.t => + Term({ + term, + ids: [rep_id(d)], + }); // Transition rules switch (term) { @@ -181,7 +185,12 @@ module Transition = (EV: EV_MODE) => { let. _ = otherwise(env, d1 => Seq(d1, d2) |> rewrap) and. _ = req_final(req(state, env), d1 => Seq1(d1, d2) |> wrap_ctx, d1); - Step({expr: d2, state_update, kind: Seq, is_value: false}); + Step({ + expr: d2, + state_update, + kind: Seq, + is_value: false, + }); | Let(dp, d1, d2) => let. _ = otherwise(env, d1 => Let(dp, d1, d2) |> rewrap) and. d1' = @@ -735,7 +744,12 @@ module Transition = (EV: EV_MODE) => { let. _ = otherwise(env, d => Closure(env', d) |> rewrap) and. d' = req_final(req(state, env'), d1 => Closure(env', d1) |> wrap_ctx, d); - Step({expr: d', state_update, kind: CompleteClosure, is_value: true}); + Step({ + expr: d', + state_update, + kind: CompleteClosure, + is_value: true, + }); | MultiHole(_) => let. _ = otherwise(env, d); // and. _ = @@ -755,7 +769,13 @@ module Transition = (EV: EV_MODE) => { and. d' = req_final(req(state, env), d => Cast(d, t1, t2) |> wrap_ctx, d); switch (Casts.transition(Cast(d', t1, t2) |> rewrap)) { - | Some(d) => Step({expr: d, state_update, kind: Cast, is_value: false}) + | Some(d) => + Step({ + expr: d, + state_update, + kind: Cast, + is_value: false, + }) | None => Constructor }; | FailedCast(d1, t1, t2) => @@ -772,15 +792,30 @@ module Transition = (EV: EV_MODE) => { Indet; | Parens(d) => let. _ = otherwise(env, d); - Step({expr: d, state_update, kind: RemoveParens, is_value: false}); + Step({ + expr: d, + state_update, + kind: RemoveParens, + is_value: false, + }); | TyAlias(_, _, d) => let. _ = otherwise(env, d); - Step({expr: d, state_update, kind: RemoveTypeAlias, is_value: false}); + Step({ + expr: d, + state_update, + kind: RemoveTypeAlias, + is_value: false, + }); | Filter(f1, d1) => let. _ = otherwise(env, d1 => Filter(f1, d1) |> rewrap) and. d1 = req_final(req(state, env), d1 => Filter(f1, d1) |> wrap_ctx, d1); - Step({expr: d1, state_update, kind: CompleteFilter, is_value: true}); + Step({ + expr: d1, + state_update, + kind: CompleteFilter, + is_value: true, + }); }; }; }; diff --git a/src/haz3lcore/dynamics/TypeAssignment.re b/src/haz3lcore/dynamics/TypeAssignment.re index f4979d94bf..8cd62990ec 100644 --- a/src/haz3lcore/dynamics/TypeAssignment.re +++ b/src/haz3lcore/dynamics/TypeAssignment.re @@ -35,7 +35,12 @@ let dhpat_extend_ctx = (dhpat: DHPat.t, ty: Typ.t, ctx: Ctx.t): option(Ctx.t) => (dhpat: DHPat.t, ty: Typ.t): option(list(Ctx.entry)) => { switch (dhpat |> Pat.term_of) { | Var(name) => - let entry = Ctx.VarEntry({name, id: Id.invalid, typ: ty}); + let entry = + Ctx.VarEntry({ + name, + id: Id.invalid, + typ: ty, + }); Some([entry]); | Tuple(l1) => let* ts = Typ.matched_prod_strict(ctx, List.length(l1), ty); @@ -115,7 +120,11 @@ let rec env_extend_ctx = |> ClosureEnvironment.to_list |> List.map(((name, de)) => { let+ ty = typ_of_dhexp(ctx, m, de); - Ctx.VarEntry({name, id: Id.invalid, typ: ty}); + Ctx.VarEntry({ + name, + id: Id.invalid, + typ: ty, + }); }) |> OptUtil.sequence; List.fold_left((ctx, var_entry) => Ctx.extend(ctx, var_entry), ctx, l); @@ -165,7 +174,14 @@ and typ_of_dhexp = (ctx: Ctx.t, m: Statics.Map.t, dh: DHExp.t): option(Typ.t) => | TypFun({term: Var(name), _} as utpat, d, _) when !Ctx.shadows_typ(ctx, name) => let ctx = - Ctx.extend_tvar(ctx, {name, id: TPat.rep_id(utpat), kind: Abstract}); + Ctx.extend_tvar( + ctx, + { + name, + id: TPat.rep_id(utpat), + kind: Abstract, + }, + ); let* ty = typ_of_dhexp(ctx, m, d); Some(Typ.Forall(utpat, ty) |> Typ.temp); | TypFun(_, d, _) => diff --git a/src/haz3lcore/dynamics/VarBstMap.re b/src/haz3lcore/dynamics/VarBstMap.re index 2952690388..49e5732246 100644 --- a/src/haz3lcore/dynamics/VarBstMap.re +++ b/src/haz3lcore/dynamics/VarBstMap.re @@ -74,12 +74,18 @@ module Ordered = { let failwith_keysinconsistent = () => failwith("VarBstMap.Ordered: order key not in map"); - let empty = {map: VarBstMap0.empty, rev_order: []}; + let empty = { + map: VarBstMap0.empty, + rev_order: [], + }; let is_empty = ({map, _}) => VarBstMap0.is_empty(map); let singleton = ((x, a)) => { - {map: VarBstMap0.singleton((x, a)), rev_order: [(x, ())]}; + { + map: VarBstMap0.singleton((x, a)), + rev_order: [(x, ())], + }; }; let extend = ({map, rev_order}, (x, a)) => { @@ -102,7 +108,10 @@ module Ordered = { let map = VarBstMap0.union(map1, map2); let rev_order = union_order(List.rev(rev_order1), rev_order2); - {map, rev_order}; + { + map, + rev_order, + }; }; let lookup = ({map, _}, x) => VarBstMap0.lookup(map, x); @@ -111,7 +120,10 @@ module Ordered = { let mapk = (f, {map, rev_order}) => { let map = map |> VarBstMap0.map(f); - {map, rev_order}; + { + map, + rev_order, + }; }; let mapo = (f, {map, rev_order}) => { @@ -128,7 +140,10 @@ module Ordered = { }, VarBstMap0.empty, ); - {map, rev_order}; + { + map, + rev_order, + }; }; let filterk = (f, {map, rev_order}) => { @@ -138,7 +153,10 @@ module Ordered = { |> List.rev |> List.filter(((x, _)) => VarBstMap0.contains(map, x)) |> List.rev; - {map, rev_order}; + { + map, + rev_order, + }; }; let filtero = (f, {map, rev_order}) => { @@ -165,7 +183,10 @@ module Ordered = { (map, []), ); - {map, rev_order}; + { + map, + rev_order, + }; }; let foldk = (f, init, {map, _}) => @@ -200,7 +221,10 @@ module Ordered = { let of_list = bindings => { let map = VarBstMap0.of_list(bindings); let rev_order = bindings |> List.map(((x, _)) => (x, ())) |> List.rev; - {map, rev_order}; + { + map, + rev_order, + }; }; let without_keys = (keys, m) => { diff --git a/src/haz3lcore/lang/Form.re b/src/haz3lcore/lang/Form.re index 1990461239..6103eab4c8 100644 --- a/src/haz3lcore/lang/Form.re +++ b/src/haz3lcore/lang/Form.re @@ -47,7 +47,11 @@ type bad_token_cls = | Other | BadInt; -let mk = (expansion, label, mold) => {label, mold, expansion}; +let mk = (expansion, label, mold) => { + label, + mold, + expansion, +}; /* Abbreviations for expansion behaviors */ let ss: expansion = (Static, Static); diff --git a/src/haz3lcore/lang/term/IdTagged.re b/src/haz3lcore/lang/term/IdTagged.re index 3812b0e83f..523d05ab45 100644 --- a/src/haz3lcore/lang/term/IdTagged.re +++ b/src/haz3lcore/lang/term/IdTagged.re @@ -20,13 +20,31 @@ type t('a) = { // fmt_a(formatter, ta.term); // }; let fresh = term => { - {ids: [Id.mk()], copied: false, term}; + { + ids: [Id.mk()], + copied: false, + term, + }; }; let term_of = x => x.term; -let unwrap = x => (x.term, term' => {...x, term: term'}); +let unwrap = x => ( + x.term, + term' => { + ...x, + term: term', + }, +); let rep_id = ({ids, _}) => List.hd(ids); -let fast_copy = (id, {term, _}) => {ids: [id], term, copied: true}; +let fast_copy = (id, {term, _}) => { + ids: [id], + term, + copied: true, +}; let new_ids = fun - | {ids: _, term, copied} => {ids: [Id.mk()], term, copied}; + | {ids: _, term, copied} => { + ids: [Id.mk()], + term, + copied, + }; diff --git a/src/haz3lcore/lang/term/Typ.re b/src/haz3lcore/lang/term/Typ.re index 5dc0b73aaa..993080c46a 100644 --- a/src/haz3lcore/lang/term/Typ.re +++ b/src/haz3lcore/lang/term/Typ.re @@ -31,7 +31,12 @@ let fresh: term => t = IdTagged.fresh; /* fresh assigns a random id, whereas temp assigns Id.invalid, which is a lot faster, and since we so often make types and throw them away shortly after, it makes sense to use it. */ -let temp: term => t = term => {term, ids: [Id.invalid], copied: false}; +let temp: term => t = + term => { + term, + ids: [Id.invalid], + copied: false, + }; let rep_id: t => Id.t = IdTagged.rep_id; let hole = (tms: list(TermBase.Any.t)) => diff --git a/src/haz3lcore/prog/CachedStatics.re b/src/haz3lcore/prog/CachedStatics.re index f2bc13d113..a010aaab6c 100644 --- a/src/haz3lcore/prog/CachedStatics.re +++ b/src/haz3lcore/prog/CachedStatics.re @@ -8,7 +8,12 @@ type statics = { }; let empty_statics: statics = { - term: UExp.{ids: [Id.invalid], copied: false, term: Tuple([])}, + term: + UExp.{ + ids: [Id.invalid], + copied: false, + term: Tuple([]), + }, info_map: Id.Map.empty, error_ids: [], }; diff --git a/src/haz3lcore/prog/Interface.re b/src/haz3lcore/prog/Interface.re index 3249b1aef2..fad11479c5 100644 --- a/src/haz3lcore/prog/Interface.re +++ b/src/haz3lcore/prog/Interface.re @@ -29,6 +29,10 @@ let evaluate = | exception exn => print_endline("EXN:" ++ Printexc.to_string(exn)); ResultFail(UnknownException(Printexc.to_string(exn))); - | (state, result) => ResultOk({result, state}) + | (state, result) => + ResultOk({ + result, + state, + }) } }; diff --git a/src/haz3lcore/prog/ModelResult.re b/src/haz3lcore/prog/ModelResult.re index e8c8980a60..a74c67dc15 100644 --- a/src/haz3lcore/prog/ModelResult.re +++ b/src/haz3lcore/prog/ModelResult.re @@ -12,14 +12,26 @@ type t = | Stepper(Stepper.t); let init_eval = (elab: Elaborator.Elaboration.t) => - Evaluation({elab, evaluation: ResultPending, previous: ResultPending}); + Evaluation({ + elab, + evaluation: ResultPending, + previous: ResultPending, + }); let update_elab = (~settings, elab) => fun | NoElab => - Evaluation({elab, evaluation: ResultPending, previous: ResultPending}) + Evaluation({ + elab, + evaluation: ResultPending, + previous: ResultPending, + }) | Evaluation({evaluation, _}) => - Evaluation({elab, evaluation: ResultPending, previous: evaluation}) + Evaluation({ + elab, + evaluation: ResultPending, + previous: evaluation, + }) | Stepper(s) as s' when DHExp.fast_equal(elab.d, Stepper.get_elab(s).d) => s' | Stepper(_) => Stepper(Stepper.init(~settings, elab)); @@ -52,7 +64,11 @@ let timeout: t => t = fun | NoElab => NoElab | Evaluation({evaluation, _} as e) => - Evaluation({...e, evaluation: ResultFail(Timeout), previous: evaluation}) + Evaluation({ + ...e, + evaluation: ResultFail(Timeout), + previous: evaluation, + }) | Stepper(s) => Stepper(Stepper.timeout(s)); let toggle_stepper = (~settings) => diff --git a/src/haz3lcore/prog/ModelResults.re b/src/haz3lcore/prog/ModelResults.re index a49d287d07..e65a5d7c44 100644 --- a/src/haz3lcore/prog/ModelResults.re +++ b/src/haz3lcore/prog/ModelResults.re @@ -48,12 +48,23 @@ let advance_evaluator_result = switch (lookup(results, key)) { | Some(Stepper(_)) => None | Some(Evaluation({evaluation: previous, _})) => - Some((key, Evaluation({elab, evaluation: ResultPending, previous}))) + Some(( + key, + Evaluation({ + elab, + evaluation: ResultPending, + previous, + }), + )) | Some(NoElab) | None => Some(( key, - Evaluation({elab, evaluation: ResultPending, previous: ResultPending}), + Evaluation({ + elab, + evaluation: ResultPending, + previous: ResultPending, + }), )) }; diff --git a/src/haz3lcore/statics/CoCtx.re b/src/haz3lcore/statics/CoCtx.re index 3088ef4a28..d743cd44b4 100644 --- a/src/haz3lcore/statics/CoCtx.re +++ b/src/haz3lcore/statics/CoCtx.re @@ -57,7 +57,15 @@ let union: list(t) => t = List.fold_left((co_ctx1, co_ctx2) => co_ctx1 @ co_ctx2, []); let singleton = (name, id, expected_ty): t => [ - (name, [{id, expected_ty}]), + ( + name, + [ + { + id, + expected_ty, + }, + ], + ), ]; let join: (Ctx.t, list(entry)) => Typ.t = diff --git a/src/haz3lcore/statics/Ctx.re b/src/haz3lcore/statics/Ctx.re index 9791b6cd0f..67c7bfb143 100644 --- a/src/haz3lcore/statics/Ctx.re +++ b/src/haz3lcore/statics/Ctx.re @@ -34,11 +34,26 @@ let extend_tvar = (ctx: t, tvar_entry: tvar_entry): t => extend(ctx, TVarEntry(tvar_entry)); let extend_alias = (ctx: t, name: string, id: Id.t, ty: TermBase.Typ.t): t => - extend_tvar(ctx, {name, id, kind: Singleton(ty)}); + extend_tvar( + ctx, + { + name, + id, + kind: Singleton(ty), + }, + ); let extend_dummy_tvar = (ctx: t, tvar: TPat.t) => switch (TPat.tyvar_of_utpat(tvar)) { - | Some(name) => extend_tvar(ctx, {kind: Abstract, name, id: Id.invalid}) + | Some(name) => + extend_tvar( + ctx, + { + kind: Abstract, + name, + id: Id.invalid, + }, + ) | None => ctx }; diff --git a/src/haz3lcore/statics/Info.re b/src/haz3lcore/statics/Info.re index 8aaaeaae3d..362fcb104d 100644 --- a/src/haz3lcore/statics/Info.re +++ b/src/haz3lcore/statics/Info.re @@ -355,8 +355,25 @@ let rec status_common = syn /* Note: the ordering of ana, syn matters */ ) ) { - | None => InHole(Inconsistent(Expectation({syn, ana}))) - | Some(join) => NotInHole(Ana(Consistent({ana, syn, join}))) + | None => + InHole( + Inconsistent( + Expectation({ + syn, + ana, + }), + ), + ) + | Some(join) => + NotInHole( + Ana( + Consistent({ + ana, + syn, + join, + }), + ), + ) } | (IsConstructor({name, syn_ty}), _) => /* If a ctr is being analyzed against (an arrow type returning) @@ -374,10 +391,23 @@ let rec status_common = | (NoJoin(wrap, tys), Ana(ana)) => let syn: Typ.t = Self.join_of(wrap, Unknown(Internal) |> Typ.temp); switch (Typ.join_fix(ctx, ana, syn)) { - | None => InHole(Inconsistent(Expectation({ana, syn}))) + | None => + InHole( + Inconsistent( + Expectation({ + ana, + syn, + }), + ), + ) | Some(_) => NotInHole( - Ana(InternallyInconsistent({ana, nojoin: Typ.of_source(tys)})), + Ana( + InternallyInconsistent({ + ana, + nojoin: Typ.of_source(tys), + }), + ), ) }; | (NoJoin(_, tys), Syn | SynFun | SynTypFun) => @@ -614,7 +644,17 @@ let derived_exp = let cls = Cls.Exp(UExp.cls_of_term(uexp.term)); let status = status_exp(ctx, mode, self); let ty = fixed_typ_exp(ctx, mode, self); - {cls, self, ty, mode, status, ctx, co_ctx, ancestors, term: uexp}; + { + cls, + self, + ty, + mode, + status, + ctx, + co_ctx, + ancestors, + term: uexp, + }; }; /* Add derivable attributes for pattern terms */ @@ -659,14 +699,27 @@ let derived_typ = (~utyp: UTyp.t, ~ctx, ~ancestors, ~expects): typ => { | (_, cls) => Cls.Typ(cls) }; let status = status_typ(ctx, expects, utyp); - {cls, ctx, ancestors, status, expects, term: utyp}; + { + cls, + ctx, + ancestors, + status, + expects, + term: utyp, + }; }; /* Add derivable attributes for type patterns */ let derived_tpat = (~utpat: TPat.t, ~ctx, ~ancestors): tpat => { let cls = Cls.TPat(TPat.cls_of_term(utpat.term)); let status = status_tpat(ctx, utpat); - {cls, ancestors, status, ctx, term: utpat}; + { + cls, + ancestors, + status, + ctx, + term: utpat, + }; }; /* If the info represents some kind of name binding which diff --git a/src/haz3lcore/statics/MakeTerm.re b/src/haz3lcore/statics/MakeTerm.re index 673af0bb89..847900644b 100644 --- a/src/haz3lcore/statics/MakeTerm.re +++ b/src/haz3lcore/statics/MakeTerm.re @@ -132,7 +132,11 @@ let parse_sum_term: UTyp.t => ConstructorMap.variant(UTyp.t) = | t => BadEntry(t); let mk_bad = (ctr, ids, value) => { - let t: Typ.t = {ids, copied: false, term: Var(ctr)}; + let t: Typ.t = { + ids, + copied: false, + term: Var(ctr), + }; switch (value) { | None => t | Some(u) => Ap(t, u) |> Typ.fresh @@ -168,7 +172,15 @@ let rec go_s = (s: Sort.t, skel: Skel.t, seg: Segment.t): Term.Any.t => and exp = unsorted => { let (term, inner_ids) = exp_term(unsorted); let ids = ids(unsorted) @ inner_ids; - return(e => Exp(e), ids, {ids, copied: false, term}); + return( + e => Exp(e), + ids, + { + ids, + copied: false, + term, + }, + ); } and exp_term: unsorted => (UExp.term, list(Id.t)) = { let ret = (tm: UExp.term) => (tm, []); @@ -221,13 +233,37 @@ and exp_term: unsorted => (UExp.term, list(Id.t)) = { | (["typfun", "->"], [TPat(tpat)]) => TypFun(tpat, r, None) | (["let", "=", "in"], [Pat(pat), Exp(def)]) => Let(pat, def, r) | (["hide", "in"], [Exp(filter)]) => - Filter(Filter({act: (Eval, One), pat: filter}), r) + Filter( + Filter({ + act: (Eval, One), + pat: filter, + }), + r, + ) | (["eval", "in"], [Exp(filter)]) => - Filter(Filter({act: (Eval, All), pat: filter}), r) + Filter( + Filter({ + act: (Eval, All), + pat: filter, + }), + r, + ) | (["pause", "in"], [Exp(filter)]) => - Filter(Filter({act: (Step, One), pat: filter}), r) + Filter( + Filter({ + act: (Step, One), + pat: filter, + }), + r, + ) | (["debug", "in"], [Exp(filter)]) => - Filter(Filter({act: (Step, All), pat: filter}), r) + Filter( + Filter({ + act: (Step, All), + pat: filter, + }), + r, + ) | (["type", "=", "in"], [TPat(tpat), Typ(def)]) => TyAlias(tpat, def, r) | (["if", "then", "else"], [Exp(cond), Exp(conseq)]) => @@ -246,7 +282,11 @@ and exp_term: unsorted => (UExp.term, list(Id.t)) = { Ap( Forward, l, - {ids: [Id.nullary_ap_flag], copied: false, term: Tuple([])}, + { + ids: [Id.nullary_ap_flag], + copied: false, + term: Tuple([]), + }, ), ) | (["(", ")"], [Exp(arg)]) => @@ -324,7 +364,15 @@ and exp_term: unsorted => (UExp.term, list(Id.t)) = { and pat = unsorted => { let (term, inner_ids) = pat_term(unsorted); let ids = ids(unsorted) @ inner_ids; - return(p => Pat(p), ids, {ids, term, copied: false}); + return( + p => Pat(p), + ids, + { + ids, + term, + copied: false, + }, + ); } and pat_term: unsorted => (UPat.term, list(Id.t)) = { let ret = (term: UPat.term) => (term, []); @@ -390,7 +438,15 @@ and pat_term: unsorted => (UPat.term, list(Id.t)) = { and typ = unsorted => { let (term, inner_ids) = typ_term(unsorted); let ids = ids(unsorted) @ inner_ids; - return(ty => Typ(ty), ids, {ids, term, copied: false}); + return( + ty => Typ(ty), + ids, + { + ids, + term, + copied: false, + }, + ); } and typ_term: unsorted => (UTyp.term, list(Id.t)) = { let ret = (term: UTyp.term) => (term, []); @@ -465,7 +521,15 @@ and typ_term: unsorted => (UTyp.term, list(Id.t)) = { and tpat = unsorted => { let term = tpat_term(unsorted); let ids = ids(unsorted); - return(ty => TPat(ty), ids, {ids, term, copied: false}); + return( + ty => TPat(ty), + ids, + { + ids, + term, + copied: false, + }, + ); } and tpat_term: unsorted => TPat.term = { let ret = (term: TPat.term) => term; @@ -506,11 +570,23 @@ and rul = (unsorted: unsorted): Rul.t => { Rules(scrut, List.combine(ps, leading_clauses @ [last_clause])), copied: false, } - | None => {ids: ids(unsorted), term: hole, copied: false} + | None => { + ids: ids(unsorted), + term: hole, + copied: false, + } } - | _ => {ids: ids(unsorted), term: hole, copied: false} + | _ => { + ids: ids(unsorted), + term: hole, + copied: false, + } + } + | e => { + ids: [], + term: Rules(e, []), + copied: false, } - | e => {ids: [], term: Rules(e, []), copied: false} }; } @@ -572,7 +648,11 @@ let go = map := TermMap.empty; projectors := Id.Map.empty; let term = exp(unsorted(Segment.skel(seg), seg)); - {term, terms: map^, projectors: projectors^}; + { + term, + terms: map^, + projectors: projectors^, + }; }, ); diff --git a/src/haz3lcore/statics/Self.re b/src/haz3lcore/statics/Self.re index cece7d2b0b..ffde40c76a 100644 --- a/src/haz3lcore/statics/Self.re +++ b/src/haz3lcore/statics/Self.re @@ -118,7 +118,12 @@ let of_deferred_ap = (args, ty_ins: list(Typ.t), ty_out: Typ.t): exp => { let expected = List.length(ty_ins); let actual = List.length(args); if (expected != actual) { - IsBadPartialAp(ArityMismatch({expected, actual})); + IsBadPartialAp( + ArityMismatch({ + expected, + actual, + }), + ); } else if (List.for_all(Exp.is_deferral, args)) { IsBadPartialAp(NoDeferredArgs); } else { @@ -133,7 +138,13 @@ let of_deferred_ap = (args, ty_ins: list(Typ.t), ty_out: Typ.t): exp => { }; }; -let add_source = List.map2((id, ty) => Typ.{id, ty}); +let add_source = + List.map2((id, ty) => + Typ.{ + id, + ty, + } + ); let match = (ctx: Ctx.t, tys: list(Typ.t), ids: list(Id.t)): t => switch (Typ.join_all(~empty=Unknown(Internal) |> Typ.fresh, ctx, tys)) { diff --git a/src/haz3lcore/statics/Statics.re b/src/haz3lcore/statics/Statics.re index aca1ce0389..887e0bb8f9 100644 --- a/src/haz3lcore/statics/Statics.re +++ b/src/haz3lcore/statics/Statics.re @@ -378,7 +378,14 @@ and uexp_to_info_map = let mode_body = Mode.of_forall(ctx, Some(name), mode); let m = utpat_to_info_map(~ctx, ~ancestors, utpat, m) |> snd; let ctx_body = - Ctx.extend_tvar(ctx, {name, id: TPat.rep_id(utpat), kind: Abstract}); + Ctx.extend_tvar( + ctx, + { + name, + id: TPat.rep_id(utpat), + kind: Abstract, + }, + ); let (body, m) = go'(~ctx=ctx_body, ~mode=mode_body, body, m); add( ~self=Just(Forall(utpat, body.ty) |> Typ.temp), @@ -770,7 +777,12 @@ and upat_to_info_map = mode, Common(Just(Unknown(Internal) |> Typ.temp)), ); - let entry = Ctx.VarEntry({name, id: UPat.rep_id(upat), typ: ctx_typ}); + let entry = + Ctx.VarEntry({ + name, + id: UPat.rep_id(upat), + typ: ctx_typ, + }); add( ~self=Just(unknown), ~ctx=Ctx.extend(ctx, entry), @@ -878,7 +890,14 @@ and utyp_to_info_map = add(m); | Forall({term: Var(name), _} as utpat, tbody) => let body_ctx = - Ctx.extend_tvar(ctx, {name, id: TPat.rep_id(utpat), kind: Abstract}); + Ctx.extend_tvar( + ctx, + { + name, + id: TPat.rep_id(utpat), + kind: Abstract, + }, + ); let m = utyp_to_info_map( tbody, @@ -898,7 +917,14 @@ and utyp_to_info_map = add(m); // TODO: check with andrew | Rec({term: Var(name), _} as utpat, tbody) => let body_ctx = - Ctx.extend_tvar(ctx, {name, id: TPat.rep_id(utpat), kind: Abstract}); + Ctx.extend_tvar( + ctx, + { + name, + id: TPat.rep_id(utpat), + kind: Abstract, + }, + ); let m = utyp_to_info_map( tbody, @@ -955,7 +981,11 @@ and variant_to_info_map = List.mem(ctr, ctrs) ? Duplicate : Unique, ty_sum, ), - {term: Var(ctr), ids, copied: false}, + { + term: Var(ctr), + ids, + copied: false, + }, m, ) |> snd; diff --git a/src/haz3lcore/statics/TermBase.re b/src/haz3lcore/statics/TermBase.re index f0585955c6..37cf3e1c76 100644 --- a/src/haz3lcore/statics/TermBase.re +++ b/src/haz3lcore/statics/TermBase.re @@ -1139,7 +1139,11 @@ and StepperFilterKind: { let map = (mapper, filter) => { switch (filter) { - | Filter({act, pat}) => Filter({act, pat: mapper(pat)}) + | Filter({act, pat}) => + Filter({ + act, + pat: mapper(pat), + }) | Residue(idx, act) => Residue(idx, act) }; }; @@ -1156,7 +1160,11 @@ and StepperFilterKind: { let exp_map_term = Exp.map_term(~f_exp, ~f_pat, ~f_typ, ~f_tpat, ~f_rul, ~f_any); fun - | Filter({pat: e, act}) => Filter({pat: exp_map_term(e), act}) + | Filter({pat: e, act}) => + Filter({ + pat: exp_map_term(e), + act, + }) | Residue(i, a) => Residue(i, a); }; diff --git a/src/haz3lcore/tiles/Base.re b/src/haz3lcore/tiles/Base.re index 8c127d83ba..9c8101b4ca 100644 --- a/src/haz3lcore/tiles/Base.re +++ b/src/haz3lcore/tiles/Base.re @@ -39,4 +39,9 @@ and projector = { }; // This is for comment insertion -let mk_secondary = (id, content) => [Secondary({id, content})]; +let mk_secondary = (id, content) => [ + Secondary({ + id, + content, + }), +]; diff --git a/src/haz3lcore/tiles/Grout.re b/src/haz3lcore/tiles/Grout.re index 496de68f10..000889c368 100644 --- a/src/haz3lcore/tiles/Grout.re +++ b/src/haz3lcore/tiles/Grout.re @@ -27,7 +27,10 @@ let mk_fits_shape = (s: Nib.Shape.t): t => { | Convex => Concave | Concave(_) => Convex }; - {id, shape}; + { + id, + shape, + }; }; //let mk_fits = ((l, r): Nibs.shapes): option(t) => // Nib.Shape.fits(l, r) ? None : Some(mk_fits_shape(l)); diff --git a/src/haz3lcore/tiles/Id.re b/src/haz3lcore/tiles/Id.re index 5046dd63c5..c479908a47 100644 --- a/src/haz3lcore/tiles/Id.re +++ b/src/haz3lcore/tiles/Id.re @@ -133,7 +133,10 @@ module Uf: { refs: ref(Map.t(M.rref('a))), store: M.store('a), }; - let init = () => {refs: ref(Map.empty), store: M.new_store()}; + let init = () => { + refs: ref(Map.empty), + store: M.new_store(), + }; let rref = (id, s) => Map.find(id, s.refs^); let add = (id, a, s) => switch (Map.find_opt(id, s.refs^)) { diff --git a/src/haz3lcore/tiles/Mold.re b/src/haz3lcore/tiles/Mold.re index 743fcb0d18..5270b9cd63 100644 --- a/src/haz3lcore/tiles/Mold.re +++ b/src/haz3lcore/tiles/Mold.re @@ -7,44 +7,123 @@ type t = { nibs: Nibs.t, }; -let flip_nibs = m => {...m, nibs: Nibs.flip(m.nibs)}; +let flip_nibs = m => { + ...m, + nibs: Nibs.flip(m.nibs), +}; let mk_op = (out, in_) => { - let n = Nib.{shape: Convex, sort: out}; - {out, in_, nibs: (n, n)}; + let n = + Nib.{ + shape: Convex, + sort: out, + }; + { + out, + in_, + nibs: (n, n), + }; }; let mk_pre = (p, out, in_) => { - let l = Nib.{shape: Convex, sort: out}; - let r = Nib.{shape: Concave(p), sort: out}; - {out, in_, nibs: (l, r)}; + let l = + Nib.{ + shape: Convex, + sort: out, + }; + let r = + Nib.{ + shape: Concave(p), + sort: out, + }; + { + out, + in_, + nibs: (l, r), + }; }; let mk_post = (p, out, in_) => { - let l = Nib.{shape: Concave(p), sort: out}; - let r = Nib.{shape: Convex, sort: out}; - {out, in_, nibs: (l, r)}; + let l = + Nib.{ + shape: Concave(p), + sort: out, + }; + let r = + Nib.{ + shape: Convex, + sort: out, + }; + { + out, + in_, + nibs: (l, r), + }; }; let mk_bin = (~l=?, ~r=?, p, out, in_) => { let l = Option.value(l, ~default=out); let r = Option.value(r, ~default=out); - let nib = sort => Nib.{sort, shape: Concave(p)}; - {out, in_, nibs: (nib(l), nib(r))}; + let nib = sort => + Nib.{ + sort, + shape: Concave(p), + }; + { + out, + in_, + nibs: (nib(l), nib(r)), + }; }; // forms where tips can be different than out sort let mk_pre' = (p, out, sort_l, in_, sort_r) => { - let l = Nib.{shape: Convex, sort: sort_l}; - let r = Nib.{shape: Concave(p), sort: sort_r}; - {out, in_, nibs: (l, r)}; + let l = + Nib.{ + shape: Convex, + sort: sort_l, + }; + let r = + Nib.{ + shape: Concave(p), + sort: sort_r, + }; + { + out, + in_, + nibs: (l, r), + }; }; let mk_post' = (p, out, sort_l, in_, sort_r) => { - let l = Nib.{shape: Concave(p), sort: sort_l}; - let r = Nib.{shape: Convex, sort: sort_r}; - {out, in_, nibs: (l, r)}; + let l = + Nib.{ + shape: Concave(p), + sort: sort_l, + }; + let r = + Nib.{ + shape: Convex, + sort: sort_r, + }; + { + out, + in_, + nibs: (l, r), + }; }; let mk_bin' = (p, out, sort_l, in_, sort_r) => { - let l = Nib.{shape: Concave(p), sort: sort_l}; - let r = Nib.{shape: Concave(p), sort: sort_r}; - {out, in_, nibs: (l, r)}; + let l = + Nib.{ + shape: Concave(p), + sort: sort_l, + }; + let r = + Nib.{ + shape: Concave(p), + sort: sort_r, + }; + { + out, + in_, + nibs: (l, r), + }; }; let nibs = (~index=?, mold: t): Nibs.t => @@ -54,10 +133,19 @@ let nibs = (~index=?, mold: t): Nibs.t => let (l, r) = mold.nibs; let in_ = mold.in_; let l = - i == 0 ? l : Nib.{shape: Shape.concave(), sort: List.nth(in_, i - 1)}; + i == 0 + ? l + : Nib.{ + shape: Shape.concave(), + sort: List.nth(in_, i - 1), + }; let r = i == List.length(in_) - ? r : Nib.{shape: Shape.concave(), sort: List.nth(in_, i)}; + ? r + : Nib.{ + shape: Shape.concave(), + sort: List.nth(in_, i), + }; (l, r); }; @@ -72,10 +160,18 @@ let of_grout: (Grout.t, Sort.t) => t = // TODO(d): revisit this when reformulating molds switch (g.shape) { | Convex => - let n = Nib.{shape: Convex, sort}; + let n = + Nib.{ + shape: Convex, + sort, + }; (n, n); | Concave => - let n = Nib.{shape: Concave(Precedence.min), sort}; + let n = + Nib.{ + shape: Concave(Precedence.min), + sort, + }; (n, n); }, out: sort, diff --git a/src/haz3lcore/tiles/Nib.re b/src/haz3lcore/tiles/Nib.re index 863ea9bd9f..71f5c5619e 100644 --- a/src/haz3lcore/tiles/Nib.re +++ b/src/haz3lcore/tiles/Nib.re @@ -53,4 +53,7 @@ type t = { let shape = n => n.shape; -let flip = (nib: t) => {...nib, shape: Shape.flip(nib.shape)}; +let flip = (nib: t) => { + ...nib, + shape: Shape.flip(nib.shape), +}; diff --git a/src/haz3lcore/tiles/Piece.re b/src/haz3lcore/tiles/Piece.re index fc6207a979..b85dc6824f 100644 --- a/src/haz3lcore/tiles/Piece.re +++ b/src/haz3lcore/tiles/Piece.re @@ -31,12 +31,34 @@ let nibs = _ => None, g => { let (l, r) = Grout.shapes(g); - Some(Nib.({shape: l, sort: Any}, {shape: r, sort: Any})); + Some( + Nib.( + { + shape: l, + sort: Any, + }, + { + shape: r, + sort: Any, + }, + ), + ); }, t => Some(Tile.nibs(t)), p => { let (l, r) = ProjectorBase.shapes(p); - Some(Nib.({shape: l, sort: Any}, {shape: r, sort: Any})); + Some( + Nib.( + { + shape: l, + sort: Any, + }, + { + shape: r, + sort: Any, + }, + ), + ); }, ); @@ -129,10 +151,26 @@ let is_complete: t => bool = let replace_id = (id: Id.t, p: t): t => switch (p) { - | Tile(t) => Tile({...t, id}) - | Grout(g) => Grout({...g, id}) - | Secondary(w) => Secondary({...w, id}) - | Projector(p) => Projector({...p, id}) + | Tile(t) => + Tile({ + ...t, + id, + }) + | Grout(g) => + Grout({ + ...g, + id, + }) + | Secondary(w) => + Secondary({ + ...w, + id, + }) + | Projector(p) => + Projector({ + ...p, + id, + }) }; let mk_tile: (Form.t, list(list(t))) => t = diff --git a/src/haz3lcore/tiles/Secondary.re b/src/haz3lcore/tiles/Secondary.re index c973469254..f3927d271c 100644 --- a/src/haz3lcore/tiles/Secondary.re +++ b/src/haz3lcore/tiles/Secondary.re @@ -22,7 +22,10 @@ let cls_of = (s: t): cls => | Comment(_) => Comment }; -let mk_space = id => {content: Whitespace(Form.space), id}; +let mk_space = id => { + content: Whitespace(Form.space), + id, +}; let construct_comment = content => if (String.equal(content, "#")) { diff --git a/src/haz3lcore/tiles/Segment.re b/src/haz3lcore/tiles/Segment.re index de8689f08a..e5570ecabf 100644 --- a/src/haz3lcore/tiles/Segment.re +++ b/src/haz3lcore/tiles/Segment.re @@ -91,7 +91,12 @@ and remold_tile = (s: Sort.t, shape, t: Tile.t): option(Tile.t) => { let+ remolded = Molds.get(t.label) |> List.filter((m: Mold.t) => m.out == s) - |> List.map(mold => {...t, mold}) + |> List.map(mold => + { + ...t, + mold, + } + ) |> ( fun | [_] as ts => ts @@ -115,7 +120,10 @@ and remold_tile = (s: Sort.t, shape, t: Tile.t): option(Tile.t) => { Aba.aba_triples(Aba.mk(remolded.shards, remolded.children)), [], ); - {...remolded, children}; + { + ...remolded, + children, + }; } and remold_typ = (shape, seg: t): t => switch (seg) { @@ -518,7 +526,11 @@ and regrout_affix = t.children, [], ); - let p = Piece.Tile({...t, children}); + let p = + Piece.Tile({ + ...t, + children, + }); let (l', r') = Tile.shapes(t) |> (d == Left ? TupleUtil.swap : Fun.id); let trim = Trim.regrout(d, (r', r), trim); @@ -547,7 +559,11 @@ let rec reassemble = (seg: t): t => | Some((seg_l, match, seg_r)) => let t = Tile.reassemble(match); let children = List.map(reassemble, t.children); - let p = Tile.to_piece({...t, children}); + let p = + Tile.to_piece({ + ...t, + children, + }); seg_l @ [p, ...reassemble(seg_r)]; } }; diff --git a/src/haz3lcore/tiles/Skel.re b/src/haz3lcore/tiles/Skel.re index a00f6b1dfd..5524051713 100644 --- a/src/haz3lcore/tiles/Skel.re +++ b/src/haz3lcore/tiles/Skel.re @@ -93,7 +93,10 @@ module Stacks = { shunted: list(ip), }; - let empty = {output: [], shunted: []}; + let empty = { + output: [], + shunted: [], + }; let rec pop_chain = (~popped=[], shunted: list(ip)): (list(ip), list(ip)) => @@ -159,7 +162,13 @@ module Stacks = { let (kids, r) = ListUtil.split_last(kids); [Bin(l, Aba.mk(is, kids), r), ...output]; }; - push_output(~prec?, {shunted, output}); + push_output( + ~prec?, + { + shunted, + output, + }, + ); }; }; @@ -170,7 +179,10 @@ module Stacks = { | Convex => stacks | Concave(prec) => push_output(~prec, stacks) }; - {...stacks, shunted: [ip, ...stacks.shunted]}; + { + ...stacks, + shunted: [ip, ...stacks.shunted], + }; }; let finish = stacks => push_output(stacks); diff --git a/src/haz3lcore/tiles/Tile.re b/src/haz3lcore/tiles/Tile.re index df9350c4ff..5cc69c4585 100644 --- a/src/haz3lcore/tiles/Tile.re +++ b/src/haz3lcore/tiles/Tile.re @@ -49,13 +49,30 @@ let contained_children = (t: t): list((t, Base.segment, t)) => Aba.mk(t.shards, t.children) |> Aba.aba_triples |> List.map(((l, child, r)) => { - let l = {...t, shards: [l], children: []}; - let r = {...t, shards: [r], children: []}; + let l = { + ...t, + shards: [l], + children: [], + }; + let r = { + ...t, + shards: [r], + children: [], + }; (l, child, r); }); let split_shards = (id, label, mold, shards) => - shards |> List.map(i => {id, label, mold, shards: [i], children: []}); + shards + |> List.map(i => + { + id, + label, + mold, + shards: [i], + children: [], + } + ); // postcond: output segment is nonempty let disassemble = ({id, label, mold, shards, children}: t): segment => { diff --git a/src/haz3lcore/zipper/Ancestor.re b/src/haz3lcore/zipper/Ancestor.re index 498b18b93e..5cbd7d543f 100644 --- a/src/haz3lcore/zipper/Ancestor.re +++ b/src/haz3lcore/zipper/Ancestor.re @@ -47,7 +47,13 @@ let sorted_children = (a: t) => { }; let remold = (a: t): list(t) => - Molds.get(a.label) |> List.map(mold => {...a, mold}); + Molds.get(a.label) + |> List.map(mold => + { + ...a, + mold, + } + ); let sort = (a: t): Sort.t => { let (pre, suf) = a.shards; diff --git a/src/haz3lcore/zipper/Backpack.re b/src/haz3lcore/zipper/Backpack.re index b704e36721..324378172d 100644 --- a/src/haz3lcore/zipper/Backpack.re +++ b/src/haz3lcore/zipper/Backpack.re @@ -154,7 +154,10 @@ module ShardInfo = { counts: Counts.t, }; - let init = () => {order: Order.init(), counts: Counts.init()}; + let init = () => { + order: Order.init(), + counts: Counts.init(), + }; let add_sel = (sel: Selection.t, {counts, order}: t): unit => { let ts = Segment.incomplete_tiles(sel.content); diff --git a/src/haz3lcore/zipper/Editor.re b/src/haz3lcore/zipper/Editor.re index cd05476fd9..17fa20c8d9 100644 --- a/src/haz3lcore/zipper/Editor.re +++ b/src/haz3lcore/zipper/Editor.re @@ -8,7 +8,12 @@ module CachedStatics = { }; let empty: t = { - term: UExp.{ids: [Id.invalid], copied: false, term: Tuple([])}, + term: + UExp.{ + ids: [Id.invalid], + copied: false, + term: Tuple([]), + }, info_map: Id.Map.empty, error_ids: [], }; @@ -19,7 +24,11 @@ module CachedStatics = { let term = MakeTerm.from_zip_for_sem(z).term; let info_map = Statics.mk(settings, ctx_init, term); let error_ids = Statics.Map.error_ids(info_map); - {term, info_map, error_ids}; + { + term, + info_map, + error_ids, + }; }; let init = (~settings: CoreSettings.t, z: Zipper.t) => @@ -81,7 +90,10 @@ module CachedSyntax = { let next = (a: Action.t, z: Zipper.t, info_map, old: t) => Action.is_edit(a) ? init(z, info_map) - : {...old, selection_ids: Selection.selection_ids(z.selection)}; + : { + ...old, + selection_ids: Selection.selection_ids(z.selection), + }; }; module Meta = { @@ -93,7 +105,11 @@ module Meta = { let init = (~settings: CoreSettings.t, z: Zipper.t) => { let statics = CachedStatics.init(~settings, z); - {col_target: 0, statics, syntax: CachedSyntax.init(z, statics.info_map)}; + { + col_target: 0, + statics, + syntax: CachedSyntax.init(z, statics.info_map), + }; }; module type S = { @@ -124,7 +140,11 @@ module Meta = { | Select(Resize(Local(Up | Down))) => meta.col_target | _ => (Zipper.caret_point(syntax.measured))(. z).col }; - {col_target, syntax, statics}; + { + col_target, + syntax, + statics, + }; }; }; @@ -180,7 +200,11 @@ let new_state = let history = Action.is_historic(a) ? History.add(a, ed.state, ed.history) : ed.history; - {state, history, read_only: ed.read_only}; + { + state, + history, + read_only: ed.read_only, + }; }; let update_statics = (~settings: CoreSettings.t, ed: t): t => { @@ -223,7 +247,10 @@ let redo = (ed: t) => let can_undo = ed => Option.is_some(undo(ed)); let can_redo = ed => Option.is_some(redo(ed)); -let set_read_only = (ed, read_only) => {...ed, read_only}; +let set_read_only = (ed, read_only) => { + ...ed, + read_only, +}; let trailing_hole_ctx = (ed: t, info_map: Statics.Map.t) => { let segment = Zipper.unselect_and_zip(ed.state.zipper); diff --git a/src/haz3lcore/zipper/EditorUtil.re b/src/haz3lcore/zipper/EditorUtil.re index ff59e48f55..2eab6776ef 100644 --- a/src/haz3lcore/zipper/EditorUtil.re +++ b/src/haz3lcore/zipper/EditorUtil.re @@ -32,19 +32,40 @@ let rec append_exp = (e1: Exp.t, e2: Exp.t): Exp.t => { | BinOp(_) | BuiltinFun(_) | Cast(_) - | Match(_) => Exp.{ids: [Id.mk()], copied: false, term: Seq(e1, e2)} + | Match(_) => + Exp.{ + ids: [Id.mk()], + copied: false, + term: Seq(e1, e2), + } | Seq(e11, e12) => let e12' = append_exp(e12, e2); - {ids: e1.ids, copied: false, term: Seq(e11, e12')}; + { + ids: e1.ids, + copied: false, + term: Seq(e11, e12'), + }; | Filter(kind, ebody) => let ebody' = append_exp(ebody, e2); - {ids: e1.ids, copied: false, term: Filter(kind, ebody')}; + { + ids: e1.ids, + copied: false, + term: Filter(kind, ebody'), + }; | Let(p, edef, ebody) => let ebody' = append_exp(ebody, e2); - {ids: e1.ids, copied: false, term: Let(p, edef, ebody')}; + { + ids: e1.ids, + copied: false, + term: Let(p, edef, ebody'), + }; | TyAlias(tp, tdef, ebody) => let ebody' = append_exp(ebody, e2); - {ids: e1.ids, copied: false, term: TyAlias(tp, tdef, ebody')}; + { + ids: e1.ids, + copied: false, + term: TyAlias(tp, tdef, ebody'), + }; } ); }; diff --git a/src/haz3lcore/zipper/Projector.re b/src/haz3lcore/zipper/Projector.re index 82b036b821..95cd19d606 100644 --- a/src/haz3lcore/zipper/Projector.re +++ b/src/haz3lcore/zipper/Projector.re @@ -26,7 +26,16 @@ let shape = (p: Base.projector, info: info): shape => { * is considered a placeholder. This could be made more principled. * Note that a placeholder retains the UUID of the underlying. */ let placeholder = (p: Base.projector, ci: option(Info.t)): string => - switch (shape(p, {id: p.id, syntax: p.syntax, ci})) { + switch ( + shape( + p, + { + id: p.id, + syntax: p.syntax, + ci, + }, + ) + ) { | Inline(width) => String.make(width, ' ') | Block({row, col}) => String.make(row - 1, '\n') ++ String.make(col, ' ') }; diff --git a/src/haz3lcore/zipper/ProjectorBase.re b/src/haz3lcore/zipper/ProjectorBase.re index 5abe811d76..726225b148 100644 --- a/src/haz3lcore/zipper/ProjectorBase.re +++ b/src/haz3lcore/zipper/ProjectorBase.re @@ -145,7 +145,16 @@ let mold_of = (p, sort: Sort.t): Mold.t => { let (l, r) = shapes(p); { nibs: { - ({shape: l, sort}, {shape: r, sort}); + ( + { + shape: l, + sort, + }, + { + shape: r, + sort, + }, + ); }, out: sort, in_: [], diff --git a/src/haz3lcore/zipper/Relatives.re b/src/haz3lcore/zipper/Relatives.re index 251cdbc4e9..93df32d9c0 100644 --- a/src/haz3lcore/zipper/Relatives.re +++ b/src/haz3lcore/zipper/Relatives.re @@ -6,7 +6,10 @@ type t = { ancestors: Ancestors.t, }; -let empty = {siblings: Siblings.empty, ancestors: Ancestors.empty}; +let empty = { + siblings: Siblings.empty, + ancestors: Ancestors.empty, +}; let push = (d: Direction.t, p: Piece.t, rs: t): t => { ...rs, @@ -15,12 +18,22 @@ let push = (d: Direction.t, p: Piece.t, rs: t): t => { let prepend = (d: Direction.t, seg: Segment.t, rs: t): t => { let siblings = Siblings.prepend(d, seg, rs.siblings); - {...rs, siblings}; + { + ...rs, + siblings, + }; }; let pop = (d: Direction.t, rs: t): option((Piece.t, t)) => switch (Siblings.pop(d, rs.siblings)) { - | Some((p, siblings)) => Some((p, {...rs, siblings})) + | Some((p, siblings)) => + Some(( + p, + { + ...rs, + siblings, + }, + )) | None => switch (rs.ancestors) { | [] => None @@ -29,7 +42,13 @@ let pop = (d: Direction.t, rs: t): option((Piece.t, t)) => let siblings' = Ancestor.disassemble(ancestor); let+ (p, siblings) = Siblings.(pop(d, concat([rs.siblings, siblings', siblings]))); - (p, {siblings, ancestors}); + ( + p, + { + siblings, + ancestors, + }, + ); } }; @@ -56,7 +75,10 @@ let parent = let delete_parent = ({siblings, ancestors}: t): t => { switch (ancestors) { - | [] => {siblings, ancestors} + | [] => { + siblings, + ancestors, + } | [(_, p_sibs), ...ancestors] => { siblings: Siblings.concat([siblings, p_sibs]), ancestors, @@ -67,7 +89,10 @@ let delete_parent = ({siblings, ancestors}: t): t => { let remold = ({siblings, ancestors}: t): t => { let s = Ancestors.sort(ancestors); let siblings = Siblings.remold(siblings, s); - {ancestors, siblings}; + { + ancestors, + siblings, + }; }; let regrout = (d: Direction.t, {siblings, ancestors}: t): t => { @@ -114,7 +139,10 @@ let regrout = (d: Direction.t, {siblings, ancestors}: t): t => { }; (pre @ trim_l, trim_r @ suf); }; - {siblings, ancestors}; + { + siblings, + ancestors, + }; }; let reassemble_parent = (rs: t): t => @@ -159,7 +187,10 @@ let reassemble_parent = (rs: t): t => }; (a, inner_r); }; - {siblings: (l, r), ancestors: [(a, sibs), ...ancs]}; + { + siblings: (l, r), + ancestors: [(a, sibs), ...ancs], + }; }; let reassemble_siblings = (rs: t) => { @@ -180,21 +211,34 @@ let reassemble = (rs: t): t => { | (_, None) => failwith("impossible") | (None, Some((inner_r, match_r, outer_r))) => let {siblings: (pre, suf), ancestors} = - go({...rs, siblings: (fst(rs.siblings), outer_r)}); + go({ + ...rs, + siblings: (fst(rs.siblings), outer_r), + }); let t = Tile.reassemble(match_r); let suf = Segment.concat([inner_r, [Tile.to_piece(t), ...suf]]); - {siblings: (pre, suf), ancestors}; + { + siblings: (pre, suf), + ancestors, + }; | ( Some((outer_l, match_l, inner_l)), Some((inner_r, match_r, outer_r)), ) => - let rs = go({...rs, siblings: (outer_l, outer_r)}); + let rs = + go({ + ...rs, + siblings: (outer_l, outer_r), + }); let ancestors = [ (Ancestor.reassemble(match_l, match_r), rs.siblings), ...rs.ancestors, ]; let siblings = (inner_l, inner_r); - {ancestors, siblings}; + { + ancestors, + siblings, + }; } }; rs |> reassemble_siblings |> reassemble_parent |> go; diff --git a/src/haz3lcore/zipper/Selection.re b/src/haz3lcore/zipper/Selection.re index 92d6509fb8..4351dcf585 100644 --- a/src/haz3lcore/zipper/Selection.re +++ b/src/haz3lcore/zipper/Selection.re @@ -35,7 +35,10 @@ let selection_ids = (sel: t): list(Id.t) => Segment.ids(sel.content); let empty = mk(Segment.empty); -let map = (f, sel) => {...sel, content: f(sel.content)}; +let map = (f, sel) => { + ...sel, + content: f(sel.content), +}; let toggle_focus = selection => { ...selection, @@ -52,7 +55,11 @@ let push = (p: Piece.t, {focus, content, mode}: t): t => { | Right => Segment.snoc(content, p) }, ); - {focus, content, mode}; + { + focus, + content, + mode, + }; }; let pop = (sel: t): option((Piece.t, t)) => @@ -61,8 +68,20 @@ let pop = (sel: t): option((Piece.t, t)) => | (_, _, None) => None | (Left, [p, ...content], _) => let (p, rest) = Piece.pop_l(p); - Some((p, {...sel, content: rest @ content})); + Some(( + p, + { + ...sel, + content: rest @ content, + }, + )); | (Right, _, Some((content, p))) => let (rest, p) = Piece.pop_r(p); - Some((p, {...sel, content: content @ rest})); + Some(( + p, + { + ...sel, + content: content @ rest, + }, + )); }; diff --git a/src/haz3lcore/zipper/Zipper.re b/src/haz3lcore/zipper/Zipper.re index f87fb964e6..246c5d3c62 100644 --- a/src/haz3lcore/zipper/Zipper.re +++ b/src/haz3lcore/zipper/Zipper.re @@ -7,7 +7,15 @@ let init: unit => t = selection: Selection.mk([]), backpack: [], relatives: { - siblings: ([], [Grout({id: Id.mk(), shape: Convex})]), + siblings: ( + [], + [ + Grout({ + id: Id.mk(), + shape: Convex, + }), + ], + ), ancestors: [], }, caret: Outer, @@ -74,19 +82,28 @@ let neighbor_monotiles: Siblings.t => (option(Token.t), option(Token.t)) = let regrout = (d: Direction.t, z: t): t => { assert(Selection.is_empty(z.selection)); let relatives = Relatives.regrout(d, z.relatives); - {...z, relatives}; + { + ...z, + relatives, + }; }; let remold = (z: t): t => { assert(Selection.is_empty(z.selection)); - {...z, relatives: Relatives.remold(z.relatives)}; + { + ...z, + relatives: Relatives.remold(z.relatives), + }; }; let remold_regrout = (d: Direction.t, z: t): t => z |> remold |> regrout(d); let clear_unparsed_buffer = (z: t) => switch (z.selection.mode) { - | Buffer(Unparsed) => {...z, selection: Selection.empty} + | Buffer(Unparsed) => { + ...z, + selection: Selection.empty, + } | _ => z }; @@ -101,7 +118,11 @@ let unselect = (~erase_buffer=false, z: t): t => { |> Relatives.prepend(z.selection.focus, z.selection.content) |> Relatives.reassemble; let selection = Selection.empty; - {...z, selection, relatives}; + { + ...z, + selection, + relatives, + }; }; let unselect_and_zip = (~erase_buffer=false, z: t): Segment.t => z |> unselect(~erase_buffer) |> zip; @@ -111,7 +132,11 @@ let update_selection = (selection: Selection.t, z: t): (Selection.t, t) => { // used to be necessary to unselect when selection update // included remold/regrout, now no longer necessary if needs // to be changed but keeping for now to minimize change - let z = unselect({...z, selection}); + let z = + unselect({ + ...z, + selection, + }); (old, z); }; @@ -121,7 +146,11 @@ let put_selection = (sel: Selection.t, z: t): t => let grow_selection = (z: t): option(t) => { let+ (p, relatives) = Relatives.pop(z.selection.focus, z.relatives); let selection = Selection.push(p, z.selection); - {...z, selection, relatives}; + { + ...z, + selection, + relatives, + }; }; // toggles focus and grows if selection is empty @@ -129,13 +158,20 @@ let shrink_selection = (z: t): option(t) => { switch (Selection.pop(z.selection)) { | None => let selection = Selection.toggle_focus(z.selection); - grow_selection({...z, selection}); + grow_selection({ + ...z, + selection, + }); | Some((p, selection)) => let relatives = z.relatives |> Relatives.push(selection.focus, p) |> Relatives.reassemble; - Some({...z, selection, relatives}); + Some({ + ...z, + selection, + relatives, + }); }; }; @@ -145,8 +181,14 @@ let toggle_focus = (z: t): t => { }; let directional_unselect = (d: Direction.t, z: t): t => { - let selection = {...z.selection, focus: Direction.toggle(d)}; - unselect({...z, selection}); + let selection = { + ...z.selection, + focus: Direction.toggle(d), + }; + unselect({ + ...z, + selection, + }); }; let move = (d: Direction.t, z: t): option(t) => @@ -156,7 +198,10 @@ let move = (d: Direction.t, z: t): option(t) => relatives |> Relatives.push(Direction.toggle(d), p) |> Relatives.reassemble; - {...z, relatives}; + { + ...z, + relatives, + }; } else { Some(directional_unselect(d, z)); }; @@ -172,7 +217,10 @@ let pick_up = (z: t): t => { |> Segment.trim_grout_around_secondary(Right) |> Selection.mk; let backpack = Backpack.push(selection, z.backpack); - {...z, backpack}; + { + ...z, + backpack, + }; }; let destruct = (~destroy_kids=true, z: t): t => { @@ -195,7 +243,10 @@ let destruct = (~destroy_kids=true, z: t): t => { |> Backpack.push_s( to_pick_up |> List.map(Segment.of_tile) |> List.map(Selection.mk), ); - {...z, backpack}; + { + ...z, + backpack, + }; }; let delete = (d: Direction.t, z: t): option(t) => @@ -204,7 +255,13 @@ let delete = (d: Direction.t, z: t): option(t) => let put_down = (d: Direction.t, z: t): option(t) => { let z = destruct(z); let* (_, popped, backpack) = pop_backpack(z); - let z = {...z, backpack} |> put_selection(popped) |> unselect; + let z = + { + ...z, + backpack, + } + |> put_selection(popped) + |> unselect; switch (d) { | Left => Some(z) | Right => move(Left, z) @@ -225,12 +282,32 @@ let rec construct = let z = destruct(z); let selections = [Selection.mk(Base.mk_secondary(id, content))]; let backpack = Backpack.push_s(selections, z.backpack); - Option.get(put_down(caret, {...z, backpack})); + Option.get( + put_down( + caret, + { + ...z, + backpack, + }, + ), + ); | [content] when Form.is_secondary(content) => let content = Secondary.Whitespace(content); let id = Id.mk(); - z |> update_siblings(((l, r)) => (l @ [Secondary({id, content})], r)); + z + |> update_siblings(((l, r)) => + ( + l + @ [ + Secondary({ + id, + content, + }), + ], + r, + ) + ); | _ => let z = destruct(z); let molds = Molds.get(label); @@ -244,7 +321,15 @@ let rec construct = |> List.map(Selection.mk) |> ListUtil.rev_if(backpack == Right); let backpack = Backpack.push_s(selections, z.backpack); - Option.get(put_down(caret, {...z, backpack})); + Option.get( + put_down( + caret, + { + ...z, + backpack, + }, + ), + ); }; }; @@ -299,12 +384,18 @@ let base_point = (measured: Measured.t, z: t): Point.t => { let m = Measured.find_p(~msg="base_point", p, measured); m.origin; }; - | None => {row: 0, col: 0} + | None => { + row: 0, + col: 0, + } }; }; let caret_point = (measured, z: t): Point.t => { let Point.{row, col} = base_point(measured, z); - {row, col: col + Caret.offset(z.caret)}; + { + row, + col: col + Caret.offset(z.caret), + }; }; let serialize = (z: t): string => { @@ -349,7 +440,10 @@ let try_to_dump_backpack = (zipper: t) => { switch (zipper.backpack) { | [] => zipper | _ => - let zipper = {...zipper, caret: Outer}; + let zipper = { + ...zipper, + caret: Outer, + }; let rec move_until_cant_put_down = (z_last, z: t) => if (can_put_down(z) && !is_linebreak_to_right_of_caret(z)) { switch (move(Right, z)) { diff --git a/src/haz3lcore/zipper/ZipperBase.re b/src/haz3lcore/zipper/ZipperBase.re index cb6311a4b8..500b1a2de7 100644 --- a/src/haz3lcore/zipper/ZipperBase.re +++ b/src/haz3lcore/zipper/ZipperBase.re @@ -33,7 +33,13 @@ let update_relatives = (f: Relatives.t => Relatives.t, z: t): t => { }; let update_siblings: (Siblings.t => Siblings.t, t) => t = - f => update_relatives(rs => {...rs, siblings: f(rs.siblings)}); + f => + update_relatives(rs => + { + ...rs, + siblings: f(rs.siblings), + } + ); let put_siblings = (siblings, z: t): t => update_siblings(_ => siblings, z); @@ -77,7 +83,10 @@ module MapPiece = { }; } and of_tile = (f: updater, t: Tile.t): Tile.t => { - {...t, children: List.map(of_segment(f), t.children)}; + { + ...t, + children: List.map(of_segment(f), t.children), + }; }; let of_siblings = (f: updater, sibs: Siblings.t): Siblings.t => ( @@ -105,7 +114,10 @@ module MapPiece = { List.map(of_generation(f), ancestors); let of_selection = (f: updater, selection: Selection.t): Selection.t => { - {...selection, content: of_segment(f, selection.content)}; + { + ...selection, + content: of_segment(f, selection.content), + }; }; /* Maps the updater over all pieces in the zipper diff --git a/src/haz3lcore/zipper/action/Move.re b/src/haz3lcore/zipper/action/Move.re index afc46ca152..17e9327674 100644 --- a/src/haz3lcore/zipper/action/Move.re +++ b/src/haz3lcore/zipper/action/Move.re @@ -191,7 +191,10 @@ module Make = (M: Editor.Meta.S) => { caret position to a target derived from the initial position */ let cur_p = caret_point(z); let goal = - Point.{col: M.col_target, row: cur_p.row + (d == Right ? 1 : (-1))}; + Point.{ + col: M.col_target, + row: cur_p.row + (d == Right ? 1 : (-1)), + }; do_towards(~force_progress=true, f, goal, z); }; @@ -200,10 +203,22 @@ module Make = (M: Editor.Meta.S) => { let cur_p = caret_point(z); let goal: Point.t = switch (d) { - | Right(_) => {col: Int.max_int, row: cur_p.row} - | Left(_) => {col: 0, row: cur_p.row} - | Up => {col: 0, row: 0} - | Down => {col: Int.max_int, row: Int.max_int} + | Right(_) => { + col: Int.max_int, + row: cur_p.row, + } + | Left(_) => { + col: 0, + row: cur_p.row, + } + | Up => { + col: 0, + row: 0, + } + | Down => { + col: Int.max_int, + row: Int.max_int, + } }; do_towards(f, goal, z); }; diff --git a/src/haz3lcore/zipper/action/Perform.re b/src/haz3lcore/zipper/action/Perform.re index 5a3b90c245..87c4cf3635 100644 --- a/src/haz3lcore/zipper/action/Perform.re +++ b/src/haz3lcore/zipper/action/Perform.re @@ -3,7 +3,10 @@ open Zipper; let buffer_clear = (z: t): t => switch (z.selection.mode) { - | Buffer(_) => {...z, selection: Selection.mk([])} + | Buffer(_) => { + ...z, + selection: Selection.mk([]), + } | _ => z }; @@ -199,7 +202,10 @@ let go_z = |> Option.map(remold_regrout(Left)) |> Result.of_option(~error=Action.Failure.Cant_put_down); | RotateBackpack => - let z = {...z, backpack: Util.ListUtil.rotate(z.backpack)}; + let z = { + ...z, + backpack: Util.ListUtil.rotate(z.backpack), + }; Ok(z); | MoveToBackpackTarget((Left(_) | Right(_)) as d) => if (Backpack.restricted(z.backpack)) { diff --git a/src/haz3lcore/zipper/action/ProjectorPerform.re b/src/haz3lcore/zipper/action/ProjectorPerform.re index a0996437bd..1a3218a4b5 100644 --- a/src/haz3lcore/zipper/action/ProjectorPerform.re +++ b/src/haz3lcore/zipper/action/ProjectorPerform.re @@ -17,7 +17,13 @@ module Update = { let (module P) = to_module(kind); switch (P.can_project(syntax) && minimum_projection_condition(syntax)) { | false => syntax - | true => Projector({id: Piece.id(syntax), kind, model: P.init, syntax}) + | true => + Projector({ + id: Piece.id(syntax), + kind, + model: P.init, + syntax, + }) }; }; @@ -70,9 +76,20 @@ module Update = { let move_out_of_piece = (d: Util.Direction.t, rel: Indicated.relation, z: Zipper.t): Zipper.t => switch (rel) { - | Sibling => {...z, caret: Outer} + | Sibling => { + ...z, + caret: Outer, + } | Parent => - switch (Zipper.move(d, {...z, caret: Outer})) { + switch ( + Zipper.move( + d, + { + ...z, + caret: Outer, + }, + ) + ) { | Some(z) => z | None => z } @@ -103,12 +120,27 @@ let go = * See intial id setting in Update.init */ Ok( Update.update( - p => {...p, syntax: Piece.replace_id(id, syntax)}, + p => + { + ...p, + syntax: Piece.replace_id(id, syntax), + }, + id, + z, + ), + ) + | SetModel(id, model) => + Ok( + Update.update( + pr => + { + ...pr, + model, + }, id, z, ), ) - | SetModel(id, model) => Ok(Update.update(pr => {...pr, model}, id, z)) | Focus(id, d) => let z = switch (d) { diff --git a/src/haz3lschool/Exercise.re b/src/haz3lschool/Exercise.re index b5e7dfc76d..807df441fa 100644 --- a/src/haz3lschool/Exercise.re +++ b/src/haz3lschool/Exercise.re @@ -193,7 +193,10 @@ module F = (ExerciseEnv: ExerciseEnv) => { hidden_bugs: Util.ListUtil.put_nth( n, - {...List.nth(eds.hidden_bugs, n), impl: editor}, + { + ...List.nth(eds.hidden_bugs, n), + impl: editor, + }, eds.hidden_bugs, ), }, @@ -269,10 +272,16 @@ module F = (ExerciseEnv: ExerciseEnv) => { switch (pos) { | HiddenTests | HiddenBugs(_) => exercise - | _ => {eds: exercise.eds, pos} + | _ => { + eds: exercise.eds, + pos, + } }; } else { - {eds: exercise.eds, pos}; + { + eds: exercise.eds, + pos, + }; }; let zipper_of_code = code => { @@ -303,14 +312,24 @@ module F = (ExerciseEnv: ExerciseEnv) => { let correct_impl = zipper_of_code(correct_impl); let your_tests = { let tests = zipper_of_code(your_tests.tests); - {tests, required: your_tests.required, provided: your_tests.provided}; + { + tests, + required: your_tests.required, + provided: your_tests.provided, + }; }; let your_impl = zipper_of_code(your_impl); let hidden_bugs = List.fold_left( (acc, {impl, hint}) => { let impl = zipper_of_code(impl); - acc @ [{impl, hint}]; + acc + @ [ + { + impl, + hint, + }, + ]; }, [], hidden_bugs, @@ -318,7 +337,10 @@ module F = (ExerciseEnv: ExerciseEnv) => { let hidden_tests = { let {tests, hints} = hidden_tests; let tests = zipper_of_code(tests); - {tests, hints}; + { + tests, + hints, + }; }; { title, @@ -360,19 +382,29 @@ module F = (ExerciseEnv: ExerciseEnv) => { let correct_impl = editor_of_serialization(correct_impl); let your_tests = { let tests = editor_of_serialization(your_tests.tests); - {tests, required: your_tests.required, provided: your_tests.provided}; + { + tests, + required: your_tests.required, + provided: your_tests.provided, + }; }; let your_impl = editor_of_serialization(your_impl); let hidden_bugs = hidden_bugs |> List.map(({impl, hint}) => { let impl = editor_of_serialization(impl); - {impl, hint}; + { + impl, + hint, + }; }); let hidden_tests = { let {tests, hints} = hidden_tests; let tests = editor_of_serialization(tests); - {tests, hints}; + { + tests, + hints, + }; }; { title, @@ -482,7 +514,13 @@ module F = (ExerciseEnv: ExerciseEnv) => { let state_of_spec = (spec, ~instructor_mode: bool, ~settings: CoreSettings.t): state => { let eds = eds_of_spec(~settings, spec); - set_instructor_mode({pos: YourImpl, eds}, instructor_mode); + set_instructor_mode( + { + pos: YourImpl, + eds, + }, + instructor_mode, + ); }; let persistent_state_of_state = @@ -520,7 +558,16 @@ module F = (ExerciseEnv: ExerciseEnv) => { List.fold_left( ((i, hidden_bugs: list(wrong_impl(Editor.t))), {impl, hint}) => { let impl = lookup(HiddenBugs(i), impl); - (i + 1, hidden_bugs @ [{impl, hint}]); + ( + i + 1, + hidden_bugs + @ [ + { + impl, + hint, + }, + ], + ); }, (0, []), spec.hidden_bugs, @@ -639,7 +686,11 @@ module F = (ExerciseEnv: ExerciseEnv) => { (settings: CoreSettings.t, t: stitched(UExp.t)): stitched_statics => { let mk = (term: UExp.t): Editor.CachedStatics.t => { let info_map = Statics.mk(settings, Builtins.ctx_init, term); - {term, error_ids: Statics.Map.error_ids(info_map), info_map}; + { + term, + error_ids: Statics.Map.error_ids(info_map), + info_map, + }; }; let instructor = mk(t.instructor); { @@ -710,7 +761,10 @@ module F = (ExerciseEnv: ExerciseEnv) => { statics: Editor.CachedStatics.t, result: ModelResult.t, }; - let empty: t = {statics: Editor.CachedStatics.empty, result: NoElab}; + let empty: t = { + statics: Editor.CachedStatics.empty, + result: NoElab, + }; let statics_only = (statics: Editor.CachedStatics.t): t => { statics, result: NoElab, @@ -764,17 +818,33 @@ module F = (ExerciseEnv: ExerciseEnv) => { }; let user_impl = - DynamicsItem.{statics: user_impl, result: result_of(user_impl_key)}; + DynamicsItem.{ + statics: user_impl, + result: result_of(user_impl_key), + }; let user_tests = - DynamicsItem.{statics: user_tests, result: result_of(user_tests_key)}; - let prelude = DynamicsItem.{statics: prelude, result: NoElab}; + DynamicsItem.{ + statics: user_tests, + result: result_of(user_tests_key), + }; + let prelude = + DynamicsItem.{ + statics: prelude, + result: NoElab, + }; let instructor = - DynamicsItem.{statics: instructor, result: result_of(instructor_key)}; + DynamicsItem.{ + statics: instructor, + result: result_of(instructor_key), + }; let hidden_bugs = List.mapi( (n, statics: Editor.CachedStatics.t) => - DynamicsItem.{statics, result: result_of(hidden_bugs_key(n))}, + DynamicsItem.{ + statics, + result: result_of(hidden_bugs_key(n)), + }, hidden_bugs, ); let hidden_tests = @@ -892,7 +962,10 @@ module F = (ExerciseEnv: ExerciseEnv) => { num_wrong_impls, i => { let zipper = Zipper.next_blank(); - {impl: zipper, hint: "TODO: hint " ++ string_of_int(i)}; + { + impl: zipper, + hint: "TODO: hint " ++ string_of_int(i), + }; }, ); let hidden_tests_tests = Zipper.next_blank(); diff --git a/src/haz3lschool/Gradescope.re b/src/haz3lschool/Gradescope.re index 7277fcf85b..26633b3b84 100644 --- a/src/haz3lschool/Gradescope.re +++ b/src/haz3lschool/Gradescope.re @@ -101,7 +101,10 @@ module Main = { ++ item_to_summary("Test Validation", test_validation) ++ item_to_summary("Mutation Testing", mutation_testing) ++ item_to_summary("Impl Grading", impl_grading); - {summary, overall}; + { + summary, + overall, + }; }; let run = () => { let hw_path = Sys.get_argv()[1]; @@ -119,7 +122,10 @@ module Main = { ~instructor_mode=true, ); let report = exercise |> gen_grading_report; - {name, report}; + { + name, + report, + }; | None => failwith("Invalid spec") // | None => (key |> yojson_of_key |> Yojson.Safe.to_string, "?") } diff --git a/src/haz3lschool/Grading.re b/src/haz3lschool/Grading.re index 9e0f577772..3d0b49e2f7 100644 --- a/src/haz3lschool/Grading.re +++ b/src/haz3lschool/Grading.re @@ -214,7 +214,11 @@ module F = (ExerciseEnv: Exercise.ExerciseEnv) => { "Exercise configuration error: Hint without a test.", ) }; - {hints, test_results, hinted_results}; + { + hints, + test_results, + hinted_results, + }; }; let total = (report: t) => List.length(report.hinted_results); diff --git a/src/haz3lschool/Tutorial.re b/src/haz3lschool/Tutorial.re index 66caf264c4..04c6b84b50 100644 --- a/src/haz3lschool/Tutorial.re +++ b/src/haz3lschool/Tutorial.re @@ -76,8 +76,8 @@ module D = (TutorialEnv: TutorialEnv) => { [@deriving (show({with_path: false}), sexp, yojson)] type spec = p(Zipper.t); - [@deriving (show({with_path: false}), sexp, yojson)] - type transitionary_spec = p(CodeString.t); + // [@deriving (show({with_path: false}), sexp, yojson)] + // type transitionary_spec = p(CodeString.t); let map = (p: p('a), f: 'a => 'b): p('b) => { { @@ -176,10 +176,16 @@ module D = (TutorialEnv: TutorialEnv) => { if (!instructor_mode) { switch (pos) { | HiddenTests - | _ => {eds: documentation.eds, pos} + | _ => { + eds: documentation.eds, + pos, + } }; } else { - {eds: documentation.eds, pos}; + { + eds: documentation.eds, + pos, + }; }; let zipper_of_code = code => { @@ -189,28 +195,24 @@ module D = (TutorialEnv: TutorialEnv) => { }; }; - let transition: transitionary_spec => spec = - ({title, description, your_impl, hidden_tests}) => { - let your_impl = zipper_of_code(your_impl); - let hidden_tests = { - let {tests, hints} = hidden_tests; - let tests = zipper_of_code(tests); - {tests, hints}; - }; - {title, description, your_impl, hidden_tests}; - }; - - let transition: transitionary_spec => spec = - ({title, description, your_impl, hidden_tests}) => { - let your_impl = zipper_of_code(your_impl); - - let hidden_tests = { - let {tests, hints} = hidden_tests; - let tests = zipper_of_code(tests); - {tests, hints}; - }; - {title, description, your_impl, hidden_tests}; - }; + // let transition: transitionary_spec => spec = + // ({title, description, your_impl, hidden_tests}) => { + // let your_impl = zipper_of_code(your_impl); + // let hidden_tests = { + // let {tests, hints} = hidden_tests; + // let tests = zipper_of_code(tests); + // { + // tests, + // hints, + // }; + // }; + // { + // title, + // description, + // your_impl, + // hidden_tests, + // }; + // }; let eds_of_spec = ( @@ -223,9 +225,17 @@ module D = (TutorialEnv: TutorialEnv) => { let hidden_tests = { let {tests, hints} = hidden_tests; let tests = editor_of_serialization(tests); - {tests, hints}; + { + tests, + hints, + }; + }; + { + title, + description, + your_impl, + hidden_tests, }; - {title, description, your_impl, hidden_tests}; }; let set_instructor_mode = ({eds, _} as state: state, new_mode: bool) => { @@ -253,7 +263,13 @@ module D = (TutorialEnv: TutorialEnv) => { let state_of_spec = (spec, ~instructor_mode: bool, ~settings: CoreSettings.t): state => { let eds = eds_of_spec(~settings, spec); - set_instructor_mode({pos: YourImpl, eds}, instructor_mode); + set_instructor_mode( + { + pos: YourImpl, + eds, + }, + instructor_mode, + ); }; let persistent_state_of_state = (state: state, ~instructor_mode: bool) => { @@ -378,7 +394,11 @@ module D = (TutorialEnv: TutorialEnv) => { let hidden_tests_term = EditorUtil.append_exp(user_impl_term, term_of(eds.hidden_tests.tests)); - {user_impl: user_impl_term, instructor, hidden_tests: hidden_tests_term}; + { + user_impl: user_impl_term, + instructor, + hidden_tests: hidden_tests_term, + }; }; let stitch_term = Core.Memo.general(stitch_term); @@ -395,7 +415,11 @@ module D = (TutorialEnv: TutorialEnv) => { (settings: CoreSettings.t, t: stitched(UExp.t)): stitched_statics => { let mk = (term: UExp.t): Editor.CachedStatics.t => { let info_map = Statics.mk(settings, Builtins.ctx_init, term); - {term, error_ids: Statics.Map.error_ids(info_map), info_map}; + { + term, + error_ids: Statics.Map.error_ids(info_map), + info_map, + }; }; let instructor = mk(t.instructor); { @@ -460,7 +484,10 @@ module D = (TutorialEnv: TutorialEnv) => { statics: Editor.CachedStatics.t, result: ModelResult.t, }; - let empty: t = {statics: Editor.CachedStatics.empty, result: NoElab}; + let empty: t = { + statics: Editor.CachedStatics.empty, + result: NoElab, + }; let statics_only = (statics: Editor.CachedStatics.t): t => { statics, result: NoElab, @@ -503,10 +530,16 @@ module D = (TutorialEnv: TutorialEnv) => { }; let user_impl = - DynamicsItem.{statics: user_impl, result: result_of(user_impl_key)}; + DynamicsItem.{ + statics: user_impl, + result: result_of(user_impl_key), + }; let instructor = - DynamicsItem.{statics: instructor, result: result_of(instructor_key)}; + DynamicsItem.{ + statics: instructor, + result: result_of(instructor_key), + }; let hidden_tests = DynamicsItem.{ diff --git a/src/haz3lweb/Export.re b/src/haz3lweb/Export.re index 9c9f709fa9..7e1dd17737 100644 --- a/src/haz3lweb/Export.re +++ b/src/haz3lweb/Export.re @@ -31,7 +31,14 @@ let mk_all = (~instructor_mode, ~log) => { ~specs=ExerciseSettings.exercises, ~instructor_mode, ); - {settings, explainThisModel, scratch, documentation, exercise, log}; + { + settings, + explainThisModel, + scratch, + documentation, + exercise, + log, + }; }; let export_all = (~instructor_mode, ~log) => { diff --git a/src/haz3lweb/FailedInput.re b/src/haz3lweb/FailedInput.re index 7e40d69427..719d8069c7 100644 --- a/src/haz3lweb/FailedInput.re +++ b/src/haz3lweb/FailedInput.re @@ -12,9 +12,15 @@ type t = { prior_attempts: int, }; -let mk = (~prior_attempts=0, reason) => {reason, prior_attempts}; +let mk = (~prior_attempts=0, reason) => { + reason, + prior_attempts, +}; let replace_or_increment_attempts = (reason, failed_input: t) => reason == failed_input.reason - ? {...failed_input, prior_attempts: failed_input.prior_attempts + 1} + ? { + ...failed_input, + prior_attempts: failed_input.prior_attempts + 1, + } : mk(reason); diff --git a/src/haz3lweb/FontMetrics.re b/src/haz3lweb/FontMetrics.re index 4ed525c176..43e704fd07 100644 --- a/src/haz3lweb/FontMetrics.re +++ b/src/haz3lweb/FontMetrics.re @@ -7,4 +7,7 @@ type t = { col_width: float, }; -let init = {row_height: 10., col_width: 10.}; +let init = { + row_height: 10., + col_width: 10., +}; diff --git a/src/haz3lweb/Keyboard.re b/src/haz3lweb/Keyboard.re index 7e4e655f26..3920530a55 100644 --- a/src/haz3lweb/Keyboard.re +++ b/src/haz3lweb/Keyboard.re @@ -21,7 +21,13 @@ let meta = (sys: Key.sys): string => { let mk_shortcut = (~hotkey=?, ~mdIcon=?, ~section=?, label, update_action): shortcut => { - {update_action: Some(update_action), hotkey, label, mdIcon, section}; + { + update_action: Some(update_action), + hotkey, + label, + mdIcon, + section, + }; }; let instructor_shortcuts: list(shortcut) = [ diff --git a/src/haz3lweb/Model.re b/src/haz3lweb/Model.re index 503e9bb38d..50fefd42f6 100644 --- a/src/haz3lweb/Model.re +++ b/src/haz3lweb/Model.re @@ -105,7 +105,13 @@ let load = (init_model: t): t => { ~instructor_mode=settings.instructor_mode, ); let ui_state = init_model.ui_state; - {editors, settings, results, explainThisModel, ui_state}; + { + editors, + settings, + results, + explainThisModel, + ui_state, + }; }; let save = ({editors, settings, explainThisModel, results, _}: t) => { diff --git a/src/haz3lweb/Settings.re b/src/haz3lweb/Settings.re index 0a0edd4c17..50f3aaf136 100644 --- a/src/haz3lweb/Settings.re +++ b/src/haz3lweb/Settings.re @@ -31,7 +31,10 @@ type t = { let fix_instructor_mode = settings => if (settings.instructor_mode && !ExerciseSettings.show_instructor) { - {...settings, instructor_mode: false}; + { + ...settings, + instructor_mode: false, + }; } else { settings; }; diff --git a/src/haz3lweb/Update.re b/src/haz3lweb/Update.re index 43a5e593f6..e527df9069 100644 --- a/src/haz3lweb/Update.re +++ b/src/haz3lweb/Update.re @@ -95,7 +95,10 @@ let update_settings = ...evaluation, show_fn_bodies: !evaluation.show_fn_bodies, } - | ShowCasts => {...evaluation, show_casts: !evaluation.show_casts} + | ShowCasts => { + ...evaluation, + show_casts: !evaluation.show_casts, + } | ShowFixpoints => { ...evaluation, show_fixpoints: !evaluation.show_fixpoints, @@ -133,15 +136,27 @@ let update_settings = ...settings.explainThis, show: !settings.explainThis.show, }; - let settings = {...settings, explainThis}; - {...model, settings}; + let settings = { + ...settings, + explainThis, + }; + { + ...model, + settings, + }; | ExplainThis(ToggleShowFeedback) => let explainThis = { ...settings.explainThis, show_feedback: !settings.explainThis.show_feedback, }; - let settings = {...settings, explainThis}; - {...model, settings}; + let settings = { + ...settings, + explainThis, + }; + { + ...model, + settings, + }; | ExplainThis(SetHighlight(a)) => let highlight: ExplainThisModel.Settings.highlight = switch (a, settings.explainThis.highlight) { @@ -152,9 +167,18 @@ let update_settings = | (UnsetHover, All) => All | (UnsetHover, _) => NoHighlight }; - let explainThis = {...settings.explainThis, highlight}; - let settings = {...settings, explainThis}; - {...model, settings}; + let explainThis = { + ...settings.explainThis, + highlight, + }; + let settings = { + ...settings, + explainThis, + }; + { + ...model, + settings, + }; | Benchmark => { ...model, settings: { @@ -354,13 +378,13 @@ let to_persistent_documentation = { title: slide.title, description: slide.description, - hidden_tests: + hidden_tests: { // Persisting the tests correctly - { - tests: - PersistentZipper.persist(slide.hidden_tests.tests.state.zipper), - hints: slide.hidden_tests.hints, - }, + + tests: + PersistentZipper.persist(slide.hidden_tests.tests.state.zipper), + hints: slide.hidden_tests.hints, + }, }; }; @@ -468,10 +492,22 @@ let ui_state_update = (ui_state: Model.ui_state, update: set_meta, ~schedule_action as _) : Model.ui_state => { switch (update) { - | Mousedown => {...ui_state, mousedown: true} - | Mouseup => {...ui_state, mousedown: false} - | ShowBackpackTargets(b) => {...ui_state, show_backpack_targets: b} - | FontMetrics(font_metrics) => {...ui_state, font_metrics} + | Mousedown => { + ...ui_state, + mousedown: true, + } + | Mouseup => { + ...ui_state, + mousedown: false, + } + | ShowBackpackTargets(b) => { + ...ui_state, + show_backpack_targets: b, + } + | FontMetrics(font_metrics) => { + ...ui_state, + font_metrics, + } }; }; @@ -481,7 +517,11 @@ let apply = (model: Model.t, update: t, ~schedule_action): Result.t(Model.t) => Editors.perform_action(~settings=model.settings.core, model.editors, a) ) { | Error(err) => Error(err) - | Ok(editors) => Ok({...model, editors}) + | Ok(editors) => + Ok({ + ...model, + editors, + }) }; }; let m: Result.t(Model.t) = @@ -500,11 +540,17 @@ let apply = (model: Model.t, update: t, ~schedule_action): Result.t(Model.t) => | SetMeta(action) => let ui_state = ui_state_update(model.ui_state, action, ~schedule_action); - Ok({...model, ui_state}); + Ok({ + ...model, + ui_state, + }); | UpdateExplainThisModel(u) => let explainThisModel = ExplainThisUpdate.set_update(model.explainThisModel, u); - Model.save_and_return({...model, explainThisModel}); + Model.save_and_return({ + ...model, + explainThisModel, + }); | DebugConsole(key) => DebugConsole.print(model, key); Ok(model); @@ -533,7 +579,10 @@ let apply = (model: Model.t, update: t, ~schedule_action): Result.t(Model.t) => model.editors, data, ); - Model.save_and_return({...model, editors}); + Model.save_and_return({ + ...model, + editors, + }); | Export(ExportPersistentData) => Model.save(model); export_persistent_data(); @@ -564,7 +613,10 @@ let apply = (model: Model.t, update: t, ~schedule_action): Result.t(Model.t) => model.editors, ~instructor_mode, ); - Model.save_and_return({...model, editors}); + Model.save_and_return({ + ...model, + editors, + }); | SwitchScratchSlide(n) => let instructor_mode = model.settings.instructor_mode; switch ( @@ -576,29 +628,49 @@ let apply = (model: Model.t, update: t, ~schedule_action): Result.t(Model.t) => ) ) { | None => Error(FailedToSwitch) - | Some(editors) => Model.save_and_return({...model, editors}) + | Some(editors) => + Model.save_and_return({ + ...model, + editors, + }) }; | SwitchDocumentationSlide(name) => switch (Editors.switch_example_slide(model.editors, name)) { | None => Error(FailedToSwitch) - | Some(editors) => Model.save_and_return({...model, editors}) + | Some(editors) => + Model.save_and_return({ + ...model, + editors, + }) } | SwitchTutorialSlide(name) => switch (Editors.switch_example_slide(model.editors, name)) { | None => Error(FailedToSwitch) - | Some(editors) => Model.save_and_return({...model, editors}) + | Some(editors) => + Model.save_and_return({ + ...model, + editors, + }) } | SwitchEditor(pos) => let instructor_mode = model.settings.instructor_mode; switch (switch_exercise_editor(model.editors, ~pos, ~instructor_mode)) { | None => Error(FailedToSwitch) - | Some(editors) => Ok({...model, editors}) + | Some(editors) => + Ok({ + ...model, + editors, + }) }; | SwitchTutEditor(pos) => let instructor_mode = model.settings.instructor_mode; switch (switch_tut_editor(model.editors, ~pos, ~instructor_mode)) { | None => Error(FailedToSwitch) - | Some(editors) => Ok({...model, editors}) + | Some(editors) => + Ok({ + ...model, + editors, + }) }; | TAB => /* Attempt to act intelligently when TAB is pressed. @@ -620,12 +692,20 @@ let apply = (model: Model.t, update: t, ~schedule_action): Result.t(Model.t) => | Undo => switch (Editors.update_opt(model.editors, Editor.undo)) { | None => Error(CantUndo) - | Some(editors) => Ok({...model, editors}) + | Some(editors) => + Ok({ + ...model, + editors, + }) } | Redo => switch (Editors.update_opt(model.editors, Editor.redo)) { | None => Error(CantRedo) - | Some(editors) => Ok({...model, editors}) + | Some(editors) => + Ok({ + ...model, + editors, + }) } | Benchmark(Start) => List.iter(schedule_action, Benchmark.actions_1); @@ -639,13 +719,19 @@ let apply = (model: Model.t, update: t, ~schedule_action): Result.t(Model.t) => model.results |> ModelResults.find(key) |> ModelResult.step_forward(idx); - Ok({...model, results: model.results |> ModelResults.add(key, r)}); + Ok({ + ...model, + results: model.results |> ModelResults.add(key, r), + }); | StepperAction(key, StepBackward) => let r = model.results |> ModelResults.find(key) |> ModelResult.step_backward(~settings=model.settings.core.evaluation); - Ok({...model, results: model.results |> ModelResults.add(key, r)}); + Ok({ + ...model, + results: model.results |> ModelResults.add(key, r), + }); | ToggleStepper(key) => Ok({ ...model, @@ -664,7 +750,10 @@ let apply = (model: Model.t, update: t, ~schedule_action): Result.t(Model.t) => | UpdateResult(results) => let results = ModelResults.union((_, _a, b) => Some(b), model.results, results); - Ok({...model, results}); + Ok({ + ...model, + results, + }); }; m |> Result.map(~f=update_cached_data(~schedule_action, update)); }; diff --git a/src/haz3lweb/explainthis/Example.re b/src/haz3lweb/explainthis/Example.re index 9408167cf6..94a3936e4f 100644 --- a/src/haz3lweb/explainthis/Example.re +++ b/src/haz3lweb/explainthis/Example.re @@ -1,7 +1,11 @@ open Haz3lcore; let mk_secondary: string => Piece.t = - content => Secondary({id: Id.mk(), content: Whitespace(content)}); + content => + Secondary({ + id: Id.mk(), + content: Whitespace(content), + }); let mk_tile = Piece.mk_tile; @@ -28,10 +32,22 @@ let mk_parens_ancestor = mk_ancestor(Form.get("parens_exp")); let mk_let_ancestor = mk_ancestor(Form.get("let_")); let plus = mk_monotile(Form.get("plus")); -let l_sibling: Segment.t = [plus, Grout({id: Id.mk(), shape: Convex})]; +let l_sibling: Segment.t = [ + plus, + Grout({ + id: Id.mk(), + shape: Convex, + }), +]; let r_sibling: Segment.t = [mk_parens_exp([[int("1"), plus, int("2")]])]; -let content: Segment.t = [exp("foo"), Grout({id: Id.mk(), shape: Concave})]; +let content: Segment.t = [ + exp("foo"), + Grout({ + id: Id.mk(), + shape: Concave, + }), +]; let ancestors: Ancestors.t = [ (mk_parens_ancestor(([], [])), ([mk_fun([[pat("bar")]])], [])), diff --git a/src/haz3lweb/explainthis/ExplainThisModel.re b/src/haz3lweb/explainthis/ExplainThisModel.re index 92ab95a342..4a769994fb 100644 --- a/src/haz3lweb/explainthis/ExplainThisModel.re +++ b/src/haz3lweb/explainthis/ExplainThisModel.re @@ -61,10 +61,18 @@ module Settings = { | ToggleShowFeedback | SetHighlight(highlight_action); - let init = {show: true, show_feedback: false, highlight: NoHighlight}; + let init = { + show: true, + show_feedback: false, + highlight: NoHighlight, + }; }; -let init: t = {specificity_open: false, forms: [], groups: []}; +let init: t = { + specificity_open: false, + forms: [], + groups: [], +}; let get_explanation_feedback = (group_id: group_id, form_id: form_id, model: t): option(feedback_option) => { diff --git a/src/haz3lweb/explainthis/ExplainThisUpdate.re b/src/haz3lweb/explainthis/ExplainThisUpdate.re index 8946a4818c..f4da9fd836 100644 --- a/src/haz3lweb/explainthis/ExplainThisUpdate.re +++ b/src/haz3lweb/explainthis/ExplainThisUpdate.re @@ -12,7 +12,10 @@ type update = let set_update = (explainThisModel: ExplainThisModel.t, u: update): ExplainThisModel.t => { switch (u) { - | SpecificityOpen(b) => {...explainThisModel, specificity_open: b} + | SpecificityOpen(b) => { + ...explainThisModel, + specificity_open: b, + } | ToggleExplanationFeedback(group_id, form_id, feedback_option) => let (pre, form, post) = ListUtil.split(explainThisModel.forms, f => @@ -29,7 +32,10 @@ let set_update = | (Some(ThumbsUp), ThumbsUp) | (Some(ThumbsDown), ThumbsDown) => None }; - {...form, explanation_feedback: feedback}; + { + ...form, + explanation_feedback: feedback, + }; | None => { group: group_id, form: form_id, @@ -37,7 +43,10 @@ let set_update = examples: [], } }; - {...explainThisModel, forms: pre @ [form] @ post}; + { + ...explainThisModel, + forms: pre @ [form] @ post, + }; | ToggleExampleFeedback(group_id, form_id, example_id, feedback_option) => let (pre_form, form, post_form) = ListUtil.split(explainThisModel.forms, f => @@ -55,32 +64,60 @@ let set_update = | (ThumbsUp, ThumbsDown) | (ThumbsDown, ThumbsUp) => pre_example - @ [{...example, feedback: feedback_option}] + @ [ + { + ...example, + feedback: feedback_option, + }, + ] @ post_example | (ThumbsUp, ThumbsUp) | (ThumbsDown, ThumbsDown) => pre_example @ post_example } | None => pre_example - @ [{sub_id: example_id, feedback: feedback_option}] + @ [ + { + sub_id: example_id, + feedback: feedback_option, + }, + ] @ post_example }; - {...form, examples}; + { + ...form, + examples, + }; | None => { group: group_id, form: form_id, explanation_feedback: None, - examples: [{sub_id: example_id, feedback: feedback_option}], + examples: [ + { + sub_id: example_id, + feedback: feedback_option, + }, + ], } }; - {...explainThisModel, forms: pre_form @ [form] @ post_form}; + { + ...explainThisModel, + forms: pre_form @ [form] @ post_form, + }; | UpdateGroupSelection(group_id, form_id) => let (pre_group, _group, post_group) = ListUtil.split(explainThisModel.groups, g => g.group == group_id); { ...explainThisModel, groups: - pre_group @ [{group: group_id, selected: form_id}] @ post_group, + pre_group + @ [ + { + group: group_id, + selected: form_id, + }, + ] + @ post_group, }; }; }; diff --git a/src/haz3lweb/explainthis/data/AppExp.re b/src/haz3lweb/explainthis/data/AppExp.re index 9c737f39e6..7591a8616e 100644 --- a/src/haz3lweb/explainthis/data/AppExp.re +++ b/src/haz3lweb/explainthis/data/AppExp.re @@ -87,8 +87,17 @@ let deferred_funapp_exp: form = { }; }; -let funaps: group = {id: FunApExp, forms: [funapp_exp]}; +let funaps: group = { + id: FunApExp, + forms: [funapp_exp], +}; -let conaps: group = {id: ConApExp, forms: [conapp_exp]}; +let conaps: group = { + id: ConApExp, + forms: [conapp_exp], +}; -let deferredaps: group = {id: DeferredApExp, forms: [deferred_funapp_exp]}; +let deferredaps: group = { + id: DeferredApExp, + forms: [deferred_funapp_exp], +}; diff --git a/src/haz3lweb/explainthis/data/AppPat.re b/src/haz3lweb/explainthis/data/AppPat.re index 86fde247af..405d3f46aa 100644 --- a/src/haz3lweb/explainthis/data/AppPat.re +++ b/src/haz3lweb/explainthis/data/AppPat.re @@ -19,4 +19,7 @@ let ap_pat: form = { }; }; -let ap: group = {id: ApPat, forms: [ap_pat]}; +let ap: group = { + id: ApPat, + forms: [ap_pat], +}; diff --git a/src/haz3lweb/explainthis/data/ArrowTyp.re b/src/haz3lweb/explainthis/data/ArrowTyp.re index e43ef6542c..03871a8d89 100644 --- a/src/haz3lweb/explainthis/data/ArrowTyp.re +++ b/src/haz3lweb/explainthis/data/ArrowTyp.re @@ -51,6 +51,12 @@ let arrow3_typ: form = { }; }; -let arrow: group = {id: ArrowTyp, forms: [arrow_typ]}; +let arrow: group = { + id: ArrowTyp, + forms: [arrow_typ], +}; -let arrow3: group = {id: Arrow3Typ, forms: [arrow3_typ, arrow_typ]}; +let arrow3: group = { + id: Arrow3Typ, + forms: [arrow3_typ, arrow_typ], +}; diff --git a/src/haz3lweb/explainthis/data/CaseExp.re b/src/haz3lweb/explainthis/data/CaseExp.re index 9510536976..b671b6de8f 100644 --- a/src/haz3lweb/explainthis/data/CaseExp.re +++ b/src/haz3lweb/explainthis/data/CaseExp.re @@ -63,4 +63,7 @@ let case_exp: form = { }; }; -let case: group = {id: CaseExp, forms: [case_exp]}; +let case: group = { + id: CaseExp, + forms: [case_exp], +}; diff --git a/src/haz3lweb/explainthis/data/ForallTyp.re b/src/haz3lweb/explainthis/data/ForallTyp.re index 09eca4e576..6c66dd1cfa 100644 --- a/src/haz3lweb/explainthis/data/ForallTyp.re +++ b/src/haz3lweb/explainthis/data/ForallTyp.re @@ -20,4 +20,7 @@ let forall_typ: form = { }; }; -let forall: group = {id: ForallTyp, forms: [forall_typ]}; +let forall: group = { + id: ForallTyp, + forms: [forall_typ], +}; diff --git a/src/haz3lweb/explainthis/data/FunctionExp.re b/src/haz3lweb/explainthis/data/FunctionExp.re index 895f9d7db6..223eb413e7 100644 --- a/src/haz3lweb/explainthis/data/FunctionExp.re +++ b/src/haz3lweb/explainthis/data/FunctionExp.re @@ -109,7 +109,11 @@ let function_exp: form = { }; }; -let _pat = Piece.Grout({id: Id.mk(), shape: Convex}); +let _pat = + Piece.Grout({ + id: Id.mk(), + shape: Convex, + }); let _exp = exp("e"); let function_empty_hole_exp_coloring_ids = _pat_body_function_exp_coloring_ids(Piece.id(_pat), Piece.id(_exp)); @@ -120,7 +124,15 @@ let function_empty_hole_exp: form = { id: FunctionExp(EmptyHole), syntactic_form: form, expandable_id: - Some((Piece.id(_pat), [Grout({id: Id.mk(), shape: Convex})])), + Some(( + Piece.id(_pat), + [ + Grout({ + id: Id.mk(), + shape: Convex, + }), + ], + )), explanation, examples: [basic_fun_ex], }; @@ -445,7 +457,10 @@ let function_ap_exp: form = { }; }; -let functions: group = {id: FunctionExp(Base), forms: [function_exp]}; +let functions: group = { + id: FunctionExp(Base), + forms: [function_exp], +}; let functions_empty_hole = { id: FunctionExp(EmptyHole), forms: [function_empty_hole_exp, function_exp], diff --git a/src/haz3lweb/explainthis/data/HoleExp.re b/src/haz3lweb/explainthis/data/HoleExp.re index 25b31cfbda..5c2ac9d064 100644 --- a/src/haz3lweb/explainthis/data/HoleExp.re +++ b/src/haz3lweb/explainthis/data/HoleExp.re @@ -3,9 +3,15 @@ open Example; let empty_hole_exp: form = HoleTemplate.empty_hole_template(exp, "an expression", EmptyHoleExp); -let empty_hole_exps = {id: EmptyHoleExp, forms: [empty_hole_exp]}; +let empty_hole_exps = { + id: EmptyHoleExp, + forms: [empty_hole_exp], +}; let multi_hole_exp: form = HoleTemplate.multi_hole_template(exp, MultiHoleExp); -let multi_hole_exps = {id: MultiHoleExp, forms: [multi_hole_exp]}; +let multi_hole_exps = { + id: MultiHoleExp, + forms: [multi_hole_exp], +}; diff --git a/src/haz3lweb/explainthis/data/HolePat.re b/src/haz3lweb/explainthis/data/HolePat.re index 68bf7f5523..635dea9fd5 100644 --- a/src/haz3lweb/explainthis/data/HolePat.re +++ b/src/haz3lweb/explainthis/data/HolePat.re @@ -5,7 +5,12 @@ let empty_hole_pat: form = { let explanation = "Expressions are not matched against the *empty hole pattern* until it is filled."; { id: EmptyHolePat, - syntactic_form: [Grout({id: Id.mk(), shape: Convex})], + syntactic_form: [ + Grout({ + id: Id.mk(), + shape: Convex, + }), + ], expandable_id: None, explanation, examples: [], @@ -23,6 +28,12 @@ let multi_hole_pat: form = { }; }; -let empty_hole: group = {id: EmptyHolePat, forms: [empty_hole_pat]}; +let empty_hole: group = { + id: EmptyHolePat, + forms: [empty_hole_pat], +}; -let multi_hole: group = {id: MultiHolePat, forms: [multi_hole_pat]}; +let multi_hole: group = { + id: MultiHolePat, + forms: [multi_hole_pat], +}; diff --git a/src/haz3lweb/explainthis/data/HoleTPat.re b/src/haz3lweb/explainthis/data/HoleTPat.re index edba184635..fb3f848af9 100644 --- a/src/haz3lweb/explainthis/data/HoleTPat.re +++ b/src/haz3lweb/explainthis/data/HoleTPat.re @@ -3,9 +3,15 @@ open Example; let empty_hole_tpat: form = HoleTemplate.empty_hole_template(tpat, "a type pattern", EmptyHoleTPat); -let empty_hole_tpats = {id: EmptyHoleTPat, forms: [empty_hole_tpat]}; +let empty_hole_tpats = { + id: EmptyHoleTPat, + forms: [empty_hole_tpat], +}; let multi_hole_tpat: form = HoleTemplate.multi_hole_template(tpat, MultiHoleTPat); -let multi_hole_tpats = {id: MultiHoleTPat, forms: [multi_hole_tpat]}; +let multi_hole_tpats = { + id: MultiHoleTPat, + forms: [multi_hole_tpat], +}; diff --git a/src/haz3lweb/explainthis/data/HoleTemplate.re b/src/haz3lweb/explainthis/data/HoleTemplate.re index b3807ef827..53ad6bb8ad 100644 --- a/src/haz3lweb/explainthis/data/HoleTemplate.re +++ b/src/haz3lweb/explainthis/data/HoleTemplate.re @@ -9,7 +9,12 @@ let empty_hole_template = (_sort, str, id): form => { ); { id, - syntactic_form: [Grout({id: Id.mk(), shape: Convex})], + syntactic_form: [ + Grout({ + id: Id.mk(), + shape: Convex, + }), + ], expandable_id: None, explanation, examples: [], diff --git a/src/haz3lweb/explainthis/data/HoleTyp.re b/src/haz3lweb/explainthis/data/HoleTyp.re index 2ed387eaba..cf160a8a3a 100644 --- a/src/haz3lweb/explainthis/data/HoleTyp.re +++ b/src/haz3lweb/explainthis/data/HoleTyp.re @@ -6,7 +6,12 @@ let empty_hole_typ: form = { let explanation = "This marks a type that needs to be filled in."; { id: EmptyHoleTyp, - syntactic_form: [Grout({id: Id.mk(), shape: Convex})], + syntactic_form: [ + Grout({ + id: Id.mk(), + shape: Convex, + }), + ], expandable_id: None, explanation, examples: [], @@ -25,6 +30,12 @@ let multi_hole_typ: form = { }; }; -let empty_hole: group = {id: EmptyHoleTyp, forms: [empty_hole_typ]}; +let empty_hole: group = { + id: EmptyHoleTyp, + forms: [empty_hole_typ], +}; -let multi_hole: group = {id: MultiHoleTyp, forms: [multi_hole_typ]}; +let multi_hole: group = { + id: MultiHoleTyp, + forms: [multi_hole_typ], +}; diff --git a/src/haz3lweb/explainthis/data/IfExp.re b/src/haz3lweb/explainthis/data/IfExp.re index 88c469b311..22d3efd5ff 100644 --- a/src/haz3lweb/explainthis/data/IfExp.re +++ b/src/haz3lweb/explainthis/data/IfExp.re @@ -39,4 +39,7 @@ let if_exp: form = { }; }; -let ifs: group = {id: IfExp, forms: [if_exp]}; +let ifs: group = { + id: IfExp, + forms: [if_exp], +}; diff --git a/src/haz3lweb/explainthis/data/LetExp.re b/src/haz3lweb/explainthis/data/LetExp.re index 59b6d41d98..3cea5eb882 100644 --- a/src/haz3lweb/explainthis/data/LetExp.re +++ b/src/haz3lweb/explainthis/data/LetExp.re @@ -119,7 +119,11 @@ let let_base_exp: form = { examples: [let_base_ex], }; }; -let _pat = Piece.Grout({id: Id.mk(), shape: Convex}); +let _pat = + Piece.Grout({ + id: Id.mk(), + shape: Convex, + }); let _exp_def = exp("e_def"); let let_empty_hole_exp_coloring_ids = _pat_def_let_exp_coloring_ids(Piece.id(_pat), Piece.id(_exp_def)); @@ -134,7 +138,15 @@ let let_empty_hole_exp: form = { id: LetExp(EmptyHole), syntactic_form: form, expandable_id: - Some((Piece.id(_pat), [Grout({id: Id.mk(), shape: Convex})])), + Some(( + Piece.id(_pat), + [ + Grout({ + id: Id.mk(), + shape: Convex, + }), + ], + )), explanation, examples: [let_base_ex], }; @@ -565,7 +577,10 @@ let lets_wild: group = { forms: [let_wild_exp, let_base_exp], }; -let lets_int: group = {id: LetExp(Int), forms: [let_int_exp, let_base_exp]}; +let lets_int: group = { + id: LetExp(Int), + forms: [let_int_exp, let_base_exp], +}; let lets_float: group = { id: LetExp(Float), @@ -602,7 +617,10 @@ let lets_cons: group = { forms: [let_cons_exp, let_base_exp], }; -let lets_var: group = {id: LetExp(Var), forms: [let_var_exp, let_base_exp]}; +let lets_var: group = { + id: LetExp(Var), + forms: [let_var_exp, let_base_exp], +}; let lets_tuple: group = { id: LetExp(Tuple), @@ -619,6 +637,12 @@ let lets_tuple3: group = { forms: [let_tuple3_exp, let_tuple_exp, let_base_exp], }; -let lets_ctr: group = {id: LetExp(Ctr), forms: [let_ctr_exp, let_base_exp]}; +let lets_ctr: group = { + id: LetExp(Ctr), + forms: [let_ctr_exp, let_base_exp], +}; -let lets_ap: group = {id: LetExp(Ap), forms: [let_ap_exp, let_base_exp]}; +let lets_ap: group = { + id: LetExp(Ap), + forms: [let_ap_exp, let_base_exp], +}; diff --git a/src/haz3lweb/explainthis/data/ListExp.re b/src/haz3lweb/explainthis/data/ListExp.re index 2082fb41f1..e72cb780f6 100644 --- a/src/haz3lweb/explainthis/data/ListExp.re +++ b/src/haz3lweb/explainthis/data/ListExp.re @@ -70,8 +70,17 @@ let list_concat_exp: form = { }; }; -let listlits: group = {id: ListExp, forms: [list_exp]}; +let listlits: group = { + id: ListExp, + forms: [list_exp], +}; -let listcons: group = {id: ConsExp, forms: [cons_exp]}; +let listcons: group = { + id: ConsExp, + forms: [cons_exp], +}; -let listconcats: group = {id: ListConcatExp, forms: [list_concat_exp]}; +let listconcats: group = { + id: ListConcatExp, + forms: [list_concat_exp], +}; diff --git a/src/haz3lweb/explainthis/data/ListPat.re b/src/haz3lweb/explainthis/data/ListPat.re index 4521b2bf04..73be98b14a 100644 --- a/src/haz3lweb/explainthis/data/ListPat.re +++ b/src/haz3lweb/explainthis/data/ListPat.re @@ -64,10 +64,22 @@ let cons2_pat: form = { }; }; -let listlit: group = {id: ListLitPat, forms: [listlit_pat]}; +let listlit: group = { + id: ListLitPat, + forms: [listlit_pat], +}; -let listnil: group = {id: ListNilPat, forms: [listnil_pat]}; +let listnil: group = { + id: ListNilPat, + forms: [listnil_pat], +}; -let cons: group = {id: ConsPat, forms: [cons_base_pat]}; +let cons: group = { + id: ConsPat, + forms: [cons_base_pat], +}; -let cons2: group = {id: Cons2Pat, forms: [cons2_pat, cons_base_pat]}; +let cons2: group = { + id: Cons2Pat, + forms: [cons2_pat, cons_base_pat], +}; diff --git a/src/haz3lweb/explainthis/data/ListTyp.re b/src/haz3lweb/explainthis/data/ListTyp.re index 68634ea38b..6a461c9e72 100644 --- a/src/haz3lweb/explainthis/data/ListTyp.re +++ b/src/haz3lweb/explainthis/data/ListTyp.re @@ -18,4 +18,7 @@ let list_typ: form = { }; }; -let list: group = {id: ListTyp, forms: [list_typ]}; +let list: group = { + id: ListTyp, + forms: [list_typ], +}; diff --git a/src/haz3lweb/explainthis/data/OpExp.re b/src/haz3lweb/explainthis/data/OpExp.re index 04e3be4fcd..5e1f27b066 100644 --- a/src/haz3lweb/explainthis/data/OpExp.re +++ b/src/haz3lweb/explainthis/data/OpExp.re @@ -770,13 +770,25 @@ let int_un_minus: group = { forms: [int_unary_minus_exp], }; -let int_plus: group = {id: BinOpExp(Int(Plus)), forms: [int_plus_exp]}; +let int_plus: group = { + id: BinOpExp(Int(Plus)), + forms: [int_plus_exp], +}; -let int_minus: group = {id: BinOpExp(Int(Minus)), forms: [int_minus_exp]}; +let int_minus: group = { + id: BinOpExp(Int(Minus)), + forms: [int_minus_exp], +}; -let int_times: group = {id: BinOpExp(Int(Times)), forms: [int_times_exp]}; +let int_times: group = { + id: BinOpExp(Int(Times)), + forms: [int_times_exp], +}; -let int_power: group = {id: BinOpExp(Int(Power)), forms: [int_power_exp]}; +let int_power: group = { + id: BinOpExp(Int(Power)), + forms: [int_power_exp], +}; let int_divide: group = { id: BinOpExp(Int(Divide)), @@ -803,7 +815,10 @@ let int_greater_than_equal: group = { forms: [int_gte_exp], }; -let int_equal: group = {id: BinOpExp(Int(Equals)), forms: [int_eq_exp]}; +let int_equal: group = { + id: BinOpExp(Int(Equals)), + forms: [int_eq_exp], +}; let int_not_equal: group = { id: BinOpExp(Int(NotEquals)), @@ -865,9 +880,15 @@ let float_not_equal: group = { forms: [float_neq_exp], }; -let bool_and: group = {id: BinOpExp(Bool(And)), forms: [bool_and_exp]}; +let bool_and: group = { + id: BinOpExp(Bool(And)), + forms: [bool_and_exp], +}; -let bool_or: group = {id: BinOpExp(Bool(Or)), forms: [bool_or_exp]}; +let bool_or: group = { + id: BinOpExp(Bool(Or)), + forms: [bool_or_exp], +}; let string_equal: group = { id: BinOpExp(String(Equals)), diff --git a/src/haz3lweb/explainthis/data/RecTyp.re b/src/haz3lweb/explainthis/data/RecTyp.re index 601f081602..d11730d504 100644 --- a/src/haz3lweb/explainthis/data/RecTyp.re +++ b/src/haz3lweb/explainthis/data/RecTyp.re @@ -25,4 +25,7 @@ let rec_typ: form = { }; }; -let rec_: group = {id: RecTyp, forms: [rec_typ]}; +let rec_: group = { + id: RecTyp, + forms: [rec_typ], +}; diff --git a/src/haz3lweb/explainthis/data/SeqExp.re b/src/haz3lweb/explainthis/data/SeqExp.re index a5f3513789..e795d57495 100644 --- a/src/haz3lweb/explainthis/data/SeqExp.re +++ b/src/haz3lweb/explainthis/data/SeqExp.re @@ -31,4 +31,7 @@ let seq_exp: form = { }; }; -let seqs: group = {id: SeqExp, forms: [seq_exp]}; +let seqs: group = { + id: SeqExp, + forms: [seq_exp], +}; diff --git a/src/haz3lweb/explainthis/data/TerminalExp.re b/src/haz3lweb/explainthis/data/TerminalExp.re index 4650c41f82..536ec2c72a 100644 --- a/src/haz3lweb/explainthis/data/TerminalExp.re +++ b/src/haz3lweb/explainthis/data/TerminalExp.re @@ -8,7 +8,10 @@ let triv_exp: form = { explanation: "The unique value of type `()`.", examples: [], }; -let triv_exps: group = {id: TrivExp, forms: [triv_exp]}; +let triv_exps: group = { + id: TrivExp, + forms: [triv_exp], +}; let deferral_exp_ex = { sub_id: Deferral, @@ -25,7 +28,10 @@ let deferral_exp: form = { explanation: "Marks an argument that has not yet been applied in a partial application.", examples: [deferral_exp_ex], }; -let deferral_exps: group = {id: DeferralExp, forms: [deferral_exp]}; +let deferral_exps: group = { + id: DeferralExp, + forms: [deferral_exp], +}; let bool_exp = (b: bool): form => { id: BoolExp, @@ -34,7 +40,10 @@ let bool_exp = (b: bool): form => { explanation: "A boolean literal, either `true` or `false`.", examples: [], }; -let bool_exps = (b: bool): group => {id: BoolExp, forms: [bool_exp(b)]}; +let bool_exps = (b: bool): group => { + id: BoolExp, + forms: [bool_exp(b)], +}; let int_exp = (n: int): form => { id: IntExp, @@ -43,7 +52,10 @@ let int_exp = (n: int): form => { explanation: "A signed integer literal.", examples: [], }; -let int_exps = (i: int): group => {id: IntExp, forms: [int_exp(i)]}; +let int_exps = (i: int): group => { + id: IntExp, + forms: [int_exp(i)], +}; let float_exp = (f: float): form => { id: FloatExp, @@ -76,7 +88,10 @@ let var_exp = (n: string): form => { explanation: "Takes the value of the expression that it was bound to.", examples: [], }; -let var_exps = (x: string): group => {id: VarExp, forms: [var_exp(x)]}; +let var_exps = (x: string): group => { + id: VarExp, + forms: [var_exp(x)], +}; let ctr_exp = (c: string): form => { id: CtrExp, @@ -85,4 +100,7 @@ let ctr_exp = (c: string): form => { explanation: "`%s` is a constructor for a sum type variant.", examples: [], }; -let ctr = (c: string): group => {id: CtrExp, forms: [ctr_exp(c)]}; +let ctr = (c: string): group => { + id: CtrExp, + forms: [ctr_exp(c)], +}; diff --git a/src/haz3lweb/explainthis/data/TerminalPat.re b/src/haz3lweb/explainthis/data/TerminalPat.re index 8ef7f78d84..0387efbd7c 100644 --- a/src/haz3lweb/explainthis/data/TerminalPat.re +++ b/src/haz3lweb/explainthis/data/TerminalPat.re @@ -88,21 +88,42 @@ let ctr_pat = (name: string): form => { }; }; -let wild: group = {id: WildPat, forms: [wild_pat]}; +let wild: group = { + id: WildPat, + forms: [wild_pat], +}; -let intlit = (i: int): group => {id: IntPat, forms: [intlit_pat(i)]}; +let intlit = (i: int): group => { + id: IntPat, + forms: [intlit_pat(i)], +}; let floatlit = (f: float): group => { id: FloatPat, forms: [floatlit_pat(f)], }; -let boollit = (b: bool): group => {id: BoolPat, forms: [boollit_pat(b)]}; +let boollit = (b: bool): group => { + id: BoolPat, + forms: [boollit_pat(b)], +}; -let strlit = (s: string): group => {id: StrPat, forms: [strlit_pat(s)]}; +let strlit = (s: string): group => { + id: StrPat, + forms: [strlit_pat(s)], +}; -let triv: group = {id: TrivPat, forms: [triv_pat]}; +let triv: group = { + id: TrivPat, + forms: [triv_pat], +}; -let var = (name: string): group => {id: VarPat, forms: [var_pat(name)]}; +let var = (name: string): group => { + id: VarPat, + forms: [var_pat(name)], +}; -let ctr = (name: string): group => {id: CtrPat, forms: [ctr_pat(name)]}; +let ctr = (name: string): group => { + id: CtrPat, + forms: [ctr_pat(name)], +}; diff --git a/src/haz3lweb/explainthis/data/TerminalTyp.re b/src/haz3lweb/explainthis/data/TerminalTyp.re index 8566be4762..b1d6217bba 100644 --- a/src/haz3lweb/explainthis/data/TerminalTyp.re +++ b/src/haz3lweb/explainthis/data/TerminalTyp.re @@ -56,12 +56,27 @@ let var_typ = (name: string): form => { }; }; -let int: group = {id: IntTyp, forms: [int_typ]}; +let int: group = { + id: IntTyp, + forms: [int_typ], +}; -let float: group = {id: FloatTyp, forms: [float_typ]}; +let float: group = { + id: FloatTyp, + forms: [float_typ], +}; -let bool: group = {id: BoolTyp, forms: [bool_typ]}; +let bool: group = { + id: BoolTyp, + forms: [bool_typ], +}; -let str: group = {id: StrTyp, forms: [str_typ]}; +let str: group = { + id: StrTyp, + forms: [str_typ], +}; -let var = (name: string): group => {id: VarTyp, forms: [var_typ(name)]}; +let var = (name: string): group => { + id: VarTyp, + forms: [var_typ(name)], +}; diff --git a/src/haz3lweb/explainthis/data/TestExp.re b/src/haz3lweb/explainthis/data/TestExp.re index 67b5021a0f..3de68b0541 100644 --- a/src/haz3lweb/explainthis/data/TestExp.re +++ b/src/haz3lweb/explainthis/data/TestExp.re @@ -28,4 +28,7 @@ let test_exp: form = { }; }; -let tests: group = {id: TestExp, forms: [test_exp]}; +let tests: group = { + id: TestExp, + forms: [test_exp], +}; diff --git a/src/haz3lweb/explainthis/data/TupleExp.re b/src/haz3lweb/explainthis/data/TupleExp.re index 0b3319e830..d7efffe07b 100644 --- a/src/haz3lweb/explainthis/data/TupleExp.re +++ b/src/haz3lweb/explainthis/data/TupleExp.re @@ -77,8 +77,17 @@ let tuple_exp_size3: form = { }; }; -let tuples: group = {id: TupleExp, forms: [tuple_exp]}; +let tuples: group = { + id: TupleExp, + forms: [tuple_exp], +}; -let tuples2: group = {id: Tuple2Exp, forms: [tuple_exp_size2, tuple_exp]}; +let tuples2: group = { + id: Tuple2Exp, + forms: [tuple_exp_size2, tuple_exp], +}; -let tuples3: group = {id: Tuple3Exp, forms: [tuple_exp_size3, tuple_exp]}; +let tuples3: group = { + id: Tuple3Exp, + forms: [tuple_exp_size3, tuple_exp], +}; diff --git a/src/haz3lweb/explainthis/data/TuplePat.re b/src/haz3lweb/explainthis/data/TuplePat.re index 27fe9afffe..f3f2a18368 100644 --- a/src/haz3lweb/explainthis/data/TuplePat.re +++ b/src/haz3lweb/explainthis/data/TuplePat.re @@ -66,6 +66,15 @@ let tuple_pat_size3: form = { }; }; -let tuple: group = {id: TuplePat, forms: [tuple_pat]}; -let tuple2: group = {id: Tuple2Pat, forms: [tuple_pat_size2, tuple_pat]}; -let tuple3: group = {id: Tuple3Pat, forms: [tuple_pat_size3, tuple_pat]}; +let tuple: group = { + id: TuplePat, + forms: [tuple_pat], +}; +let tuple2: group = { + id: Tuple2Pat, + forms: [tuple_pat_size2, tuple_pat], +}; +let tuple3: group = { + id: Tuple3Pat, + forms: [tuple_pat_size3, tuple_pat], +}; diff --git a/src/haz3lweb/explainthis/data/TupleTyp.re b/src/haz3lweb/explainthis/data/TupleTyp.re index fd2b09d7ef..811268c3ac 100644 --- a/src/haz3lweb/explainthis/data/TupleTyp.re +++ b/src/haz3lweb/explainthis/data/TupleTyp.re @@ -78,10 +78,22 @@ let tuple3_typ: form = { }; }; -let tuple: group = {id: TupleTyp, forms: [tuple_typ]}; +let tuple: group = { + id: TupleTyp, + forms: [tuple_typ], +}; -let tuple0: group = {id: Tuple0Typ, forms: [tuple0_typ]}; +let tuple0: group = { + id: Tuple0Typ, + forms: [tuple0_typ], +}; -let tuple2: group = {id: Tuple2Typ, forms: [tuple2_typ, tuple_typ]}; +let tuple2: group = { + id: Tuple2Typ, + forms: [tuple2_typ, tuple_typ], +}; -let tuple3: group = {id: Tuple3Typ, forms: [tuple3_typ, tuple_typ]}; +let tuple3: group = { + id: Tuple3Typ, + forms: [tuple3_typ, tuple_typ], +}; diff --git a/src/haz3lweb/explainthis/data/TyAliasExp.re b/src/haz3lweb/explainthis/data/TyAliasExp.re index 65cc234dfd..7efe249ab0 100644 --- a/src/haz3lweb/explainthis/data/TyAliasExp.re +++ b/src/haz3lweb/explainthis/data/TyAliasExp.re @@ -24,4 +24,7 @@ let tyalias_exp: form = { }; }; -let tyalias_exps: group = {id: TyAliasExp, forms: [tyalias_exp]}; +let tyalias_exps: group = { + id: TyAliasExp, + forms: [tyalias_exp], +}; diff --git a/src/haz3lweb/explainthis/data/TypAnnPat.re b/src/haz3lweb/explainthis/data/TypAnnPat.re index fafc7bff27..876ab6fb47 100644 --- a/src/haz3lweb/explainthis/data/TypAnnPat.re +++ b/src/haz3lweb/explainthis/data/TypAnnPat.re @@ -19,4 +19,7 @@ let typann_pat: form = { }; }; -let typann: group = {id: TypAnnPat, forms: [typann_pat]}; +let typann: group = { + id: TypAnnPat, + forms: [typann_pat], +}; diff --git a/src/haz3lweb/explainthis/data/TypAppExp.re b/src/haz3lweb/explainthis/data/TypAppExp.re index 5b1ad13106..afdeab9a87 100644 --- a/src/haz3lweb/explainthis/data/TypAppExp.re +++ b/src/haz3lweb/explainthis/data/TypAppExp.re @@ -28,4 +28,7 @@ let typfunapp_exp: form = { }; }; -let typfunaps: group = {id: TypFunApExp, forms: [typfunapp_exp]}; +let typfunaps: group = { + id: TypFunApExp, + forms: [typfunapp_exp], +}; diff --git a/src/haz3lweb/explainthis/data/TypFunctionExp.re b/src/haz3lweb/explainthis/data/TypFunctionExp.re index 93b7300b18..d35012be6e 100644 --- a/src/haz3lweb/explainthis/data/TypFunctionExp.re +++ b/src/haz3lweb/explainthis/data/TypFunctionExp.re @@ -20,10 +20,21 @@ let typfun_var: form = { id: TypFunctionExp, syntactic_form: form, expandable_id: - Some((Piece.id(_tp), [Grout({id: Id.mk(), shape: Convex})])), + Some(( + Piece.id(_tp), + [ + Grout({ + id: Id.mk(), + shape: Convex, + }), + ], + )), explanation, examples: [poly_id_ex], }; }; -let type_functions_basic = {id: TypFunctionExp, forms: [typfun_var]}; +let type_functions_basic = { + id: TypFunctionExp, + forms: [typfun_var], +}; diff --git a/src/haz3lweb/explainthis/data/UndefinedExp.re b/src/haz3lweb/explainthis/data/UndefinedExp.re index 71ff320576..d31b1806c8 100644 --- a/src/haz3lweb/explainthis/data/UndefinedExp.re +++ b/src/haz3lweb/explainthis/data/UndefinedExp.re @@ -30,4 +30,7 @@ let undefined_exp: form = { }; }; -let undefined_exps: group = {id: UndefinedExp, forms: [undefined_exp]}; +let undefined_exps: group = { + id: UndefinedExp, + forms: [undefined_exp], +}; diff --git a/src/haz3lweb/util/SegmentTree.re b/src/haz3lweb/util/SegmentTree.re index dcccb72105..ba5c42c71f 100644 --- a/src/haz3lweb/util/SegmentTree.re +++ b/src/haz3lweb/util/SegmentTree.re @@ -49,10 +49,19 @@ let mk = (values: list(float)) => { let mid = (a + b) / 2; Branch(lazy(mk_node(a, mid)), lazy(mk_node(mid, b))); }; - {shape, interval: (a, b), count: 0, status: Empty}; + { + shape, + interval: (a, b), + count: 0, + status: Empty, + }; }; - {values, ordinals, root: mk_node(0, Array.length(values) - 1)}; + { + values, + ordinals, + root: mk_node(0, Array.length(values) - 1), + }; }; let update_status = (node: node): node => { @@ -69,7 +78,10 @@ let update_status = (node: node): node => { } }; }; - {...node, status}; + { + ...node, + status, + }; }; type op = @@ -112,7 +124,10 @@ let perform = (op, (a, b): interval, tree: t): t => { let mid = (a' + b') / 2; let l = a >= mid ? l : (lazy(go(op, interval, Lazy.force(l)))); let r = b <= mid ? r : (lazy(go(op, interval, Lazy.force(r)))); - {...node, shape: Branch(l, r)}; + { + ...node, + shape: Branch(l, r), + }; }; }; update_status(node); @@ -132,7 +147,10 @@ let perform = (op, (a, b): interval, tree: t): t => { | (Some(a), Some(b)) => let interval = a < b ? (a, b) : (b, a); let new_root = go(op, interval, tree.root); - {...tree, root: new_root}; + { + ...tree, + root: new_root, + }; }; }; let insert = perform(Insert); diff --git a/src/haz3lweb/util/SvgUtil.re b/src/haz3lweb/util/SvgUtil.re index 5809f70432..255675590a 100644 --- a/src/haz3lweb/util/SvgUtil.re +++ b/src/haz3lweb/util/SvgUtil.re @@ -48,16 +48,32 @@ module Path = { let cmdfudge = (~x=0., ~y=0., c: cmd): cmd => { let (h, v) = (x, y); switch (c) { - | M({x, y}) => M({x: x +. h, y: y +. v}) - | L({x, y}) => L({x: x +. h, y: y +. v}) + | M({x, y}) => + M({ + x: x +. h, + y: y +. v, + }) + | L({x, y}) => + L({ + x: x +. h, + y: y +. v, + }) | H({x}) => H({x: x +. h}) | V({y}) => V({y: y +. v}) | _ => c }; }; - let m = (~x, ~y) => M({x: Float.of_int(x), y: Float.of_int(y)}); - let l_ = (~dx, ~dy) => L_({dx: Float.of_int(dx), dy: Float.of_int(dy)}); + let m = (~x, ~y) => + M({ + x: Float.of_int(x), + y: Float.of_int(y), + }); + let l_ = (~dx, ~dy) => + L_({ + dx: Float.of_int(dx), + dy: Float.of_int(dy), + }); let h = (~x) => H({x: Float.of_int(x)}); let h_ = (~dx) => H_({dx: Float.of_int(dx)}); let v = (~y) => V({y: Float.of_int(y)}); @@ -66,8 +82,16 @@ module Path = { let scale_cmd = (~scale_x=1., ~scale_y=1.) => fun | (Z | M(_) | L(_) | H(_) | V(_) | A_(_)) as cmd => cmd - | M_({dx, dy}) => M_({dx: scale_x *. dx, dy: scale_y *. dy}) - | L_({dx, dy}) => L_({dx: scale_x *. dx, dy: scale_y *. dy}) + | M_({dx, dy}) => + M_({ + dx: scale_x *. dx, + dy: scale_y *. dy, + }) + | L_({dx, dy}) => + L_({ + dx: scale_x *. dx, + dy: scale_y *. dy, + }) | H_({dx}) => H_({dx: scale_x *. dx}) | V_({dy}) => V_({dy: scale_y *. dy}); @@ -80,8 +104,16 @@ module Path = { let translate_cmd = (v: Vector.t) => fun | (Z | M_(_) | L_(_) | H_(_) | V_(_) | A_(_)) as cmd => cmd - | M({x, y}) => M({x: x +. v.dx, y: y +. v.dy}) - | L({x, y}) => L({x: x +. v.dx, y: y +. v.dy}) + | M({x, y}) => + M({ + x: x +. v.dx, + y: y +. v.dy, + }) + | L({x, y}) => + L({ + x: x +. v.dx, + y: y +. v.dy, + }) | H({x}) => H({x: x +. v.dx}) | V({y}) => V({y: y +. v.dy}); let translate = v => List.map(translate_cmd(v)); @@ -237,7 +269,13 @@ module OrthogonalPolygon = { | [] => [v] | [hd, ...tl] as stack => if (v.src.x == hd.dst.x && v.src.y >= hd.dst.y) { - [{...hd, dst: v.dst}, ...tl]; + [ + { + ...hd, + dst: v.dst, + }, + ...tl, + ]; } else { [v, ...stack]; } @@ -261,7 +299,13 @@ module OrthogonalPolygon = { | [] => [v] | [hd, ...tl] as stack => if (v.src.x == hd.dst.x && v.src.y <= hd.dst.y) { - [{...hd, dst: v.dst}, ...tl]; + [ + { + ...hd, + dst: v.dst, + }, + ...tl, + ]; } else { [v, ...stack]; } @@ -281,14 +325,34 @@ module OrthogonalPolygon = { |> List.map((Rect.{min, width, height}) => { let max_x = min.x +. width; let max_y = min.y +. height; - let max = Point.{x: max_x, y: max_y}; - let min_max = Point.{x: min.x, y: max_y}; - let max_min = Point.{x: max_x, y: min.y}; + let max = + Point.{ + x: max_x, + y: max_y, + }; + let min_max = + Point.{ + x: min.x, + y: max_y, + }; + let max_min = + Point.{ + x: max_x, + y: min.y, + }; [ - // left sides point in negative direction - {src: min_max, dst: min, next: None}, - // right sides point in positive direction - {src: max_min, dst: max, next: None}, + { + // left sides point in negative direction + src: min_max, + dst: min, + next: None, + }, + { + // right sides point in positive direction + src: max_min, + dst: max, + next: None, + }, ]; }) |> List.flatten @@ -325,9 +389,21 @@ module OrthogonalPolygon = { let x = v.src.x; let ys = (v.src.y, v.dst.y); let mk_contour_edge = ((y_src, y_dst)) => { - let src = Point.{x, y: y_src}; - let dst = Point.{x, y: y_dst}; - {src, dst, next: None}; + let src = + Point.{ + x, + y: y_src, + }; + let dst = + Point.{ + x, + y: y_dst, + }; + { + src, + dst, + next: None, + }; }; if (is_left_side(v)) { let new_contour_edges = @@ -391,9 +467,21 @@ module OrthogonalPolygon = { is_src1 ? (pt2.x, pt1.x, v2, v1) : (pt1.x, pt2.x, v1, v2); let h = { - let src = Point.{x: x_src, y}; - let dst = Point.{x: x_dst, y}; - {src, dst, next: Some(next)}; + let src = + Point.{ + x: x_src, + y, + }; + let dst = + Point.{ + x: x_dst, + y, + }; + { + src, + dst, + next: Some(next), + }; }; prev.next = Some(h); }); diff --git a/src/haz3lweb/util/WeakMap.re b/src/haz3lweb/util/WeakMap.re index a3ab0951a9..d6ce44487c 100644 --- a/src/haz3lweb/util/WeakMap.re +++ b/src/haz3lweb/util/WeakMap.re @@ -48,7 +48,10 @@ type t('k, 'v) = { }; let mk = (): t('k, 'v) => { - {primitive_keys: JsMap.mk(), non_primitive_keys: JsWeakMap.mk()}; + { + primitive_keys: JsMap.mk(), + non_primitive_keys: JsWeakMap.mk(), + }; }; let get = (t: t('k, 'v), k: 'k): option('v) => { diff --git a/src/haz3lweb/view/BackpackView.re b/src/haz3lweb/view/BackpackView.re index 3acdcb8c3f..b8bd289e2d 100644 --- a/src/haz3lweb/view/BackpackView.re +++ b/src/haz3lweb/view/BackpackView.re @@ -171,11 +171,17 @@ let view = let genie_view = DecUtil.code_svg( ~font_metrics, - ~origin={row: 0, col: 0}, + ~origin={ + row: 0, + col: 0, + }, ~base_cls=["restructuring-genie"], ~path_cls=["backpack-genie"], SvgUtil.Path.[ - M({x: 0., y: 0.}), + M({ + x: 0., + y: 0., + }), V({y: (-1.0)}), H_({dx: Float.of_int(length)}), V_({dy: 0.0}), diff --git a/src/haz3lweb/view/Cell.re b/src/haz3lweb/view/Cell.re index 65c01e1a6f..a158434abb 100644 --- a/src/haz3lweb/view/Cell.re +++ b/src/haz3lweb/view/Cell.re @@ -271,7 +271,10 @@ let editor_view = /* For exercises modes */ switch (override_statics) { | None => editor.state.meta - | Some(statics) => {...editor.state.meta, statics} + | Some(statics) => { + ...editor.state.meta, + statics, + } }; let mousedown_overlay = selected && mousedown diff --git a/src/haz3lweb/view/Deco.re b/src/haz3lweb/view/Deco.re index a616fe9eb0..54ba1d11c6 100644 --- a/src/haz3lweb/view/Deco.re +++ b/src/haz3lweb/view/Deco.re @@ -167,11 +167,21 @@ module HighlightSegment = |> ListUtil.split_at_nones |> ListUtil.first_and_last |> List.map((((m1, (l1, _)), (m2, (_, r2)))) => - (Measured.{origin: m1.origin, last: m2.last}, (l1, r2)) + ( + Measured.{ + origin: m1.origin, + last: m2.last, + }, + (l1, r2), + ) ) |> List.map(((measurement, tips)) => PieceDec.simple_shard( - {font_metrics: M.font_metrics, measurement, tips}, + { + font_metrics: M.font_metrics, + measurement, + tips, + }, classes, ) ); @@ -208,7 +218,14 @@ module Deco = | Some((_, side, _)) => Direction.toggle(side) | _ => Right }; - CaretDec.view(~font_metrics, ~profile={side, origin, shape}); + CaretDec.view( + ~font_metrics, + ~profile={ + side, + origin, + shape, + }, + ); }; let segment_selected = (z: Zipper.t) => @@ -316,7 +333,10 @@ module Deco = p, M.meta.syntax.measured, ); - Measured.{origin: m.origin, last: m.origin}; + Measured.{ + origin: m.origin, + last: m.origin, + }; | (Some(p), _) => let m = Measured.find_p( @@ -324,9 +344,16 @@ module Deco = p, M.meta.syntax.measured, ); - Measured.{origin: m.last, last: m.last}; + Measured.{ + origin: m.last, + last: m.last, + }; + }; + let profile = + CaretPosDec.Profile.{ + style: `Sibling, + measurement, }; - let profile = CaretPosDec.Profile.{style: `Sibling, measurement}; [CaretPosDec.view(~font_metrics, profile)]; }; }); @@ -388,7 +415,10 @@ module Deco = [m(~x=l.col, ~y=l.row), ...r_edge] @ l_edge @ [Z] - |> translate({dx: Float.of_int(- l.col), dy: Float.of_int(- l.row)}); + |> translate({ + dx: Float.of_int(- l.col), + dy: Float.of_int(- l.row), + }); (l, r, path) |> deco; }; @@ -397,7 +427,10 @@ module Deco = term_decoration(~id, ((origin, last, path)) => DecUtil.code_svg_sized( ~font_metrics, - ~measurement={origin, last}, + ~measurement={ + origin, + last, + }, ~base_cls=clss, path, ) diff --git a/src/haz3lweb/view/ProjectorView.re b/src/haz3lweb/view/ProjectorView.re index 1669ff136d..21891bd398 100644 --- a/src/haz3lweb/view/ProjectorView.re +++ b/src/haz3lweb/view/ProjectorView.re @@ -130,7 +130,11 @@ let setup_view = let* p = Id.Map.find_opt(id, meta.syntax.projectors); let* syntax = Some(p.syntax); let ci = Id.Map.find_opt(id, meta.statics.info_map); - let info = {id, ci, syntax}; + let info = { + id, + ci, + syntax, + }; let+ measurement = Measured.find_pr_opt(p, meta.syntax.measured); let (module P) = to_module(p.kind); let parent = a => inject(PerformAction(Project(handle(id, a)))); diff --git a/src/haz3lweb/view/dec/DecUtil.re b/src/haz3lweb/view/dec/DecUtil.re index d4d3492946..3e057aa078 100644 --- a/src/haz3lweb/view/dec/DecUtil.re +++ b/src/haz3lweb/view/dec/DecUtil.re @@ -38,7 +38,16 @@ let caret_run = (shape: option(Direction.t)) => }; let chevronf = (run: float, rise: float): list(SvgUtil.Path.cmd) => - SvgUtil.Path.[L_({dx: -. run, dy: rise}), L_({dx: +. run, dy: rise})]; + SvgUtil.Path.[ + L_({ + dx: -. run, + dy: rise, + }), + L_({ + dx: +. run, + dy: rise, + }), + ]; let chevron = (direction: option(Direction.t), drawing_from: Direction.t) => chevronf(caret_run(direction), drawing_from == Left ? (-0.5) : 0.5); @@ -47,7 +56,14 @@ let chonky_shard_path_base = ((l, r), x_offset, length: float, height: float): list(SvgUtil.Path.cmd) => { List.flatten( SvgUtil.Path.[ - [M({x: -. x_offset, y: 0.}), H_({dx: length}), V({y: height})], + [ + M({ + x: -. x_offset, + y: 0., + }), + H_({dx: length}), + V({y: height}), + ], chevron(r, Right), [H_({dx: -. length}), v(~y=1)], chevron(l, Left), @@ -97,7 +113,12 @@ type fdims = { top: float, }; -let fzero: fdims = {width: 0., height: 0., left: 0., top: 0.}; +let fzero: fdims = { + width: 0., + height: 0., + left: 0., + top: 0., +}; let pos_str = (~d: dims, ~fudge: fdims=fzero, font_metrics: FontMetrics.t) => Printf.sprintf( @@ -132,7 +153,15 @@ let code_svg_sized = paths: list(SvgUtil.Path.cmd), ) => { let d = abs_dims(measurement); - let d = absolute ? d : {left: 0, top: 0, width: d.width, height: d.height}; + let d = + absolute + ? d + : { + left: 0, + top: 0, + width: d.width, + height: d.height, + }; create_svg( "svg", ~attrs=[ diff --git a/src/haz3lweb/view/dec/Diag.re b/src/haz3lweb/view/dec/Diag.re index a145c9d0e9..f1f13b704c 100644 --- a/src/haz3lweb/view/dec/Diag.re +++ b/src/haz3lweb/view/dec/Diag.re @@ -11,7 +11,10 @@ type tip_shape = (Haz3lcore.Nib.t, int); let tr_bl = ( ~scale as s=1., - ~hemi: [ | `North | `South], + ~hemi: [ + | `North + | `South + ], ~with_child_border=false, ~stretch_x=0., ~stretch_y=0., @@ -21,11 +24,17 @@ let tr_bl = let (diag, junction) = with_child_border ? ( - L_({dx: Float.neg(short_tip_width), dy: short_tip_height}), + L_({ + dx: Float.neg(short_tip_width), + dy: short_tip_height, + }), H_({dx: Float.neg(0.5 -. short_tip_width)}), ) : ( - L_({dx: Float.neg(tip_width), dy: 0.5 +. stretch_y}), + L_({ + dx: Float.neg(tip_width), + dy: 0.5 +. stretch_y, + }), H_({dx: Float.neg(stretch_x)}), ); let path = @@ -38,7 +47,10 @@ let tr_bl = // bottom left to top right let bl_tr = ( - ~hemi: [ | `North | `South], + ~hemi: [ + | `North + | `South + ], ~with_child_border=false, ~stretch_x=0., ~stretch_y=0., @@ -51,7 +63,10 @@ let bl_tr = // top left to bottom right let tl_br = ( - ~hemi: [ | `North | `South], + ~hemi: [ + | `North + | `South + ], ~with_child_border=false, ~stretch_x=0., ~stretch_y=0., @@ -61,10 +76,19 @@ let tl_br = let (diag, junction) = with_child_border ? ( - L_({dx: short_tip_width, dy: short_tip_height}), + L_({ + dx: short_tip_width, + dy: short_tip_height, + }), H_({dx: 0.5 -. short_tip_width}), ) - : (L_({dx: tip_width, dy: 0.5 +. stretch_y}), H_({dx: stretch_x})); + : ( + L_({ + dx: tip_width, + dy: 0.5 +. stretch_y, + }), + H_({dx: stretch_x}), + ); switch (hemi) { | `North => [junction, diag] | `South => [diag, junction] @@ -73,7 +97,10 @@ let tl_br = // bottom right to top left let br_tl = ( - ~hemi: [ | `North | `South], + ~hemi: [ + | `North + | `South + ], ~with_child_border=false, ~stretch_x=0., ~stretch_y=0., @@ -91,9 +118,18 @@ let left_tip_path = br_tl(~hemi=`South, ()) @ bl_tr(~hemi=`North, ()) | ({shape: Concave(_a), _}, n) => let jag = [ - L_({dx: -. jagged_edge_w, dy: -. jagged_edge_h}), - L_({dx: jagged_edge_w, dy: -. jagged_edge_h}), - L_({dx: -. jagged_edge_w, dy: -. jagged_edge_h}), + L_({ + dx: -. jagged_edge_w, + dy: -. jagged_edge_h, + }), + L_({ + dx: jagged_edge_w, + dy: -. jagged_edge_h, + }), + L_({ + dx: -. jagged_edge_w, + dy: -. jagged_edge_h, + }), ]; let bottom_half = n == 0 @@ -126,9 +162,18 @@ let right_tip_path = | ({shape: Concave(_a), _}, n) => open SvgUtil.Path; let jag = [ - L_({dx: jagged_edge_w, dy: jagged_edge_h}), - L_({dx: -. jagged_edge_w, dy: jagged_edge_h}), - L_({dx: jagged_edge_w, dy: jagged_edge_h}), + L_({ + dx: jagged_edge_w, + dy: jagged_edge_h, + }), + L_({ + dx: -. jagged_edge_w, + dy: jagged_edge_h, + }), + L_({ + dx: jagged_edge_w, + dy: jagged_edge_h, + }), ]; let top_half = n == 0 || n == 1 diff --git a/src/haz3lweb/view/dec/EmptyHoleDec.re b/src/haz3lweb/view/dec/EmptyHoleDec.re index 99fc194837..b451a329c9 100644 --- a/src/haz3lweb/view/dec/EmptyHoleDec.re +++ b/src/haz3lweb/view/dec/EmptyHoleDec.re @@ -13,7 +13,10 @@ let path = (tip_l, tip_r, offset, s: float) => { List.concat( SvgUtil.Path.[ [ - M({x: offset +. 0.5, y: 0.5 -. s /. 2.}), + M({ + x: offset +. 0.5, + y: 0.5 -. s /. 2., + }), H_({dx: x_dilate *. s /. 2.}), ], Diag.right_tip_path(~scale_x=s *. x_dilate, ~scale_y=s, (tip_r, 0)), @@ -30,8 +33,14 @@ let view = (~font_metrics, {measurement, mold}: Profile.t): Node.t => { let (tip_l, tip_r): (Haz3lcore.Nib.Shape.t, Haz3lcore.Nib.Shape.t) = Util.TupleUtil.map2(Haz3lcore.Nib.shape, mold.nibs); let (tip_l, tip_r): (Haz3lcore.Nib.t, Haz3lcore.Nib.t) = ( - {sort, shape: tip_l}, - {sort, shape: tip_r}, + { + sort, + shape: tip_l, + }, + { + sort, + shape: tip_r, + }, ); DecUtil.code_svg_sized( ~font_metrics, diff --git a/src/haz3lweb/view/dec/PieceDec.re b/src/haz3lweb/view/dec/PieceDec.re index 4dc9465520..0fe36ad755 100644 --- a/src/haz3lweb/view/dec/PieceDec.re +++ b/src/haz3lweb/view/dec/PieceDec.re @@ -146,7 +146,12 @@ let bi_lines = ( l.origin, SvgUtil.Path.[ - shadowfudge(M({x: offset, y: 1.0})), + shadowfudge( + M({ + x: offset, + y: 1.0, + }), + ), H({x: length}), ], ); @@ -166,7 +171,12 @@ let bi_lines = ( origin, SvgUtil.Path.[ - shadowfudge(M({x: offset, y: 1.0})), + shadowfudge( + M({ + x: offset, + y: 1.0, + }), + ), h_(~dx=indent - origin.col), shadowfudge(v_(~dy=origin'.row - origin.row + v_delta)), h_(~dx=origin'.col - indent), @@ -222,9 +232,17 @@ let uni_lines = ? ( m_first.origin, [ - shadowfudge(M({x: 0., y: 1.0})), + shadowfudge( + M({ + x: 0., + y: 1.0, + }), + ), h(~x=l.col - m_first.origin.col), - L_({dx: -. hook_dx, dy: -. hook_dy}), + L_({ + dx: -. hook_dx, + dy: -. hook_dy, + }), ], ) : ( @@ -238,7 +256,12 @@ let uni_lines = shadowfudge(v(~y=l.row - m_last_of_first.origin.row)), ] : [ - shadowfudge(M({x: offset, y: 1.0})), + shadowfudge( + M({ + x: offset, + y: 1.0, + }), + ), h(~x=indent - m_first.origin.col), shadowfudge(v(~y=l.row + 1 - m_first.origin.row)), h(~x=max_col - m_first.origin.col), @@ -247,7 +270,10 @@ let uni_lines = ) @ [ h(~x=l.col - m_first.origin.col), - L_({dx: -. hook_dx, dy: hook_dy}), + L_({ + dx: -. hook_dx, + dy: hook_dy, + }), ], ), ]; @@ -257,7 +283,12 @@ let uni_lines = }; let r_line = { let (_, m_last) = ListUtil.last(shards); - let hook = [L_({dx: hook_dx, dy: -. hook_dy})]; + let hook = [ + L_({ + dx: hook_dx, + dy: -. hook_dy, + }), + ]; if (r.row == m_last.last.row && r.col > m_last.last.col) { [ ( diff --git a/src/haz3lweb/view/dhcode/DHCode.re b/src/haz3lweb/view/dhcode/DHCode.re index b28f9e18bf..5834e6353a 100644 --- a/src/haz3lweb/view/dhcode/DHCode.re +++ b/src/haz3lweb/view/dhcode/DHCode.re @@ -106,7 +106,11 @@ let view_of_layout = ~font_metrics, ~height=MeasuredLayout.height(m), ~width=MeasuredLayout.width(~offset, m), - ~origin=MeasuredPosition.{row: start.row, col: indent}, + ~origin= + MeasuredPosition.{ + row: start.row, + col: indent, + }, ~cls="err-hole", [DHDecoration.ErrHole.view(~corner_radii, (offset, m))], ); diff --git a/src/haz3lweb/view/dhcode/Decoration_common.re b/src/haz3lweb/view/dhcode/Decoration_common.re index 2be3d88be8..38d45bf1a0 100644 --- a/src/haz3lweb/view/dhcode/Decoration_common.re +++ b/src/haz3lweb/view/dhcode/Decoration_common.re @@ -127,7 +127,10 @@ let rects = |> List.fold_left_map( (start: MeasuredPosition.t, (i, box: MeasuredLayout.box)) => ( - {row: start.row + box.height, col: indent}, + { + row: start.row + box.height, + col: indent, + }, mk_rect(~is_first=i == 0, ~is_last=i == n - 1, start, box), ), start, @@ -144,7 +147,13 @@ module ErrHole = { ) : Node.t => subject - |> rects(~vtrim, {row: 0, col: offset}) + |> rects( + ~vtrim, + { + row: 0, + col: offset, + }, + ) |> SvgUtil.OrthogonalPolygon.mk(~corner_radii) |> SvgUtil.Path.view( ~attrs= @@ -164,7 +173,13 @@ module VarErrHole = { ) : Node.t => subject - |> rects(~vtrim, {row: 0, col: offset}) + |> rects( + ~vtrim, + { + row: 0, + col: offset, + }, + ) |> SvgUtil.OrthogonalPolygon.mk(~corner_radii) |> SvgUtil.Path.view( ~attrs= diff --git a/src/pretty/Cost.re b/src/pretty/Cost.re index 87822f8808..b8e0ca4c80 100644 --- a/src/pretty/Cost.re +++ b/src/pretty/Cost.re @@ -15,9 +15,15 @@ let mk_height = (height_cost: int): t => mk(~overflow_cost=0, ~height_cost); let mk_overflow = (overflow_cost: int): t => mk(~overflow_cost, ~height_cost=0); -let zero: t = {overflow_cost: 0, height_cost: 0}; +let zero: t = { + overflow_cost: 0, + height_cost: 0, +}; -let inf: t = {overflow_cost: max_int, height_cost: max_int}; +let inf: t = { + overflow_cost: max_int, + height_cost: max_int, +}; let add = (c1: t, c2: t): t => { overflow_cost: c1.overflow_cost + c2.overflow_cost, diff --git a/src/pretty/Doc.re b/src/pretty/Doc.re index 15d3ca6ffc..ede6ffd420 100644 --- a/src/pretty/Doc.re +++ b/src/pretty/Doc.re @@ -27,7 +27,10 @@ and t'('annot) = | Fail // identity for `Choice` | Choice(t('annot), t('annot)); -let t_of_t' = (t': t'('annot)): t('annot) => {mem: M.create(0), doc: t'}; +let t_of_t' = (t': t'('annot)): t('annot) => { + mem: M.create(0), + doc: t', +}; let text = (s: string) => t_of_t'(Text(s)); let linebreak = () => t_of_t'(Linebreak); diff --git a/src/pretty/MeasuredLayout.re b/src/pretty/MeasuredLayout.re index 2c2ed6f375..cf1db89e51 100644 --- a/src/pretty/MeasuredLayout.re +++ b/src/pretty/MeasuredLayout.re @@ -68,7 +68,10 @@ let next_position = } ); }; - {row: updated_row, col: updated_col}; + { + row: updated_row, + col: updated_col, + }; }; let pos_fold = @@ -114,10 +117,21 @@ module Make = (MemoTbl: MemoTbl.S) => { let m = switch (l) { | Linebreak => - let box = {height: 1, width: 0}; - {metrics: [box, box], layout: Linebreak}; + let box = { + height: 1, + width: 0, + }; + { + metrics: [box, box], + layout: Linebreak, + }; | Text(s) => { - metrics: [{height: 1, width: Unicode.length(s)}], + metrics: [ + { + height: 1, + width: Unicode.length(s), + }, + ], layout: Text(s), } | Align(l) => @@ -126,10 +140,19 @@ module Make = (MemoTbl: MemoTbl.S) => { m.metrics |> List.fold_left( ({height: bh, width: bw}, {height, width}) => - {height: bh + height, width: max(bw, width)}, - {height: 0, width: 0}, + { + height: bh + height, + width: max(bw, width), + }, + { + height: 0, + width: 0, + }, ); - {metrics: [bounding_box], layout: Align(m)}; + { + metrics: [bounding_box], + layout: Align(m), + }; | Cat(l1, l2) => let m1 = mk(l1); let m2 = mk(l2); @@ -139,10 +162,16 @@ module Make = (MemoTbl: MemoTbl.S) => { height: max(last.height, first.height), width: last.width + first.width, }; - {metrics: leading @ [mid_box, ...trailing], layout: Cat(m1, m2)}; + { + metrics: leading @ [mid_box, ...trailing], + layout: Cat(m1, m2), + }; | Annot(annot, l) => let m = mk(l); - {...m, layout: Annot(annot, m)}; + { + ...m, + layout: Annot(annot, m), + }; }; MemoTbl.set(table, Obj.magic(l), Obj.magic(m)); m; diff --git a/src/pretty/MeasuredLayout.rei b/src/pretty/MeasuredLayout.rei index 428cbb85e6..07dce28a91 100644 --- a/src/pretty/MeasuredLayout.rei +++ b/src/pretty/MeasuredLayout.rei @@ -75,14 +75,15 @@ let pos_fold: ~align: (MeasuredPosition.t, 'acc) => 'acc, ~cat: (MeasuredPosition.t, 'acc, 'acc) => 'acc, // let client control recursion based on annotation - ~annot: ( - ~go: t('annot) => 'acc, - ~indent: int, - ~start: MeasuredPosition.t, - 'annot, - t('annot) - ) => - 'acc, + ~annot: + ( + ~go: t('annot) => 'acc, + ~indent: int, + ~start: MeasuredPosition.t, + 'annot, + t('annot) + ) => + 'acc, ~indent: int=?, ~start: MeasuredPosition.t=?, t('annot) diff --git a/src/pretty/MeasuredPosition.re b/src/pretty/MeasuredPosition.re index a9f6ccb25f..221e7da9d8 100644 --- a/src/pretty/MeasuredPosition.re +++ b/src/pretty/MeasuredPosition.re @@ -15,4 +15,7 @@ let compare = (pos1, pos2) => Int.compare(pos1.col, pos2.col); }; -let zero = {row: 0, col: 0}; +let zero = { + row: 0, + col: 0, +}; diff --git a/src/util/Point.re b/src/util/Point.re index 6a8f80b698..d48a5e230f 100644 --- a/src/util/Point.re +++ b/src/util/Point.re @@ -11,7 +11,10 @@ type t = { row, col, }; -let zero = {row: 0, col: 0}; +let zero = { + row: 0, + col: 0, +}; let equals: (t, t) => bool = (p, q) => p.row == q.row && p.col == q.col; diff --git a/src/util/Web.re b/src/util/Web.re index 358b1327d3..d9dca338d7 100644 --- a/src/util/Web.re +++ b/src/util/Web.re @@ -65,11 +65,17 @@ module TextArea = { let caret_pos = (textarea: t): pos => { let rec find_position = (lines, cur_pos, row, col) => { switch (lines) { - | [] => {row, col} + | [] => { + row, + col, + } | [line, ...rest] => let line_length = String.length(line); if (cur_pos <= line_length) { - {row, col: cur_pos}; + { + row, + col: cur_pos, + }; } else { find_position(rest, cur_pos - line_length - 1, row + 1, 0); }; diff --git a/test/Test_Elaboration.re b/test/Test_Elaboration.re index c515487535..f482c76823 100644 --- a/test/Test_Elaboration.re +++ b/test/Test_Elaboration.re @@ -11,16 +11,29 @@ let mk_map = Statics.mk(CoreSettings.on, Builtins.ctx_init); let dhexp_of_uexp = u => Elaborator.elaborate(mk_map(u), u) |> fst; let alco_check = dhexp_typ |> Alcotest.check; -let u1: Exp.t = {ids: [id_at(0)], term: Int(8), copied: false}; +let u1: Exp.t = { + ids: [id_at(0)], + term: Int(8), + copied: false, +}; let single_integer = () => alco_check("Integer literal 8", u1, dhexp_of_uexp(u1)); -let u2: Exp.t = {ids: [id_at(0)], term: EmptyHole, copied: false}; +let u2: Exp.t = { + ids: [id_at(0)], + term: EmptyHole, + copied: false, +}; let empty_hole = () => alco_check("Empty hole", u2, dhexp_of_uexp(u2)); let u3: Exp.t = { ids: [id_at(0)], - term: Parens({ids: [id_at(1)], term: Var("y"), copied: false}), + term: + Parens({ + ids: [id_at(1)], + term: Var("y"), + copied: false, + }), copied: false, }; From 3285b470da07e7cc8b68d73ec19ffc4e78a7763d Mon Sep 17 00:00:00 2001 From: reevafaisal Date: Fri, 1 Nov 2024 15:46:11 -0400 Subject: [PATCH 04/11] added logger --- hazel.opam | 1 + 1 file changed, 1 insertion(+) diff --git a/hazel.opam b/hazel.opam index 09ee887ab3..6f43cbbd17 100644 --- a/hazel.opam +++ b/hazel.opam @@ -14,6 +14,7 @@ depends: [ "reason" {>= "3.12.0"} "ppx_yojson_conv_lib" "ppx_yojson_conv" + "incr_dom" "bisect_ppx" "omd" {>= "2.0.0~alpha4"} "ezjs_idb" From e1bf64404d12166869dd5013c294f751b55663f3 Mon Sep 17 00:00:00 2001 From: reevafaisal Date: Tue, 5 Nov 2024 12:14:54 -0500 Subject: [PATCH 05/11] updated formatter --- src/haz3lcore/Measured.re | 87 ++-------- src/haz3lcore/assistant/AssistantCtx.re | 25 +-- src/haz3lcore/assistant/AssistantForms.re | 17 +- src/haz3lcore/assistant/TyDi.re | 15 +- src/haz3lcore/dynamics/Builtins.re | 13 +- src/haz3lcore/dynamics/Casts.re | 12 +- src/haz3lcore/dynamics/DHExp.re | 46 +----- src/haz3lcore/dynamics/Elaborator.re | 6 +- src/haz3lcore/dynamics/EvaluatorState.re | 20 +-- src/haz3lcore/dynamics/EvaluatorStep.re | 50 +----- src/haz3lcore/dynamics/Stepper.re | 66 ++------ src/haz3lcore/dynamics/Transition.re | 49 +----- src/haz3lcore/dynamics/TypeAssignment.re | 22 +-- src/haz3lcore/dynamics/VarBstMap.re | 40 +---- src/haz3lcore/lang/Form.re | 6 +- src/haz3lcore/lang/term/IdTagged.re | 26 +-- src/haz3lcore/lang/term/Typ.re | 7 +- src/haz3lcore/prog/CachedStatics.re | 7 +- src/haz3lcore/prog/Interface.re | 6 +- src/haz3lcore/prog/ModelResult.re | 24 +-- src/haz3lcore/prog/ModelResults.re | 15 +- src/haz3lcore/statics/CoCtx.re | 10 +- src/haz3lcore/statics/Ctx.re | 19 +-- src/haz3lcore/statics/Info.re | 67 +------- src/haz3lcore/statics/MakeTerm.re | 108 ++---------- src/haz3lcore/statics/Self.re | 15 +- src/haz3lcore/statics/Statics.re | 40 +---- src/haz3lcore/statics/TermBase.re | 12 +- src/haz3lcore/tiles/Base.re | 7 +- src/haz3lcore/tiles/Grout.re | 5 +- src/haz3lcore/tiles/Id.re | 5 +- src/haz3lcore/tiles/Mold.re | 144 +++------------- src/haz3lcore/tiles/Nib.re | 5 +- src/haz3lcore/tiles/Piece.re | 50 +----- src/haz3lcore/tiles/Secondary.re | 5 +- src/haz3lcore/tiles/Segment.re | 24 +-- src/haz3lcore/tiles/Skel.re | 18 +- src/haz3lcore/tiles/Tile.re | 23 +-- src/haz3lcore/zipper/Ancestor.re | 8 +- src/haz3lcore/zipper/Backpack.re | 5 +- src/haz3lcore/zipper/Editor.re | 41 +---- src/haz3lcore/zipper/EditorUtil.re | 31 +--- src/haz3lcore/zipper/Projector.re | 11 +- src/haz3lcore/zipper/ProjectorBase.re | 11 +- src/haz3lcore/zipper/Relatives.re | 68 ++------ src/haz3lcore/zipper/Selection.re | 27 +-- src/haz3lcore/zipper/Zipper.re | 136 +++------------ src/haz3lcore/zipper/ZipperBase.re | 18 +- src/haz3lcore/zipper/action/Move.re | 25 +-- src/haz3lcore/zipper/action/Perform.re | 10 +- .../zipper/action/ProjectorPerform.re | 42 +---- src/haz3lschool/Exercise.re | 111 +++---------- src/haz3lschool/Gradescope.re | 10 +- src/haz3lschool/Grading.re | 6 +- src/haz3lschool/Tutorial.re | 57 ++----- src/haz3lweb/Export.re | 9 +- src/haz3lweb/FailedInput.re | 10 +- src/haz3lweb/FontMetrics.re | 5 +- src/haz3lweb/Keyboard.re | 8 +- src/haz3lweb/Model.re | 8 +- src/haz3lweb/Settings.re | 5 +- src/haz3lweb/Update.re | 155 ++++-------------- src/haz3lweb/explainthis/Example.re | 22 +-- src/haz3lweb/explainthis/ExplainThisModel.re | 12 +- src/haz3lweb/explainthis/ExplainThisUpdate.re | 55 +------ src/haz3lweb/explainthis/data/AppExp.re | 15 +- src/haz3lweb/explainthis/data/AppPat.re | 5 +- src/haz3lweb/explainthis/data/ArrowTyp.re | 10 +- src/haz3lweb/explainthis/data/CaseExp.re | 5 +- src/haz3lweb/explainthis/data/ForallTyp.re | 5 +- src/haz3lweb/explainthis/data/FunctionExp.re | 21 +-- src/haz3lweb/explainthis/data/HoleExp.re | 10 +- src/haz3lweb/explainthis/data/HolePat.re | 17 +- src/haz3lweb/explainthis/data/HoleTPat.re | 10 +- src/haz3lweb/explainthis/data/HoleTemplate.re | 7 +- src/haz3lweb/explainthis/data/HoleTyp.re | 17 +- src/haz3lweb/explainthis/data/IfExp.re | 5 +- src/haz3lweb/explainthis/data/LetExp.re | 36 +--- src/haz3lweb/explainthis/data/ListExp.re | 15 +- src/haz3lweb/explainthis/data/ListPat.re | 20 +-- src/haz3lweb/explainthis/data/ListTyp.re | 5 +- src/haz3lweb/explainthis/data/OpExp.re | 35 +--- src/haz3lweb/explainthis/data/RecTyp.re | 5 +- src/haz3lweb/explainthis/data/SeqExp.re | 5 +- src/haz3lweb/explainthis/data/TerminalExp.re | 30 +--- src/haz3lweb/explainthis/data/TerminalPat.re | 35 +--- src/haz3lweb/explainthis/data/TerminalTyp.re | 25 +-- src/haz3lweb/explainthis/data/TestExp.re | 5 +- src/haz3lweb/explainthis/data/TupleExp.re | 15 +- src/haz3lweb/explainthis/data/TuplePat.re | 15 +- src/haz3lweb/explainthis/data/TupleTyp.re | 20 +-- src/haz3lweb/explainthis/data/TyAliasExp.re | 5 +- src/haz3lweb/explainthis/data/TypAnnPat.re | 5 +- src/haz3lweb/explainthis/data/TypAppExp.re | 5 +- .../explainthis/data/TypFunctionExp.re | 15 +- src/haz3lweb/explainthis/data/UndefinedExp.re | 5 +- src/haz3lweb/util/SegmentTree.re | 28 +--- src/haz3lweb/util/SvgUtil.re | 118 +++---------- src/haz3lweb/util/WeakMap.re | 5 +- src/haz3lweb/view/BackpackView.re | 10 +- src/haz3lweb/view/Cell.re | 5 +- src/haz3lweb/view/Deco.re | 49 +----- src/haz3lweb/view/ProjectorView.re | 6 +- src/haz3lweb/view/dec/DecUtil.re | 37 +---- src/haz3lweb/view/dec/Diag.re | 73 ++------- src/haz3lweb/view/dec/EmptyHoleDec.re | 15 +- src/haz3lweb/view/dec/PieceDec.re | 45 +---- src/haz3lweb/view/dhcode/DHCode.re | 6 +- src/haz3lweb/view/dhcode/Decoration_common.re | 21 +-- src/pretty/Cost.re | 10 +- src/pretty/Doc.re | 5 +- src/pretty/MeasuredLayout.re | 47 +----- src/pretty/MeasuredLayout.rei | 17 +- src/pretty/MeasuredPosition.re | 5 +- src/util/Point.re | 5 +- src/util/Web.re | 10 +- test/Test_Elaboration.re | 19 +-- 117 files changed, 495 insertions(+), 2491 deletions(-) diff --git a/src/haz3lcore/Measured.re b/src/haz3lcore/Measured.re index d1814e804f..61dad8a831 100644 --- a/src/haz3lcore/Measured.re +++ b/src/haz3lcore/Measured.re @@ -128,13 +128,7 @@ let rec add_n_rows = (origin: Point.t, row_indent, n: abs_indent, map: t): t => | _ => map |> add_n_rows(origin, row_indent, n - 1) - |> add_row( - origin.row + n - 1, - { - indent: row_indent, - max_col: origin.col, - }, - ) + |> add_row(origin.row + n - 1, {indent: row_indent, max_col: origin.col}) }; let add_lb = (id, indent, map) => { @@ -186,10 +180,7 @@ let find_t = (t: Tile.t, map): measurement => { }) { | _ => failwith("find_t: inconsistent shard infor between tile and map") }; - { - origin: first.origin, - last: last.last, - }; + {origin: first.origin, last: last.last}; }; let find_p = (~msg="", p: Piece.t, map): measurement => try( @@ -221,10 +212,7 @@ let find_by_id = (id: Id.t, map: t): option(measurement) => { shards, "find_by_id", ); - Some({ - origin: first.origin, - last: last.last, - }); + Some({origin: first.origin, last: last.last}); | None => switch (Id.Map.find_opt(id, map.projectors)) { | Some(m) => Some(m) @@ -344,90 +332,39 @@ let of_segment = (seg: Segment.t, info_map: Statics.Map.t): t => { contained_indent + (Id.Map.find(w.id, is_indented) ? 2 : 0); }; let last = - Point.{ - row: origin.row + 1, - col: container_indent + indent, - }; + Point.{row: origin.row + 1, col: container_indent + indent}; let map = map - |> add_w( - w, - { - origin, - last, - }, - ) + |> add_w(w, {origin, last}) |> add_row( origin.row, - { - indent: row_indent, - max_col: origin.col, - }, + {indent: row_indent, max_col: origin.col}, ) |> add_lb(w.id, indent); (indent, last, map); | Secondary(w) => let wspace_length = Unicode.length(Secondary.get_string(w.content)); - let last = { - ...origin, - col: origin.col + wspace_length, - }; - let map = - map - |> add_w( - w, - { - origin, - last, - }, - ); + let last = {...origin, col: origin.col + wspace_length}; + let map = map |> add_w(w, {origin, last}); (contained_indent, last, map); | Grout(g) => - let last = { - ...origin, - col: origin.col + 1, - }; - let map = - map - |> add_g( - g, - { - origin, - last, - }, - ); + let last = {...origin, col: origin.col + 1}; + let map = map |> add_g(g, {origin, last}); (contained_indent, last, map); | Projector(p) => let token = Projector.placeholder(p, Id.Map.find_opt(p.id, info_map)); let last = last_of_token(token, origin); let map = extra_rows(token, origin, map); - let map = - add_pr( - p, - { - origin, - last, - }, - map, - ); + let map = add_pr(p, {origin, last}, map); (contained_indent, last, map); | Tile(t) => let add_shard = (origin, shard, map) => { let token = List.nth(t.label, shard); let map = extra_rows(token, origin, map); let last = last_of_token(token, origin); - let map = - add_s( - t.id, - shard, - { - origin, - last, - }, - map, - ); + let map = add_s(t.id, shard, {origin, last}, map); (last, map); }; let (last, map) = diff --git a/src/haz3lcore/assistant/AssistantCtx.re b/src/haz3lcore/assistant/AssistantCtx.re index 76ab123c05..0caee1f921 100644 --- a/src/haz3lcore/assistant/AssistantCtx.re +++ b/src/haz3lcore/assistant/AssistantCtx.re @@ -10,10 +10,7 @@ let free_variables = | None => let joint_use_typ = CoCtx.join(ctx, entries); if (Typ.is_consistent(ctx, expected_ty, joint_use_typ)) { - Some({ - content: name, - strategy: Pat(FromCoCtx(joint_use_typ)), - }); + Some({content: name, strategy: Pat(FromCoCtx(joint_use_typ))}); } else { None; }; @@ -29,10 +26,7 @@ let bound_variables = (ty_expect: Typ.t, ctx: Ctx.t): list(Suggestion.t) => fun | Ctx.VarEntry({typ, name, _}) when Typ.is_consistent(ctx, ty_expect, typ) => - Some({ - content: name, - strategy: Exp(Common(FromCtx(typ))), - }) + Some({content: name, strategy: Exp(Common(FromCtx(typ)))}) | _ => None, ctx, ); @@ -45,10 +39,7 @@ let bound_constructors = fun | Ctx.ConstructorEntry({typ, name, _}) when Typ.is_consistent(ctx, ty, typ) => - Some({ - content: name, - strategy: wrap(FromCtx(typ)), - }) + Some({content: name, strategy: wrap(FromCtx(typ))}) | _ => None, ctx, ); @@ -81,10 +72,7 @@ let bound_constructor_aps = (wrap, ty: Typ.t, ctx: Ctx.t): list(Suggestion.t) => when Typ.is_consistent(ctx, ty, ty_out) && !Typ.is_consistent(ctx, ty, ty_arr) => - Some({ - content: name ++ "(", - strategy: wrap(FromCtxAp(ty_out)), - }) + Some({content: name ++ "(", strategy: wrap(FromCtxAp(ty_out))}) | _ => None, ctx, ); @@ -94,10 +82,7 @@ let typ_context_entries = (ctx: Ctx.t): list(Suggestion.t) => List.filter_map( fun | Ctx.TVarEntry({kind: Singleton(_), name, _}) => - Some({ - content: name, - strategy: Typ(FromCtx), - }) + Some({content: name, strategy: Typ(FromCtx)}) | _ => None, ctx, ); diff --git a/src/haz3lcore/assistant/AssistantForms.re b/src/haz3lcore/assistant/AssistantForms.re index 998288a581..f3551ac0eb 100644 --- a/src/haz3lcore/assistant/AssistantForms.re +++ b/src/haz3lcore/assistant/AssistantForms.re @@ -181,29 +181,18 @@ let suggest_form = (ty_map, delims_of_sort, ci: Info.t): list(Suggestion.t) => { | Exp => List.map( ((content, ty)) => - Suggestion.{ - content, - strategy: Exp(Common(NewForm(ty))), - }, + Suggestion.{content, strategy: Exp(Common(NewForm(ty)))}, filtered, ) | Pat => List.map( ((content, ty)) => - Suggestion.{ - content, - strategy: Pat(Common(NewForm(ty))), - }, + Suggestion.{content, strategy: Pat(Common(NewForm(ty)))}, filtered, ) | _ => delims - |> List.map(content => - Suggestion.{ - content, - strategy: Typ(NewForm), - } - ) + |> List.map(content => Suggestion.{content, strategy: Typ(NewForm)}) }; }; diff --git a/src/haz3lcore/assistant/TyDi.re b/src/haz3lcore/assistant/TyDi.re index 0af2429b43..1118fc115f 100644 --- a/src/haz3lcore/assistant/TyDi.re +++ b/src/haz3lcore/assistant/TyDi.re @@ -9,10 +9,7 @@ let suggest_backpack = (z: Zipper.t): list(Suggestion.t) => { | [{content, _}, ..._] => switch (content) { | [Tile({label, shards: [idx], _})] when Zipper.can_put_down(z) => [ - { - content: List.nth(label, idx), - strategy: Any(FromBackpack), - }, + {content: List.nth(label, idx), strategy: Any(FromBackpack)}, ] | _ => [] } @@ -55,15 +52,7 @@ let token_to_left = (z: Zipper.t): option(string) => let mk_unparsed_buffer = (~sort: Sort.t, sibs: Siblings.t, t: Token.t): Segment.t => { let mold = Siblings.mold_fitting_between(sort, Precedence.max, sibs); - [ - Tile({ - id: Id.mk(), - label: [t], - shards: [0], - children: [], - mold, - }), - ]; + [Tile({id: Id.mk(), label: [t], shards: [0], children: [], mold})]; }; /* If 'current' is a proper prefix of 'candidate', return the diff --git a/src/haz3lcore/dynamics/Builtins.re b/src/haz3lcore/dynamics/Builtins.re index 2162f397aa..4479989fd5 100644 --- a/src/haz3lcore/dynamics/Builtins.re +++ b/src/haz3lcore/dynamics/Builtins.re @@ -362,18 +362,9 @@ let ctx_init: Ctx.t = { }); List.map( fun - | (name, Const(typ, _)) => - Ctx.VarEntry({ - name, - typ, - id: Id.invalid, - }) + | (name, Const(typ, _)) => Ctx.VarEntry({name, typ, id: Id.invalid}) | (name, Fn(t1, t2, _)) => - Ctx.VarEntry({ - name, - typ: Arrow(t1, t2) |> Typ.fresh, - id: Id.invalid, - }), + Ctx.VarEntry({name, typ: Arrow(t1, t2) |> Typ.fresh, id: Id.invalid}), Pervasives.builtins, ) |> Ctx.extend(_, meta) diff --git a/src/haz3lcore/dynamics/Casts.re b/src/haz3lcore/dynamics/Casts.re index b7517dc9b7..170d057e76 100644 --- a/src/haz3lcore/dynamics/Casts.re +++ b/src/haz3lcore/dynamics/Casts.re @@ -187,11 +187,7 @@ let pattern_fixup = (p: DHPat.t): DHPat.t => { let (p1, d1) = unwrap_casts(p1); ( p1, - { - term: DHExp.Cast(d1, t1, t2), - copied: p.copied, - ids: p.ids, - } + {term: DHExp.Cast(d1, t1, t2), copied: p.copied, ids: p.ids} |> transition_multiple, ); | _ => (p, hole) @@ -202,11 +198,7 @@ let pattern_fixup = (p: DHPat.t): DHPat.t => { | EmptyHole => p | Cast(d1, t1, t2) => let p1 = rewrap_casts((p, d1)); - { - term: DHPat.Cast(p1, t1, t2), - copied: d.copied, - ids: d.ids, - }; + {term: DHPat.Cast(p1, t1, t2), copied: d.copied, ids: d.ids}; | FailedCast(d1, t1, t2) => let p1 = rewrap_casts((p, d1)); { diff --git a/src/haz3lcore/dynamics/DHExp.re b/src/haz3lcore/dynamics/DHExp.re index 2bf3a461c1..f7651ba963 100644 --- a/src/haz3lcore/dynamics/DHExp.re +++ b/src/haz3lcore/dynamics/DHExp.re @@ -11,51 +11,17 @@ let term_of: t => term = IdTagged.term_of; let fast_copy: (Id.t, t) => t = IdTagged.fast_copy; let mk = (ids, term): t => { - { - ids, - copied: true, - term, - }; + {ids, copied: true, term}; }; // TODO: make this function emit a map of changes let replace_all_ids = map_term( - ~f_exp= - (continue, exp) => - { - ...exp, - ids: [Id.mk()], - } - |> continue, - ~f_pat= - (continue, exp) => - { - ...exp, - ids: [Id.mk()], - } - |> continue, - ~f_typ= - (continue, exp) => - { - ...exp, - ids: [Id.mk()], - } - |> continue, - ~f_tpat= - (continue, exp) => - { - ...exp, - ids: [Id.mk()], - } - |> continue, - ~f_rul= - (continue, exp) => - { - ...exp, - ids: [Id.mk()], - } - |> continue, + ~f_exp=(continue, exp) => {...exp, ids: [Id.mk()]} |> continue, + ~f_pat=(continue, exp) => {...exp, ids: [Id.mk()]} |> continue, + ~f_typ=(continue, exp) => {...exp, ids: [Id.mk()]} |> continue, + ~f_tpat=(continue, exp) => {...exp, ids: [Id.mk()]} |> continue, + ~f_rul=(continue, exp) => {...exp, ids: [Id.mk()]} |> continue, ); // TODO: make this function emit a map of changes diff --git a/src/haz3lcore/dynamics/Elaborator.re b/src/haz3lcore/dynamics/Elaborator.re index f58ca1c6ec..bdc5baf621 100644 --- a/src/haz3lcore/dynamics/Elaborator.re +++ b/src/haz3lcore/dynamics/Elaborator.re @@ -393,11 +393,7 @@ let rec elaborate = (m: Statics.Map.t, uexp: UExp.t): (DHExp.t, Typ.t) => { let kind' = switch (kind) { | Residue(_) => kind - | Filter({act, pat}) => - Filter({ - act, - pat: elaborate(m, pat) |> fst, - }) + | Filter({act, pat}) => Filter({act, pat: elaborate(m, pat) |> fst}) }; Filter(kind', e') |> rewrap |> cast_from(t); | Closure(env, e) => diff --git a/src/haz3lcore/dynamics/EvaluatorState.re b/src/haz3lcore/dynamics/EvaluatorState.re index 35210b2b59..bb85612d05 100644 --- a/src/haz3lcore/dynamics/EvaluatorState.re +++ b/src/haz3lcore/dynamics/EvaluatorState.re @@ -4,10 +4,7 @@ type t = { tests: TestMap.t, }; -let init = { - stats: EvaluatorStats.initial, - tests: TestMap.empty, -}; +let init = {stats: EvaluatorStats.initial, tests: TestMap.empty}; let take_step = ({stats, _} as es) => { ...es, @@ -16,22 +13,13 @@ let take_step = ({stats, _} as es) => { let get_step = ({stats, _}) => stats |> EvaluatorStats.get_step; -let put_step = (step, es) => { - ...es, - stats: EvaluatorStats.put_step(step), -}; +let put_step = (step, es) => {...es, stats: EvaluatorStats.put_step(step)}; let add_test = ({tests, _} as es, id, report) => { let tests = tests |> TestMap.extend((id, report)); - { - ...es, - tests, - }; + {...es, tests}; }; let get_tests = ({tests, _}) => tests; -let put_tests = (tests, es) => { - ...es, - tests, -}; +let put_tests = (tests, es) => {...es, tests}; diff --git a/src/haz3lcore/dynamics/EvaluatorStep.re b/src/haz3lcore/dynamics/EvaluatorStep.re index fb2919096e..0882fa223f 100644 --- a/src/haz3lcore/dynamics/EvaluatorStep.re +++ b/src/haz3lcore/dynamics/EvaluatorStep.re @@ -19,12 +19,7 @@ module EvalObj = { knd: step_kind, }; - let mk = (ctx, env, d_loc, knd) => { - ctx, - env, - d_loc, - knd, - }; + let mk = (ctx, env, d_loc, knd) => {ctx, env, d_loc, knd}; let get_ctx = (obj: t): EvalCtx.t => { obj.ctx; @@ -242,11 +237,7 @@ let rec matches = }; let (let+) = map; let (ract, ridx, rctx) = { - let wrap_ids = (ids, ctx) => - EvalCtx.Term({ - term: ctx, - ids, - }); + let wrap_ids = (ids, ctx) => EvalCtx.Term({term: ctx, ids}); switch (ctx) { | Mark => (act, idx, EvalCtx.Mark) | Term({term, ids}) => @@ -391,10 +382,7 @@ let rec matches = | _ when midx > pidx && mact |> snd == All => ( ract, ridx, - Term({ - term: Filter(Residue(midx, mact), rctx), - ids: [Id.mk()], - }), + Term({term: Filter(Residue(midx, mact), rctx), ids: [Id.mk()]}), ) | _ => (ract, ridx, rctx) }; @@ -408,20 +396,8 @@ let should_hide_eval_obj = let (act, _, ctx) = matches(ClosureEnvironment.empty, [], x.ctx, x.d_loc, (Step, One), 0); switch (act) { - | (Eval, _) => ( - Eval, - { - ...x, - ctx, - }, - ) - | (Step, _) => ( - Step, - { - ...x, - ctx, - }, - ) + | (Eval, _) => (Eval, {...x, ctx}) + | (Step, _) => (Step, {...x, ctx}) }; }; @@ -432,20 +408,8 @@ let should_hide_step = (~settings, x: step): (FilterAction.action, step) => let (act, _, ctx) = matches(ClosureEnvironment.empty, [], x.ctx, x.d_loc, (Step, One), 0); switch (act) { - | (Eval, _) => ( - Eval, - { - ...x, - ctx, - }, - ) - | (Step, _) => ( - Step, - { - ...x, - ctx, - }, - ) + | (Eval, _) => (Eval, {...x, ctx}) + | (Step, _) => (Step, {...x, ctx}) }; }; diff --git a/src/haz3lcore/dynamics/Stepper.re b/src/haz3lcore/dynamics/Stepper.re index 67a5da98d2..8b977cdf5f 100644 --- a/src/haz3lcore/dynamics/Stepper.re +++ b/src/haz3lcore/dynamics/Stepper.re @@ -47,11 +47,7 @@ let rec matches = switch (ctx) { | Mark => (act, idx, EvalCtx.Mark) | Term({term, ids}) => - let rewrap = term => - EvalCtx.Term({ - term, - ids, - }); + let rewrap = term => EvalCtx.Term({term, ids}); switch ((term: EvalCtx.term)) { | Closure(env, ctx) => let+ ctx = matches(env, flt, ctx, exp, act, idx); @@ -171,10 +167,7 @@ let rec matches = | _ when midx > pidx && mact |> snd == All => ( ract, ridx, - Term({ - term: Filter(Residue(midx, mact), rctx), - ids: [Id.mk()], - }), + Term({term: Filter(Residue(midx, mact), rctx), ids: [Id.mk()]}), ) | _ => (ract, ridx, rctx) }; @@ -188,20 +181,8 @@ let should_hide_eval_obj = let (act, _, ctx) = matches(ClosureEnvironment.empty, [], x.ctx, x.d_loc, (Step, One), 0); switch (act) { - | (Eval, _) => ( - Eval, - { - ...x, - ctx, - }, - ) - | (Step, _) => ( - Step, - { - ...x, - ctx, - }, - ) + | (Eval, _) => (Eval, {...x, ctx}) + | (Step, _) => (Step, {...x, ctx}) }; }; @@ -212,20 +193,8 @@ let should_hide_step = (~settings, x: step): (FilterAction.action, step) => let (act, _, ctx) = matches(ClosureEnvironment.empty, [], x.ctx, x.d_loc, (Step, One), 0); switch (act) { - | (Eval, _) => ( - Eval, - { - ...x, - ctx, - }, - ) - | (Step, _) => ( - Step, - { - ...x, - ctx, - }, - ) + | (Eval, _) => (Eval, {...x, ctx}) + | (Step, _) => (Step, {...x, ctx}) }; }; @@ -241,10 +210,7 @@ let current_expr = ({history, _}: t) => Aba.hd(history) |> fst; let current_state = ({history, _}: t) => Aba.hd(history) |> snd; let step_pending = (idx: int, stepper: t) => { - { - ...stepper, - stepper_state: StepPending(idx), - }; + {...stepper, stepper_state: StepPending(idx)}; }; let init = (~settings, {d}: Elaborator.Elaboration.t) => { @@ -266,15 +232,8 @@ let rec evaluate_pending = (~settings, s: t) => { List.find_opt(((_, (act, _))) => act == FilterAction.Eval, next') ) { | Some((i, (_, _))) => - { - ...s, - stepper_state: StepPending(i), - } - |> evaluate_pending(~settings) - | None => { - ...s, - stepper_state: StepperDone, - } + {...s, stepper_state: StepPending(i)} |> evaluate_pending(~settings) + | None => {...s, stepper_state: StepperDone} }; | StepPending(i) => let (_, eo) = List.nth(s.next_options, i); @@ -433,12 +392,7 @@ let get_history = (~settings, stepper) => { (Option.map(x => (x, x.d_loc' |> DHExp.rep_id), previous_step), []), hidden_steps, ); - { - d, - previous_step, - hidden_steps, - chosen_step, - }; + {d, previous_step, hidden_steps, chosen_step}; }; let padded = grouped_steps |> Aba.bab_triples; let result = padded |> List.map(track_ids); diff --git a/src/haz3lcore/dynamics/Transition.re b/src/haz3lcore/dynamics/Transition.re index f344e19bc5..5c936426b9 100644 --- a/src/haz3lcore/dynamics/Transition.re +++ b/src/haz3lcore/dynamics/Transition.re @@ -161,11 +161,7 @@ module Transition = (EV: EV_MODE) => { let transition = (req, state, env, d): 'a => { // Split DHExp into term and id information let (term, rewrap) = DHExp.unwrap(d); - let wrap_ctx = (term): EvalCtx.t => - Term({ - term, - ids: [rep_id(d)], - }); + let wrap_ctx = (term): EvalCtx.t => Term({term, ids: [rep_id(d)]}); // Transition rules switch (term) { @@ -185,12 +181,7 @@ module Transition = (EV: EV_MODE) => { let. _ = otherwise(env, d1 => Seq(d1, d2) |> rewrap) and. _ = req_final(req(state, env), d1 => Seq1(d1, d2) |> wrap_ctx, d1); - Step({ - expr: d2, - state_update, - kind: Seq, - is_value: false, - }); + Step({expr: d2, state_update, kind: Seq, is_value: false}); | Let(dp, d1, d2) => let. _ = otherwise(env, d1 => Let(dp, d1, d2) |> rewrap) and. d1' = @@ -744,12 +735,7 @@ module Transition = (EV: EV_MODE) => { let. _ = otherwise(env, d => Closure(env', d) |> rewrap) and. d' = req_final(req(state, env'), d1 => Closure(env', d1) |> wrap_ctx, d); - Step({ - expr: d', - state_update, - kind: CompleteClosure, - is_value: true, - }); + Step({expr: d', state_update, kind: CompleteClosure, is_value: true}); | MultiHole(_) => let. _ = otherwise(env, d); // and. _ = @@ -769,13 +755,7 @@ module Transition = (EV: EV_MODE) => { and. d' = req_final(req(state, env), d => Cast(d, t1, t2) |> wrap_ctx, d); switch (Casts.transition(Cast(d', t1, t2) |> rewrap)) { - | Some(d) => - Step({ - expr: d, - state_update, - kind: Cast, - is_value: false, - }) + | Some(d) => Step({expr: d, state_update, kind: Cast, is_value: false}) | None => Constructor }; | FailedCast(d1, t1, t2) => @@ -792,30 +772,15 @@ module Transition = (EV: EV_MODE) => { Indet; | Parens(d) => let. _ = otherwise(env, d); - Step({ - expr: d, - state_update, - kind: RemoveParens, - is_value: false, - }); + Step({expr: d, state_update, kind: RemoveParens, is_value: false}); | TyAlias(_, _, d) => let. _ = otherwise(env, d); - Step({ - expr: d, - state_update, - kind: RemoveTypeAlias, - is_value: false, - }); + Step({expr: d, state_update, kind: RemoveTypeAlias, is_value: false}); | Filter(f1, d1) => let. _ = otherwise(env, d1 => Filter(f1, d1) |> rewrap) and. d1 = req_final(req(state, env), d1 => Filter(f1, d1) |> wrap_ctx, d1); - Step({ - expr: d1, - state_update, - kind: CompleteFilter, - is_value: true, - }); + Step({expr: d1, state_update, kind: CompleteFilter, is_value: true}); }; }; }; diff --git a/src/haz3lcore/dynamics/TypeAssignment.re b/src/haz3lcore/dynamics/TypeAssignment.re index 8cd62990ec..f4979d94bf 100644 --- a/src/haz3lcore/dynamics/TypeAssignment.re +++ b/src/haz3lcore/dynamics/TypeAssignment.re @@ -35,12 +35,7 @@ let dhpat_extend_ctx = (dhpat: DHPat.t, ty: Typ.t, ctx: Ctx.t): option(Ctx.t) => (dhpat: DHPat.t, ty: Typ.t): option(list(Ctx.entry)) => { switch (dhpat |> Pat.term_of) { | Var(name) => - let entry = - Ctx.VarEntry({ - name, - id: Id.invalid, - typ: ty, - }); + let entry = Ctx.VarEntry({name, id: Id.invalid, typ: ty}); Some([entry]); | Tuple(l1) => let* ts = Typ.matched_prod_strict(ctx, List.length(l1), ty); @@ -120,11 +115,7 @@ let rec env_extend_ctx = |> ClosureEnvironment.to_list |> List.map(((name, de)) => { let+ ty = typ_of_dhexp(ctx, m, de); - Ctx.VarEntry({ - name, - id: Id.invalid, - typ: ty, - }); + Ctx.VarEntry({name, id: Id.invalid, typ: ty}); }) |> OptUtil.sequence; List.fold_left((ctx, var_entry) => Ctx.extend(ctx, var_entry), ctx, l); @@ -174,14 +165,7 @@ and typ_of_dhexp = (ctx: Ctx.t, m: Statics.Map.t, dh: DHExp.t): option(Typ.t) => | TypFun({term: Var(name), _} as utpat, d, _) when !Ctx.shadows_typ(ctx, name) => let ctx = - Ctx.extend_tvar( - ctx, - { - name, - id: TPat.rep_id(utpat), - kind: Abstract, - }, - ); + Ctx.extend_tvar(ctx, {name, id: TPat.rep_id(utpat), kind: Abstract}); let* ty = typ_of_dhexp(ctx, m, d); Some(Typ.Forall(utpat, ty) |> Typ.temp); | TypFun(_, d, _) => diff --git a/src/haz3lcore/dynamics/VarBstMap.re b/src/haz3lcore/dynamics/VarBstMap.re index 49e5732246..2952690388 100644 --- a/src/haz3lcore/dynamics/VarBstMap.re +++ b/src/haz3lcore/dynamics/VarBstMap.re @@ -74,18 +74,12 @@ module Ordered = { let failwith_keysinconsistent = () => failwith("VarBstMap.Ordered: order key not in map"); - let empty = { - map: VarBstMap0.empty, - rev_order: [], - }; + let empty = {map: VarBstMap0.empty, rev_order: []}; let is_empty = ({map, _}) => VarBstMap0.is_empty(map); let singleton = ((x, a)) => { - { - map: VarBstMap0.singleton((x, a)), - rev_order: [(x, ())], - }; + {map: VarBstMap0.singleton((x, a)), rev_order: [(x, ())]}; }; let extend = ({map, rev_order}, (x, a)) => { @@ -108,10 +102,7 @@ module Ordered = { let map = VarBstMap0.union(map1, map2); let rev_order = union_order(List.rev(rev_order1), rev_order2); - { - map, - rev_order, - }; + {map, rev_order}; }; let lookup = ({map, _}, x) => VarBstMap0.lookup(map, x); @@ -120,10 +111,7 @@ module Ordered = { let mapk = (f, {map, rev_order}) => { let map = map |> VarBstMap0.map(f); - { - map, - rev_order, - }; + {map, rev_order}; }; let mapo = (f, {map, rev_order}) => { @@ -140,10 +128,7 @@ module Ordered = { }, VarBstMap0.empty, ); - { - map, - rev_order, - }; + {map, rev_order}; }; let filterk = (f, {map, rev_order}) => { @@ -153,10 +138,7 @@ module Ordered = { |> List.rev |> List.filter(((x, _)) => VarBstMap0.contains(map, x)) |> List.rev; - { - map, - rev_order, - }; + {map, rev_order}; }; let filtero = (f, {map, rev_order}) => { @@ -183,10 +165,7 @@ module Ordered = { (map, []), ); - { - map, - rev_order, - }; + {map, rev_order}; }; let foldk = (f, init, {map, _}) => @@ -221,10 +200,7 @@ module Ordered = { let of_list = bindings => { let map = VarBstMap0.of_list(bindings); let rev_order = bindings |> List.map(((x, _)) => (x, ())) |> List.rev; - { - map, - rev_order, - }; + {map, rev_order}; }; let without_keys = (keys, m) => { diff --git a/src/haz3lcore/lang/Form.re b/src/haz3lcore/lang/Form.re index 6103eab4c8..1990461239 100644 --- a/src/haz3lcore/lang/Form.re +++ b/src/haz3lcore/lang/Form.re @@ -47,11 +47,7 @@ type bad_token_cls = | Other | BadInt; -let mk = (expansion, label, mold) => { - label, - mold, - expansion, -}; +let mk = (expansion, label, mold) => {label, mold, expansion}; /* Abbreviations for expansion behaviors */ let ss: expansion = (Static, Static); diff --git a/src/haz3lcore/lang/term/IdTagged.re b/src/haz3lcore/lang/term/IdTagged.re index 523d05ab45..3812b0e83f 100644 --- a/src/haz3lcore/lang/term/IdTagged.re +++ b/src/haz3lcore/lang/term/IdTagged.re @@ -20,31 +20,13 @@ type t('a) = { // fmt_a(formatter, ta.term); // }; let fresh = term => { - { - ids: [Id.mk()], - copied: false, - term, - }; + {ids: [Id.mk()], copied: false, term}; }; let term_of = x => x.term; -let unwrap = x => ( - x.term, - term' => { - ...x, - term: term', - }, -); +let unwrap = x => (x.term, term' => {...x, term: term'}); let rep_id = ({ids, _}) => List.hd(ids); -let fast_copy = (id, {term, _}) => { - ids: [id], - term, - copied: true, -}; +let fast_copy = (id, {term, _}) => {ids: [id], term, copied: true}; let new_ids = fun - | {ids: _, term, copied} => { - ids: [Id.mk()], - term, - copied, - }; + | {ids: _, term, copied} => {ids: [Id.mk()], term, copied}; diff --git a/src/haz3lcore/lang/term/Typ.re b/src/haz3lcore/lang/term/Typ.re index 993080c46a..5dc0b73aaa 100644 --- a/src/haz3lcore/lang/term/Typ.re +++ b/src/haz3lcore/lang/term/Typ.re @@ -31,12 +31,7 @@ let fresh: term => t = IdTagged.fresh; /* fresh assigns a random id, whereas temp assigns Id.invalid, which is a lot faster, and since we so often make types and throw them away shortly after, it makes sense to use it. */ -let temp: term => t = - term => { - term, - ids: [Id.invalid], - copied: false, - }; +let temp: term => t = term => {term, ids: [Id.invalid], copied: false}; let rep_id: t => Id.t = IdTagged.rep_id; let hole = (tms: list(TermBase.Any.t)) => diff --git a/src/haz3lcore/prog/CachedStatics.re b/src/haz3lcore/prog/CachedStatics.re index a010aaab6c..f2bc13d113 100644 --- a/src/haz3lcore/prog/CachedStatics.re +++ b/src/haz3lcore/prog/CachedStatics.re @@ -8,12 +8,7 @@ type statics = { }; let empty_statics: statics = { - term: - UExp.{ - ids: [Id.invalid], - copied: false, - term: Tuple([]), - }, + term: UExp.{ids: [Id.invalid], copied: false, term: Tuple([])}, info_map: Id.Map.empty, error_ids: [], }; diff --git a/src/haz3lcore/prog/Interface.re b/src/haz3lcore/prog/Interface.re index fad11479c5..3249b1aef2 100644 --- a/src/haz3lcore/prog/Interface.re +++ b/src/haz3lcore/prog/Interface.re @@ -29,10 +29,6 @@ let evaluate = | exception exn => print_endline("EXN:" ++ Printexc.to_string(exn)); ResultFail(UnknownException(Printexc.to_string(exn))); - | (state, result) => - ResultOk({ - result, - state, - }) + | (state, result) => ResultOk({result, state}) } }; diff --git a/src/haz3lcore/prog/ModelResult.re b/src/haz3lcore/prog/ModelResult.re index a74c67dc15..e8c8980a60 100644 --- a/src/haz3lcore/prog/ModelResult.re +++ b/src/haz3lcore/prog/ModelResult.re @@ -12,26 +12,14 @@ type t = | Stepper(Stepper.t); let init_eval = (elab: Elaborator.Elaboration.t) => - Evaluation({ - elab, - evaluation: ResultPending, - previous: ResultPending, - }); + Evaluation({elab, evaluation: ResultPending, previous: ResultPending}); let update_elab = (~settings, elab) => fun | NoElab => - Evaluation({ - elab, - evaluation: ResultPending, - previous: ResultPending, - }) + Evaluation({elab, evaluation: ResultPending, previous: ResultPending}) | Evaluation({evaluation, _}) => - Evaluation({ - elab, - evaluation: ResultPending, - previous: evaluation, - }) + Evaluation({elab, evaluation: ResultPending, previous: evaluation}) | Stepper(s) as s' when DHExp.fast_equal(elab.d, Stepper.get_elab(s).d) => s' | Stepper(_) => Stepper(Stepper.init(~settings, elab)); @@ -64,11 +52,7 @@ let timeout: t => t = fun | NoElab => NoElab | Evaluation({evaluation, _} as e) => - Evaluation({ - ...e, - evaluation: ResultFail(Timeout), - previous: evaluation, - }) + Evaluation({...e, evaluation: ResultFail(Timeout), previous: evaluation}) | Stepper(s) => Stepper(Stepper.timeout(s)); let toggle_stepper = (~settings) => diff --git a/src/haz3lcore/prog/ModelResults.re b/src/haz3lcore/prog/ModelResults.re index e65a5d7c44..a49d287d07 100644 --- a/src/haz3lcore/prog/ModelResults.re +++ b/src/haz3lcore/prog/ModelResults.re @@ -48,23 +48,12 @@ let advance_evaluator_result = switch (lookup(results, key)) { | Some(Stepper(_)) => None | Some(Evaluation({evaluation: previous, _})) => - Some(( - key, - Evaluation({ - elab, - evaluation: ResultPending, - previous, - }), - )) + Some((key, Evaluation({elab, evaluation: ResultPending, previous}))) | Some(NoElab) | None => Some(( key, - Evaluation({ - elab, - evaluation: ResultPending, - previous: ResultPending, - }), + Evaluation({elab, evaluation: ResultPending, previous: ResultPending}), )) }; diff --git a/src/haz3lcore/statics/CoCtx.re b/src/haz3lcore/statics/CoCtx.re index d743cd44b4..3088ef4a28 100644 --- a/src/haz3lcore/statics/CoCtx.re +++ b/src/haz3lcore/statics/CoCtx.re @@ -57,15 +57,7 @@ let union: list(t) => t = List.fold_left((co_ctx1, co_ctx2) => co_ctx1 @ co_ctx2, []); let singleton = (name, id, expected_ty): t => [ - ( - name, - [ - { - id, - expected_ty, - }, - ], - ), + (name, [{id, expected_ty}]), ]; let join: (Ctx.t, list(entry)) => Typ.t = diff --git a/src/haz3lcore/statics/Ctx.re b/src/haz3lcore/statics/Ctx.re index 67c7bfb143..9791b6cd0f 100644 --- a/src/haz3lcore/statics/Ctx.re +++ b/src/haz3lcore/statics/Ctx.re @@ -34,26 +34,11 @@ let extend_tvar = (ctx: t, tvar_entry: tvar_entry): t => extend(ctx, TVarEntry(tvar_entry)); let extend_alias = (ctx: t, name: string, id: Id.t, ty: TermBase.Typ.t): t => - extend_tvar( - ctx, - { - name, - id, - kind: Singleton(ty), - }, - ); + extend_tvar(ctx, {name, id, kind: Singleton(ty)}); let extend_dummy_tvar = (ctx: t, tvar: TPat.t) => switch (TPat.tyvar_of_utpat(tvar)) { - | Some(name) => - extend_tvar( - ctx, - { - kind: Abstract, - name, - id: Id.invalid, - }, - ) + | Some(name) => extend_tvar(ctx, {kind: Abstract, name, id: Id.invalid}) | None => ctx }; diff --git a/src/haz3lcore/statics/Info.re b/src/haz3lcore/statics/Info.re index 362fcb104d..8aaaeaae3d 100644 --- a/src/haz3lcore/statics/Info.re +++ b/src/haz3lcore/statics/Info.re @@ -355,25 +355,8 @@ let rec status_common = syn /* Note: the ordering of ana, syn matters */ ) ) { - | None => - InHole( - Inconsistent( - Expectation({ - syn, - ana, - }), - ), - ) - | Some(join) => - NotInHole( - Ana( - Consistent({ - ana, - syn, - join, - }), - ), - ) + | None => InHole(Inconsistent(Expectation({syn, ana}))) + | Some(join) => NotInHole(Ana(Consistent({ana, syn, join}))) } | (IsConstructor({name, syn_ty}), _) => /* If a ctr is being analyzed against (an arrow type returning) @@ -391,23 +374,10 @@ let rec status_common = | (NoJoin(wrap, tys), Ana(ana)) => let syn: Typ.t = Self.join_of(wrap, Unknown(Internal) |> Typ.temp); switch (Typ.join_fix(ctx, ana, syn)) { - | None => - InHole( - Inconsistent( - Expectation({ - ana, - syn, - }), - ), - ) + | None => InHole(Inconsistent(Expectation({ana, syn}))) | Some(_) => NotInHole( - Ana( - InternallyInconsistent({ - ana, - nojoin: Typ.of_source(tys), - }), - ), + Ana(InternallyInconsistent({ana, nojoin: Typ.of_source(tys)})), ) }; | (NoJoin(_, tys), Syn | SynFun | SynTypFun) => @@ -644,17 +614,7 @@ let derived_exp = let cls = Cls.Exp(UExp.cls_of_term(uexp.term)); let status = status_exp(ctx, mode, self); let ty = fixed_typ_exp(ctx, mode, self); - { - cls, - self, - ty, - mode, - status, - ctx, - co_ctx, - ancestors, - term: uexp, - }; + {cls, self, ty, mode, status, ctx, co_ctx, ancestors, term: uexp}; }; /* Add derivable attributes for pattern terms */ @@ -699,27 +659,14 @@ let derived_typ = (~utyp: UTyp.t, ~ctx, ~ancestors, ~expects): typ => { | (_, cls) => Cls.Typ(cls) }; let status = status_typ(ctx, expects, utyp); - { - cls, - ctx, - ancestors, - status, - expects, - term: utyp, - }; + {cls, ctx, ancestors, status, expects, term: utyp}; }; /* Add derivable attributes for type patterns */ let derived_tpat = (~utpat: TPat.t, ~ctx, ~ancestors): tpat => { let cls = Cls.TPat(TPat.cls_of_term(utpat.term)); let status = status_tpat(ctx, utpat); - { - cls, - ancestors, - status, - ctx, - term: utpat, - }; + {cls, ancestors, status, ctx, term: utpat}; }; /* If the info represents some kind of name binding which diff --git a/src/haz3lcore/statics/MakeTerm.re b/src/haz3lcore/statics/MakeTerm.re index 847900644b..673af0bb89 100644 --- a/src/haz3lcore/statics/MakeTerm.re +++ b/src/haz3lcore/statics/MakeTerm.re @@ -132,11 +132,7 @@ let parse_sum_term: UTyp.t => ConstructorMap.variant(UTyp.t) = | t => BadEntry(t); let mk_bad = (ctr, ids, value) => { - let t: Typ.t = { - ids, - copied: false, - term: Var(ctr), - }; + let t: Typ.t = {ids, copied: false, term: Var(ctr)}; switch (value) { | None => t | Some(u) => Ap(t, u) |> Typ.fresh @@ -172,15 +168,7 @@ let rec go_s = (s: Sort.t, skel: Skel.t, seg: Segment.t): Term.Any.t => and exp = unsorted => { let (term, inner_ids) = exp_term(unsorted); let ids = ids(unsorted) @ inner_ids; - return( - e => Exp(e), - ids, - { - ids, - copied: false, - term, - }, - ); + return(e => Exp(e), ids, {ids, copied: false, term}); } and exp_term: unsorted => (UExp.term, list(Id.t)) = { let ret = (tm: UExp.term) => (tm, []); @@ -233,37 +221,13 @@ and exp_term: unsorted => (UExp.term, list(Id.t)) = { | (["typfun", "->"], [TPat(tpat)]) => TypFun(tpat, r, None) | (["let", "=", "in"], [Pat(pat), Exp(def)]) => Let(pat, def, r) | (["hide", "in"], [Exp(filter)]) => - Filter( - Filter({ - act: (Eval, One), - pat: filter, - }), - r, - ) + Filter(Filter({act: (Eval, One), pat: filter}), r) | (["eval", "in"], [Exp(filter)]) => - Filter( - Filter({ - act: (Eval, All), - pat: filter, - }), - r, - ) + Filter(Filter({act: (Eval, All), pat: filter}), r) | (["pause", "in"], [Exp(filter)]) => - Filter( - Filter({ - act: (Step, One), - pat: filter, - }), - r, - ) + Filter(Filter({act: (Step, One), pat: filter}), r) | (["debug", "in"], [Exp(filter)]) => - Filter( - Filter({ - act: (Step, All), - pat: filter, - }), - r, - ) + Filter(Filter({act: (Step, All), pat: filter}), r) | (["type", "=", "in"], [TPat(tpat), Typ(def)]) => TyAlias(tpat, def, r) | (["if", "then", "else"], [Exp(cond), Exp(conseq)]) => @@ -282,11 +246,7 @@ and exp_term: unsorted => (UExp.term, list(Id.t)) = { Ap( Forward, l, - { - ids: [Id.nullary_ap_flag], - copied: false, - term: Tuple([]), - }, + {ids: [Id.nullary_ap_flag], copied: false, term: Tuple([])}, ), ) | (["(", ")"], [Exp(arg)]) => @@ -364,15 +324,7 @@ and exp_term: unsorted => (UExp.term, list(Id.t)) = { and pat = unsorted => { let (term, inner_ids) = pat_term(unsorted); let ids = ids(unsorted) @ inner_ids; - return( - p => Pat(p), - ids, - { - ids, - term, - copied: false, - }, - ); + return(p => Pat(p), ids, {ids, term, copied: false}); } and pat_term: unsorted => (UPat.term, list(Id.t)) = { let ret = (term: UPat.term) => (term, []); @@ -438,15 +390,7 @@ and pat_term: unsorted => (UPat.term, list(Id.t)) = { and typ = unsorted => { let (term, inner_ids) = typ_term(unsorted); let ids = ids(unsorted) @ inner_ids; - return( - ty => Typ(ty), - ids, - { - ids, - term, - copied: false, - }, - ); + return(ty => Typ(ty), ids, {ids, term, copied: false}); } and typ_term: unsorted => (UTyp.term, list(Id.t)) = { let ret = (term: UTyp.term) => (term, []); @@ -521,15 +465,7 @@ and typ_term: unsorted => (UTyp.term, list(Id.t)) = { and tpat = unsorted => { let term = tpat_term(unsorted); let ids = ids(unsorted); - return( - ty => TPat(ty), - ids, - { - ids, - term, - copied: false, - }, - ); + return(ty => TPat(ty), ids, {ids, term, copied: false}); } and tpat_term: unsorted => TPat.term = { let ret = (term: TPat.term) => term; @@ -570,23 +506,11 @@ and rul = (unsorted: unsorted): Rul.t => { Rules(scrut, List.combine(ps, leading_clauses @ [last_clause])), copied: false, } - | None => { - ids: ids(unsorted), - term: hole, - copied: false, - } + | None => {ids: ids(unsorted), term: hole, copied: false} } - | _ => { - ids: ids(unsorted), - term: hole, - copied: false, - } - } - | e => { - ids: [], - term: Rules(e, []), - copied: false, + | _ => {ids: ids(unsorted), term: hole, copied: false} } + | e => {ids: [], term: Rules(e, []), copied: false} }; } @@ -648,11 +572,7 @@ let go = map := TermMap.empty; projectors := Id.Map.empty; let term = exp(unsorted(Segment.skel(seg), seg)); - { - term, - terms: map^, - projectors: projectors^, - }; + {term, terms: map^, projectors: projectors^}; }, ); diff --git a/src/haz3lcore/statics/Self.re b/src/haz3lcore/statics/Self.re index ffde40c76a..cece7d2b0b 100644 --- a/src/haz3lcore/statics/Self.re +++ b/src/haz3lcore/statics/Self.re @@ -118,12 +118,7 @@ let of_deferred_ap = (args, ty_ins: list(Typ.t), ty_out: Typ.t): exp => { let expected = List.length(ty_ins); let actual = List.length(args); if (expected != actual) { - IsBadPartialAp( - ArityMismatch({ - expected, - actual, - }), - ); + IsBadPartialAp(ArityMismatch({expected, actual})); } else if (List.for_all(Exp.is_deferral, args)) { IsBadPartialAp(NoDeferredArgs); } else { @@ -138,13 +133,7 @@ let of_deferred_ap = (args, ty_ins: list(Typ.t), ty_out: Typ.t): exp => { }; }; -let add_source = - List.map2((id, ty) => - Typ.{ - id, - ty, - } - ); +let add_source = List.map2((id, ty) => Typ.{id, ty}); let match = (ctx: Ctx.t, tys: list(Typ.t), ids: list(Id.t)): t => switch (Typ.join_all(~empty=Unknown(Internal) |> Typ.fresh, ctx, tys)) { diff --git a/src/haz3lcore/statics/Statics.re b/src/haz3lcore/statics/Statics.re index 887e0bb8f9..aca1ce0389 100644 --- a/src/haz3lcore/statics/Statics.re +++ b/src/haz3lcore/statics/Statics.re @@ -378,14 +378,7 @@ and uexp_to_info_map = let mode_body = Mode.of_forall(ctx, Some(name), mode); let m = utpat_to_info_map(~ctx, ~ancestors, utpat, m) |> snd; let ctx_body = - Ctx.extend_tvar( - ctx, - { - name, - id: TPat.rep_id(utpat), - kind: Abstract, - }, - ); + Ctx.extend_tvar(ctx, {name, id: TPat.rep_id(utpat), kind: Abstract}); let (body, m) = go'(~ctx=ctx_body, ~mode=mode_body, body, m); add( ~self=Just(Forall(utpat, body.ty) |> Typ.temp), @@ -777,12 +770,7 @@ and upat_to_info_map = mode, Common(Just(Unknown(Internal) |> Typ.temp)), ); - let entry = - Ctx.VarEntry({ - name, - id: UPat.rep_id(upat), - typ: ctx_typ, - }); + let entry = Ctx.VarEntry({name, id: UPat.rep_id(upat), typ: ctx_typ}); add( ~self=Just(unknown), ~ctx=Ctx.extend(ctx, entry), @@ -890,14 +878,7 @@ and utyp_to_info_map = add(m); | Forall({term: Var(name), _} as utpat, tbody) => let body_ctx = - Ctx.extend_tvar( - ctx, - { - name, - id: TPat.rep_id(utpat), - kind: Abstract, - }, - ); + Ctx.extend_tvar(ctx, {name, id: TPat.rep_id(utpat), kind: Abstract}); let m = utyp_to_info_map( tbody, @@ -917,14 +898,7 @@ and utyp_to_info_map = add(m); // TODO: check with andrew | Rec({term: Var(name), _} as utpat, tbody) => let body_ctx = - Ctx.extend_tvar( - ctx, - { - name, - id: TPat.rep_id(utpat), - kind: Abstract, - }, - ); + Ctx.extend_tvar(ctx, {name, id: TPat.rep_id(utpat), kind: Abstract}); let m = utyp_to_info_map( tbody, @@ -981,11 +955,7 @@ and variant_to_info_map = List.mem(ctr, ctrs) ? Duplicate : Unique, ty_sum, ), - { - term: Var(ctr), - ids, - copied: false, - }, + {term: Var(ctr), ids, copied: false}, m, ) |> snd; diff --git a/src/haz3lcore/statics/TermBase.re b/src/haz3lcore/statics/TermBase.re index 37cf3e1c76..f0585955c6 100644 --- a/src/haz3lcore/statics/TermBase.re +++ b/src/haz3lcore/statics/TermBase.re @@ -1139,11 +1139,7 @@ and StepperFilterKind: { let map = (mapper, filter) => { switch (filter) { - | Filter({act, pat}) => - Filter({ - act, - pat: mapper(pat), - }) + | Filter({act, pat}) => Filter({act, pat: mapper(pat)}) | Residue(idx, act) => Residue(idx, act) }; }; @@ -1160,11 +1156,7 @@ and StepperFilterKind: { let exp_map_term = Exp.map_term(~f_exp, ~f_pat, ~f_typ, ~f_tpat, ~f_rul, ~f_any); fun - | Filter({pat: e, act}) => - Filter({ - pat: exp_map_term(e), - act, - }) + | Filter({pat: e, act}) => Filter({pat: exp_map_term(e), act}) | Residue(i, a) => Residue(i, a); }; diff --git a/src/haz3lcore/tiles/Base.re b/src/haz3lcore/tiles/Base.re index 9c8101b4ca..8c127d83ba 100644 --- a/src/haz3lcore/tiles/Base.re +++ b/src/haz3lcore/tiles/Base.re @@ -39,9 +39,4 @@ and projector = { }; // This is for comment insertion -let mk_secondary = (id, content) => [ - Secondary({ - id, - content, - }), -]; +let mk_secondary = (id, content) => [Secondary({id, content})]; diff --git a/src/haz3lcore/tiles/Grout.re b/src/haz3lcore/tiles/Grout.re index 000889c368..496de68f10 100644 --- a/src/haz3lcore/tiles/Grout.re +++ b/src/haz3lcore/tiles/Grout.re @@ -27,10 +27,7 @@ let mk_fits_shape = (s: Nib.Shape.t): t => { | Convex => Concave | Concave(_) => Convex }; - { - id, - shape, - }; + {id, shape}; }; //let mk_fits = ((l, r): Nibs.shapes): option(t) => // Nib.Shape.fits(l, r) ? None : Some(mk_fits_shape(l)); diff --git a/src/haz3lcore/tiles/Id.re b/src/haz3lcore/tiles/Id.re index c479908a47..5046dd63c5 100644 --- a/src/haz3lcore/tiles/Id.re +++ b/src/haz3lcore/tiles/Id.re @@ -133,10 +133,7 @@ module Uf: { refs: ref(Map.t(M.rref('a))), store: M.store('a), }; - let init = () => { - refs: ref(Map.empty), - store: M.new_store(), - }; + let init = () => {refs: ref(Map.empty), store: M.new_store()}; let rref = (id, s) => Map.find(id, s.refs^); let add = (id, a, s) => switch (Map.find_opt(id, s.refs^)) { diff --git a/src/haz3lcore/tiles/Mold.re b/src/haz3lcore/tiles/Mold.re index 5270b9cd63..743fcb0d18 100644 --- a/src/haz3lcore/tiles/Mold.re +++ b/src/haz3lcore/tiles/Mold.re @@ -7,123 +7,44 @@ type t = { nibs: Nibs.t, }; -let flip_nibs = m => { - ...m, - nibs: Nibs.flip(m.nibs), -}; +let flip_nibs = m => {...m, nibs: Nibs.flip(m.nibs)}; let mk_op = (out, in_) => { - let n = - Nib.{ - shape: Convex, - sort: out, - }; - { - out, - in_, - nibs: (n, n), - }; + let n = Nib.{shape: Convex, sort: out}; + {out, in_, nibs: (n, n)}; }; let mk_pre = (p, out, in_) => { - let l = - Nib.{ - shape: Convex, - sort: out, - }; - let r = - Nib.{ - shape: Concave(p), - sort: out, - }; - { - out, - in_, - nibs: (l, r), - }; + let l = Nib.{shape: Convex, sort: out}; + let r = Nib.{shape: Concave(p), sort: out}; + {out, in_, nibs: (l, r)}; }; let mk_post = (p, out, in_) => { - let l = - Nib.{ - shape: Concave(p), - sort: out, - }; - let r = - Nib.{ - shape: Convex, - sort: out, - }; - { - out, - in_, - nibs: (l, r), - }; + let l = Nib.{shape: Concave(p), sort: out}; + let r = Nib.{shape: Convex, sort: out}; + {out, in_, nibs: (l, r)}; }; let mk_bin = (~l=?, ~r=?, p, out, in_) => { let l = Option.value(l, ~default=out); let r = Option.value(r, ~default=out); - let nib = sort => - Nib.{ - sort, - shape: Concave(p), - }; - { - out, - in_, - nibs: (nib(l), nib(r)), - }; + let nib = sort => Nib.{sort, shape: Concave(p)}; + {out, in_, nibs: (nib(l), nib(r))}; }; // forms where tips can be different than out sort let mk_pre' = (p, out, sort_l, in_, sort_r) => { - let l = - Nib.{ - shape: Convex, - sort: sort_l, - }; - let r = - Nib.{ - shape: Concave(p), - sort: sort_r, - }; - { - out, - in_, - nibs: (l, r), - }; + let l = Nib.{shape: Convex, sort: sort_l}; + let r = Nib.{shape: Concave(p), sort: sort_r}; + {out, in_, nibs: (l, r)}; }; let mk_post' = (p, out, sort_l, in_, sort_r) => { - let l = - Nib.{ - shape: Concave(p), - sort: sort_l, - }; - let r = - Nib.{ - shape: Convex, - sort: sort_r, - }; - { - out, - in_, - nibs: (l, r), - }; + let l = Nib.{shape: Concave(p), sort: sort_l}; + let r = Nib.{shape: Convex, sort: sort_r}; + {out, in_, nibs: (l, r)}; }; let mk_bin' = (p, out, sort_l, in_, sort_r) => { - let l = - Nib.{ - shape: Concave(p), - sort: sort_l, - }; - let r = - Nib.{ - shape: Concave(p), - sort: sort_r, - }; - { - out, - in_, - nibs: (l, r), - }; + let l = Nib.{shape: Concave(p), sort: sort_l}; + let r = Nib.{shape: Concave(p), sort: sort_r}; + {out, in_, nibs: (l, r)}; }; let nibs = (~index=?, mold: t): Nibs.t => @@ -133,19 +54,10 @@ let nibs = (~index=?, mold: t): Nibs.t => let (l, r) = mold.nibs; let in_ = mold.in_; let l = - i == 0 - ? l - : Nib.{ - shape: Shape.concave(), - sort: List.nth(in_, i - 1), - }; + i == 0 ? l : Nib.{shape: Shape.concave(), sort: List.nth(in_, i - 1)}; let r = i == List.length(in_) - ? r - : Nib.{ - shape: Shape.concave(), - sort: List.nth(in_, i), - }; + ? r : Nib.{shape: Shape.concave(), sort: List.nth(in_, i)}; (l, r); }; @@ -160,18 +72,10 @@ let of_grout: (Grout.t, Sort.t) => t = // TODO(d): revisit this when reformulating molds switch (g.shape) { | Convex => - let n = - Nib.{ - shape: Convex, - sort, - }; + let n = Nib.{shape: Convex, sort}; (n, n); | Concave => - let n = - Nib.{ - shape: Concave(Precedence.min), - sort, - }; + let n = Nib.{shape: Concave(Precedence.min), sort}; (n, n); }, out: sort, diff --git a/src/haz3lcore/tiles/Nib.re b/src/haz3lcore/tiles/Nib.re index 71f5c5619e..863ea9bd9f 100644 --- a/src/haz3lcore/tiles/Nib.re +++ b/src/haz3lcore/tiles/Nib.re @@ -53,7 +53,4 @@ type t = { let shape = n => n.shape; -let flip = (nib: t) => { - ...nib, - shape: Shape.flip(nib.shape), -}; +let flip = (nib: t) => {...nib, shape: Shape.flip(nib.shape)}; diff --git a/src/haz3lcore/tiles/Piece.re b/src/haz3lcore/tiles/Piece.re index b85dc6824f..fc6207a979 100644 --- a/src/haz3lcore/tiles/Piece.re +++ b/src/haz3lcore/tiles/Piece.re @@ -31,34 +31,12 @@ let nibs = _ => None, g => { let (l, r) = Grout.shapes(g); - Some( - Nib.( - { - shape: l, - sort: Any, - }, - { - shape: r, - sort: Any, - }, - ), - ); + Some(Nib.({shape: l, sort: Any}, {shape: r, sort: Any})); }, t => Some(Tile.nibs(t)), p => { let (l, r) = ProjectorBase.shapes(p); - Some( - Nib.( - { - shape: l, - sort: Any, - }, - { - shape: r, - sort: Any, - }, - ), - ); + Some(Nib.({shape: l, sort: Any}, {shape: r, sort: Any})); }, ); @@ -151,26 +129,10 @@ let is_complete: t => bool = let replace_id = (id: Id.t, p: t): t => switch (p) { - | Tile(t) => - Tile({ - ...t, - id, - }) - | Grout(g) => - Grout({ - ...g, - id, - }) - | Secondary(w) => - Secondary({ - ...w, - id, - }) - | Projector(p) => - Projector({ - ...p, - id, - }) + | Tile(t) => Tile({...t, id}) + | Grout(g) => Grout({...g, id}) + | Secondary(w) => Secondary({...w, id}) + | Projector(p) => Projector({...p, id}) }; let mk_tile: (Form.t, list(list(t))) => t = diff --git a/src/haz3lcore/tiles/Secondary.re b/src/haz3lcore/tiles/Secondary.re index f3927d271c..c973469254 100644 --- a/src/haz3lcore/tiles/Secondary.re +++ b/src/haz3lcore/tiles/Secondary.re @@ -22,10 +22,7 @@ let cls_of = (s: t): cls => | Comment(_) => Comment }; -let mk_space = id => { - content: Whitespace(Form.space), - id, -}; +let mk_space = id => {content: Whitespace(Form.space), id}; let construct_comment = content => if (String.equal(content, "#")) { diff --git a/src/haz3lcore/tiles/Segment.re b/src/haz3lcore/tiles/Segment.re index e5570ecabf..de8689f08a 100644 --- a/src/haz3lcore/tiles/Segment.re +++ b/src/haz3lcore/tiles/Segment.re @@ -91,12 +91,7 @@ and remold_tile = (s: Sort.t, shape, t: Tile.t): option(Tile.t) => { let+ remolded = Molds.get(t.label) |> List.filter((m: Mold.t) => m.out == s) - |> List.map(mold => - { - ...t, - mold, - } - ) + |> List.map(mold => {...t, mold}) |> ( fun | [_] as ts => ts @@ -120,10 +115,7 @@ and remold_tile = (s: Sort.t, shape, t: Tile.t): option(Tile.t) => { Aba.aba_triples(Aba.mk(remolded.shards, remolded.children)), [], ); - { - ...remolded, - children, - }; + {...remolded, children}; } and remold_typ = (shape, seg: t): t => switch (seg) { @@ -526,11 +518,7 @@ and regrout_affix = t.children, [], ); - let p = - Piece.Tile({ - ...t, - children, - }); + let p = Piece.Tile({...t, children}); let (l', r') = Tile.shapes(t) |> (d == Left ? TupleUtil.swap : Fun.id); let trim = Trim.regrout(d, (r', r), trim); @@ -559,11 +547,7 @@ let rec reassemble = (seg: t): t => | Some((seg_l, match, seg_r)) => let t = Tile.reassemble(match); let children = List.map(reassemble, t.children); - let p = - Tile.to_piece({ - ...t, - children, - }); + let p = Tile.to_piece({...t, children}); seg_l @ [p, ...reassemble(seg_r)]; } }; diff --git a/src/haz3lcore/tiles/Skel.re b/src/haz3lcore/tiles/Skel.re index 5524051713..a00f6b1dfd 100644 --- a/src/haz3lcore/tiles/Skel.re +++ b/src/haz3lcore/tiles/Skel.re @@ -93,10 +93,7 @@ module Stacks = { shunted: list(ip), }; - let empty = { - output: [], - shunted: [], - }; + let empty = {output: [], shunted: []}; let rec pop_chain = (~popped=[], shunted: list(ip)): (list(ip), list(ip)) => @@ -162,13 +159,7 @@ module Stacks = { let (kids, r) = ListUtil.split_last(kids); [Bin(l, Aba.mk(is, kids), r), ...output]; }; - push_output( - ~prec?, - { - shunted, - output, - }, - ); + push_output(~prec?, {shunted, output}); }; }; @@ -179,10 +170,7 @@ module Stacks = { | Convex => stacks | Concave(prec) => push_output(~prec, stacks) }; - { - ...stacks, - shunted: [ip, ...stacks.shunted], - }; + {...stacks, shunted: [ip, ...stacks.shunted]}; }; let finish = stacks => push_output(stacks); diff --git a/src/haz3lcore/tiles/Tile.re b/src/haz3lcore/tiles/Tile.re index 5cc69c4585..df9350c4ff 100644 --- a/src/haz3lcore/tiles/Tile.re +++ b/src/haz3lcore/tiles/Tile.re @@ -49,30 +49,13 @@ let contained_children = (t: t): list((t, Base.segment, t)) => Aba.mk(t.shards, t.children) |> Aba.aba_triples |> List.map(((l, child, r)) => { - let l = { - ...t, - shards: [l], - children: [], - }; - let r = { - ...t, - shards: [r], - children: [], - }; + let l = {...t, shards: [l], children: []}; + let r = {...t, shards: [r], children: []}; (l, child, r); }); let split_shards = (id, label, mold, shards) => - shards - |> List.map(i => - { - id, - label, - mold, - shards: [i], - children: [], - } - ); + shards |> List.map(i => {id, label, mold, shards: [i], children: []}); // postcond: output segment is nonempty let disassemble = ({id, label, mold, shards, children}: t): segment => { diff --git a/src/haz3lcore/zipper/Ancestor.re b/src/haz3lcore/zipper/Ancestor.re index 5cbd7d543f..498b18b93e 100644 --- a/src/haz3lcore/zipper/Ancestor.re +++ b/src/haz3lcore/zipper/Ancestor.re @@ -47,13 +47,7 @@ let sorted_children = (a: t) => { }; let remold = (a: t): list(t) => - Molds.get(a.label) - |> List.map(mold => - { - ...a, - mold, - } - ); + Molds.get(a.label) |> List.map(mold => {...a, mold}); let sort = (a: t): Sort.t => { let (pre, suf) = a.shards; diff --git a/src/haz3lcore/zipper/Backpack.re b/src/haz3lcore/zipper/Backpack.re index 324378172d..b704e36721 100644 --- a/src/haz3lcore/zipper/Backpack.re +++ b/src/haz3lcore/zipper/Backpack.re @@ -154,10 +154,7 @@ module ShardInfo = { counts: Counts.t, }; - let init = () => { - order: Order.init(), - counts: Counts.init(), - }; + let init = () => {order: Order.init(), counts: Counts.init()}; let add_sel = (sel: Selection.t, {counts, order}: t): unit => { let ts = Segment.incomplete_tiles(sel.content); diff --git a/src/haz3lcore/zipper/Editor.re b/src/haz3lcore/zipper/Editor.re index 17fa20c8d9..cd05476fd9 100644 --- a/src/haz3lcore/zipper/Editor.re +++ b/src/haz3lcore/zipper/Editor.re @@ -8,12 +8,7 @@ module CachedStatics = { }; let empty: t = { - term: - UExp.{ - ids: [Id.invalid], - copied: false, - term: Tuple([]), - }, + term: UExp.{ids: [Id.invalid], copied: false, term: Tuple([])}, info_map: Id.Map.empty, error_ids: [], }; @@ -24,11 +19,7 @@ module CachedStatics = { let term = MakeTerm.from_zip_for_sem(z).term; let info_map = Statics.mk(settings, ctx_init, term); let error_ids = Statics.Map.error_ids(info_map); - { - term, - info_map, - error_ids, - }; + {term, info_map, error_ids}; }; let init = (~settings: CoreSettings.t, z: Zipper.t) => @@ -90,10 +81,7 @@ module CachedSyntax = { let next = (a: Action.t, z: Zipper.t, info_map, old: t) => Action.is_edit(a) ? init(z, info_map) - : { - ...old, - selection_ids: Selection.selection_ids(z.selection), - }; + : {...old, selection_ids: Selection.selection_ids(z.selection)}; }; module Meta = { @@ -105,11 +93,7 @@ module Meta = { let init = (~settings: CoreSettings.t, z: Zipper.t) => { let statics = CachedStatics.init(~settings, z); - { - col_target: 0, - statics, - syntax: CachedSyntax.init(z, statics.info_map), - }; + {col_target: 0, statics, syntax: CachedSyntax.init(z, statics.info_map)}; }; module type S = { @@ -140,11 +124,7 @@ module Meta = { | Select(Resize(Local(Up | Down))) => meta.col_target | _ => (Zipper.caret_point(syntax.measured))(. z).col }; - { - col_target, - syntax, - statics, - }; + {col_target, syntax, statics}; }; }; @@ -200,11 +180,7 @@ let new_state = let history = Action.is_historic(a) ? History.add(a, ed.state, ed.history) : ed.history; - { - state, - history, - read_only: ed.read_only, - }; + {state, history, read_only: ed.read_only}; }; let update_statics = (~settings: CoreSettings.t, ed: t): t => { @@ -247,10 +223,7 @@ let redo = (ed: t) => let can_undo = ed => Option.is_some(undo(ed)); let can_redo = ed => Option.is_some(redo(ed)); -let set_read_only = (ed, read_only) => { - ...ed, - read_only, -}; +let set_read_only = (ed, read_only) => {...ed, read_only}; let trailing_hole_ctx = (ed: t, info_map: Statics.Map.t) => { let segment = Zipper.unselect_and_zip(ed.state.zipper); diff --git a/src/haz3lcore/zipper/EditorUtil.re b/src/haz3lcore/zipper/EditorUtil.re index 2eab6776ef..ff59e48f55 100644 --- a/src/haz3lcore/zipper/EditorUtil.re +++ b/src/haz3lcore/zipper/EditorUtil.re @@ -32,40 +32,19 @@ let rec append_exp = (e1: Exp.t, e2: Exp.t): Exp.t => { | BinOp(_) | BuiltinFun(_) | Cast(_) - | Match(_) => - Exp.{ - ids: [Id.mk()], - copied: false, - term: Seq(e1, e2), - } + | Match(_) => Exp.{ids: [Id.mk()], copied: false, term: Seq(e1, e2)} | Seq(e11, e12) => let e12' = append_exp(e12, e2); - { - ids: e1.ids, - copied: false, - term: Seq(e11, e12'), - }; + {ids: e1.ids, copied: false, term: Seq(e11, e12')}; | Filter(kind, ebody) => let ebody' = append_exp(ebody, e2); - { - ids: e1.ids, - copied: false, - term: Filter(kind, ebody'), - }; + {ids: e1.ids, copied: false, term: Filter(kind, ebody')}; | Let(p, edef, ebody) => let ebody' = append_exp(ebody, e2); - { - ids: e1.ids, - copied: false, - term: Let(p, edef, ebody'), - }; + {ids: e1.ids, copied: false, term: Let(p, edef, ebody')}; | TyAlias(tp, tdef, ebody) => let ebody' = append_exp(ebody, e2); - { - ids: e1.ids, - copied: false, - term: TyAlias(tp, tdef, ebody'), - }; + {ids: e1.ids, copied: false, term: TyAlias(tp, tdef, ebody')}; } ); }; diff --git a/src/haz3lcore/zipper/Projector.re b/src/haz3lcore/zipper/Projector.re index 95cd19d606..82b036b821 100644 --- a/src/haz3lcore/zipper/Projector.re +++ b/src/haz3lcore/zipper/Projector.re @@ -26,16 +26,7 @@ let shape = (p: Base.projector, info: info): shape => { * is considered a placeholder. This could be made more principled. * Note that a placeholder retains the UUID of the underlying. */ let placeholder = (p: Base.projector, ci: option(Info.t)): string => - switch ( - shape( - p, - { - id: p.id, - syntax: p.syntax, - ci, - }, - ) - ) { + switch (shape(p, {id: p.id, syntax: p.syntax, ci})) { | Inline(width) => String.make(width, ' ') | Block({row, col}) => String.make(row - 1, '\n') ++ String.make(col, ' ') }; diff --git a/src/haz3lcore/zipper/ProjectorBase.re b/src/haz3lcore/zipper/ProjectorBase.re index 726225b148..5abe811d76 100644 --- a/src/haz3lcore/zipper/ProjectorBase.re +++ b/src/haz3lcore/zipper/ProjectorBase.re @@ -145,16 +145,7 @@ let mold_of = (p, sort: Sort.t): Mold.t => { let (l, r) = shapes(p); { nibs: { - ( - { - shape: l, - sort, - }, - { - shape: r, - sort, - }, - ); + ({shape: l, sort}, {shape: r, sort}); }, out: sort, in_: [], diff --git a/src/haz3lcore/zipper/Relatives.re b/src/haz3lcore/zipper/Relatives.re index 93df32d9c0..251cdbc4e9 100644 --- a/src/haz3lcore/zipper/Relatives.re +++ b/src/haz3lcore/zipper/Relatives.re @@ -6,10 +6,7 @@ type t = { ancestors: Ancestors.t, }; -let empty = { - siblings: Siblings.empty, - ancestors: Ancestors.empty, -}; +let empty = {siblings: Siblings.empty, ancestors: Ancestors.empty}; let push = (d: Direction.t, p: Piece.t, rs: t): t => { ...rs, @@ -18,22 +15,12 @@ let push = (d: Direction.t, p: Piece.t, rs: t): t => { let prepend = (d: Direction.t, seg: Segment.t, rs: t): t => { let siblings = Siblings.prepend(d, seg, rs.siblings); - { - ...rs, - siblings, - }; + {...rs, siblings}; }; let pop = (d: Direction.t, rs: t): option((Piece.t, t)) => switch (Siblings.pop(d, rs.siblings)) { - | Some((p, siblings)) => - Some(( - p, - { - ...rs, - siblings, - }, - )) + | Some((p, siblings)) => Some((p, {...rs, siblings})) | None => switch (rs.ancestors) { | [] => None @@ -42,13 +29,7 @@ let pop = (d: Direction.t, rs: t): option((Piece.t, t)) => let siblings' = Ancestor.disassemble(ancestor); let+ (p, siblings) = Siblings.(pop(d, concat([rs.siblings, siblings', siblings]))); - ( - p, - { - siblings, - ancestors, - }, - ); + (p, {siblings, ancestors}); } }; @@ -75,10 +56,7 @@ let parent = let delete_parent = ({siblings, ancestors}: t): t => { switch (ancestors) { - | [] => { - siblings, - ancestors, - } + | [] => {siblings, ancestors} | [(_, p_sibs), ...ancestors] => { siblings: Siblings.concat([siblings, p_sibs]), ancestors, @@ -89,10 +67,7 @@ let delete_parent = ({siblings, ancestors}: t): t => { let remold = ({siblings, ancestors}: t): t => { let s = Ancestors.sort(ancestors); let siblings = Siblings.remold(siblings, s); - { - ancestors, - siblings, - }; + {ancestors, siblings}; }; let regrout = (d: Direction.t, {siblings, ancestors}: t): t => { @@ -139,10 +114,7 @@ let regrout = (d: Direction.t, {siblings, ancestors}: t): t => { }; (pre @ trim_l, trim_r @ suf); }; - { - siblings, - ancestors, - }; + {siblings, ancestors}; }; let reassemble_parent = (rs: t): t => @@ -187,10 +159,7 @@ let reassemble_parent = (rs: t): t => }; (a, inner_r); }; - { - siblings: (l, r), - ancestors: [(a, sibs), ...ancs], - }; + {siblings: (l, r), ancestors: [(a, sibs), ...ancs]}; }; let reassemble_siblings = (rs: t) => { @@ -211,34 +180,21 @@ let reassemble = (rs: t): t => { | (_, None) => failwith("impossible") | (None, Some((inner_r, match_r, outer_r))) => let {siblings: (pre, suf), ancestors} = - go({ - ...rs, - siblings: (fst(rs.siblings), outer_r), - }); + go({...rs, siblings: (fst(rs.siblings), outer_r)}); let t = Tile.reassemble(match_r); let suf = Segment.concat([inner_r, [Tile.to_piece(t), ...suf]]); - { - siblings: (pre, suf), - ancestors, - }; + {siblings: (pre, suf), ancestors}; | ( Some((outer_l, match_l, inner_l)), Some((inner_r, match_r, outer_r)), ) => - let rs = - go({ - ...rs, - siblings: (outer_l, outer_r), - }); + let rs = go({...rs, siblings: (outer_l, outer_r)}); let ancestors = [ (Ancestor.reassemble(match_l, match_r), rs.siblings), ...rs.ancestors, ]; let siblings = (inner_l, inner_r); - { - ancestors, - siblings, - }; + {ancestors, siblings}; } }; rs |> reassemble_siblings |> reassemble_parent |> go; diff --git a/src/haz3lcore/zipper/Selection.re b/src/haz3lcore/zipper/Selection.re index 4351dcf585..92d6509fb8 100644 --- a/src/haz3lcore/zipper/Selection.re +++ b/src/haz3lcore/zipper/Selection.re @@ -35,10 +35,7 @@ let selection_ids = (sel: t): list(Id.t) => Segment.ids(sel.content); let empty = mk(Segment.empty); -let map = (f, sel) => { - ...sel, - content: f(sel.content), -}; +let map = (f, sel) => {...sel, content: f(sel.content)}; let toggle_focus = selection => { ...selection, @@ -55,11 +52,7 @@ let push = (p: Piece.t, {focus, content, mode}: t): t => { | Right => Segment.snoc(content, p) }, ); - { - focus, - content, - mode, - }; + {focus, content, mode}; }; let pop = (sel: t): option((Piece.t, t)) => @@ -68,20 +61,8 @@ let pop = (sel: t): option((Piece.t, t)) => | (_, _, None) => None | (Left, [p, ...content], _) => let (p, rest) = Piece.pop_l(p); - Some(( - p, - { - ...sel, - content: rest @ content, - }, - )); + Some((p, {...sel, content: rest @ content})); | (Right, _, Some((content, p))) => let (rest, p) = Piece.pop_r(p); - Some(( - p, - { - ...sel, - content: content @ rest, - }, - )); + Some((p, {...sel, content: content @ rest})); }; diff --git a/src/haz3lcore/zipper/Zipper.re b/src/haz3lcore/zipper/Zipper.re index 246c5d3c62..f87fb964e6 100644 --- a/src/haz3lcore/zipper/Zipper.re +++ b/src/haz3lcore/zipper/Zipper.re @@ -7,15 +7,7 @@ let init: unit => t = selection: Selection.mk([]), backpack: [], relatives: { - siblings: ( - [], - [ - Grout({ - id: Id.mk(), - shape: Convex, - }), - ], - ), + siblings: ([], [Grout({id: Id.mk(), shape: Convex})]), ancestors: [], }, caret: Outer, @@ -82,28 +74,19 @@ let neighbor_monotiles: Siblings.t => (option(Token.t), option(Token.t)) = let regrout = (d: Direction.t, z: t): t => { assert(Selection.is_empty(z.selection)); let relatives = Relatives.regrout(d, z.relatives); - { - ...z, - relatives, - }; + {...z, relatives}; }; let remold = (z: t): t => { assert(Selection.is_empty(z.selection)); - { - ...z, - relatives: Relatives.remold(z.relatives), - }; + {...z, relatives: Relatives.remold(z.relatives)}; }; let remold_regrout = (d: Direction.t, z: t): t => z |> remold |> regrout(d); let clear_unparsed_buffer = (z: t) => switch (z.selection.mode) { - | Buffer(Unparsed) => { - ...z, - selection: Selection.empty, - } + | Buffer(Unparsed) => {...z, selection: Selection.empty} | _ => z }; @@ -118,11 +101,7 @@ let unselect = (~erase_buffer=false, z: t): t => { |> Relatives.prepend(z.selection.focus, z.selection.content) |> Relatives.reassemble; let selection = Selection.empty; - { - ...z, - selection, - relatives, - }; + {...z, selection, relatives}; }; let unselect_and_zip = (~erase_buffer=false, z: t): Segment.t => z |> unselect(~erase_buffer) |> zip; @@ -132,11 +111,7 @@ let update_selection = (selection: Selection.t, z: t): (Selection.t, t) => { // used to be necessary to unselect when selection update // included remold/regrout, now no longer necessary if needs // to be changed but keeping for now to minimize change - let z = - unselect({ - ...z, - selection, - }); + let z = unselect({...z, selection}); (old, z); }; @@ -146,11 +121,7 @@ let put_selection = (sel: Selection.t, z: t): t => let grow_selection = (z: t): option(t) => { let+ (p, relatives) = Relatives.pop(z.selection.focus, z.relatives); let selection = Selection.push(p, z.selection); - { - ...z, - selection, - relatives, - }; + {...z, selection, relatives}; }; // toggles focus and grows if selection is empty @@ -158,20 +129,13 @@ let shrink_selection = (z: t): option(t) => { switch (Selection.pop(z.selection)) { | None => let selection = Selection.toggle_focus(z.selection); - grow_selection({ - ...z, - selection, - }); + grow_selection({...z, selection}); | Some((p, selection)) => let relatives = z.relatives |> Relatives.push(selection.focus, p) |> Relatives.reassemble; - Some({ - ...z, - selection, - relatives, - }); + Some({...z, selection, relatives}); }; }; @@ -181,14 +145,8 @@ let toggle_focus = (z: t): t => { }; let directional_unselect = (d: Direction.t, z: t): t => { - let selection = { - ...z.selection, - focus: Direction.toggle(d), - }; - unselect({ - ...z, - selection, - }); + let selection = {...z.selection, focus: Direction.toggle(d)}; + unselect({...z, selection}); }; let move = (d: Direction.t, z: t): option(t) => @@ -198,10 +156,7 @@ let move = (d: Direction.t, z: t): option(t) => relatives |> Relatives.push(Direction.toggle(d), p) |> Relatives.reassemble; - { - ...z, - relatives, - }; + {...z, relatives}; } else { Some(directional_unselect(d, z)); }; @@ -217,10 +172,7 @@ let pick_up = (z: t): t => { |> Segment.trim_grout_around_secondary(Right) |> Selection.mk; let backpack = Backpack.push(selection, z.backpack); - { - ...z, - backpack, - }; + {...z, backpack}; }; let destruct = (~destroy_kids=true, z: t): t => { @@ -243,10 +195,7 @@ let destruct = (~destroy_kids=true, z: t): t => { |> Backpack.push_s( to_pick_up |> List.map(Segment.of_tile) |> List.map(Selection.mk), ); - { - ...z, - backpack, - }; + {...z, backpack}; }; let delete = (d: Direction.t, z: t): option(t) => @@ -255,13 +204,7 @@ let delete = (d: Direction.t, z: t): option(t) => let put_down = (d: Direction.t, z: t): option(t) => { let z = destruct(z); let* (_, popped, backpack) = pop_backpack(z); - let z = - { - ...z, - backpack, - } - |> put_selection(popped) - |> unselect; + let z = {...z, backpack} |> put_selection(popped) |> unselect; switch (d) { | Left => Some(z) | Right => move(Left, z) @@ -282,32 +225,12 @@ let rec construct = let z = destruct(z); let selections = [Selection.mk(Base.mk_secondary(id, content))]; let backpack = Backpack.push_s(selections, z.backpack); - Option.get( - put_down( - caret, - { - ...z, - backpack, - }, - ), - ); + Option.get(put_down(caret, {...z, backpack})); | [content] when Form.is_secondary(content) => let content = Secondary.Whitespace(content); let id = Id.mk(); - z - |> update_siblings(((l, r)) => - ( - l - @ [ - Secondary({ - id, - content, - }), - ], - r, - ) - ); + z |> update_siblings(((l, r)) => (l @ [Secondary({id, content})], r)); | _ => let z = destruct(z); let molds = Molds.get(label); @@ -321,15 +244,7 @@ let rec construct = |> List.map(Selection.mk) |> ListUtil.rev_if(backpack == Right); let backpack = Backpack.push_s(selections, z.backpack); - Option.get( - put_down( - caret, - { - ...z, - backpack, - }, - ), - ); + Option.get(put_down(caret, {...z, backpack})); }; }; @@ -384,18 +299,12 @@ let base_point = (measured: Measured.t, z: t): Point.t => { let m = Measured.find_p(~msg="base_point", p, measured); m.origin; }; - | None => { - row: 0, - col: 0, - } + | None => {row: 0, col: 0} }; }; let caret_point = (measured, z: t): Point.t => { let Point.{row, col} = base_point(measured, z); - { - row, - col: col + Caret.offset(z.caret), - }; + {row, col: col + Caret.offset(z.caret)}; }; let serialize = (z: t): string => { @@ -440,10 +349,7 @@ let try_to_dump_backpack = (zipper: t) => { switch (zipper.backpack) { | [] => zipper | _ => - let zipper = { - ...zipper, - caret: Outer, - }; + let zipper = {...zipper, caret: Outer}; let rec move_until_cant_put_down = (z_last, z: t) => if (can_put_down(z) && !is_linebreak_to_right_of_caret(z)) { switch (move(Right, z)) { diff --git a/src/haz3lcore/zipper/ZipperBase.re b/src/haz3lcore/zipper/ZipperBase.re index 500b1a2de7..cb6311a4b8 100644 --- a/src/haz3lcore/zipper/ZipperBase.re +++ b/src/haz3lcore/zipper/ZipperBase.re @@ -33,13 +33,7 @@ let update_relatives = (f: Relatives.t => Relatives.t, z: t): t => { }; let update_siblings: (Siblings.t => Siblings.t, t) => t = - f => - update_relatives(rs => - { - ...rs, - siblings: f(rs.siblings), - } - ); + f => update_relatives(rs => {...rs, siblings: f(rs.siblings)}); let put_siblings = (siblings, z: t): t => update_siblings(_ => siblings, z); @@ -83,10 +77,7 @@ module MapPiece = { }; } and of_tile = (f: updater, t: Tile.t): Tile.t => { - { - ...t, - children: List.map(of_segment(f), t.children), - }; + {...t, children: List.map(of_segment(f), t.children)}; }; let of_siblings = (f: updater, sibs: Siblings.t): Siblings.t => ( @@ -114,10 +105,7 @@ module MapPiece = { List.map(of_generation(f), ancestors); let of_selection = (f: updater, selection: Selection.t): Selection.t => { - { - ...selection, - content: of_segment(f, selection.content), - }; + {...selection, content: of_segment(f, selection.content)}; }; /* Maps the updater over all pieces in the zipper diff --git a/src/haz3lcore/zipper/action/Move.re b/src/haz3lcore/zipper/action/Move.re index 17e9327674..afc46ca152 100644 --- a/src/haz3lcore/zipper/action/Move.re +++ b/src/haz3lcore/zipper/action/Move.re @@ -191,10 +191,7 @@ module Make = (M: Editor.Meta.S) => { caret position to a target derived from the initial position */ let cur_p = caret_point(z); let goal = - Point.{ - col: M.col_target, - row: cur_p.row + (d == Right ? 1 : (-1)), - }; + Point.{col: M.col_target, row: cur_p.row + (d == Right ? 1 : (-1))}; do_towards(~force_progress=true, f, goal, z); }; @@ -203,22 +200,10 @@ module Make = (M: Editor.Meta.S) => { let cur_p = caret_point(z); let goal: Point.t = switch (d) { - | Right(_) => { - col: Int.max_int, - row: cur_p.row, - } - | Left(_) => { - col: 0, - row: cur_p.row, - } - | Up => { - col: 0, - row: 0, - } - | Down => { - col: Int.max_int, - row: Int.max_int, - } + | Right(_) => {col: Int.max_int, row: cur_p.row} + | Left(_) => {col: 0, row: cur_p.row} + | Up => {col: 0, row: 0} + | Down => {col: Int.max_int, row: Int.max_int} }; do_towards(f, goal, z); }; diff --git a/src/haz3lcore/zipper/action/Perform.re b/src/haz3lcore/zipper/action/Perform.re index 87c4cf3635..5a3b90c245 100644 --- a/src/haz3lcore/zipper/action/Perform.re +++ b/src/haz3lcore/zipper/action/Perform.re @@ -3,10 +3,7 @@ open Zipper; let buffer_clear = (z: t): t => switch (z.selection.mode) { - | Buffer(_) => { - ...z, - selection: Selection.mk([]), - } + | Buffer(_) => {...z, selection: Selection.mk([])} | _ => z }; @@ -202,10 +199,7 @@ let go_z = |> Option.map(remold_regrout(Left)) |> Result.of_option(~error=Action.Failure.Cant_put_down); | RotateBackpack => - let z = { - ...z, - backpack: Util.ListUtil.rotate(z.backpack), - }; + let z = {...z, backpack: Util.ListUtil.rotate(z.backpack)}; Ok(z); | MoveToBackpackTarget((Left(_) | Right(_)) as d) => if (Backpack.restricted(z.backpack)) { diff --git a/src/haz3lcore/zipper/action/ProjectorPerform.re b/src/haz3lcore/zipper/action/ProjectorPerform.re index 1a3218a4b5..a0996437bd 100644 --- a/src/haz3lcore/zipper/action/ProjectorPerform.re +++ b/src/haz3lcore/zipper/action/ProjectorPerform.re @@ -17,13 +17,7 @@ module Update = { let (module P) = to_module(kind); switch (P.can_project(syntax) && minimum_projection_condition(syntax)) { | false => syntax - | true => - Projector({ - id: Piece.id(syntax), - kind, - model: P.init, - syntax, - }) + | true => Projector({id: Piece.id(syntax), kind, model: P.init, syntax}) }; }; @@ -76,20 +70,9 @@ module Update = { let move_out_of_piece = (d: Util.Direction.t, rel: Indicated.relation, z: Zipper.t): Zipper.t => switch (rel) { - | Sibling => { - ...z, - caret: Outer, - } + | Sibling => {...z, caret: Outer} | Parent => - switch ( - Zipper.move( - d, - { - ...z, - caret: Outer, - }, - ) - ) { + switch (Zipper.move(d, {...z, caret: Outer})) { | Some(z) => z | None => z } @@ -120,27 +103,12 @@ let go = * See intial id setting in Update.init */ Ok( Update.update( - p => - { - ...p, - syntax: Piece.replace_id(id, syntax), - }, - id, - z, - ), - ) - | SetModel(id, model) => - Ok( - Update.update( - pr => - { - ...pr, - model, - }, + p => {...p, syntax: Piece.replace_id(id, syntax)}, id, z, ), ) + | SetModel(id, model) => Ok(Update.update(pr => {...pr, model}, id, z)) | Focus(id, d) => let z = switch (d) { diff --git a/src/haz3lschool/Exercise.re b/src/haz3lschool/Exercise.re index 807df441fa..b5e7dfc76d 100644 --- a/src/haz3lschool/Exercise.re +++ b/src/haz3lschool/Exercise.re @@ -193,10 +193,7 @@ module F = (ExerciseEnv: ExerciseEnv) => { hidden_bugs: Util.ListUtil.put_nth( n, - { - ...List.nth(eds.hidden_bugs, n), - impl: editor, - }, + {...List.nth(eds.hidden_bugs, n), impl: editor}, eds.hidden_bugs, ), }, @@ -272,16 +269,10 @@ module F = (ExerciseEnv: ExerciseEnv) => { switch (pos) { | HiddenTests | HiddenBugs(_) => exercise - | _ => { - eds: exercise.eds, - pos, - } + | _ => {eds: exercise.eds, pos} }; } else { - { - eds: exercise.eds, - pos, - }; + {eds: exercise.eds, pos}; }; let zipper_of_code = code => { @@ -312,24 +303,14 @@ module F = (ExerciseEnv: ExerciseEnv) => { let correct_impl = zipper_of_code(correct_impl); let your_tests = { let tests = zipper_of_code(your_tests.tests); - { - tests, - required: your_tests.required, - provided: your_tests.provided, - }; + {tests, required: your_tests.required, provided: your_tests.provided}; }; let your_impl = zipper_of_code(your_impl); let hidden_bugs = List.fold_left( (acc, {impl, hint}) => { let impl = zipper_of_code(impl); - acc - @ [ - { - impl, - hint, - }, - ]; + acc @ [{impl, hint}]; }, [], hidden_bugs, @@ -337,10 +318,7 @@ module F = (ExerciseEnv: ExerciseEnv) => { let hidden_tests = { let {tests, hints} = hidden_tests; let tests = zipper_of_code(tests); - { - tests, - hints, - }; + {tests, hints}; }; { title, @@ -382,29 +360,19 @@ module F = (ExerciseEnv: ExerciseEnv) => { let correct_impl = editor_of_serialization(correct_impl); let your_tests = { let tests = editor_of_serialization(your_tests.tests); - { - tests, - required: your_tests.required, - provided: your_tests.provided, - }; + {tests, required: your_tests.required, provided: your_tests.provided}; }; let your_impl = editor_of_serialization(your_impl); let hidden_bugs = hidden_bugs |> List.map(({impl, hint}) => { let impl = editor_of_serialization(impl); - { - impl, - hint, - }; + {impl, hint}; }); let hidden_tests = { let {tests, hints} = hidden_tests; let tests = editor_of_serialization(tests); - { - tests, - hints, - }; + {tests, hints}; }; { title, @@ -514,13 +482,7 @@ module F = (ExerciseEnv: ExerciseEnv) => { let state_of_spec = (spec, ~instructor_mode: bool, ~settings: CoreSettings.t): state => { let eds = eds_of_spec(~settings, spec); - set_instructor_mode( - { - pos: YourImpl, - eds, - }, - instructor_mode, - ); + set_instructor_mode({pos: YourImpl, eds}, instructor_mode); }; let persistent_state_of_state = @@ -558,16 +520,7 @@ module F = (ExerciseEnv: ExerciseEnv) => { List.fold_left( ((i, hidden_bugs: list(wrong_impl(Editor.t))), {impl, hint}) => { let impl = lookup(HiddenBugs(i), impl); - ( - i + 1, - hidden_bugs - @ [ - { - impl, - hint, - }, - ], - ); + (i + 1, hidden_bugs @ [{impl, hint}]); }, (0, []), spec.hidden_bugs, @@ -686,11 +639,7 @@ module F = (ExerciseEnv: ExerciseEnv) => { (settings: CoreSettings.t, t: stitched(UExp.t)): stitched_statics => { let mk = (term: UExp.t): Editor.CachedStatics.t => { let info_map = Statics.mk(settings, Builtins.ctx_init, term); - { - term, - error_ids: Statics.Map.error_ids(info_map), - info_map, - }; + {term, error_ids: Statics.Map.error_ids(info_map), info_map}; }; let instructor = mk(t.instructor); { @@ -761,10 +710,7 @@ module F = (ExerciseEnv: ExerciseEnv) => { statics: Editor.CachedStatics.t, result: ModelResult.t, }; - let empty: t = { - statics: Editor.CachedStatics.empty, - result: NoElab, - }; + let empty: t = {statics: Editor.CachedStatics.empty, result: NoElab}; let statics_only = (statics: Editor.CachedStatics.t): t => { statics, result: NoElab, @@ -818,33 +764,17 @@ module F = (ExerciseEnv: ExerciseEnv) => { }; let user_impl = - DynamicsItem.{ - statics: user_impl, - result: result_of(user_impl_key), - }; + DynamicsItem.{statics: user_impl, result: result_of(user_impl_key)}; let user_tests = - DynamicsItem.{ - statics: user_tests, - result: result_of(user_tests_key), - }; - let prelude = - DynamicsItem.{ - statics: prelude, - result: NoElab, - }; + DynamicsItem.{statics: user_tests, result: result_of(user_tests_key)}; + let prelude = DynamicsItem.{statics: prelude, result: NoElab}; let instructor = - DynamicsItem.{ - statics: instructor, - result: result_of(instructor_key), - }; + DynamicsItem.{statics: instructor, result: result_of(instructor_key)}; let hidden_bugs = List.mapi( (n, statics: Editor.CachedStatics.t) => - DynamicsItem.{ - statics, - result: result_of(hidden_bugs_key(n)), - }, + DynamicsItem.{statics, result: result_of(hidden_bugs_key(n))}, hidden_bugs, ); let hidden_tests = @@ -962,10 +892,7 @@ module F = (ExerciseEnv: ExerciseEnv) => { num_wrong_impls, i => { let zipper = Zipper.next_blank(); - { - impl: zipper, - hint: "TODO: hint " ++ string_of_int(i), - }; + {impl: zipper, hint: "TODO: hint " ++ string_of_int(i)}; }, ); let hidden_tests_tests = Zipper.next_blank(); diff --git a/src/haz3lschool/Gradescope.re b/src/haz3lschool/Gradescope.re index 26633b3b84..7277fcf85b 100644 --- a/src/haz3lschool/Gradescope.re +++ b/src/haz3lschool/Gradescope.re @@ -101,10 +101,7 @@ module Main = { ++ item_to_summary("Test Validation", test_validation) ++ item_to_summary("Mutation Testing", mutation_testing) ++ item_to_summary("Impl Grading", impl_grading); - { - summary, - overall, - }; + {summary, overall}; }; let run = () => { let hw_path = Sys.get_argv()[1]; @@ -122,10 +119,7 @@ module Main = { ~instructor_mode=true, ); let report = exercise |> gen_grading_report; - { - name, - report, - }; + {name, report}; | None => failwith("Invalid spec") // | None => (key |> yojson_of_key |> Yojson.Safe.to_string, "?") } diff --git a/src/haz3lschool/Grading.re b/src/haz3lschool/Grading.re index 3d0b49e2f7..9e0f577772 100644 --- a/src/haz3lschool/Grading.re +++ b/src/haz3lschool/Grading.re @@ -214,11 +214,7 @@ module F = (ExerciseEnv: Exercise.ExerciseEnv) => { "Exercise configuration error: Hint without a test.", ) }; - { - hints, - test_results, - hinted_results, - }; + {hints, test_results, hinted_results}; }; let total = (report: t) => List.length(report.hinted_results); diff --git a/src/haz3lschool/Tutorial.re b/src/haz3lschool/Tutorial.re index 04c6b84b50..719842c7f1 100644 --- a/src/haz3lschool/Tutorial.re +++ b/src/haz3lschool/Tutorial.re @@ -176,16 +176,10 @@ module D = (TutorialEnv: TutorialEnv) => { if (!instructor_mode) { switch (pos) { | HiddenTests - | _ => { - eds: documentation.eds, - pos, - } + | _ => {eds: documentation.eds, pos} }; } else { - { - eds: documentation.eds, - pos, - }; + {eds: documentation.eds, pos}; }; let zipper_of_code = code => { @@ -225,17 +219,9 @@ module D = (TutorialEnv: TutorialEnv) => { let hidden_tests = { let {tests, hints} = hidden_tests; let tests = editor_of_serialization(tests); - { - tests, - hints, - }; - }; - { - title, - description, - your_impl, - hidden_tests, + {tests, hints}; }; + {title, description, your_impl, hidden_tests}; }; let set_instructor_mode = ({eds, _} as state: state, new_mode: bool) => { @@ -263,13 +249,7 @@ module D = (TutorialEnv: TutorialEnv) => { let state_of_spec = (spec, ~instructor_mode: bool, ~settings: CoreSettings.t): state => { let eds = eds_of_spec(~settings, spec); - set_instructor_mode( - { - pos: YourImpl, - eds, - }, - instructor_mode, - ); + set_instructor_mode({pos: YourImpl, eds}, instructor_mode); }; let persistent_state_of_state = (state: state, ~instructor_mode: bool) => { @@ -394,11 +374,7 @@ module D = (TutorialEnv: TutorialEnv) => { let hidden_tests_term = EditorUtil.append_exp(user_impl_term, term_of(eds.hidden_tests.tests)); - { - user_impl: user_impl_term, - instructor, - hidden_tests: hidden_tests_term, - }; + {user_impl: user_impl_term, instructor, hidden_tests: hidden_tests_term}; }; let stitch_term = Core.Memo.general(stitch_term); @@ -415,11 +391,7 @@ module D = (TutorialEnv: TutorialEnv) => { (settings: CoreSettings.t, t: stitched(UExp.t)): stitched_statics => { let mk = (term: UExp.t): Editor.CachedStatics.t => { let info_map = Statics.mk(settings, Builtins.ctx_init, term); - { - term, - error_ids: Statics.Map.error_ids(info_map), - info_map, - }; + {term, error_ids: Statics.Map.error_ids(info_map), info_map}; }; let instructor = mk(t.instructor); { @@ -484,10 +456,7 @@ module D = (TutorialEnv: TutorialEnv) => { statics: Editor.CachedStatics.t, result: ModelResult.t, }; - let empty: t = { - statics: Editor.CachedStatics.empty, - result: NoElab, - }; + let empty: t = {statics: Editor.CachedStatics.empty, result: NoElab}; let statics_only = (statics: Editor.CachedStatics.t): t => { statics, result: NoElab, @@ -530,16 +499,10 @@ module D = (TutorialEnv: TutorialEnv) => { }; let user_impl = - DynamicsItem.{ - statics: user_impl, - result: result_of(user_impl_key), - }; + DynamicsItem.{statics: user_impl, result: result_of(user_impl_key)}; let instructor = - DynamicsItem.{ - statics: instructor, - result: result_of(instructor_key), - }; + DynamicsItem.{statics: instructor, result: result_of(instructor_key)}; let hidden_tests = DynamicsItem.{ diff --git a/src/haz3lweb/Export.re b/src/haz3lweb/Export.re index 7e1dd17737..9c9f709fa9 100644 --- a/src/haz3lweb/Export.re +++ b/src/haz3lweb/Export.re @@ -31,14 +31,7 @@ let mk_all = (~instructor_mode, ~log) => { ~specs=ExerciseSettings.exercises, ~instructor_mode, ); - { - settings, - explainThisModel, - scratch, - documentation, - exercise, - log, - }; + {settings, explainThisModel, scratch, documentation, exercise, log}; }; let export_all = (~instructor_mode, ~log) => { diff --git a/src/haz3lweb/FailedInput.re b/src/haz3lweb/FailedInput.re index 719d8069c7..7e40d69427 100644 --- a/src/haz3lweb/FailedInput.re +++ b/src/haz3lweb/FailedInput.re @@ -12,15 +12,9 @@ type t = { prior_attempts: int, }; -let mk = (~prior_attempts=0, reason) => { - reason, - prior_attempts, -}; +let mk = (~prior_attempts=0, reason) => {reason, prior_attempts}; let replace_or_increment_attempts = (reason, failed_input: t) => reason == failed_input.reason - ? { - ...failed_input, - prior_attempts: failed_input.prior_attempts + 1, - } + ? {...failed_input, prior_attempts: failed_input.prior_attempts + 1} : mk(reason); diff --git a/src/haz3lweb/FontMetrics.re b/src/haz3lweb/FontMetrics.re index 43e704fd07..4ed525c176 100644 --- a/src/haz3lweb/FontMetrics.re +++ b/src/haz3lweb/FontMetrics.re @@ -7,7 +7,4 @@ type t = { col_width: float, }; -let init = { - row_height: 10., - col_width: 10., -}; +let init = {row_height: 10., col_width: 10.}; diff --git a/src/haz3lweb/Keyboard.re b/src/haz3lweb/Keyboard.re index 3920530a55..7e4e655f26 100644 --- a/src/haz3lweb/Keyboard.re +++ b/src/haz3lweb/Keyboard.re @@ -21,13 +21,7 @@ let meta = (sys: Key.sys): string => { let mk_shortcut = (~hotkey=?, ~mdIcon=?, ~section=?, label, update_action): shortcut => { - { - update_action: Some(update_action), - hotkey, - label, - mdIcon, - section, - }; + {update_action: Some(update_action), hotkey, label, mdIcon, section}; }; let instructor_shortcuts: list(shortcut) = [ diff --git a/src/haz3lweb/Model.re b/src/haz3lweb/Model.re index 50fefd42f6..503e9bb38d 100644 --- a/src/haz3lweb/Model.re +++ b/src/haz3lweb/Model.re @@ -105,13 +105,7 @@ let load = (init_model: t): t => { ~instructor_mode=settings.instructor_mode, ); let ui_state = init_model.ui_state; - { - editors, - settings, - results, - explainThisModel, - ui_state, - }; + {editors, settings, results, explainThisModel, ui_state}; }; let save = ({editors, settings, explainThisModel, results, _}: t) => { diff --git a/src/haz3lweb/Settings.re b/src/haz3lweb/Settings.re index 50f3aaf136..0a0edd4c17 100644 --- a/src/haz3lweb/Settings.re +++ b/src/haz3lweb/Settings.re @@ -31,10 +31,7 @@ type t = { let fix_instructor_mode = settings => if (settings.instructor_mode && !ExerciseSettings.show_instructor) { - { - ...settings, - instructor_mode: false, - }; + {...settings, instructor_mode: false}; } else { settings; }; diff --git a/src/haz3lweb/Update.re b/src/haz3lweb/Update.re index e527df9069..43a5e593f6 100644 --- a/src/haz3lweb/Update.re +++ b/src/haz3lweb/Update.re @@ -95,10 +95,7 @@ let update_settings = ...evaluation, show_fn_bodies: !evaluation.show_fn_bodies, } - | ShowCasts => { - ...evaluation, - show_casts: !evaluation.show_casts, - } + | ShowCasts => {...evaluation, show_casts: !evaluation.show_casts} | ShowFixpoints => { ...evaluation, show_fixpoints: !evaluation.show_fixpoints, @@ -136,27 +133,15 @@ let update_settings = ...settings.explainThis, show: !settings.explainThis.show, }; - let settings = { - ...settings, - explainThis, - }; - { - ...model, - settings, - }; + let settings = {...settings, explainThis}; + {...model, settings}; | ExplainThis(ToggleShowFeedback) => let explainThis = { ...settings.explainThis, show_feedback: !settings.explainThis.show_feedback, }; - let settings = { - ...settings, - explainThis, - }; - { - ...model, - settings, - }; + let settings = {...settings, explainThis}; + {...model, settings}; | ExplainThis(SetHighlight(a)) => let highlight: ExplainThisModel.Settings.highlight = switch (a, settings.explainThis.highlight) { @@ -167,18 +152,9 @@ let update_settings = | (UnsetHover, All) => All | (UnsetHover, _) => NoHighlight }; - let explainThis = { - ...settings.explainThis, - highlight, - }; - let settings = { - ...settings, - explainThis, - }; - { - ...model, - settings, - }; + let explainThis = {...settings.explainThis, highlight}; + let settings = {...settings, explainThis}; + {...model, settings}; | Benchmark => { ...model, settings: { @@ -378,13 +354,13 @@ let to_persistent_documentation = { title: slide.title, description: slide.description, - hidden_tests: { + hidden_tests: // Persisting the tests correctly - - tests: - PersistentZipper.persist(slide.hidden_tests.tests.state.zipper), - hints: slide.hidden_tests.hints, - }, + { + tests: + PersistentZipper.persist(slide.hidden_tests.tests.state.zipper), + hints: slide.hidden_tests.hints, + }, }; }; @@ -492,22 +468,10 @@ let ui_state_update = (ui_state: Model.ui_state, update: set_meta, ~schedule_action as _) : Model.ui_state => { switch (update) { - | Mousedown => { - ...ui_state, - mousedown: true, - } - | Mouseup => { - ...ui_state, - mousedown: false, - } - | ShowBackpackTargets(b) => { - ...ui_state, - show_backpack_targets: b, - } - | FontMetrics(font_metrics) => { - ...ui_state, - font_metrics, - } + | Mousedown => {...ui_state, mousedown: true} + | Mouseup => {...ui_state, mousedown: false} + | ShowBackpackTargets(b) => {...ui_state, show_backpack_targets: b} + | FontMetrics(font_metrics) => {...ui_state, font_metrics} }; }; @@ -517,11 +481,7 @@ let apply = (model: Model.t, update: t, ~schedule_action): Result.t(Model.t) => Editors.perform_action(~settings=model.settings.core, model.editors, a) ) { | Error(err) => Error(err) - | Ok(editors) => - Ok({ - ...model, - editors, - }) + | Ok(editors) => Ok({...model, editors}) }; }; let m: Result.t(Model.t) = @@ -540,17 +500,11 @@ let apply = (model: Model.t, update: t, ~schedule_action): Result.t(Model.t) => | SetMeta(action) => let ui_state = ui_state_update(model.ui_state, action, ~schedule_action); - Ok({ - ...model, - ui_state, - }); + Ok({...model, ui_state}); | UpdateExplainThisModel(u) => let explainThisModel = ExplainThisUpdate.set_update(model.explainThisModel, u); - Model.save_and_return({ - ...model, - explainThisModel, - }); + Model.save_and_return({...model, explainThisModel}); | DebugConsole(key) => DebugConsole.print(model, key); Ok(model); @@ -579,10 +533,7 @@ let apply = (model: Model.t, update: t, ~schedule_action): Result.t(Model.t) => model.editors, data, ); - Model.save_and_return({ - ...model, - editors, - }); + Model.save_and_return({...model, editors}); | Export(ExportPersistentData) => Model.save(model); export_persistent_data(); @@ -613,10 +564,7 @@ let apply = (model: Model.t, update: t, ~schedule_action): Result.t(Model.t) => model.editors, ~instructor_mode, ); - Model.save_and_return({ - ...model, - editors, - }); + Model.save_and_return({...model, editors}); | SwitchScratchSlide(n) => let instructor_mode = model.settings.instructor_mode; switch ( @@ -628,49 +576,29 @@ let apply = (model: Model.t, update: t, ~schedule_action): Result.t(Model.t) => ) ) { | None => Error(FailedToSwitch) - | Some(editors) => - Model.save_and_return({ - ...model, - editors, - }) + | Some(editors) => Model.save_and_return({...model, editors}) }; | SwitchDocumentationSlide(name) => switch (Editors.switch_example_slide(model.editors, name)) { | None => Error(FailedToSwitch) - | Some(editors) => - Model.save_and_return({ - ...model, - editors, - }) + | Some(editors) => Model.save_and_return({...model, editors}) } | SwitchTutorialSlide(name) => switch (Editors.switch_example_slide(model.editors, name)) { | None => Error(FailedToSwitch) - | Some(editors) => - Model.save_and_return({ - ...model, - editors, - }) + | Some(editors) => Model.save_and_return({...model, editors}) } | SwitchEditor(pos) => let instructor_mode = model.settings.instructor_mode; switch (switch_exercise_editor(model.editors, ~pos, ~instructor_mode)) { | None => Error(FailedToSwitch) - | Some(editors) => - Ok({ - ...model, - editors, - }) + | Some(editors) => Ok({...model, editors}) }; | SwitchTutEditor(pos) => let instructor_mode = model.settings.instructor_mode; switch (switch_tut_editor(model.editors, ~pos, ~instructor_mode)) { | None => Error(FailedToSwitch) - | Some(editors) => - Ok({ - ...model, - editors, - }) + | Some(editors) => Ok({...model, editors}) }; | TAB => /* Attempt to act intelligently when TAB is pressed. @@ -692,20 +620,12 @@ let apply = (model: Model.t, update: t, ~schedule_action): Result.t(Model.t) => | Undo => switch (Editors.update_opt(model.editors, Editor.undo)) { | None => Error(CantUndo) - | Some(editors) => - Ok({ - ...model, - editors, - }) + | Some(editors) => Ok({...model, editors}) } | Redo => switch (Editors.update_opt(model.editors, Editor.redo)) { | None => Error(CantRedo) - | Some(editors) => - Ok({ - ...model, - editors, - }) + | Some(editors) => Ok({...model, editors}) } | Benchmark(Start) => List.iter(schedule_action, Benchmark.actions_1); @@ -719,19 +639,13 @@ let apply = (model: Model.t, update: t, ~schedule_action): Result.t(Model.t) => model.results |> ModelResults.find(key) |> ModelResult.step_forward(idx); - Ok({ - ...model, - results: model.results |> ModelResults.add(key, r), - }); + Ok({...model, results: model.results |> ModelResults.add(key, r)}); | StepperAction(key, StepBackward) => let r = model.results |> ModelResults.find(key) |> ModelResult.step_backward(~settings=model.settings.core.evaluation); - Ok({ - ...model, - results: model.results |> ModelResults.add(key, r), - }); + Ok({...model, results: model.results |> ModelResults.add(key, r)}); | ToggleStepper(key) => Ok({ ...model, @@ -750,10 +664,7 @@ let apply = (model: Model.t, update: t, ~schedule_action): Result.t(Model.t) => | UpdateResult(results) => let results = ModelResults.union((_, _a, b) => Some(b), model.results, results); - Ok({ - ...model, - results, - }); + Ok({...model, results}); }; m |> Result.map(~f=update_cached_data(~schedule_action, update)); }; diff --git a/src/haz3lweb/explainthis/Example.re b/src/haz3lweb/explainthis/Example.re index 94a3936e4f..9408167cf6 100644 --- a/src/haz3lweb/explainthis/Example.re +++ b/src/haz3lweb/explainthis/Example.re @@ -1,11 +1,7 @@ open Haz3lcore; let mk_secondary: string => Piece.t = - content => - Secondary({ - id: Id.mk(), - content: Whitespace(content), - }); + content => Secondary({id: Id.mk(), content: Whitespace(content)}); let mk_tile = Piece.mk_tile; @@ -32,22 +28,10 @@ let mk_parens_ancestor = mk_ancestor(Form.get("parens_exp")); let mk_let_ancestor = mk_ancestor(Form.get("let_")); let plus = mk_monotile(Form.get("plus")); -let l_sibling: Segment.t = [ - plus, - Grout({ - id: Id.mk(), - shape: Convex, - }), -]; +let l_sibling: Segment.t = [plus, Grout({id: Id.mk(), shape: Convex})]; let r_sibling: Segment.t = [mk_parens_exp([[int("1"), plus, int("2")]])]; -let content: Segment.t = [ - exp("foo"), - Grout({ - id: Id.mk(), - shape: Concave, - }), -]; +let content: Segment.t = [exp("foo"), Grout({id: Id.mk(), shape: Concave})]; let ancestors: Ancestors.t = [ (mk_parens_ancestor(([], [])), ([mk_fun([[pat("bar")]])], [])), diff --git a/src/haz3lweb/explainthis/ExplainThisModel.re b/src/haz3lweb/explainthis/ExplainThisModel.re index 4a769994fb..92ab95a342 100644 --- a/src/haz3lweb/explainthis/ExplainThisModel.re +++ b/src/haz3lweb/explainthis/ExplainThisModel.re @@ -61,18 +61,10 @@ module Settings = { | ToggleShowFeedback | SetHighlight(highlight_action); - let init = { - show: true, - show_feedback: false, - highlight: NoHighlight, - }; + let init = {show: true, show_feedback: false, highlight: NoHighlight}; }; -let init: t = { - specificity_open: false, - forms: [], - groups: [], -}; +let init: t = {specificity_open: false, forms: [], groups: []}; let get_explanation_feedback = (group_id: group_id, form_id: form_id, model: t): option(feedback_option) => { diff --git a/src/haz3lweb/explainthis/ExplainThisUpdate.re b/src/haz3lweb/explainthis/ExplainThisUpdate.re index f4da9fd836..8946a4818c 100644 --- a/src/haz3lweb/explainthis/ExplainThisUpdate.re +++ b/src/haz3lweb/explainthis/ExplainThisUpdate.re @@ -12,10 +12,7 @@ type update = let set_update = (explainThisModel: ExplainThisModel.t, u: update): ExplainThisModel.t => { switch (u) { - | SpecificityOpen(b) => { - ...explainThisModel, - specificity_open: b, - } + | SpecificityOpen(b) => {...explainThisModel, specificity_open: b} | ToggleExplanationFeedback(group_id, form_id, feedback_option) => let (pre, form, post) = ListUtil.split(explainThisModel.forms, f => @@ -32,10 +29,7 @@ let set_update = | (Some(ThumbsUp), ThumbsUp) | (Some(ThumbsDown), ThumbsDown) => None }; - { - ...form, - explanation_feedback: feedback, - }; + {...form, explanation_feedback: feedback}; | None => { group: group_id, form: form_id, @@ -43,10 +37,7 @@ let set_update = examples: [], } }; - { - ...explainThisModel, - forms: pre @ [form] @ post, - }; + {...explainThisModel, forms: pre @ [form] @ post}; | ToggleExampleFeedback(group_id, form_id, example_id, feedback_option) => let (pre_form, form, post_form) = ListUtil.split(explainThisModel.forms, f => @@ -64,60 +55,32 @@ let set_update = | (ThumbsUp, ThumbsDown) | (ThumbsDown, ThumbsUp) => pre_example - @ [ - { - ...example, - feedback: feedback_option, - }, - ] + @ [{...example, feedback: feedback_option}] @ post_example | (ThumbsUp, ThumbsUp) | (ThumbsDown, ThumbsDown) => pre_example @ post_example } | None => pre_example - @ [ - { - sub_id: example_id, - feedback: feedback_option, - }, - ] + @ [{sub_id: example_id, feedback: feedback_option}] @ post_example }; - { - ...form, - examples, - }; + {...form, examples}; | None => { group: group_id, form: form_id, explanation_feedback: None, - examples: [ - { - sub_id: example_id, - feedback: feedback_option, - }, - ], + examples: [{sub_id: example_id, feedback: feedback_option}], } }; - { - ...explainThisModel, - forms: pre_form @ [form] @ post_form, - }; + {...explainThisModel, forms: pre_form @ [form] @ post_form}; | UpdateGroupSelection(group_id, form_id) => let (pre_group, _group, post_group) = ListUtil.split(explainThisModel.groups, g => g.group == group_id); { ...explainThisModel, groups: - pre_group - @ [ - { - group: group_id, - selected: form_id, - }, - ] - @ post_group, + pre_group @ [{group: group_id, selected: form_id}] @ post_group, }; }; }; diff --git a/src/haz3lweb/explainthis/data/AppExp.re b/src/haz3lweb/explainthis/data/AppExp.re index 7591a8616e..9c737f39e6 100644 --- a/src/haz3lweb/explainthis/data/AppExp.re +++ b/src/haz3lweb/explainthis/data/AppExp.re @@ -87,17 +87,8 @@ let deferred_funapp_exp: form = { }; }; -let funaps: group = { - id: FunApExp, - forms: [funapp_exp], -}; +let funaps: group = {id: FunApExp, forms: [funapp_exp]}; -let conaps: group = { - id: ConApExp, - forms: [conapp_exp], -}; +let conaps: group = {id: ConApExp, forms: [conapp_exp]}; -let deferredaps: group = { - id: DeferredApExp, - forms: [deferred_funapp_exp], -}; +let deferredaps: group = {id: DeferredApExp, forms: [deferred_funapp_exp]}; diff --git a/src/haz3lweb/explainthis/data/AppPat.re b/src/haz3lweb/explainthis/data/AppPat.re index 405d3f46aa..86fde247af 100644 --- a/src/haz3lweb/explainthis/data/AppPat.re +++ b/src/haz3lweb/explainthis/data/AppPat.re @@ -19,7 +19,4 @@ let ap_pat: form = { }; }; -let ap: group = { - id: ApPat, - forms: [ap_pat], -}; +let ap: group = {id: ApPat, forms: [ap_pat]}; diff --git a/src/haz3lweb/explainthis/data/ArrowTyp.re b/src/haz3lweb/explainthis/data/ArrowTyp.re index 03871a8d89..e43ef6542c 100644 --- a/src/haz3lweb/explainthis/data/ArrowTyp.re +++ b/src/haz3lweb/explainthis/data/ArrowTyp.re @@ -51,12 +51,6 @@ let arrow3_typ: form = { }; }; -let arrow: group = { - id: ArrowTyp, - forms: [arrow_typ], -}; +let arrow: group = {id: ArrowTyp, forms: [arrow_typ]}; -let arrow3: group = { - id: Arrow3Typ, - forms: [arrow3_typ, arrow_typ], -}; +let arrow3: group = {id: Arrow3Typ, forms: [arrow3_typ, arrow_typ]}; diff --git a/src/haz3lweb/explainthis/data/CaseExp.re b/src/haz3lweb/explainthis/data/CaseExp.re index b671b6de8f..9510536976 100644 --- a/src/haz3lweb/explainthis/data/CaseExp.re +++ b/src/haz3lweb/explainthis/data/CaseExp.re @@ -63,7 +63,4 @@ let case_exp: form = { }; }; -let case: group = { - id: CaseExp, - forms: [case_exp], -}; +let case: group = {id: CaseExp, forms: [case_exp]}; diff --git a/src/haz3lweb/explainthis/data/ForallTyp.re b/src/haz3lweb/explainthis/data/ForallTyp.re index 6c66dd1cfa..09eca4e576 100644 --- a/src/haz3lweb/explainthis/data/ForallTyp.re +++ b/src/haz3lweb/explainthis/data/ForallTyp.re @@ -20,7 +20,4 @@ let forall_typ: form = { }; }; -let forall: group = { - id: ForallTyp, - forms: [forall_typ], -}; +let forall: group = {id: ForallTyp, forms: [forall_typ]}; diff --git a/src/haz3lweb/explainthis/data/FunctionExp.re b/src/haz3lweb/explainthis/data/FunctionExp.re index 223eb413e7..895f9d7db6 100644 --- a/src/haz3lweb/explainthis/data/FunctionExp.re +++ b/src/haz3lweb/explainthis/data/FunctionExp.re @@ -109,11 +109,7 @@ let function_exp: form = { }; }; -let _pat = - Piece.Grout({ - id: Id.mk(), - shape: Convex, - }); +let _pat = Piece.Grout({id: Id.mk(), shape: Convex}); let _exp = exp("e"); let function_empty_hole_exp_coloring_ids = _pat_body_function_exp_coloring_ids(Piece.id(_pat), Piece.id(_exp)); @@ -124,15 +120,7 @@ let function_empty_hole_exp: form = { id: FunctionExp(EmptyHole), syntactic_form: form, expandable_id: - Some(( - Piece.id(_pat), - [ - Grout({ - id: Id.mk(), - shape: Convex, - }), - ], - )), + Some((Piece.id(_pat), [Grout({id: Id.mk(), shape: Convex})])), explanation, examples: [basic_fun_ex], }; @@ -457,10 +445,7 @@ let function_ap_exp: form = { }; }; -let functions: group = { - id: FunctionExp(Base), - forms: [function_exp], -}; +let functions: group = {id: FunctionExp(Base), forms: [function_exp]}; let functions_empty_hole = { id: FunctionExp(EmptyHole), forms: [function_empty_hole_exp, function_exp], diff --git a/src/haz3lweb/explainthis/data/HoleExp.re b/src/haz3lweb/explainthis/data/HoleExp.re index 5c2ac9d064..25b31cfbda 100644 --- a/src/haz3lweb/explainthis/data/HoleExp.re +++ b/src/haz3lweb/explainthis/data/HoleExp.re @@ -3,15 +3,9 @@ open Example; let empty_hole_exp: form = HoleTemplate.empty_hole_template(exp, "an expression", EmptyHoleExp); -let empty_hole_exps = { - id: EmptyHoleExp, - forms: [empty_hole_exp], -}; +let empty_hole_exps = {id: EmptyHoleExp, forms: [empty_hole_exp]}; let multi_hole_exp: form = HoleTemplate.multi_hole_template(exp, MultiHoleExp); -let multi_hole_exps = { - id: MultiHoleExp, - forms: [multi_hole_exp], -}; +let multi_hole_exps = {id: MultiHoleExp, forms: [multi_hole_exp]}; diff --git a/src/haz3lweb/explainthis/data/HolePat.re b/src/haz3lweb/explainthis/data/HolePat.re index 635dea9fd5..68bf7f5523 100644 --- a/src/haz3lweb/explainthis/data/HolePat.re +++ b/src/haz3lweb/explainthis/data/HolePat.re @@ -5,12 +5,7 @@ let empty_hole_pat: form = { let explanation = "Expressions are not matched against the *empty hole pattern* until it is filled."; { id: EmptyHolePat, - syntactic_form: [ - Grout({ - id: Id.mk(), - shape: Convex, - }), - ], + syntactic_form: [Grout({id: Id.mk(), shape: Convex})], expandable_id: None, explanation, examples: [], @@ -28,12 +23,6 @@ let multi_hole_pat: form = { }; }; -let empty_hole: group = { - id: EmptyHolePat, - forms: [empty_hole_pat], -}; +let empty_hole: group = {id: EmptyHolePat, forms: [empty_hole_pat]}; -let multi_hole: group = { - id: MultiHolePat, - forms: [multi_hole_pat], -}; +let multi_hole: group = {id: MultiHolePat, forms: [multi_hole_pat]}; diff --git a/src/haz3lweb/explainthis/data/HoleTPat.re b/src/haz3lweb/explainthis/data/HoleTPat.re index fb3f848af9..edba184635 100644 --- a/src/haz3lweb/explainthis/data/HoleTPat.re +++ b/src/haz3lweb/explainthis/data/HoleTPat.re @@ -3,15 +3,9 @@ open Example; let empty_hole_tpat: form = HoleTemplate.empty_hole_template(tpat, "a type pattern", EmptyHoleTPat); -let empty_hole_tpats = { - id: EmptyHoleTPat, - forms: [empty_hole_tpat], -}; +let empty_hole_tpats = {id: EmptyHoleTPat, forms: [empty_hole_tpat]}; let multi_hole_tpat: form = HoleTemplate.multi_hole_template(tpat, MultiHoleTPat); -let multi_hole_tpats = { - id: MultiHoleTPat, - forms: [multi_hole_tpat], -}; +let multi_hole_tpats = {id: MultiHoleTPat, forms: [multi_hole_tpat]}; diff --git a/src/haz3lweb/explainthis/data/HoleTemplate.re b/src/haz3lweb/explainthis/data/HoleTemplate.re index 53ad6bb8ad..b3807ef827 100644 --- a/src/haz3lweb/explainthis/data/HoleTemplate.re +++ b/src/haz3lweb/explainthis/data/HoleTemplate.re @@ -9,12 +9,7 @@ let empty_hole_template = (_sort, str, id): form => { ); { id, - syntactic_form: [ - Grout({ - id: Id.mk(), - shape: Convex, - }), - ], + syntactic_form: [Grout({id: Id.mk(), shape: Convex})], expandable_id: None, explanation, examples: [], diff --git a/src/haz3lweb/explainthis/data/HoleTyp.re b/src/haz3lweb/explainthis/data/HoleTyp.re index cf160a8a3a..2ed387eaba 100644 --- a/src/haz3lweb/explainthis/data/HoleTyp.re +++ b/src/haz3lweb/explainthis/data/HoleTyp.re @@ -6,12 +6,7 @@ let empty_hole_typ: form = { let explanation = "This marks a type that needs to be filled in."; { id: EmptyHoleTyp, - syntactic_form: [ - Grout({ - id: Id.mk(), - shape: Convex, - }), - ], + syntactic_form: [Grout({id: Id.mk(), shape: Convex})], expandable_id: None, explanation, examples: [], @@ -30,12 +25,6 @@ let multi_hole_typ: form = { }; }; -let empty_hole: group = { - id: EmptyHoleTyp, - forms: [empty_hole_typ], -}; +let empty_hole: group = {id: EmptyHoleTyp, forms: [empty_hole_typ]}; -let multi_hole: group = { - id: MultiHoleTyp, - forms: [multi_hole_typ], -}; +let multi_hole: group = {id: MultiHoleTyp, forms: [multi_hole_typ]}; diff --git a/src/haz3lweb/explainthis/data/IfExp.re b/src/haz3lweb/explainthis/data/IfExp.re index 22d3efd5ff..88c469b311 100644 --- a/src/haz3lweb/explainthis/data/IfExp.re +++ b/src/haz3lweb/explainthis/data/IfExp.re @@ -39,7 +39,4 @@ let if_exp: form = { }; }; -let ifs: group = { - id: IfExp, - forms: [if_exp], -}; +let ifs: group = {id: IfExp, forms: [if_exp]}; diff --git a/src/haz3lweb/explainthis/data/LetExp.re b/src/haz3lweb/explainthis/data/LetExp.re index 3cea5eb882..59b6d41d98 100644 --- a/src/haz3lweb/explainthis/data/LetExp.re +++ b/src/haz3lweb/explainthis/data/LetExp.re @@ -119,11 +119,7 @@ let let_base_exp: form = { examples: [let_base_ex], }; }; -let _pat = - Piece.Grout({ - id: Id.mk(), - shape: Convex, - }); +let _pat = Piece.Grout({id: Id.mk(), shape: Convex}); let _exp_def = exp("e_def"); let let_empty_hole_exp_coloring_ids = _pat_def_let_exp_coloring_ids(Piece.id(_pat), Piece.id(_exp_def)); @@ -138,15 +134,7 @@ let let_empty_hole_exp: form = { id: LetExp(EmptyHole), syntactic_form: form, expandable_id: - Some(( - Piece.id(_pat), - [ - Grout({ - id: Id.mk(), - shape: Convex, - }), - ], - )), + Some((Piece.id(_pat), [Grout({id: Id.mk(), shape: Convex})])), explanation, examples: [let_base_ex], }; @@ -577,10 +565,7 @@ let lets_wild: group = { forms: [let_wild_exp, let_base_exp], }; -let lets_int: group = { - id: LetExp(Int), - forms: [let_int_exp, let_base_exp], -}; +let lets_int: group = {id: LetExp(Int), forms: [let_int_exp, let_base_exp]}; let lets_float: group = { id: LetExp(Float), @@ -617,10 +602,7 @@ let lets_cons: group = { forms: [let_cons_exp, let_base_exp], }; -let lets_var: group = { - id: LetExp(Var), - forms: [let_var_exp, let_base_exp], -}; +let lets_var: group = {id: LetExp(Var), forms: [let_var_exp, let_base_exp]}; let lets_tuple: group = { id: LetExp(Tuple), @@ -637,12 +619,6 @@ let lets_tuple3: group = { forms: [let_tuple3_exp, let_tuple_exp, let_base_exp], }; -let lets_ctr: group = { - id: LetExp(Ctr), - forms: [let_ctr_exp, let_base_exp], -}; +let lets_ctr: group = {id: LetExp(Ctr), forms: [let_ctr_exp, let_base_exp]}; -let lets_ap: group = { - id: LetExp(Ap), - forms: [let_ap_exp, let_base_exp], -}; +let lets_ap: group = {id: LetExp(Ap), forms: [let_ap_exp, let_base_exp]}; diff --git a/src/haz3lweb/explainthis/data/ListExp.re b/src/haz3lweb/explainthis/data/ListExp.re index e72cb780f6..2082fb41f1 100644 --- a/src/haz3lweb/explainthis/data/ListExp.re +++ b/src/haz3lweb/explainthis/data/ListExp.re @@ -70,17 +70,8 @@ let list_concat_exp: form = { }; }; -let listlits: group = { - id: ListExp, - forms: [list_exp], -}; +let listlits: group = {id: ListExp, forms: [list_exp]}; -let listcons: group = { - id: ConsExp, - forms: [cons_exp], -}; +let listcons: group = {id: ConsExp, forms: [cons_exp]}; -let listconcats: group = { - id: ListConcatExp, - forms: [list_concat_exp], -}; +let listconcats: group = {id: ListConcatExp, forms: [list_concat_exp]}; diff --git a/src/haz3lweb/explainthis/data/ListPat.re b/src/haz3lweb/explainthis/data/ListPat.re index 73be98b14a..4521b2bf04 100644 --- a/src/haz3lweb/explainthis/data/ListPat.re +++ b/src/haz3lweb/explainthis/data/ListPat.re @@ -64,22 +64,10 @@ let cons2_pat: form = { }; }; -let listlit: group = { - id: ListLitPat, - forms: [listlit_pat], -}; +let listlit: group = {id: ListLitPat, forms: [listlit_pat]}; -let listnil: group = { - id: ListNilPat, - forms: [listnil_pat], -}; +let listnil: group = {id: ListNilPat, forms: [listnil_pat]}; -let cons: group = { - id: ConsPat, - forms: [cons_base_pat], -}; +let cons: group = {id: ConsPat, forms: [cons_base_pat]}; -let cons2: group = { - id: Cons2Pat, - forms: [cons2_pat, cons_base_pat], -}; +let cons2: group = {id: Cons2Pat, forms: [cons2_pat, cons_base_pat]}; diff --git a/src/haz3lweb/explainthis/data/ListTyp.re b/src/haz3lweb/explainthis/data/ListTyp.re index 6a461c9e72..68634ea38b 100644 --- a/src/haz3lweb/explainthis/data/ListTyp.re +++ b/src/haz3lweb/explainthis/data/ListTyp.re @@ -18,7 +18,4 @@ let list_typ: form = { }; }; -let list: group = { - id: ListTyp, - forms: [list_typ], -}; +let list: group = {id: ListTyp, forms: [list_typ]}; diff --git a/src/haz3lweb/explainthis/data/OpExp.re b/src/haz3lweb/explainthis/data/OpExp.re index 5e1f27b066..04e3be4fcd 100644 --- a/src/haz3lweb/explainthis/data/OpExp.re +++ b/src/haz3lweb/explainthis/data/OpExp.re @@ -770,25 +770,13 @@ let int_un_minus: group = { forms: [int_unary_minus_exp], }; -let int_plus: group = { - id: BinOpExp(Int(Plus)), - forms: [int_plus_exp], -}; +let int_plus: group = {id: BinOpExp(Int(Plus)), forms: [int_plus_exp]}; -let int_minus: group = { - id: BinOpExp(Int(Minus)), - forms: [int_minus_exp], -}; +let int_minus: group = {id: BinOpExp(Int(Minus)), forms: [int_minus_exp]}; -let int_times: group = { - id: BinOpExp(Int(Times)), - forms: [int_times_exp], -}; +let int_times: group = {id: BinOpExp(Int(Times)), forms: [int_times_exp]}; -let int_power: group = { - id: BinOpExp(Int(Power)), - forms: [int_power_exp], -}; +let int_power: group = {id: BinOpExp(Int(Power)), forms: [int_power_exp]}; let int_divide: group = { id: BinOpExp(Int(Divide)), @@ -815,10 +803,7 @@ let int_greater_than_equal: group = { forms: [int_gte_exp], }; -let int_equal: group = { - id: BinOpExp(Int(Equals)), - forms: [int_eq_exp], -}; +let int_equal: group = {id: BinOpExp(Int(Equals)), forms: [int_eq_exp]}; let int_not_equal: group = { id: BinOpExp(Int(NotEquals)), @@ -880,15 +865,9 @@ let float_not_equal: group = { forms: [float_neq_exp], }; -let bool_and: group = { - id: BinOpExp(Bool(And)), - forms: [bool_and_exp], -}; +let bool_and: group = {id: BinOpExp(Bool(And)), forms: [bool_and_exp]}; -let bool_or: group = { - id: BinOpExp(Bool(Or)), - forms: [bool_or_exp], -}; +let bool_or: group = {id: BinOpExp(Bool(Or)), forms: [bool_or_exp]}; let string_equal: group = { id: BinOpExp(String(Equals)), diff --git a/src/haz3lweb/explainthis/data/RecTyp.re b/src/haz3lweb/explainthis/data/RecTyp.re index d11730d504..601f081602 100644 --- a/src/haz3lweb/explainthis/data/RecTyp.re +++ b/src/haz3lweb/explainthis/data/RecTyp.re @@ -25,7 +25,4 @@ let rec_typ: form = { }; }; -let rec_: group = { - id: RecTyp, - forms: [rec_typ], -}; +let rec_: group = {id: RecTyp, forms: [rec_typ]}; diff --git a/src/haz3lweb/explainthis/data/SeqExp.re b/src/haz3lweb/explainthis/data/SeqExp.re index e795d57495..a5f3513789 100644 --- a/src/haz3lweb/explainthis/data/SeqExp.re +++ b/src/haz3lweb/explainthis/data/SeqExp.re @@ -31,7 +31,4 @@ let seq_exp: form = { }; }; -let seqs: group = { - id: SeqExp, - forms: [seq_exp], -}; +let seqs: group = {id: SeqExp, forms: [seq_exp]}; diff --git a/src/haz3lweb/explainthis/data/TerminalExp.re b/src/haz3lweb/explainthis/data/TerminalExp.re index 536ec2c72a..4650c41f82 100644 --- a/src/haz3lweb/explainthis/data/TerminalExp.re +++ b/src/haz3lweb/explainthis/data/TerminalExp.re @@ -8,10 +8,7 @@ let triv_exp: form = { explanation: "The unique value of type `()`.", examples: [], }; -let triv_exps: group = { - id: TrivExp, - forms: [triv_exp], -}; +let triv_exps: group = {id: TrivExp, forms: [triv_exp]}; let deferral_exp_ex = { sub_id: Deferral, @@ -28,10 +25,7 @@ let deferral_exp: form = { explanation: "Marks an argument that has not yet been applied in a partial application.", examples: [deferral_exp_ex], }; -let deferral_exps: group = { - id: DeferralExp, - forms: [deferral_exp], -}; +let deferral_exps: group = {id: DeferralExp, forms: [deferral_exp]}; let bool_exp = (b: bool): form => { id: BoolExp, @@ -40,10 +34,7 @@ let bool_exp = (b: bool): form => { explanation: "A boolean literal, either `true` or `false`.", examples: [], }; -let bool_exps = (b: bool): group => { - id: BoolExp, - forms: [bool_exp(b)], -}; +let bool_exps = (b: bool): group => {id: BoolExp, forms: [bool_exp(b)]}; let int_exp = (n: int): form => { id: IntExp, @@ -52,10 +43,7 @@ let int_exp = (n: int): form => { explanation: "A signed integer literal.", examples: [], }; -let int_exps = (i: int): group => { - id: IntExp, - forms: [int_exp(i)], -}; +let int_exps = (i: int): group => {id: IntExp, forms: [int_exp(i)]}; let float_exp = (f: float): form => { id: FloatExp, @@ -88,10 +76,7 @@ let var_exp = (n: string): form => { explanation: "Takes the value of the expression that it was bound to.", examples: [], }; -let var_exps = (x: string): group => { - id: VarExp, - forms: [var_exp(x)], -}; +let var_exps = (x: string): group => {id: VarExp, forms: [var_exp(x)]}; let ctr_exp = (c: string): form => { id: CtrExp, @@ -100,7 +85,4 @@ let ctr_exp = (c: string): form => { explanation: "`%s` is a constructor for a sum type variant.", examples: [], }; -let ctr = (c: string): group => { - id: CtrExp, - forms: [ctr_exp(c)], -}; +let ctr = (c: string): group => {id: CtrExp, forms: [ctr_exp(c)]}; diff --git a/src/haz3lweb/explainthis/data/TerminalPat.re b/src/haz3lweb/explainthis/data/TerminalPat.re index 0387efbd7c..8ef7f78d84 100644 --- a/src/haz3lweb/explainthis/data/TerminalPat.re +++ b/src/haz3lweb/explainthis/data/TerminalPat.re @@ -88,42 +88,21 @@ let ctr_pat = (name: string): form => { }; }; -let wild: group = { - id: WildPat, - forms: [wild_pat], -}; +let wild: group = {id: WildPat, forms: [wild_pat]}; -let intlit = (i: int): group => { - id: IntPat, - forms: [intlit_pat(i)], -}; +let intlit = (i: int): group => {id: IntPat, forms: [intlit_pat(i)]}; let floatlit = (f: float): group => { id: FloatPat, forms: [floatlit_pat(f)], }; -let boollit = (b: bool): group => { - id: BoolPat, - forms: [boollit_pat(b)], -}; +let boollit = (b: bool): group => {id: BoolPat, forms: [boollit_pat(b)]}; -let strlit = (s: string): group => { - id: StrPat, - forms: [strlit_pat(s)], -}; +let strlit = (s: string): group => {id: StrPat, forms: [strlit_pat(s)]}; -let triv: group = { - id: TrivPat, - forms: [triv_pat], -}; +let triv: group = {id: TrivPat, forms: [triv_pat]}; -let var = (name: string): group => { - id: VarPat, - forms: [var_pat(name)], -}; +let var = (name: string): group => {id: VarPat, forms: [var_pat(name)]}; -let ctr = (name: string): group => { - id: CtrPat, - forms: [ctr_pat(name)], -}; +let ctr = (name: string): group => {id: CtrPat, forms: [ctr_pat(name)]}; diff --git a/src/haz3lweb/explainthis/data/TerminalTyp.re b/src/haz3lweb/explainthis/data/TerminalTyp.re index b1d6217bba..8566be4762 100644 --- a/src/haz3lweb/explainthis/data/TerminalTyp.re +++ b/src/haz3lweb/explainthis/data/TerminalTyp.re @@ -56,27 +56,12 @@ let var_typ = (name: string): form => { }; }; -let int: group = { - id: IntTyp, - forms: [int_typ], -}; +let int: group = {id: IntTyp, forms: [int_typ]}; -let float: group = { - id: FloatTyp, - forms: [float_typ], -}; +let float: group = {id: FloatTyp, forms: [float_typ]}; -let bool: group = { - id: BoolTyp, - forms: [bool_typ], -}; +let bool: group = {id: BoolTyp, forms: [bool_typ]}; -let str: group = { - id: StrTyp, - forms: [str_typ], -}; +let str: group = {id: StrTyp, forms: [str_typ]}; -let var = (name: string): group => { - id: VarTyp, - forms: [var_typ(name)], -}; +let var = (name: string): group => {id: VarTyp, forms: [var_typ(name)]}; diff --git a/src/haz3lweb/explainthis/data/TestExp.re b/src/haz3lweb/explainthis/data/TestExp.re index 3de68b0541..67b5021a0f 100644 --- a/src/haz3lweb/explainthis/data/TestExp.re +++ b/src/haz3lweb/explainthis/data/TestExp.re @@ -28,7 +28,4 @@ let test_exp: form = { }; }; -let tests: group = { - id: TestExp, - forms: [test_exp], -}; +let tests: group = {id: TestExp, forms: [test_exp]}; diff --git a/src/haz3lweb/explainthis/data/TupleExp.re b/src/haz3lweb/explainthis/data/TupleExp.re index d7efffe07b..0b3319e830 100644 --- a/src/haz3lweb/explainthis/data/TupleExp.re +++ b/src/haz3lweb/explainthis/data/TupleExp.re @@ -77,17 +77,8 @@ let tuple_exp_size3: form = { }; }; -let tuples: group = { - id: TupleExp, - forms: [tuple_exp], -}; +let tuples: group = {id: TupleExp, forms: [tuple_exp]}; -let tuples2: group = { - id: Tuple2Exp, - forms: [tuple_exp_size2, tuple_exp], -}; +let tuples2: group = {id: Tuple2Exp, forms: [tuple_exp_size2, tuple_exp]}; -let tuples3: group = { - id: Tuple3Exp, - forms: [tuple_exp_size3, tuple_exp], -}; +let tuples3: group = {id: Tuple3Exp, forms: [tuple_exp_size3, tuple_exp]}; diff --git a/src/haz3lweb/explainthis/data/TuplePat.re b/src/haz3lweb/explainthis/data/TuplePat.re index f3f2a18368..27fe9afffe 100644 --- a/src/haz3lweb/explainthis/data/TuplePat.re +++ b/src/haz3lweb/explainthis/data/TuplePat.re @@ -66,15 +66,6 @@ let tuple_pat_size3: form = { }; }; -let tuple: group = { - id: TuplePat, - forms: [tuple_pat], -}; -let tuple2: group = { - id: Tuple2Pat, - forms: [tuple_pat_size2, tuple_pat], -}; -let tuple3: group = { - id: Tuple3Pat, - forms: [tuple_pat_size3, tuple_pat], -}; +let tuple: group = {id: TuplePat, forms: [tuple_pat]}; +let tuple2: group = {id: Tuple2Pat, forms: [tuple_pat_size2, tuple_pat]}; +let tuple3: group = {id: Tuple3Pat, forms: [tuple_pat_size3, tuple_pat]}; diff --git a/src/haz3lweb/explainthis/data/TupleTyp.re b/src/haz3lweb/explainthis/data/TupleTyp.re index 811268c3ac..fd2b09d7ef 100644 --- a/src/haz3lweb/explainthis/data/TupleTyp.re +++ b/src/haz3lweb/explainthis/data/TupleTyp.re @@ -78,22 +78,10 @@ let tuple3_typ: form = { }; }; -let tuple: group = { - id: TupleTyp, - forms: [tuple_typ], -}; +let tuple: group = {id: TupleTyp, forms: [tuple_typ]}; -let tuple0: group = { - id: Tuple0Typ, - forms: [tuple0_typ], -}; +let tuple0: group = {id: Tuple0Typ, forms: [tuple0_typ]}; -let tuple2: group = { - id: Tuple2Typ, - forms: [tuple2_typ, tuple_typ], -}; +let tuple2: group = {id: Tuple2Typ, forms: [tuple2_typ, tuple_typ]}; -let tuple3: group = { - id: Tuple3Typ, - forms: [tuple3_typ, tuple_typ], -}; +let tuple3: group = {id: Tuple3Typ, forms: [tuple3_typ, tuple_typ]}; diff --git a/src/haz3lweb/explainthis/data/TyAliasExp.re b/src/haz3lweb/explainthis/data/TyAliasExp.re index 7efe249ab0..65cc234dfd 100644 --- a/src/haz3lweb/explainthis/data/TyAliasExp.re +++ b/src/haz3lweb/explainthis/data/TyAliasExp.re @@ -24,7 +24,4 @@ let tyalias_exp: form = { }; }; -let tyalias_exps: group = { - id: TyAliasExp, - forms: [tyalias_exp], -}; +let tyalias_exps: group = {id: TyAliasExp, forms: [tyalias_exp]}; diff --git a/src/haz3lweb/explainthis/data/TypAnnPat.re b/src/haz3lweb/explainthis/data/TypAnnPat.re index 876ab6fb47..fafc7bff27 100644 --- a/src/haz3lweb/explainthis/data/TypAnnPat.re +++ b/src/haz3lweb/explainthis/data/TypAnnPat.re @@ -19,7 +19,4 @@ let typann_pat: form = { }; }; -let typann: group = { - id: TypAnnPat, - forms: [typann_pat], -}; +let typann: group = {id: TypAnnPat, forms: [typann_pat]}; diff --git a/src/haz3lweb/explainthis/data/TypAppExp.re b/src/haz3lweb/explainthis/data/TypAppExp.re index afdeab9a87..5b1ad13106 100644 --- a/src/haz3lweb/explainthis/data/TypAppExp.re +++ b/src/haz3lweb/explainthis/data/TypAppExp.re @@ -28,7 +28,4 @@ let typfunapp_exp: form = { }; }; -let typfunaps: group = { - id: TypFunApExp, - forms: [typfunapp_exp], -}; +let typfunaps: group = {id: TypFunApExp, forms: [typfunapp_exp]}; diff --git a/src/haz3lweb/explainthis/data/TypFunctionExp.re b/src/haz3lweb/explainthis/data/TypFunctionExp.re index d35012be6e..93b7300b18 100644 --- a/src/haz3lweb/explainthis/data/TypFunctionExp.re +++ b/src/haz3lweb/explainthis/data/TypFunctionExp.re @@ -20,21 +20,10 @@ let typfun_var: form = { id: TypFunctionExp, syntactic_form: form, expandable_id: - Some(( - Piece.id(_tp), - [ - Grout({ - id: Id.mk(), - shape: Convex, - }), - ], - )), + Some((Piece.id(_tp), [Grout({id: Id.mk(), shape: Convex})])), explanation, examples: [poly_id_ex], }; }; -let type_functions_basic = { - id: TypFunctionExp, - forms: [typfun_var], -}; +let type_functions_basic = {id: TypFunctionExp, forms: [typfun_var]}; diff --git a/src/haz3lweb/explainthis/data/UndefinedExp.re b/src/haz3lweb/explainthis/data/UndefinedExp.re index d31b1806c8..71ff320576 100644 --- a/src/haz3lweb/explainthis/data/UndefinedExp.re +++ b/src/haz3lweb/explainthis/data/UndefinedExp.re @@ -30,7 +30,4 @@ let undefined_exp: form = { }; }; -let undefined_exps: group = { - id: UndefinedExp, - forms: [undefined_exp], -}; +let undefined_exps: group = {id: UndefinedExp, forms: [undefined_exp]}; diff --git a/src/haz3lweb/util/SegmentTree.re b/src/haz3lweb/util/SegmentTree.re index ba5c42c71f..dcccb72105 100644 --- a/src/haz3lweb/util/SegmentTree.re +++ b/src/haz3lweb/util/SegmentTree.re @@ -49,19 +49,10 @@ let mk = (values: list(float)) => { let mid = (a + b) / 2; Branch(lazy(mk_node(a, mid)), lazy(mk_node(mid, b))); }; - { - shape, - interval: (a, b), - count: 0, - status: Empty, - }; + {shape, interval: (a, b), count: 0, status: Empty}; }; - { - values, - ordinals, - root: mk_node(0, Array.length(values) - 1), - }; + {values, ordinals, root: mk_node(0, Array.length(values) - 1)}; }; let update_status = (node: node): node => { @@ -78,10 +69,7 @@ let update_status = (node: node): node => { } }; }; - { - ...node, - status, - }; + {...node, status}; }; type op = @@ -124,10 +112,7 @@ let perform = (op, (a, b): interval, tree: t): t => { let mid = (a' + b') / 2; let l = a >= mid ? l : (lazy(go(op, interval, Lazy.force(l)))); let r = b <= mid ? r : (lazy(go(op, interval, Lazy.force(r)))); - { - ...node, - shape: Branch(l, r), - }; + {...node, shape: Branch(l, r)}; }; }; update_status(node); @@ -147,10 +132,7 @@ let perform = (op, (a, b): interval, tree: t): t => { | (Some(a), Some(b)) => let interval = a < b ? (a, b) : (b, a); let new_root = go(op, interval, tree.root); - { - ...tree, - root: new_root, - }; + {...tree, root: new_root}; }; }; let insert = perform(Insert); diff --git a/src/haz3lweb/util/SvgUtil.re b/src/haz3lweb/util/SvgUtil.re index 255675590a..0b28cf9836 100644 --- a/src/haz3lweb/util/SvgUtil.re +++ b/src/haz3lweb/util/SvgUtil.re @@ -48,32 +48,16 @@ module Path = { let cmdfudge = (~x=0., ~y=0., c: cmd): cmd => { let (h, v) = (x, y); switch (c) { - | M({x, y}) => - M({ - x: x +. h, - y: y +. v, - }) - | L({x, y}) => - L({ - x: x +. h, - y: y +. v, - }) + | M({x, y}) => M({x: x +. h, y: y +. v}) + | L({x, y}) => L({x: x +. h, y: y +. v}) | H({x}) => H({x: x +. h}) | V({y}) => V({y: y +. v}) | _ => c }; }; - let m = (~x, ~y) => - M({ - x: Float.of_int(x), - y: Float.of_int(y), - }); - let l_ = (~dx, ~dy) => - L_({ - dx: Float.of_int(dx), - dy: Float.of_int(dy), - }); + let m = (~x, ~y) => M({x: Float.of_int(x), y: Float.of_int(y)}); + let l_ = (~dx, ~dy) => L_({dx: Float.of_int(dx), dy: Float.of_int(dy)}); let h = (~x) => H({x: Float.of_int(x)}); let h_ = (~dx) => H_({dx: Float.of_int(dx)}); let v = (~y) => V({y: Float.of_int(y)}); @@ -82,16 +66,8 @@ module Path = { let scale_cmd = (~scale_x=1., ~scale_y=1.) => fun | (Z | M(_) | L(_) | H(_) | V(_) | A_(_)) as cmd => cmd - | M_({dx, dy}) => - M_({ - dx: scale_x *. dx, - dy: scale_y *. dy, - }) - | L_({dx, dy}) => - L_({ - dx: scale_x *. dx, - dy: scale_y *. dy, - }) + | M_({dx, dy}) => M_({dx: scale_x *. dx, dy: scale_y *. dy}) + | L_({dx, dy}) => L_({dx: scale_x *. dx, dy: scale_y *. dy}) | H_({dx}) => H_({dx: scale_x *. dx}) | V_({dy}) => V_({dy: scale_y *. dy}); @@ -104,16 +80,8 @@ module Path = { let translate_cmd = (v: Vector.t) => fun | (Z | M_(_) | L_(_) | H_(_) | V_(_) | A_(_)) as cmd => cmd - | M({x, y}) => - M({ - x: x +. v.dx, - y: y +. v.dy, - }) - | L({x, y}) => - L({ - x: x +. v.dx, - y: y +. v.dy, - }) + | M({x, y}) => M({x: x +. v.dx, y: y +. v.dy}) + | L({x, y}) => L({x: x +. v.dx, y: y +. v.dy}) | H({x}) => H({x: x +. v.dx}) | V({y}) => V({y: y +. v.dy}); let translate = v => List.map(translate_cmd(v)); @@ -269,13 +237,7 @@ module OrthogonalPolygon = { | [] => [v] | [hd, ...tl] as stack => if (v.src.x == hd.dst.x && v.src.y >= hd.dst.y) { - [ - { - ...hd, - dst: v.dst, - }, - ...tl, - ]; + [{...hd, dst: v.dst}, ...tl]; } else { [v, ...stack]; } @@ -299,13 +261,7 @@ module OrthogonalPolygon = { | [] => [v] | [hd, ...tl] as stack => if (v.src.x == hd.dst.x && v.src.y <= hd.dst.y) { - [ - { - ...hd, - dst: v.dst, - }, - ...tl, - ]; + [{...hd, dst: v.dst}, ...tl]; } else { [v, ...stack]; } @@ -325,21 +281,9 @@ module OrthogonalPolygon = { |> List.map((Rect.{min, width, height}) => { let max_x = min.x +. width; let max_y = min.y +. height; - let max = - Point.{ - x: max_x, - y: max_y, - }; - let min_max = - Point.{ - x: min.x, - y: max_y, - }; - let max_min = - Point.{ - x: max_x, - y: min.y, - }; + let max = Point.{x: max_x, y: max_y}; + let min_max = Point.{x: min.x, y: max_y}; + let max_min = Point.{x: max_x, y: min.y}; [ { // left sides point in negative direction @@ -389,21 +333,9 @@ module OrthogonalPolygon = { let x = v.src.x; let ys = (v.src.y, v.dst.y); let mk_contour_edge = ((y_src, y_dst)) => { - let src = - Point.{ - x, - y: y_src, - }; - let dst = - Point.{ - x, - y: y_dst, - }; - { - src, - dst, - next: None, - }; + let src = Point.{x, y: y_src}; + let dst = Point.{x, y: y_dst}; + {src, dst, next: None}; }; if (is_left_side(v)) { let new_contour_edges = @@ -467,21 +399,9 @@ module OrthogonalPolygon = { is_src1 ? (pt2.x, pt1.x, v2, v1) : (pt1.x, pt2.x, v1, v2); let h = { - let src = - Point.{ - x: x_src, - y, - }; - let dst = - Point.{ - x: x_dst, - y, - }; - { - src, - dst, - next: Some(next), - }; + let src = Point.{x: x_src, y}; + let dst = Point.{x: x_dst, y}; + {src, dst, next: Some(next)}; }; prev.next = Some(h); }); diff --git a/src/haz3lweb/util/WeakMap.re b/src/haz3lweb/util/WeakMap.re index d6ce44487c..a3ab0951a9 100644 --- a/src/haz3lweb/util/WeakMap.re +++ b/src/haz3lweb/util/WeakMap.re @@ -48,10 +48,7 @@ type t('k, 'v) = { }; let mk = (): t('k, 'v) => { - { - primitive_keys: JsMap.mk(), - non_primitive_keys: JsWeakMap.mk(), - }; + {primitive_keys: JsMap.mk(), non_primitive_keys: JsWeakMap.mk()}; }; let get = (t: t('k, 'v), k: 'k): option('v) => { diff --git a/src/haz3lweb/view/BackpackView.re b/src/haz3lweb/view/BackpackView.re index b8bd289e2d..3acdcb8c3f 100644 --- a/src/haz3lweb/view/BackpackView.re +++ b/src/haz3lweb/view/BackpackView.re @@ -171,17 +171,11 @@ let view = let genie_view = DecUtil.code_svg( ~font_metrics, - ~origin={ - row: 0, - col: 0, - }, + ~origin={row: 0, col: 0}, ~base_cls=["restructuring-genie"], ~path_cls=["backpack-genie"], SvgUtil.Path.[ - M({ - x: 0., - y: 0., - }), + M({x: 0., y: 0.}), V({y: (-1.0)}), H_({dx: Float.of_int(length)}), V_({dy: 0.0}), diff --git a/src/haz3lweb/view/Cell.re b/src/haz3lweb/view/Cell.re index a158434abb..65c01e1a6f 100644 --- a/src/haz3lweb/view/Cell.re +++ b/src/haz3lweb/view/Cell.re @@ -271,10 +271,7 @@ let editor_view = /* For exercises modes */ switch (override_statics) { | None => editor.state.meta - | Some(statics) => { - ...editor.state.meta, - statics, - } + | Some(statics) => {...editor.state.meta, statics} }; let mousedown_overlay = selected && mousedown diff --git a/src/haz3lweb/view/Deco.re b/src/haz3lweb/view/Deco.re index 54ba1d11c6..a616fe9eb0 100644 --- a/src/haz3lweb/view/Deco.re +++ b/src/haz3lweb/view/Deco.re @@ -167,21 +167,11 @@ module HighlightSegment = |> ListUtil.split_at_nones |> ListUtil.first_and_last |> List.map((((m1, (l1, _)), (m2, (_, r2)))) => - ( - Measured.{ - origin: m1.origin, - last: m2.last, - }, - (l1, r2), - ) + (Measured.{origin: m1.origin, last: m2.last}, (l1, r2)) ) |> List.map(((measurement, tips)) => PieceDec.simple_shard( - { - font_metrics: M.font_metrics, - measurement, - tips, - }, + {font_metrics: M.font_metrics, measurement, tips}, classes, ) ); @@ -218,14 +208,7 @@ module Deco = | Some((_, side, _)) => Direction.toggle(side) | _ => Right }; - CaretDec.view( - ~font_metrics, - ~profile={ - side, - origin, - shape, - }, - ); + CaretDec.view(~font_metrics, ~profile={side, origin, shape}); }; let segment_selected = (z: Zipper.t) => @@ -333,10 +316,7 @@ module Deco = p, M.meta.syntax.measured, ); - Measured.{ - origin: m.origin, - last: m.origin, - }; + Measured.{origin: m.origin, last: m.origin}; | (Some(p), _) => let m = Measured.find_p( @@ -344,16 +324,9 @@ module Deco = p, M.meta.syntax.measured, ); - Measured.{ - origin: m.last, - last: m.last, - }; - }; - let profile = - CaretPosDec.Profile.{ - style: `Sibling, - measurement, + Measured.{origin: m.last, last: m.last}; }; + let profile = CaretPosDec.Profile.{style: `Sibling, measurement}; [CaretPosDec.view(~font_metrics, profile)]; }; }); @@ -415,10 +388,7 @@ module Deco = [m(~x=l.col, ~y=l.row), ...r_edge] @ l_edge @ [Z] - |> translate({ - dx: Float.of_int(- l.col), - dy: Float.of_int(- l.row), - }); + |> translate({dx: Float.of_int(- l.col), dy: Float.of_int(- l.row)}); (l, r, path) |> deco; }; @@ -427,10 +397,7 @@ module Deco = term_decoration(~id, ((origin, last, path)) => DecUtil.code_svg_sized( ~font_metrics, - ~measurement={ - origin, - last, - }, + ~measurement={origin, last}, ~base_cls=clss, path, ) diff --git a/src/haz3lweb/view/ProjectorView.re b/src/haz3lweb/view/ProjectorView.re index 21891bd398..1669ff136d 100644 --- a/src/haz3lweb/view/ProjectorView.re +++ b/src/haz3lweb/view/ProjectorView.re @@ -130,11 +130,7 @@ let setup_view = let* p = Id.Map.find_opt(id, meta.syntax.projectors); let* syntax = Some(p.syntax); let ci = Id.Map.find_opt(id, meta.statics.info_map); - let info = { - id, - ci, - syntax, - }; + let info = {id, ci, syntax}; let+ measurement = Measured.find_pr_opt(p, meta.syntax.measured); let (module P) = to_module(p.kind); let parent = a => inject(PerformAction(Project(handle(id, a)))); diff --git a/src/haz3lweb/view/dec/DecUtil.re b/src/haz3lweb/view/dec/DecUtil.re index 3e057aa078..d4d3492946 100644 --- a/src/haz3lweb/view/dec/DecUtil.re +++ b/src/haz3lweb/view/dec/DecUtil.re @@ -38,16 +38,7 @@ let caret_run = (shape: option(Direction.t)) => }; let chevronf = (run: float, rise: float): list(SvgUtil.Path.cmd) => - SvgUtil.Path.[ - L_({ - dx: -. run, - dy: rise, - }), - L_({ - dx: +. run, - dy: rise, - }), - ]; + SvgUtil.Path.[L_({dx: -. run, dy: rise}), L_({dx: +. run, dy: rise})]; let chevron = (direction: option(Direction.t), drawing_from: Direction.t) => chevronf(caret_run(direction), drawing_from == Left ? (-0.5) : 0.5); @@ -56,14 +47,7 @@ let chonky_shard_path_base = ((l, r), x_offset, length: float, height: float): list(SvgUtil.Path.cmd) => { List.flatten( SvgUtil.Path.[ - [ - M({ - x: -. x_offset, - y: 0., - }), - H_({dx: length}), - V({y: height}), - ], + [M({x: -. x_offset, y: 0.}), H_({dx: length}), V({y: height})], chevron(r, Right), [H_({dx: -. length}), v(~y=1)], chevron(l, Left), @@ -113,12 +97,7 @@ type fdims = { top: float, }; -let fzero: fdims = { - width: 0., - height: 0., - left: 0., - top: 0., -}; +let fzero: fdims = {width: 0., height: 0., left: 0., top: 0.}; let pos_str = (~d: dims, ~fudge: fdims=fzero, font_metrics: FontMetrics.t) => Printf.sprintf( @@ -153,15 +132,7 @@ let code_svg_sized = paths: list(SvgUtil.Path.cmd), ) => { let d = abs_dims(measurement); - let d = - absolute - ? d - : { - left: 0, - top: 0, - width: d.width, - height: d.height, - }; + let d = absolute ? d : {left: 0, top: 0, width: d.width, height: d.height}; create_svg( "svg", ~attrs=[ diff --git a/src/haz3lweb/view/dec/Diag.re b/src/haz3lweb/view/dec/Diag.re index f1f13b704c..a145c9d0e9 100644 --- a/src/haz3lweb/view/dec/Diag.re +++ b/src/haz3lweb/view/dec/Diag.re @@ -11,10 +11,7 @@ type tip_shape = (Haz3lcore.Nib.t, int); let tr_bl = ( ~scale as s=1., - ~hemi: [ - | `North - | `South - ], + ~hemi: [ | `North | `South], ~with_child_border=false, ~stretch_x=0., ~stretch_y=0., @@ -24,17 +21,11 @@ let tr_bl = let (diag, junction) = with_child_border ? ( - L_({ - dx: Float.neg(short_tip_width), - dy: short_tip_height, - }), + L_({dx: Float.neg(short_tip_width), dy: short_tip_height}), H_({dx: Float.neg(0.5 -. short_tip_width)}), ) : ( - L_({ - dx: Float.neg(tip_width), - dy: 0.5 +. stretch_y, - }), + L_({dx: Float.neg(tip_width), dy: 0.5 +. stretch_y}), H_({dx: Float.neg(stretch_x)}), ); let path = @@ -47,10 +38,7 @@ let tr_bl = // bottom left to top right let bl_tr = ( - ~hemi: [ - | `North - | `South - ], + ~hemi: [ | `North | `South], ~with_child_border=false, ~stretch_x=0., ~stretch_y=0., @@ -63,10 +51,7 @@ let bl_tr = // top left to bottom right let tl_br = ( - ~hemi: [ - | `North - | `South - ], + ~hemi: [ | `North | `South], ~with_child_border=false, ~stretch_x=0., ~stretch_y=0., @@ -76,19 +61,10 @@ let tl_br = let (diag, junction) = with_child_border ? ( - L_({ - dx: short_tip_width, - dy: short_tip_height, - }), + L_({dx: short_tip_width, dy: short_tip_height}), H_({dx: 0.5 -. short_tip_width}), ) - : ( - L_({ - dx: tip_width, - dy: 0.5 +. stretch_y, - }), - H_({dx: stretch_x}), - ); + : (L_({dx: tip_width, dy: 0.5 +. stretch_y}), H_({dx: stretch_x})); switch (hemi) { | `North => [junction, diag] | `South => [diag, junction] @@ -97,10 +73,7 @@ let tl_br = // bottom right to top left let br_tl = ( - ~hemi: [ - | `North - | `South - ], + ~hemi: [ | `North | `South], ~with_child_border=false, ~stretch_x=0., ~stretch_y=0., @@ -118,18 +91,9 @@ let left_tip_path = br_tl(~hemi=`South, ()) @ bl_tr(~hemi=`North, ()) | ({shape: Concave(_a), _}, n) => let jag = [ - L_({ - dx: -. jagged_edge_w, - dy: -. jagged_edge_h, - }), - L_({ - dx: jagged_edge_w, - dy: -. jagged_edge_h, - }), - L_({ - dx: -. jagged_edge_w, - dy: -. jagged_edge_h, - }), + L_({dx: -. jagged_edge_w, dy: -. jagged_edge_h}), + L_({dx: jagged_edge_w, dy: -. jagged_edge_h}), + L_({dx: -. jagged_edge_w, dy: -. jagged_edge_h}), ]; let bottom_half = n == 0 @@ -162,18 +126,9 @@ let right_tip_path = | ({shape: Concave(_a), _}, n) => open SvgUtil.Path; let jag = [ - L_({ - dx: jagged_edge_w, - dy: jagged_edge_h, - }), - L_({ - dx: -. jagged_edge_w, - dy: jagged_edge_h, - }), - L_({ - dx: jagged_edge_w, - dy: jagged_edge_h, - }), + L_({dx: jagged_edge_w, dy: jagged_edge_h}), + L_({dx: -. jagged_edge_w, dy: jagged_edge_h}), + L_({dx: jagged_edge_w, dy: jagged_edge_h}), ]; let top_half = n == 0 || n == 1 diff --git a/src/haz3lweb/view/dec/EmptyHoleDec.re b/src/haz3lweb/view/dec/EmptyHoleDec.re index b451a329c9..99fc194837 100644 --- a/src/haz3lweb/view/dec/EmptyHoleDec.re +++ b/src/haz3lweb/view/dec/EmptyHoleDec.re @@ -13,10 +13,7 @@ let path = (tip_l, tip_r, offset, s: float) => { List.concat( SvgUtil.Path.[ [ - M({ - x: offset +. 0.5, - y: 0.5 -. s /. 2., - }), + M({x: offset +. 0.5, y: 0.5 -. s /. 2.}), H_({dx: x_dilate *. s /. 2.}), ], Diag.right_tip_path(~scale_x=s *. x_dilate, ~scale_y=s, (tip_r, 0)), @@ -33,14 +30,8 @@ let view = (~font_metrics, {measurement, mold}: Profile.t): Node.t => { let (tip_l, tip_r): (Haz3lcore.Nib.Shape.t, Haz3lcore.Nib.Shape.t) = Util.TupleUtil.map2(Haz3lcore.Nib.shape, mold.nibs); let (tip_l, tip_r): (Haz3lcore.Nib.t, Haz3lcore.Nib.t) = ( - { - sort, - shape: tip_l, - }, - { - sort, - shape: tip_r, - }, + {sort, shape: tip_l}, + {sort, shape: tip_r}, ); DecUtil.code_svg_sized( ~font_metrics, diff --git a/src/haz3lweb/view/dec/PieceDec.re b/src/haz3lweb/view/dec/PieceDec.re index 0fe36ad755..4dc9465520 100644 --- a/src/haz3lweb/view/dec/PieceDec.re +++ b/src/haz3lweb/view/dec/PieceDec.re @@ -146,12 +146,7 @@ let bi_lines = ( l.origin, SvgUtil.Path.[ - shadowfudge( - M({ - x: offset, - y: 1.0, - }), - ), + shadowfudge(M({x: offset, y: 1.0})), H({x: length}), ], ); @@ -171,12 +166,7 @@ let bi_lines = ( origin, SvgUtil.Path.[ - shadowfudge( - M({ - x: offset, - y: 1.0, - }), - ), + shadowfudge(M({x: offset, y: 1.0})), h_(~dx=indent - origin.col), shadowfudge(v_(~dy=origin'.row - origin.row + v_delta)), h_(~dx=origin'.col - indent), @@ -232,17 +222,9 @@ let uni_lines = ? ( m_first.origin, [ - shadowfudge( - M({ - x: 0., - y: 1.0, - }), - ), + shadowfudge(M({x: 0., y: 1.0})), h(~x=l.col - m_first.origin.col), - L_({ - dx: -. hook_dx, - dy: -. hook_dy, - }), + L_({dx: -. hook_dx, dy: -. hook_dy}), ], ) : ( @@ -256,12 +238,7 @@ let uni_lines = shadowfudge(v(~y=l.row - m_last_of_first.origin.row)), ] : [ - shadowfudge( - M({ - x: offset, - y: 1.0, - }), - ), + shadowfudge(M({x: offset, y: 1.0})), h(~x=indent - m_first.origin.col), shadowfudge(v(~y=l.row + 1 - m_first.origin.row)), h(~x=max_col - m_first.origin.col), @@ -270,10 +247,7 @@ let uni_lines = ) @ [ h(~x=l.col - m_first.origin.col), - L_({ - dx: -. hook_dx, - dy: hook_dy, - }), + L_({dx: -. hook_dx, dy: hook_dy}), ], ), ]; @@ -283,12 +257,7 @@ let uni_lines = }; let r_line = { let (_, m_last) = ListUtil.last(shards); - let hook = [ - L_({ - dx: hook_dx, - dy: -. hook_dy, - }), - ]; + let hook = [L_({dx: hook_dx, dy: -. hook_dy})]; if (r.row == m_last.last.row && r.col > m_last.last.col) { [ ( diff --git a/src/haz3lweb/view/dhcode/DHCode.re b/src/haz3lweb/view/dhcode/DHCode.re index 5834e6353a..b28f9e18bf 100644 --- a/src/haz3lweb/view/dhcode/DHCode.re +++ b/src/haz3lweb/view/dhcode/DHCode.re @@ -106,11 +106,7 @@ let view_of_layout = ~font_metrics, ~height=MeasuredLayout.height(m), ~width=MeasuredLayout.width(~offset, m), - ~origin= - MeasuredPosition.{ - row: start.row, - col: indent, - }, + ~origin=MeasuredPosition.{row: start.row, col: indent}, ~cls="err-hole", [DHDecoration.ErrHole.view(~corner_radii, (offset, m))], ); diff --git a/src/haz3lweb/view/dhcode/Decoration_common.re b/src/haz3lweb/view/dhcode/Decoration_common.re index 38d45bf1a0..2be3d88be8 100644 --- a/src/haz3lweb/view/dhcode/Decoration_common.re +++ b/src/haz3lweb/view/dhcode/Decoration_common.re @@ -127,10 +127,7 @@ let rects = |> List.fold_left_map( (start: MeasuredPosition.t, (i, box: MeasuredLayout.box)) => ( - { - row: start.row + box.height, - col: indent, - }, + {row: start.row + box.height, col: indent}, mk_rect(~is_first=i == 0, ~is_last=i == n - 1, start, box), ), start, @@ -147,13 +144,7 @@ module ErrHole = { ) : Node.t => subject - |> rects( - ~vtrim, - { - row: 0, - col: offset, - }, - ) + |> rects(~vtrim, {row: 0, col: offset}) |> SvgUtil.OrthogonalPolygon.mk(~corner_radii) |> SvgUtil.Path.view( ~attrs= @@ -173,13 +164,7 @@ module VarErrHole = { ) : Node.t => subject - |> rects( - ~vtrim, - { - row: 0, - col: offset, - }, - ) + |> rects(~vtrim, {row: 0, col: offset}) |> SvgUtil.OrthogonalPolygon.mk(~corner_radii) |> SvgUtil.Path.view( ~attrs= diff --git a/src/pretty/Cost.re b/src/pretty/Cost.re index b8e0ca4c80..87822f8808 100644 --- a/src/pretty/Cost.re +++ b/src/pretty/Cost.re @@ -15,15 +15,9 @@ let mk_height = (height_cost: int): t => mk(~overflow_cost=0, ~height_cost); let mk_overflow = (overflow_cost: int): t => mk(~overflow_cost, ~height_cost=0); -let zero: t = { - overflow_cost: 0, - height_cost: 0, -}; +let zero: t = {overflow_cost: 0, height_cost: 0}; -let inf: t = { - overflow_cost: max_int, - height_cost: max_int, -}; +let inf: t = {overflow_cost: max_int, height_cost: max_int}; let add = (c1: t, c2: t): t => { overflow_cost: c1.overflow_cost + c2.overflow_cost, diff --git a/src/pretty/Doc.re b/src/pretty/Doc.re index ede6ffd420..15d3ca6ffc 100644 --- a/src/pretty/Doc.re +++ b/src/pretty/Doc.re @@ -27,10 +27,7 @@ and t'('annot) = | Fail // identity for `Choice` | Choice(t('annot), t('annot)); -let t_of_t' = (t': t'('annot)): t('annot) => { - mem: M.create(0), - doc: t', -}; +let t_of_t' = (t': t'('annot)): t('annot) => {mem: M.create(0), doc: t'}; let text = (s: string) => t_of_t'(Text(s)); let linebreak = () => t_of_t'(Linebreak); diff --git a/src/pretty/MeasuredLayout.re b/src/pretty/MeasuredLayout.re index cf1db89e51..2c2ed6f375 100644 --- a/src/pretty/MeasuredLayout.re +++ b/src/pretty/MeasuredLayout.re @@ -68,10 +68,7 @@ let next_position = } ); }; - { - row: updated_row, - col: updated_col, - }; + {row: updated_row, col: updated_col}; }; let pos_fold = @@ -117,21 +114,10 @@ module Make = (MemoTbl: MemoTbl.S) => { let m = switch (l) { | Linebreak => - let box = { - height: 1, - width: 0, - }; - { - metrics: [box, box], - layout: Linebreak, - }; + let box = {height: 1, width: 0}; + {metrics: [box, box], layout: Linebreak}; | Text(s) => { - metrics: [ - { - height: 1, - width: Unicode.length(s), - }, - ], + metrics: [{height: 1, width: Unicode.length(s)}], layout: Text(s), } | Align(l) => @@ -140,19 +126,10 @@ module Make = (MemoTbl: MemoTbl.S) => { m.metrics |> List.fold_left( ({height: bh, width: bw}, {height, width}) => - { - height: bh + height, - width: max(bw, width), - }, - { - height: 0, - width: 0, - }, + {height: bh + height, width: max(bw, width)}, + {height: 0, width: 0}, ); - { - metrics: [bounding_box], - layout: Align(m), - }; + {metrics: [bounding_box], layout: Align(m)}; | Cat(l1, l2) => let m1 = mk(l1); let m2 = mk(l2); @@ -162,16 +139,10 @@ module Make = (MemoTbl: MemoTbl.S) => { height: max(last.height, first.height), width: last.width + first.width, }; - { - metrics: leading @ [mid_box, ...trailing], - layout: Cat(m1, m2), - }; + {metrics: leading @ [mid_box, ...trailing], layout: Cat(m1, m2)}; | Annot(annot, l) => let m = mk(l); - { - ...m, - layout: Annot(annot, m), - }; + {...m, layout: Annot(annot, m)}; }; MemoTbl.set(table, Obj.magic(l), Obj.magic(m)); m; diff --git a/src/pretty/MeasuredLayout.rei b/src/pretty/MeasuredLayout.rei index 07dce28a91..428cbb85e6 100644 --- a/src/pretty/MeasuredLayout.rei +++ b/src/pretty/MeasuredLayout.rei @@ -75,15 +75,14 @@ let pos_fold: ~align: (MeasuredPosition.t, 'acc) => 'acc, ~cat: (MeasuredPosition.t, 'acc, 'acc) => 'acc, // let client control recursion based on annotation - ~annot: - ( - ~go: t('annot) => 'acc, - ~indent: int, - ~start: MeasuredPosition.t, - 'annot, - t('annot) - ) => - 'acc, + ~annot: ( + ~go: t('annot) => 'acc, + ~indent: int, + ~start: MeasuredPosition.t, + 'annot, + t('annot) + ) => + 'acc, ~indent: int=?, ~start: MeasuredPosition.t=?, t('annot) diff --git a/src/pretty/MeasuredPosition.re b/src/pretty/MeasuredPosition.re index 221e7da9d8..a9f6ccb25f 100644 --- a/src/pretty/MeasuredPosition.re +++ b/src/pretty/MeasuredPosition.re @@ -15,7 +15,4 @@ let compare = (pos1, pos2) => Int.compare(pos1.col, pos2.col); }; -let zero = { - row: 0, - col: 0, -}; +let zero = {row: 0, col: 0}; diff --git a/src/util/Point.re b/src/util/Point.re index d48a5e230f..6a8f80b698 100644 --- a/src/util/Point.re +++ b/src/util/Point.re @@ -11,10 +11,7 @@ type t = { row, col, }; -let zero = { - row: 0, - col: 0, -}; +let zero = {row: 0, col: 0}; let equals: (t, t) => bool = (p, q) => p.row == q.row && p.col == q.col; diff --git a/src/util/Web.re b/src/util/Web.re index d9dca338d7..358b1327d3 100644 --- a/src/util/Web.re +++ b/src/util/Web.re @@ -65,17 +65,11 @@ module TextArea = { let caret_pos = (textarea: t): pos => { let rec find_position = (lines, cur_pos, row, col) => { switch (lines) { - | [] => { - row, - col, - } + | [] => {row, col} | [line, ...rest] => let line_length = String.length(line); if (cur_pos <= line_length) { - { - row, - col: cur_pos, - }; + {row, col: cur_pos}; } else { find_position(rest, cur_pos - line_length - 1, row + 1, 0); }; diff --git a/test/Test_Elaboration.re b/test/Test_Elaboration.re index f482c76823..c515487535 100644 --- a/test/Test_Elaboration.re +++ b/test/Test_Elaboration.re @@ -11,29 +11,16 @@ let mk_map = Statics.mk(CoreSettings.on, Builtins.ctx_init); let dhexp_of_uexp = u => Elaborator.elaborate(mk_map(u), u) |> fst; let alco_check = dhexp_typ |> Alcotest.check; -let u1: Exp.t = { - ids: [id_at(0)], - term: Int(8), - copied: false, -}; +let u1: Exp.t = {ids: [id_at(0)], term: Int(8), copied: false}; let single_integer = () => alco_check("Integer literal 8", u1, dhexp_of_uexp(u1)); -let u2: Exp.t = { - ids: [id_at(0)], - term: EmptyHole, - copied: false, -}; +let u2: Exp.t = {ids: [id_at(0)], term: EmptyHole, copied: false}; let empty_hole = () => alco_check("Empty hole", u2, dhexp_of_uexp(u2)); let u3: Exp.t = { ids: [id_at(0)], - term: - Parens({ - ids: [id_at(1)], - term: Var("y"), - copied: false, - }), + term: Parens({ids: [id_at(1)], term: Var("y"), copied: false}), copied: false, }; From e4330cf42dc058a15337cd2a34872880a09f7913 Mon Sep 17 00:00:00 2001 From: reevafaisal Date: Tue, 12 Nov 2024 14:13:21 -0500 Subject: [PATCH 06/11] added grading module - still buggy --- src/haz3lschool/GradePrelude.re | 10 + src/haz3lschool/Tutorial.re | 61 +++- src/haz3lschool/TutorialGradescope.re | 133 +++++++++ src/haz3lschool/TutorialGrading.re | 145 +++++++++ src/haz3lweb/SlideContent.re | 4 +- src/haz3lweb/Store.re | 2 +- src/haz3lweb/TutorialGrading.re | 415 ++++++++++++++++++++++++++ src/haz3lweb/view/TestView.re | 24 ++ src/haz3lweb/view/TutorialMode.re | 51 +++- 9 files changed, 829 insertions(+), 16 deletions(-) create mode 100644 src/haz3lschool/TutorialGradescope.re create mode 100644 src/haz3lschool/TutorialGrading.re create mode 100644 src/haz3lweb/TutorialGrading.re diff --git a/src/haz3lschool/GradePrelude.re b/src/haz3lschool/GradePrelude.re index a45b34fa15..9b20655790 100644 --- a/src/haz3lschool/GradePrelude.re +++ b/src/haz3lschool/GradePrelude.re @@ -4,6 +4,16 @@ module ExerciseEnv = { let output_header = Exercise.output_header_grading; }; +module TutorialEnv = { + type node = unit; + let default = (); + let output_header = Tutorial.output_header_grading; +}; + +module Tutorial = Tutorial.D(TutorialEnv); + +module GradingT = TutorialGrading.D(TutorialEnv); + module Exercise = Exercise.F(ExerciseEnv); module Grading = Grading.F(ExerciseEnv); diff --git a/src/haz3lschool/Tutorial.re b/src/haz3lschool/Tutorial.re index 719842c7f1..8292af2764 100644 --- a/src/haz3lschool/Tutorial.re +++ b/src/haz3lschool/Tutorial.re @@ -64,13 +64,33 @@ module D = (TutorialEnv: TutorialEnv) => { p.title; }; - let find_key_opt = (key, specs: list(p('code))) => { - specs |> Util.ListUtil.findi_opt(spec => key_of(spec) == key); + // let find_key_opt = (key, specs: list(p('code))) => { + // specs |> Util.ListUtil.findi_opt(spec => key_of(spec) == key); + // }; + + let find_key_opt = + (key, specs: list(p('code))): option((string, p('code))) => { + let rec loop = remaining_specs => { + switch (remaining_specs) { + | [] => None + | [spec, ...rest] => + if (key_of(spec) == key) { + Some + ((key_of(spec), spec)); // Return as soon as we find a match + } else { + loop( + rest // Continue searching in the remaining specs + ); + } + }; + }; + loop(specs); // Start looping over `specs` }; [@deriving (show({with_path: false}), sexp, yojson)] type pos = | YourImpl + | YourTestsValidation | HiddenTests; [@deriving (show({with_path: false}), sexp, yojson)] @@ -114,6 +134,7 @@ module D = (TutorialEnv: TutorialEnv) => { ({pos, eds, _}) => switch (pos) { | YourImpl => eds.your_impl + | YourTestsValidation => eds.hidden_tests.tests | HiddenTests => eds.hidden_tests.tests }; @@ -126,6 +147,7 @@ module D = (TutorialEnv: TutorialEnv) => { your_impl: editor, }, } + | YourTestsValidation | HiddenTests => { ...state, eds: { @@ -143,7 +165,7 @@ module D = (TutorialEnv: TutorialEnv) => { eds.hidden_tests.tests, ]; - let editor_positions = [YourImpl, HiddenTests]; + let editor_positions = [YourImpl, HiddenTests, YourTestsValidation]; let positioned_editors = state => List.combine(editor_positions, editors(state)); @@ -151,8 +173,8 @@ module D = (TutorialEnv: TutorialEnv) => { let idx_of_pos = (pos, p: p('code)) => switch (pos) { | YourImpl => 0 - - | HiddenTests => 0 + List.length(p.hidden_tests.tests) // NEED TO FIGURE OUT HOW TO ACTUALLY MAKE THIS WORK + | YourTestsValidation => 1 + | HiddenTests => 1 + List.length(p.hidden_tests.tests) }; let pos_of_idx = (p: p('code), idx: int) => @@ -242,6 +264,7 @@ module D = (TutorialEnv: TutorialEnv) => { let visible_in = (pos, ~instructor_mode) => { switch (pos) { | YourImpl => true + | YourTestsValidation => true | HiddenTests => instructor_mode }; }; @@ -323,6 +346,7 @@ module D = (TutorialEnv: TutorialEnv) => { // }; type stitched('a) = { + test_validation: 'a, // prelude + correct_impl + your_tests user_impl: 'a, // prelude + your_impl instructor: 'a, // prelude + correct_impl + hidden_tests.tests // TODO only needs to run in instructor mode hidden_tests: 'a, @@ -369,12 +393,18 @@ module D = (TutorialEnv: TutorialEnv) => { let user_impl_term = { eds.your_impl |> term_of |> wrap_filter(FilterAction.Step); }; + let test_validation_term = eds.hidden_tests.tests |> term_of; // No combining of your_impl_term with hidden_tests let hidden_tests_term = EditorUtil.append_exp(user_impl_term, term_of(eds.hidden_tests.tests)); - {user_impl: user_impl_term, instructor, hidden_tests: hidden_tests_term}; + { + user_impl: user_impl_term, + instructor, + test_validation: test_validation_term, + hidden_tests: hidden_tests_term, + }; }; let stitch_term = Core.Memo.general(stitch_term); @@ -395,6 +425,7 @@ module D = (TutorialEnv: TutorialEnv) => { }; let instructor = mk(t.instructor); { + test_validation: mk(t.test_validation), user_impl: mk(t.user_impl), instructor, hidden_tests: mk(t.hidden_tests), @@ -427,18 +458,20 @@ module D = (TutorialEnv: TutorialEnv) => { let key_for_statics = (state: state): string => switch (state.pos) { | YourImpl => user_impl_key + | YourTestsValidation => test_validation_key | HiddenTests => hidden_tests_key }; let spliced_elabs = (settings: CoreSettings.t, state: state) : list((ModelResults.key, Elaborator.Elaboration.t)) => { - let {user_impl, instructor, hidden_tests} = + let {test_validation, user_impl, instructor, hidden_tests} = stitch_static(settings, stitch_term(state)); let elab = (s: Editor.CachedStatics.t): Elaborator.Elaboration.t => { d: Interface.elaborate(~settings, s.info_map, s.term), }; [ + (test_validation_key, elab(test_validation)), (user_impl_key, elab(user_impl)), (instructor_key, elab(instructor)), (hidden_tests_key, elab(hidden_tests)), @@ -467,6 +500,7 @@ module D = (TutorialEnv: TutorialEnv) => { (state: state, s: stitched(DynamicsItem.t)): Editor.CachedStatics.t => switch (state.pos) { | YourImpl => s.user_impl.statics + | YourTestsValidation => s.test_validation.statics | HiddenTests => s.hidden_tests.statics }; @@ -481,7 +515,7 @@ module D = (TutorialEnv: TutorialEnv) => { ) : stitched(DynamicsItem.t) => { let { - // test_validation, + test_validation, user_impl, // user_tests, // prelude, @@ -497,6 +531,11 @@ module D = (TutorialEnv: TutorialEnv) => { ModelResults.lookup(results, key) |> Option.value(~default=ModelResult.NoElab) }; + let test_validation = + DynamicsItem.{ + statics: test_validation, + result: result_of(test_validation_key), + }; let user_impl = DynamicsItem.{statics: user_impl, result: result_of(user_impl_key)}; @@ -510,7 +549,7 @@ module D = (TutorialEnv: TutorialEnv) => { result: result_of(hidden_tests_key), }; { - // test_validation, + test_validation, user_impl, // user_tests, instructor, @@ -532,7 +571,7 @@ module D = (TutorialEnv: TutorialEnv) => { } else if (settings.statics) { let t = stitch_static(settings, stitch_term(state)); { - // test_validation: DynamicsItem.statics_only(t.test_validation), + test_validation: DynamicsItem.statics_only(t.test_validation), user_impl: DynamicsItem.statics_only(t.user_impl), // user_tests: DynamicsItem.statics_only(t.user_tests), instructor: DynamicsItem.statics_only(t.instructor), @@ -542,7 +581,7 @@ module D = (TutorialEnv: TutorialEnv) => { }; } else { { - // test_validation: DynamicsItem.empty, + test_validation: DynamicsItem.empty, user_impl: DynamicsItem.empty, // user_tests: DynamicsItem.empty, instructor: DynamicsItem.empty, diff --git a/src/haz3lschool/TutorialGradescope.re b/src/haz3lschool/TutorialGradescope.re new file mode 100644 index 0000000000..a0ba449e94 --- /dev/null +++ b/src/haz3lschool/TutorialGradescope.re @@ -0,0 +1,133 @@ +open Haz3lcore; +open Util; + +// open Haz3lschool; +open Core; + +open Specs; +open GradePrelude.Tutorial; +open GradePrelude.GradingT; + +[@deriving (sexp, yojson)] +type item = { + max: int, + percentage, + src: string, +}; + +let item_to_summary = (name, {max, percentage, src}) => + Printf.sprintf( + "%s: %.1f/%.1f\n\n", + name, + percentage *. float_of_int(max), + float_of_int(max), + ) + ++ ( + if (String.equal(src, "")) { + ""; + } else { + "Source Code:\n\n" ++ src ++ "\n\n"; + } + ); + +[@deriving (sexp, yojson)] +type report = { + summary: string, + overall: score, +}; + +[@deriving (sexp, yojson)] +type section = { + name: string, + report, +}; + +[@deriving (sexp, yojson)] +type chapter = list(section); + +module Main = { + let settings = CoreSettings.on; /* Statics and Dynamics on */ + let name_to_tutorial_export = path => { + let yj = Yojson.Safe.from_file(path); + switch (yj) { + | `Assoc(l) => + let sch = List.Assoc.find_exn(~equal=String.(==), l, "school"); + switch (sch) { + | `String(sch) => + let exercise_export = sch |> deserialize_exercise_export; + { + cur_exercise: exercise_export.cur_exercise, + exercise_data: exercise_export.exercise_data // Ensure this is list((key, persistent_state)) + }; + | _ => failwith("School is not a string") + }; + | _ => failwith("Json without school key") + }; + }; + let gen_grading_report = exercise => { + let zipper_pp = zipper => { + Printer.pretty_print(zipper); + }; + let model_results = + spliced_elabs(settings, exercise) + |> ModelResults.init_eval + |> ModelResults.run_pending(~settings); + let stitched_dynamics = + stitch_dynamic(settings, exercise, Some(model_results)); + let grading_report = exercise.eds |> GradingReport.mk(~stitched_dynamics); + let details = grading_report; + + let impl_grading = { + max: 100, // Set fixed maximum score + src: exercise.eds.your_impl.state.zipper |> zipper_pp, + percentage: ImplGradingReport.percentage(details.impl_grading_report), + }; + + let overall = grading_report |> GradingReport.overall_score; + let (a, b) = overall; + let summary = + Printf.sprintf("Overall: %.1f/%.1f\n\n", a, b) + ++ item_to_summary("Impl Grading", impl_grading); + {summary, overall}; + }; + + let create_section = (item): section => { + // Separate `key` and `persistent_state` within the function + let key = fst(item); + let persistent_state = snd(item); + + switch (find_key_opt(key, specs)) { + | Some((name, spec)) => + // Unpersist the state for the exercise + let exercise = + unpersist_state( + persistent_state, + ~settings, + ~spec, + ~instructor_mode=true, + ); + + // Generate the grading report for this exercise + let report = gen_grading_report(exercise); + + // Return a `section` record + {name, report}; + | None => failwith("Invalid spec") + }; + }; + + let run = () => { + let hw_path = Sys.get_argv()[1]; + let hw = name_to_tutorial_export(hw_path); + + let export_chapter: list(section) = + List.map(~f=item => create_section(item), hw.exercise_data); + + export_chapter + |> yojson_of_chapter + |> Yojson.Safe.pretty_to_string + |> print_endline; + }; +}; + +Main.run(); diff --git a/src/haz3lschool/TutorialGrading.re b/src/haz3lschool/TutorialGrading.re new file mode 100644 index 0000000000..bcf3368660 --- /dev/null +++ b/src/haz3lschool/TutorialGrading.re @@ -0,0 +1,145 @@ +open Haz3lcore; +open Util; + +module D = (TutorialEnv: Tutorial.TutorialEnv) => { + open Tutorial.D(TutorialEnv); + + [@deriving (show({with_path: false}), sexp, yojson)] + type percentage = float; + [@deriving (show({with_path: false}), sexp, yojson)] + type points = float; + [@deriving (show({with_path: false}), sexp, yojson)] + type score = (points, points); + + let score_of_percent = (percent, max_points) => { + let max_points = float_of_int(max_points); + (percent *. max_points, max_points); + }; + + module ImplGradingReport = { + type t = { + hints: list(string), + test_results: option(TestResults.t), + hinted_results: list((TestStatus.t, string)), + }; + + let mk = (~hints: list(string), ~test_results: option(TestResults.t)): t => { + let hinted_results = + switch (test_results) { + | Some(test_results) => + let statuses = test_results.statuses; + Util.ListUtil.zip_defaults( + statuses, + hints, + Haz3lcore.TestStatus.Indet, + "No hint available.", + ); + + | None => + Util.ListUtil.zip_defaults( + [], + hints, + Haz3lcore.TestStatus.Indet, + "Exercise configuration error: Hint without a test.", + ) + }; + {hints, test_results, hinted_results}; + }; + + let total = (report: t) => List.length(report.hinted_results); + let num_passed = (report: t) => { + report.hinted_results + |> List.find_all(((status, _)) => status == TestStatus.Pass) + |> List.length; + }; + + let percentage = (report: t): float => { + let passed = float_of_int(num_passed(report)); + let total = float_of_int(total(report)); + if (total == 0.0) { + 0.0; // Avoid division by zero + } else { + 100.0 *. (passed /. total); // Return percentage as a float + }; + }; + + let test_summary_str = (test_results: TestResults.t) => { + TestResults.result_summary_str( + ~n=test_results.total, + ~p=test_results.failing, + ~q=test_results.unfinished, + ~n_str="test", + ~ns_str="tests", + ~p_str="failing", + ~q_str="indeterminate", + ~r_str="valid", + ); + }; + }; + + module GradingReport = { + type t = { + // point_distribution, + // test_validation_report: TestValidationReport.t, + // mutation_testing_report: MutationTestingReport.t, + // syntax_report: SyntaxReport.t, + impl_grading_report: ImplGradingReport.t, + }; + + let mk = (eds: eds, ~stitched_dynamics: stitched(DynamicsItem.t)) => { + // point_distribution: eds.point_distribution, + // test_validation_report: + // TestValidationReport.mk( + // eds, + // ModelResult.test_results(stitched_dynamics.test_validation.result), + // ), + // mutation_testing_report: + // MutationTestingReport.mk( + // ~test_validation=stitched_dynamics.test_validation, + // ~hidden_bugs_state=eds.hidden_bugs, + // ~hidden_bugs=stitched_dynamics.hidden_bugs, + // ), + // syntax_report: + // SyntaxReport.mk(~your_impl=eds.your_impl, ~tests=eds.syntax_tests), + impl_grading_report: + ImplGradingReport.mk( + ~hints=eds.hidden_tests.hints, + ~test_results= + ModelResult.test_results(stitched_dynamics.hidden_tests.result), + ), + }; + + let overall_score = + ( + { + // point_distribution, + // test_validation_report, + // mutation_testing_report, + // syntax_report, + impl_grading_report, + _, + }: t, + ) + : score => { + // let (tv_points, tv_max) = + // score_of_percent( + // TestValidationReport.percentage(test_validation_report), + // point_distribution.test_validation, + // ); + // let (mt_points, mt_max) = + // score_of_percent( + // MutationTestingReport.percentage(mutation_testing_report), + // point_distribution.mutation_testing, + // ); + let max_impl_grading = 100; + let (ig_points, ig_max) = + score_of_percent( + ImplGradingReport.percentage(impl_grading_report), + max_impl_grading, + ); + let total_points = ig_points; + let max_points = ig_max; + (total_points, max_points); + }; + }; +}; diff --git a/src/haz3lweb/SlideContent.re b/src/haz3lweb/SlideContent.re index 7d2788cee7..64fb87922d 100644 --- a/src/haz3lweb/SlideContent.re +++ b/src/haz3lweb/SlideContent.re @@ -23,10 +23,10 @@ let em = content => span(~attrs=[Attr.class_("em")], [text(content)]); let get_content = fun - | Tutorial("Expressive Programming", _) => + | Tutorial("Programming Expressively", _) => Some( slide( - "Expressive Programming", + "Programming Expressively", [ p([ text( diff --git a/src/haz3lweb/Store.re b/src/haz3lweb/Store.re index 11510a2844..594b1e6856 100644 --- a/src/haz3lweb/Store.re +++ b/src/haz3lweb/Store.re @@ -401,7 +401,7 @@ module Tutorial = { let tutorial_state: Tutorial.state = { pos: YourImpl, eds: { - title: status.title, + title: "", description: status.description, your_impl: your_impl_editor, hidden_tests: { diff --git a/src/haz3lweb/TutorialGrading.re b/src/haz3lweb/TutorialGrading.re new file mode 100644 index 0000000000..a1ef89fdac --- /dev/null +++ b/src/haz3lweb/TutorialGrading.re @@ -0,0 +1,415 @@ +open Virtual_dom.Vdom; +// open Util; +open Node; + +include Haz3lschool.TutorialGrading.D(Tutorial.TutorialEnv); + +let score_view = ((earned: points, max: points)) => { + div( + ~attrs=[ + Attr.classes([ + "test-percent", + Float.equal(earned, max) ? "all-pass" : "some-fail", + ]), + ], + [text(Printf.sprintf("%.1f / %.1f pts", earned, max))], + ); +}; + +let percentage_view = (p: percentage) => { + div( + ~attrs=[ + Attr.classes([ + "test-percent", + Float.equal(p, 1.) ? "all-pass" : "some-fail", + ]), + ], + [text(Printf.sprintf("%.0f%%", 100. *. p))], + ); +}; + +module TestValidationReport = { + include ImplGradingReport; + // let textual_summary = (report: t) => { + // switch (report.test_results) { + // | None => [Node.text("No test results")] + // | Some(test_results) => [ + // { + // let total_tests = test_results.total; + // // let required = report.required; + // let num_tests_message = + // total_tests >= required + // ? "at least " ++ string_of_int(required) + // : string_of_int(test_results.total) + // ++ " of " + // ++ string_of_int(report.required); + // text( + // "Entered " + // ++ num_tests_message + // ++ " tests. " + // ++ test_summary_str(test_results), + // ); + // }, + // ] + // }; + // }; + + let view = (~inject, report: t, max_points: int) => { + Cell.report_footer_view([ + div( + ~attrs=[Attr.classes(["test-summary"])], + [ + div( + ~attrs=[Attr.class_("test-text")], + [score_view(score_of_percent(percentage(report), max_points))], + // @ textual_summary(report), + ), + ] + @ Option.to_list( + report.test_results + |> Option.map(test_results => + TestView.test_bar( + ~inject, + ~test_results, + YourTestsValidation, + ) + ), + ), + ), + ]); + }; +}; + +// module MutationTestingReport = { +// // include MutationTestingReport; +// open Haz3lcore; + +// let summary_message = (~score, ~total, ~found): Node.t => +// div( +// ~attrs=[Attr.classes(["test-text"])], +// [score_view(score), text(summary_str(~total, ~found))], +// ); + +// let bar = (~inject, instances) => +// div( +// ~attrs=[Attr.classes(["test-bar"])], +// List.mapi( +// (id, (status, _)) => +// div( +// ~attrs=[ +// Attr.classes(["segment", TestStatus.to_string(status)]), +// Attr.on_click( +// //TODO: wire up test ids +// TestView.jump_to_test(~inject, HiddenBugs(id), Id.invalid), +// ), +// ], +// [], +// ), +// instances, +// ), +// ); + +// let summary = (~inject, ~report, ~max_points) => { +// let total = List.length(report.results); +// let found = +// List.length( +// List.filter(((x: TestStatus.t, _)) => x == Pass, report.results), +// ); +// let status_class = total == found ? "Pass" : "Fail"; +// div( +// ~attrs=[ +// Attr.classes([ +// "cell-item", +// "test-summary", +// "cell-report", +// status_class, +// ]), +// ], +// [ +// summary_message( +// ~score=score_of_percent(percentage(report), max_points), +// ~total, +// ~found, +// ), +// bar(~inject, report.results), +// ], +// ); +// }; + +// let individual_report = (id, ~inject, ~hint: string, ~status: TestStatus.t) => +// div( +// ~attrs=[ +// Attr.classes(["test-report"]), +// //TODO: wire up test ids +// Attr.on_click( +// TestView.jump_to_test(~inject, HiddenBugs(id), Id.invalid), +// ), +// ], +// [ +// div( +// ~attrs=[ +// Attr.classes([ +// "test-id", +// "Test" ++ TestStatus.to_string(status), +// ]), +// ], +// /* NOTE: prints lexical index, not unique id */ +// [text(string_of_int(id + 1))], +// ), +// // TestView.test_instance_view(~font_metrics, instance), +// ] +// @ [ +// div( +// ~attrs=[ +// Attr.classes([ +// "test-hint", +// "test-instance", +// TestStatus.to_string(status), +// ]), +// ], +// [text(hint)], +// ), +// ], +// ); + +// let individual_reports = (~inject, coverage_results) => +// div( +// coverage_results +// |> List.mapi((i, (status, hint)) => +// individual_report(i, ~inject, ~hint, ~status) +// ), +// ); + +// let view = (~inject, report: t, max_points: int) => +// if (max_points == 0) { +// Node.div([]); +// } else { +// Cell.panel( +// ~classes=["test-panel"], +// [ +// Cell.caption( +// "Mutation Testing", +// ~rest=": Your Tests vs. Buggy Implementations (hidden)", +// ), +// individual_reports(~inject, report.results), +// ], +// ~footer=Some(summary(~inject, ~report, ~max_points)), +// ); +// }; +// }; + +// module SyntaxReport = { +// include SyntaxReport; +// let individual_report = (i: int, hint: string, status: bool) => { +// let result_string = status ? "Pass" : "Indet"; + +// div( +// ~attrs=[Attr.classes(["test-report"])], +// [ +// div( +// ~attrs=[Attr.classes(["test-id", "Test" ++ result_string])], +// [text(string_of_int(i + 1))], +// ), +// ] +// @ [ +// div( +// ~attrs=[ +// Attr.classes(["test-hint", "test-instance", result_string]), +// ], +// [text(hint)], +// ), +// ], +// ); +// }; + +// let individual_reports = (hinted_results: list((bool, string))) => { +// div( +// hinted_results +// |> List.mapi((i, (status, hint)) => +// individual_report(i, hint, status) +// ), +// ); +// }; + +// let view = (syntax_report: t) => { +// Cell.panel( +// ~classes=["test-panel"], +// [ +// Cell.caption( +// "Syntax Validation", +// ~rest= +// ": Does your implementation satisfy the syntactic requirements?", +// ), +// individual_reports(syntax_report.hinted_results), +// ], +// ~footer= +// Some( +// Cell.report_footer_view([ +// div( +// ~attrs=[Attr.classes(["test-summary"])], +// [ +// div( +// ~attrs=[Attr.class_("test-text")], +// [ +// percentage_view(syntax_report.percentage), +// text( +// " of the Implementation Validation points will be earned", +// ), +// ], +// ), +// ], +// ), +// ]), +// ), +// ); +// }; +// }; + +module ImplGradingReport = { + open Haz3lcore; + include ImplGradingReport; + let textual_summary = (report: t) => { + switch (report.test_results) { + | None => [Node.text("No test results")] + | Some(test_results) => [ + { + text(test_summary_str(test_results)); + }, + ] + }; + }; + + // let summary = (~inject, ~report, ~max_points) => { + // let percentage = percentage(report); + // let score = score_of_percent(percentage); + // let total = total(report); + // let num_passed = num_passed(report); + // let status_class = total == num_passed ? "Pass" : "Fail"; + // div( + // ~attrs= + // Attr.classes([ + // "cell-item", + // "test-summary", + // "cell-report", + // status_class, + // ]), + // [ + // summary_message( + // ~score, + // ~total, + // ~found=num_passed, + // ), + // bar(~inject, report.results), + // ], + // ); + // }; + + let individual_report = (i, ~inject, ~hint: string, ~status, (id, _)) => + div( + ~attrs=[ + Attr.classes(["test-report"]), + Attr.on_click( + TestView.jump_to_test_tutorial(~inject, Tutorial.HiddenTests, id), + ), + ], + [ + div( + ~attrs=[ + Attr.classes([ + "test-id", + "Test" ++ TestStatus.to_string(status), + ]), + ], + /* NOTE: prints lexical index, not unique id */ + [text(string_of_int(i + 1))], + ), + // TestView.test_instance_view(~font_metrics, instance), + ] + @ [ + div( + ~attrs=[ + Attr.classes([ + "test-hint", + "test-instance", + TestStatus.to_string(status), + ]), + ], + [text(hint)], + ), + ], + ); + + let individual_reports = (~inject, ~report) => { + switch (report.test_results) { + | Some(test_results) + when + List.length(test_results.test_map) + == List.length(report.hinted_results) => + /* NOTE: This condition will be false when evaluation crashes, + * for example due to a stack overflow, which may occur in normal operation */ + div( + report.hinted_results + |> List.mapi((i, (status, hint)) => + individual_report( + i, + ~inject, + ~hint, + ~status, + List.nth(test_results.test_map, i), + ) + ), + ) + | _ => div([]) + }; + }; + + let view = (~inject, ~report: t, ~max_points: int) => { + Cell.panel( + ~classes=["cell-item", "panel", "test-panel"], + [ + Cell.caption( + "Implementation Grading", + ~rest=": Hidden Tests vs. Your Implementation", + ), + individual_reports(~inject, ~report), + ], + ~footer= + Some( + Cell.report_footer_view([ + div( + ~attrs=[Attr.classes(["test-summary"])], + [ + div( + ~attrs=[Attr.class_("test-text")], + [ + score_view( + score_of_percent(percentage(report), max_points), + ), + ] + @ textual_summary(report), + ), + ] + @ Option.to_list( + report.test_results + |> Option.map(test_results => + TestView.test_bar_tutorial( + ~inject, + ~test_results, + Tutorial.HiddenTests, + ) + ), + ), + ), + ]), + ), + ); + }; +}; + +module GradingReport = { + include GradingReport; + + let view_overall_score = (report: t) => { + score_view(overall_score(report)); + }; +}; diff --git a/src/haz3lweb/view/TestView.re b/src/haz3lweb/view/TestView.re index 1b01158c56..95e31a1aca 100644 --- a/src/haz3lweb/view/TestView.re +++ b/src/haz3lweb/view/TestView.re @@ -37,6 +37,12 @@ let jump_to_test = (~inject, pos, id, _) => { Effect.bind(effect1, ~f=_result1 => effect2); }; +let jump_to_test_tutorial = (~inject, pos, id, _) => { + let effect1 = inject(Update.SwitchTutEditor(pos)); + let effect2 = inject(Update.PerformAction(Jump(TileId(id)))); + Effect.bind(effect1, ~f=_result1 => effect2); +}; + let test_report_view = ( ~settings, @@ -117,12 +123,30 @@ let test_bar_segment = (~inject, pos, (id, reports)) => { ); }; +let test_bar_segment_tutorial = (~inject, pos: Tutorial.pos, (id, reports)) => { + let status = reports |> TestMap.joint_status |> TestStatus.to_string; + div( + ~attrs=[ + clss(["segment", status]), + Attr.on_click(jump_to_test_tutorial(~inject, pos, id)), + ], + [], + ); +}; + let test_bar = (~inject, ~test_results: TestResults.t, pos) => div( ~attrs=[Attr.class_("test-bar")], List.map(test_bar_segment(~inject, pos), test_results.test_map), ); +let test_bar_tutorial = + (~inject, ~test_results: TestResults.t, pos: Tutorial.pos) => + div( + ~attrs=[Attr.class_("test-bar")], + List.map(test_bar_segment_tutorial(~inject, pos), test_results.test_map), + ); + // result_summary_str and test_summary_str have been moved to haz3lcore/TestResults.re let percent_view = (n: int, p: int): Node.t => { diff --git a/src/haz3lweb/view/TutorialMode.re b/src/haz3lweb/view/TutorialMode.re index 6b46245b35..b926073518 100644 --- a/src/haz3lweb/view/TutorialMode.re +++ b/src/haz3lweb/view/TutorialMode.re @@ -25,6 +25,7 @@ let view = ~settings: Settings.t, ~tutorial, ~results, + // ~stitched_dynamics, ~highlights, ) => { // editor : Editor.t, @@ -38,7 +39,7 @@ let view = settings.core.dynamics ? Some(results) : None, ); let { - // test_validation, + test_validation, user_impl, // user_tests, // prelude, @@ -47,6 +48,10 @@ let view = hidden_tests: _, }: Tutorial.stitched(Tutorial.DynamicsItem.t) = stitched_dynamics; + let grading_report = + TutorialGrading.GradingReport.mk(eds, ~stitched_dynamics); + let score_view = + TutorialGrading.GradingReport.view_overall_score(grading_report); let editor_view = ( @@ -106,7 +111,49 @@ let view = ), ); - [title_view] @ render_cells(settings, [your_impl_view, hidden_tests_view]); + // let your_tests_view = + // Always( + // editor_view( + // YourTestsValidation, + // ~caption="Test Validation", + // ~subcaption=": Your Tests vs. Correct Implementation", + // ~editor=eds.hidden_tests.tests, + // ~di=test_validation, + // ~footer=[] // TutorialGrading.TestValidationReport.view( + // // ~inject, + // // grading_report.test_validation_report, + // // grading_report.point_distribution.test_validation, + // // ), + // ), + // ); + + let impl_validation_view = + Always( + editor_view( + YourTestsValidation, + ~caption="Implementation Validation", + ~subcaption=": Hidden Tests vs. Your Implementation", + ~editor=eds.your_impl, + ~di=test_validation, + ~footer=[ + Cell.test_report_footer_view( + ~inject, + ~test_results=ModelResult.test_results(test_validation.result), + ), + ], + ), + ); + + [score_view, title_view] + @ render_cells( + settings, + [ + your_impl_view, + hidden_tests_view, + // your_tests_view, + impl_validation_view, + ], + ); }; let reset_button = inject => From 42981d6f4fb363f37f53a10ee8fffdf5ca79e592 Mon Sep 17 00:00:00 2001 From: reevafaisal Date: Mon, 18 Nov 2024 08:23:25 -0500 Subject: [PATCH 07/11] added implementation validation but still buggy --- src/haz3lweb/view/TutorialMode.re | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/haz3lweb/view/TutorialMode.re b/src/haz3lweb/view/TutorialMode.re index b926073518..a46c69ed3e 100644 --- a/src/haz3lweb/view/TutorialMode.re +++ b/src/haz3lweb/view/TutorialMode.re @@ -48,10 +48,10 @@ let view = hidden_tests: _, }: Tutorial.stitched(Tutorial.DynamicsItem.t) = stitched_dynamics; - let grading_report = - TutorialGrading.GradingReport.mk(eds, ~stitched_dynamics); - let score_view = - TutorialGrading.GradingReport.view_overall_score(grading_report); + // let grading_report = + // TutorialGrading.GradingReport.mk(eds, ~stitched_dynamics); + // let score_view = + // TutorialGrading.GradingReport.view_overall_score(grading_report); let editor_view = ( @@ -144,7 +144,7 @@ let view = ), ); - [score_view, title_view] + [title_view] @ render_cells( settings, [ From 04c41cc1bf2ef07910e00e01c02eb7fe43104ee0 Mon Sep 17 00:00:00 2001 From: facundoy Date: Sat, 7 Dec 2024 16:20:46 -0500 Subject: [PATCH 08/11] Changed the last editor into the implementation grading view --- src/haz3lweb/view/TutorialMode.re | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/src/haz3lweb/view/TutorialMode.re b/src/haz3lweb/view/TutorialMode.re index a46c69ed3e..587a027f32 100644 --- a/src/haz3lweb/view/TutorialMode.re +++ b/src/haz3lweb/view/TutorialMode.re @@ -48,8 +48,8 @@ let view = hidden_tests: _, }: Tutorial.stitched(Tutorial.DynamicsItem.t) = stitched_dynamics; - // let grading_report = - // TutorialGrading.GradingReport.mk(eds, ~stitched_dynamics); + let grading_report = + TutorialGrading.GradingReport.mk(eds, ~stitched_dynamics); // let score_view = // TutorialGrading.GradingReport.view_overall_score(grading_report); @@ -129,18 +129,10 @@ let view = let impl_validation_view = Always( - editor_view( - YourTestsValidation, - ~caption="Implementation Validation", - ~subcaption=": Hidden Tests vs. Your Implementation", - ~editor=eds.your_impl, - ~di=test_validation, - ~footer=[ - Cell.test_report_footer_view( - ~inject, - ~test_results=ModelResult.test_results(test_validation.result), - ), - ], + TutorialGrading.ImplGradingReport.view( + ~inject, + ~report=grading_report.impl_grading_report, + ~max_points=4, ), ); From 1fdcda330957cd817b1b5d08948de2eacf498683 Mon Sep 17 00:00:00 2001 From: reevafaisal Date: Sat, 7 Dec 2024 18:53:02 -0500 Subject: [PATCH 09/11] keep running into uncaught exception --- src/haz3lschool/Tutorial.re | 136 +++++++++++++++------ src/haz3lweb/Editors.re | 5 + src/haz3lweb/Store.re | 9 ++ src/haz3lweb/view/Page.re | 51 +++++--- src/haz3lweb/view/TutorialMode.re | 191 +++++++++++++++++++++++++----- 5 files changed, 305 insertions(+), 87 deletions(-) diff --git a/src/haz3lschool/Tutorial.re b/src/haz3lschool/Tutorial.re index 8292af2764..5d206d9304 100644 --- a/src/haz3lschool/Tutorial.re +++ b/src/haz3lschool/Tutorial.re @@ -50,6 +50,7 @@ module D = (TutorialEnv: TutorialEnv) => { title: string, description: string, your_impl: 'code, + your_tests: your_tests('code), hidden_tests: hidden_tests('code), }; @@ -91,6 +92,7 @@ module D = (TutorialEnv: TutorialEnv) => { type pos = | YourImpl | YourTestsValidation + | YourTestsTesting | HiddenTests; [@deriving (show({with_path: false}), sexp, yojson)] @@ -104,6 +106,11 @@ module D = (TutorialEnv: TutorialEnv) => { title: p.title, description: p.description, your_impl: f(p.your_impl), + your_tests: { + tests: f(p.your_tests.tests), + required: p.your_tests.required, + provided: p.your_tests.provided, + }, hidden_tests: { tests: PersistentZipper.persist(p.hidden_tests.tests), hints: p.hidden_tests.hints, @@ -134,10 +141,14 @@ module D = (TutorialEnv: TutorialEnv) => { ({pos, eds, _}) => switch (pos) { | YourImpl => eds.your_impl - | YourTestsValidation => eds.hidden_tests.tests + | YourTestsValidation => eds.your_tests.tests + | YourTestsTesting => eds.your_tests.tests | HiddenTests => eds.hidden_tests.tests }; + [@deriving (show({with_path: false}), sexp, yojson)] + type transitionary_spec = p(CodeString.t); + let put_editor = ({pos, eds} as state: state, editor: Editor.t) => switch (pos) { | YourImpl => { @@ -148,6 +159,16 @@ module D = (TutorialEnv: TutorialEnv) => { }, } | YourTestsValidation + | YourTestsTesting => { + ...state, + eds: { + ...eds, + your_tests: { + ...eds.your_tests, + tests: editor, + }, + }, + } | HiddenTests => { ...state, eds: { @@ -162,6 +183,7 @@ module D = (TutorialEnv: TutorialEnv) => { let editors = ({eds, _}: state) => [ eds.your_impl, + eds.your_tests.tests, eds.hidden_tests.tests, ]; @@ -174,7 +196,8 @@ module D = (TutorialEnv: TutorialEnv) => { switch (pos) { | YourImpl => 0 | YourTestsValidation => 1 - | HiddenTests => 1 + List.length(p.hidden_tests.tests) + | YourTestsTesting => 2 + | HiddenTests => 2 + List.length(p.hidden_tests.tests) }; let pos_of_idx = (p: p('code), idx: int) => @@ -211,28 +234,24 @@ module D = (TutorialEnv: TutorialEnv) => { }; }; - // let transition: transitionary_spec => spec = - // ({title, description, your_impl, hidden_tests}) => { - // let your_impl = zipper_of_code(your_impl); - // let hidden_tests = { - // let {tests, hints} = hidden_tests; - // let tests = zipper_of_code(tests); - // { - // tests, - // hints, - // }; - // }; - // { - // title, - // description, - // your_impl, - // hidden_tests, - // }; - // }; + let transition: transitionary_spec => spec = + ({title, description, your_impl, your_tests, hidden_tests}) => { + let your_impl = zipper_of_code(your_impl); + let hidden_tests = { + let {tests, hints} = hidden_tests; + let tests = zipper_of_code(tests); + {tests, hints}; + }; + let your_tests = { + let tests = zipper_of_code(your_tests.tests); + {tests, required: your_tests.required, provided: your_tests.provided}; + }; + {title, description, your_impl, your_tests, hidden_tests}; + }; let eds_of_spec = ( - {title, description, your_impl, hidden_tests}, + {title, description, your_impl, your_tests, hidden_tests}, ~settings: CoreSettings.t, ) : eds => { @@ -243,7 +262,11 @@ module D = (TutorialEnv: TutorialEnv) => { let tests = editor_of_serialization(tests); {tests, hints}; }; - {title, description, your_impl, hidden_tests}; + let your_tests = { + let tests = editor_of_serialization(your_tests.tests); + {tests, required: your_tests.required, provided: your_tests.provided}; + }; + {title, description, your_impl, your_tests, hidden_tests}; }; let set_instructor_mode = ({eds, _} as state: state, new_mode: bool) => { @@ -265,6 +288,7 @@ module D = (TutorialEnv: TutorialEnv) => { switch (pos) { | YourImpl => true | YourTestsValidation => true + | YourTestsTesting => false | HiddenTests => instructor_mode }; }; @@ -314,6 +338,7 @@ module D = (TutorialEnv: TutorialEnv) => { }; let your_impl = lookup(YourImpl, spec.your_impl); let hidden_tests_tests = lookup(HiddenTests, spec.hidden_tests.tests); + let your_tests_tests = lookup(YourTestsValidation, spec.your_tests.tests); set_instructor_mode( { @@ -326,6 +351,11 @@ module D = (TutorialEnv: TutorialEnv) => { tests: hidden_tests_tests, hints: spec.hidden_tests.hints, }, + your_tests: { + tests: your_tests_tests, + required: spec.your_tests.required, + provided: spec.your_tests.provided, + }, }, }, instructor_mode, @@ -349,6 +379,7 @@ module D = (TutorialEnv: TutorialEnv) => { test_validation: 'a, // prelude + correct_impl + your_tests user_impl: 'a, // prelude + your_impl instructor: 'a, // prelude + correct_impl + hidden_tests.tests // TODO only needs to run in instructor mode + user_tests: 'a, hidden_tests: 'a, }; @@ -384,25 +415,37 @@ module D = (TutorialEnv: TutorialEnv) => { term_of(ed3), ); + let stitch2 = (ed1: Editor.t, ed2: Editor.t) => + EditorUtil.append_exp( + EditorUtil.append_exp(term_of(ed1), term_of(ed2)), + ); + let stitch1 = (ed1: Editor.t) => // EditorUtil.append_exp( EditorUtil.append_exp(term_of(ed1)); let stitch_term = ({eds, _}: state): stitched(UExp.t) => { let instructor = eds.hidden_tests.tests |> term_of; - let user_impl_term = { + // let user_impl_term = { + // eds.your_impl |> term_of |> wrap_filter(FilterAction.Step); + // }; + let user_impl_term = eds.your_impl |> term_of |> wrap_filter(FilterAction.Step); - }; - let test_validation_term = eds.hidden_tests.tests |> term_of; - + // let test_validation_term = eds.hidden_tests.tests |> term_of; + let test_validation_term = + EditorUtil.append_exp(user_impl_term, term_of(eds.your_tests.tests)); + let user_tests_term = + EditorUtil.append_exp(user_impl_term, term_of(eds.your_tests.tests)); // No combining of your_impl_term with hidden_tests let hidden_tests_term = EditorUtil.append_exp(user_impl_term, term_of(eds.hidden_tests.tests)); { + test_validation: test_validation_term, user_impl: user_impl_term, + user_tests: user_tests_term, instructor, - test_validation: test_validation_term, + // test_validation: test_validation_term, hidden_tests: hidden_tests_term, }; }; @@ -427,6 +470,7 @@ module D = (TutorialEnv: TutorialEnv) => { { test_validation: mk(t.test_validation), user_impl: mk(t.user_impl), + user_tests: mk(t.user_tests), instructor, hidden_tests: mk(t.hidden_tests), }; @@ -459,13 +503,14 @@ module D = (TutorialEnv: TutorialEnv) => { switch (state.pos) { | YourImpl => user_impl_key | YourTestsValidation => test_validation_key + | YourTestsTesting => user_tests_key | HiddenTests => hidden_tests_key }; let spliced_elabs = (settings: CoreSettings.t, state: state) : list((ModelResults.key, Elaborator.Elaboration.t)) => { - let {test_validation, user_impl, instructor, hidden_tests} = + let {test_validation, user_impl, user_tests, instructor, hidden_tests} = stitch_static(settings, stitch_term(state)); let elab = (s: Editor.CachedStatics.t): Elaborator.Elaboration.t => { d: Interface.elaborate(~settings, s.info_map, s.term), @@ -473,6 +518,7 @@ module D = (TutorialEnv: TutorialEnv) => { [ (test_validation_key, elab(test_validation)), (user_impl_key, elab(user_impl)), + (user_tests_key, elab(user_tests)), (instructor_key, elab(instructor)), (hidden_tests_key, elab(hidden_tests)), ]; @@ -501,6 +547,7 @@ module D = (TutorialEnv: TutorialEnv) => { switch (state.pos) { | YourImpl => s.user_impl.statics | YourTestsValidation => s.test_validation.statics + | YourTestsTesting => s.user_tests.statics | HiddenTests => s.hidden_tests.statics }; @@ -517,7 +564,7 @@ module D = (TutorialEnv: TutorialEnv) => { let { test_validation, user_impl, - // user_tests, + user_tests, // prelude, instructor, // hidden_bugs, @@ -536,6 +583,8 @@ module D = (TutorialEnv: TutorialEnv) => { statics: test_validation, result: result_of(test_validation_key), }; + let user_tests = + DynamicsItem.{statics: user_tests, result: result_of(user_tests_key)}; let user_impl = DynamicsItem.{statics: user_impl, result: result_of(user_impl_key)}; @@ -551,7 +600,7 @@ module D = (TutorialEnv: TutorialEnv) => { { test_validation, user_impl, - // user_tests, + user_tests, instructor, // prelude, // hidden_bugs, @@ -573,7 +622,7 @@ module D = (TutorialEnv: TutorialEnv) => { { test_validation: DynamicsItem.statics_only(t.test_validation), user_impl: DynamicsItem.statics_only(t.user_impl), - // user_tests: DynamicsItem.statics_only(t.user_tests), + user_tests: DynamicsItem.statics_only(t.user_tests), instructor: DynamicsItem.statics_only(t.instructor), // prelude: DynamicsItem.statics_only(t.prelude), // hidden_bugs: List.map(DynamicsItem.statics_only, t.hidden_bugs), @@ -583,7 +632,7 @@ module D = (TutorialEnv: TutorialEnv) => { { test_validation: DynamicsItem.empty, user_impl: DynamicsItem.empty, - // user_tests: DynamicsItem.empty, + user_tests: DynamicsItem.empty, instructor: DynamicsItem.empty, // prelude: DynamicsItem.empty, // hidden_bugs: @@ -640,7 +689,17 @@ module D = (TutorialEnv: TutorialEnv) => { data; }; - let blank_spec = (~title, ~description) => { + let blank_spec = + // (~title, ~description) => { + ( + ~title, + ~description, + // ~point_distribution, + ~required_tests, + ~provided_tests, + ) => { + // ~num_wrong_impls, + // ~point_distribution, // ~required_tests, // ~provided_tests, @@ -658,6 +717,7 @@ module D = (TutorialEnv: TutorialEnv) => { // {impl: zipper, hint: "TODO: hint " ++ string_of_int(i)}; // }, // ); + let your_tests_tests = Zipper.next_blank(); let hidden_tests_tests = Zipper.next_blank(); { title, @@ -668,11 +728,11 @@ module D = (TutorialEnv: TutorialEnv) => { // point_distribution, // prelude, // correct_impl, - // your_tests: { - // tests: your_tests_tests, - // required: required_tests, - // provided: provided_tests, - // }, + your_tests: { + tests: your_tests_tests, + required: required_tests, + provided: provided_tests, + }, your_impl, // hidden_bugs, hidden_tests: { diff --git a/src/haz3lweb/Editors.re b/src/haz3lweb/Editors.re index ec0dfecc08..c2a78f4ad8 100644 --- a/src/haz3lweb/Editors.re +++ b/src/haz3lweb/Editors.re @@ -250,6 +250,11 @@ let reset_current = title: status.eds.title, description: status.eds.description, your_impl: your_impl_zipper, + your_tests: { + tests: status.eds.your_tests.tests.state.zipper, + required: status.eds.your_tests.required, + provided: status.eds.your_tests.provided, + }, hidden_tests: { tests: hidden_tests_zipper, hints: status.eds.hidden_tests.hints, diff --git a/src/haz3lweb/Store.re b/src/haz3lweb/Store.re index 594b1e6856..9f90341c7b 100644 --- a/src/haz3lweb/Store.re +++ b/src/haz3lweb/Store.re @@ -389,10 +389,14 @@ module Tutorial = { let of_persistent = (~settings, (name, slides, results): persistent): t => { let state_to_editor = ((str: string, status: Tutorial.persistent_state)) => { + let your_tests_zipper = + List.assoc(Tutorial.YourTestsTesting, status.editors); let your_impl_zipper = List.assoc(Tutorial.YourImpl, status.editors); let hidden_tests_zipper = List.assoc(Tutorial.HiddenTests, status.editors); + let (_, your_tests_editor) = + unpersist((str, your_tests_zipper), ~settings); let (_, your_impl_editor) = unpersist((str, your_impl_zipper), ~settings); let (_, hidden_tests_editor) = @@ -404,6 +408,11 @@ module Tutorial = { title: "", description: status.description, your_impl: your_impl_editor, + your_tests: { + tests: your_tests_editor, + required: 0, + provided: 0, + }, hidden_tests: { tests: hidden_tests_editor, hints: [], diff --git a/src/haz3lweb/view/Page.re b/src/haz3lweb/view/Page.re index d2585076fd..528423cbf0 100644 --- a/src/haz3lweb/view/Page.re +++ b/src/haz3lweb/view/Page.re @@ -111,7 +111,7 @@ let main_view = (view, cursor_info); | Tutorial(name, slides) => - print_endline("hi" ++ name); + print_endline(name); let info = SlideContent.get_content(editors) |> Option.map(i => div(~attrs=[Attr.id("slide")], [i])) @@ -119,25 +119,38 @@ let main_view = let matching_slide = List.find_opt(((slide_name, _)) => slide_name == name, slides); + switch (matching_slide) { + | Some((_, tutorialState)) => + let stitched_dynamics = + Tutorial.stitch_dynamic( + settings.core, + tutorialState, /* Use the state from the matching slide */ + settings.core.dynamics ? Some(results) : None, + ); + (); /* Use the state from the matching slide */ + let result = + switch (matching_slide) { + | None => [] + | Some((_, tutorial_state)) => + TutorialMode.view( + ~inject, + ~ui_state, + ~settings, + ~highlights, + // ~results, + ~stitched_dynamics, + ~tutorial=tutorial_state, + // ~results, + // ~highlights, + // ~editor, + ) + }; + (info @ result, cursor_info); + /* Use stitched_dynamics here */ + | _ => failwith("Invalid Slide") + /* Handle the case where no matching slide exists */ + }; - let result = - switch (matching_slide) { - | None => [] - | Some((_, tutorial_state)) => - TutorialMode.view( - ~inject, - ~ui_state, - ~settings, - ~highlights, - ~results, - ~tutorial=tutorial_state, - // ~results, - // ~highlights, - // ~editor, - ) - }; - - (info @ result, cursor_info); | Documentation(name, _) => let result_key = ScratchSlide.scratch_key(name); let view = diff --git a/src/haz3lweb/view/TutorialMode.re b/src/haz3lweb/view/TutorialMode.re index 587a027f32..d0a68f9fa7 100644 --- a/src/haz3lweb/view/TutorialMode.re +++ b/src/haz3lweb/view/TutorialMode.re @@ -7,6 +7,14 @@ type vis_marked('a) = | InstructorOnly(unit => 'a) | Always('a); +// type validation_result = +// | ValidationSuccess(test_case) +// | ValidationFailure(test_case, string, string); + +// type validation_result = +// | ValidationSuccess(test_case) +// | ValidationFailure(test_case, string, string); + let render_cells = (settings: Settings.t, v: list(vis_marked(Node.t))) => { List.filter_map( vis => @@ -18,13 +26,111 @@ let render_cells = (settings: Settings.t, v: list(vis_marked(Node.t))) => { ); }; +let get_code = (z: Zipper.t): string => { + let segment = Zipper.unselect_and_zip(z); + let term = MakeTerm.go(segment).term; + UExp.show(term); // Convert the term into a string representation +}; +let zipper_to_string = (zipper: Haz3lcore.Zipper.t): string => { + Haz3lcore.Zipper.show( + zipper /* Automatically derived show function */ + ); +}; + +let editor_to_zipper = (editor: Editor.t): ZipperBase.t => { + editor.state. + zipper; /* Access zipper field */ +}; + +let hidden_tests_to_zipper = + (hidden_tests: Tutorial.hidden_tests(Editor.t)): ZipperBase.t => { + hidden_tests.tests.state. + zipper; /* Access zipper field */ +}; + +// let validate_user_impl = (~user_impl: string, ~hidden_tests: test_case) => { +// let func = test_case => { +// let expected_output = TestCase.get_expected_output(test_case); +// let actual_output = +// if (user_impl == "fib") { +// expected_output; +// } else { +// "error"; +// }; + +// if (actual_output == expected_output) { +// ValidationSuccess(test_case); +// } else { +// ValidationFailure(test_case, actual_output, expected_output); +// }; +// }; +// func(hidden_tests); +// }; + +let get_code = (z: Zipper.t): string => { + let segment = Zipper.unselect_and_zip(z); + let term = MakeTerm.go(segment).term; + UExp.show(term); // Convert the term into a string representation +}; +let zipper_to_string = (zipper: Haz3lcore.Zipper.t): string => { + Haz3lcore.Zipper.show( + zipper /* Automatically derived show function */ + ); +}; + +let editor_to_zipper = (editor: Editor.t): ZipperBase.t => { + editor.state. + zipper; /* Access zipper field */ +}; + +let hidden_tests_to_zipper = + (hidden_tests: Tutorial.hidden_tests(Editor.t)): ZipperBase.t => { + hidden_tests.tests.state. + zipper; /* Access zipper field */ +}; + +// let convert_editors_to_test_cases = +// (editors: Tutorial.hidden_tests(Editor.t)): test_case => { +// let zipper = hidden_tests_to_zipper(editors); +// let func = editor => { +// let input_code = get_code(editor); /* Replace with actual extraction logic */ +// TestCase.create( +// ~input=[input_code], +// ~expected_output="4", /* Example expected output */ +// ~description=Some("Sample Test Case"), +// ); +// }; +// func(zipper); +// }; + +// let validate_user_impl = (~user_impl: string, ~hidden_tests: test_case) => { +// let func = test_case => { +// let expected_output = TestCase.get_expected_output(test_case); +// let actual_output = +// if (user_impl == "fib") { +// expected_output; +// } else { +// "error"; +// }; + +// if (actual_output == expected_output) { +// ValidationSuccess(test_case); +// } else { +// ValidationFailure(test_case, actual_output, expected_output); +// }; +// }; +// func(hidden_tests); +// }; + let view = ( ~inject, ~ui_state: Model.ui_state, ~settings: Settings.t, ~tutorial, - ~results, + // ~results, + ~stitched_dynamics, + // ~results, // ~stitched_dynamics, ~highlights, ) => { @@ -32,20 +138,27 @@ let view = // let result = ModelResults.lookup(results, result_key); let Tutorial.{eds, pos} = tutorial; - let stitched_dynamics = - Tutorial.stitch_dynamic( - settings.core, - tutorial, - settings.core.dynamics ? Some(results) : None, - ); + // let stitched_dynamics = + // Tutorial.stitch_dynamic( + // settings.core, + // tutorial, + // settings.core.dynamics ? Some(results) : None, + // ); + // let stitched_dynamics = + // Tutorial.stitch_dynamic( + // settings.core, + // tutorial, + // settings.core.dynamics ? Some(results) : None, + // ); let { test_validation, user_impl, - // user_tests, + user_tests, // prelude, instructor, // hidden_bugs, - hidden_tests: _, + hidden_tests, + // hidden_tests, }: Tutorial.stitched(Tutorial.DynamicsItem.t) = stitched_dynamics; let grading_report = @@ -100,6 +213,22 @@ let view = ); }; + let your_tests_view = + Always( + editor_view( + YourTestsValidation, + ~caption="Test Validation", + ~subcaption=": Your Tests vs. Correct Implementation", + ~editor=eds.your_tests.tests, + ~di=test_validation, + ~footer=[] // TutorialGrading.TestValidationReport.view( + // ~inject, + // grading_report.test_validation_report, + // grading_report.point_distribution.test_validation, + // ), + ), + ); + let hidden_tests_view = InstructorOnly( () => @@ -111,38 +240,40 @@ let view = ), ); - // let your_tests_view = - // Always( - // editor_view( - // YourTestsValidation, - // ~caption="Test Validation", - // ~subcaption=": Your Tests vs. Correct Implementation", - // ~editor=eds.hidden_tests.tests, - // ~di=test_validation, - // ~footer=[] // TutorialGrading.TestValidationReport.view( - // // ~inject, - // // grading_report.test_validation_report, - // // grading_report.point_distribution.test_validation, - // // ), - // ), - // ); - let impl_validation_view = Always( - TutorialGrading.ImplGradingReport.view( - ~inject, - ~report=grading_report.impl_grading_report, - ~max_points=4, + editor_view( + YourTestsTesting, + ~caption="Implementation Validation", + ~subcaption= + ": Your Tests (synchronized with Test Validation above) vs. Your Implementation", + ~editor=eds.your_tests.tests, + ~di=user_tests, + ~footer=[ + Cell.test_report_footer_view( + ~inject, + ~test_results=ModelResult.test_results(user_tests.result), + ), + ], ), ); + // let impl_validation_view = + // Always( + // TutorialGrading.ImplGradingReport.view( + // ~inject, + // ~report=grading_report.impl_grading_report, + // ~max_points=4, + // ), + // ); + [title_view] @ render_cells( settings, [ your_impl_view, hidden_tests_view, - // your_tests_view, + your_tests_view, impl_validation_view, ], ); From cdf0b596bfac0bb66d7dd4cb8c560622613b2d6e Mon Sep 17 00:00:00 2001 From: facundoy Date: Sat, 7 Dec 2024 19:33:17 -0500 Subject: [PATCH 10/11] Revert "keep running into uncaught exception" This reverts commit 1fdcda330957cd817b1b5d08948de2eacf498683. --- src/haz3lschool/Tutorial.re | 136 ++++++--------------- src/haz3lweb/Editors.re | 5 - src/haz3lweb/Store.re | 9 -- src/haz3lweb/view/Page.re | 51 +++----- src/haz3lweb/view/TutorialMode.re | 191 +++++------------------------- 5 files changed, 87 insertions(+), 305 deletions(-) diff --git a/src/haz3lschool/Tutorial.re b/src/haz3lschool/Tutorial.re index 5d206d9304..8292af2764 100644 --- a/src/haz3lschool/Tutorial.re +++ b/src/haz3lschool/Tutorial.re @@ -50,7 +50,6 @@ module D = (TutorialEnv: TutorialEnv) => { title: string, description: string, your_impl: 'code, - your_tests: your_tests('code), hidden_tests: hidden_tests('code), }; @@ -92,7 +91,6 @@ module D = (TutorialEnv: TutorialEnv) => { type pos = | YourImpl | YourTestsValidation - | YourTestsTesting | HiddenTests; [@deriving (show({with_path: false}), sexp, yojson)] @@ -106,11 +104,6 @@ module D = (TutorialEnv: TutorialEnv) => { title: p.title, description: p.description, your_impl: f(p.your_impl), - your_tests: { - tests: f(p.your_tests.tests), - required: p.your_tests.required, - provided: p.your_tests.provided, - }, hidden_tests: { tests: PersistentZipper.persist(p.hidden_tests.tests), hints: p.hidden_tests.hints, @@ -141,14 +134,10 @@ module D = (TutorialEnv: TutorialEnv) => { ({pos, eds, _}) => switch (pos) { | YourImpl => eds.your_impl - | YourTestsValidation => eds.your_tests.tests - | YourTestsTesting => eds.your_tests.tests + | YourTestsValidation => eds.hidden_tests.tests | HiddenTests => eds.hidden_tests.tests }; - [@deriving (show({with_path: false}), sexp, yojson)] - type transitionary_spec = p(CodeString.t); - let put_editor = ({pos, eds} as state: state, editor: Editor.t) => switch (pos) { | YourImpl => { @@ -159,16 +148,6 @@ module D = (TutorialEnv: TutorialEnv) => { }, } | YourTestsValidation - | YourTestsTesting => { - ...state, - eds: { - ...eds, - your_tests: { - ...eds.your_tests, - tests: editor, - }, - }, - } | HiddenTests => { ...state, eds: { @@ -183,7 +162,6 @@ module D = (TutorialEnv: TutorialEnv) => { let editors = ({eds, _}: state) => [ eds.your_impl, - eds.your_tests.tests, eds.hidden_tests.tests, ]; @@ -196,8 +174,7 @@ module D = (TutorialEnv: TutorialEnv) => { switch (pos) { | YourImpl => 0 | YourTestsValidation => 1 - | YourTestsTesting => 2 - | HiddenTests => 2 + List.length(p.hidden_tests.tests) + | HiddenTests => 1 + List.length(p.hidden_tests.tests) }; let pos_of_idx = (p: p('code), idx: int) => @@ -234,24 +211,28 @@ module D = (TutorialEnv: TutorialEnv) => { }; }; - let transition: transitionary_spec => spec = - ({title, description, your_impl, your_tests, hidden_tests}) => { - let your_impl = zipper_of_code(your_impl); - let hidden_tests = { - let {tests, hints} = hidden_tests; - let tests = zipper_of_code(tests); - {tests, hints}; - }; - let your_tests = { - let tests = zipper_of_code(your_tests.tests); - {tests, required: your_tests.required, provided: your_tests.provided}; - }; - {title, description, your_impl, your_tests, hidden_tests}; - }; + // let transition: transitionary_spec => spec = + // ({title, description, your_impl, hidden_tests}) => { + // let your_impl = zipper_of_code(your_impl); + // let hidden_tests = { + // let {tests, hints} = hidden_tests; + // let tests = zipper_of_code(tests); + // { + // tests, + // hints, + // }; + // }; + // { + // title, + // description, + // your_impl, + // hidden_tests, + // }; + // }; let eds_of_spec = ( - {title, description, your_impl, your_tests, hidden_tests}, + {title, description, your_impl, hidden_tests}, ~settings: CoreSettings.t, ) : eds => { @@ -262,11 +243,7 @@ module D = (TutorialEnv: TutorialEnv) => { let tests = editor_of_serialization(tests); {tests, hints}; }; - let your_tests = { - let tests = editor_of_serialization(your_tests.tests); - {tests, required: your_tests.required, provided: your_tests.provided}; - }; - {title, description, your_impl, your_tests, hidden_tests}; + {title, description, your_impl, hidden_tests}; }; let set_instructor_mode = ({eds, _} as state: state, new_mode: bool) => { @@ -288,7 +265,6 @@ module D = (TutorialEnv: TutorialEnv) => { switch (pos) { | YourImpl => true | YourTestsValidation => true - | YourTestsTesting => false | HiddenTests => instructor_mode }; }; @@ -338,7 +314,6 @@ module D = (TutorialEnv: TutorialEnv) => { }; let your_impl = lookup(YourImpl, spec.your_impl); let hidden_tests_tests = lookup(HiddenTests, spec.hidden_tests.tests); - let your_tests_tests = lookup(YourTestsValidation, spec.your_tests.tests); set_instructor_mode( { @@ -351,11 +326,6 @@ module D = (TutorialEnv: TutorialEnv) => { tests: hidden_tests_tests, hints: spec.hidden_tests.hints, }, - your_tests: { - tests: your_tests_tests, - required: spec.your_tests.required, - provided: spec.your_tests.provided, - }, }, }, instructor_mode, @@ -379,7 +349,6 @@ module D = (TutorialEnv: TutorialEnv) => { test_validation: 'a, // prelude + correct_impl + your_tests user_impl: 'a, // prelude + your_impl instructor: 'a, // prelude + correct_impl + hidden_tests.tests // TODO only needs to run in instructor mode - user_tests: 'a, hidden_tests: 'a, }; @@ -415,37 +384,25 @@ module D = (TutorialEnv: TutorialEnv) => { term_of(ed3), ); - let stitch2 = (ed1: Editor.t, ed2: Editor.t) => - EditorUtil.append_exp( - EditorUtil.append_exp(term_of(ed1), term_of(ed2)), - ); - let stitch1 = (ed1: Editor.t) => // EditorUtil.append_exp( EditorUtil.append_exp(term_of(ed1)); let stitch_term = ({eds, _}: state): stitched(UExp.t) => { let instructor = eds.hidden_tests.tests |> term_of; - // let user_impl_term = { - // eds.your_impl |> term_of |> wrap_filter(FilterAction.Step); - // }; - let user_impl_term = + let user_impl_term = { eds.your_impl |> term_of |> wrap_filter(FilterAction.Step); - // let test_validation_term = eds.hidden_tests.tests |> term_of; - let test_validation_term = - EditorUtil.append_exp(user_impl_term, term_of(eds.your_tests.tests)); - let user_tests_term = - EditorUtil.append_exp(user_impl_term, term_of(eds.your_tests.tests)); + }; + let test_validation_term = eds.hidden_tests.tests |> term_of; + // No combining of your_impl_term with hidden_tests let hidden_tests_term = EditorUtil.append_exp(user_impl_term, term_of(eds.hidden_tests.tests)); { - test_validation: test_validation_term, user_impl: user_impl_term, - user_tests: user_tests_term, instructor, - // test_validation: test_validation_term, + test_validation: test_validation_term, hidden_tests: hidden_tests_term, }; }; @@ -470,7 +427,6 @@ module D = (TutorialEnv: TutorialEnv) => { { test_validation: mk(t.test_validation), user_impl: mk(t.user_impl), - user_tests: mk(t.user_tests), instructor, hidden_tests: mk(t.hidden_tests), }; @@ -503,14 +459,13 @@ module D = (TutorialEnv: TutorialEnv) => { switch (state.pos) { | YourImpl => user_impl_key | YourTestsValidation => test_validation_key - | YourTestsTesting => user_tests_key | HiddenTests => hidden_tests_key }; let spliced_elabs = (settings: CoreSettings.t, state: state) : list((ModelResults.key, Elaborator.Elaboration.t)) => { - let {test_validation, user_impl, user_tests, instructor, hidden_tests} = + let {test_validation, user_impl, instructor, hidden_tests} = stitch_static(settings, stitch_term(state)); let elab = (s: Editor.CachedStatics.t): Elaborator.Elaboration.t => { d: Interface.elaborate(~settings, s.info_map, s.term), @@ -518,7 +473,6 @@ module D = (TutorialEnv: TutorialEnv) => { [ (test_validation_key, elab(test_validation)), (user_impl_key, elab(user_impl)), - (user_tests_key, elab(user_tests)), (instructor_key, elab(instructor)), (hidden_tests_key, elab(hidden_tests)), ]; @@ -547,7 +501,6 @@ module D = (TutorialEnv: TutorialEnv) => { switch (state.pos) { | YourImpl => s.user_impl.statics | YourTestsValidation => s.test_validation.statics - | YourTestsTesting => s.user_tests.statics | HiddenTests => s.hidden_tests.statics }; @@ -564,7 +517,7 @@ module D = (TutorialEnv: TutorialEnv) => { let { test_validation, user_impl, - user_tests, + // user_tests, // prelude, instructor, // hidden_bugs, @@ -583,8 +536,6 @@ module D = (TutorialEnv: TutorialEnv) => { statics: test_validation, result: result_of(test_validation_key), }; - let user_tests = - DynamicsItem.{statics: user_tests, result: result_of(user_tests_key)}; let user_impl = DynamicsItem.{statics: user_impl, result: result_of(user_impl_key)}; @@ -600,7 +551,7 @@ module D = (TutorialEnv: TutorialEnv) => { { test_validation, user_impl, - user_tests, + // user_tests, instructor, // prelude, // hidden_bugs, @@ -622,7 +573,7 @@ module D = (TutorialEnv: TutorialEnv) => { { test_validation: DynamicsItem.statics_only(t.test_validation), user_impl: DynamicsItem.statics_only(t.user_impl), - user_tests: DynamicsItem.statics_only(t.user_tests), + // user_tests: DynamicsItem.statics_only(t.user_tests), instructor: DynamicsItem.statics_only(t.instructor), // prelude: DynamicsItem.statics_only(t.prelude), // hidden_bugs: List.map(DynamicsItem.statics_only, t.hidden_bugs), @@ -632,7 +583,7 @@ module D = (TutorialEnv: TutorialEnv) => { { test_validation: DynamicsItem.empty, user_impl: DynamicsItem.empty, - user_tests: DynamicsItem.empty, + // user_tests: DynamicsItem.empty, instructor: DynamicsItem.empty, // prelude: DynamicsItem.empty, // hidden_bugs: @@ -689,17 +640,7 @@ module D = (TutorialEnv: TutorialEnv) => { data; }; - let blank_spec = - // (~title, ~description) => { - ( - ~title, - ~description, - // ~point_distribution, - ~required_tests, - ~provided_tests, - ) => { - // ~num_wrong_impls, - + let blank_spec = (~title, ~description) => { // ~point_distribution, // ~required_tests, // ~provided_tests, @@ -717,7 +658,6 @@ module D = (TutorialEnv: TutorialEnv) => { // {impl: zipper, hint: "TODO: hint " ++ string_of_int(i)}; // }, // ); - let your_tests_tests = Zipper.next_blank(); let hidden_tests_tests = Zipper.next_blank(); { title, @@ -728,11 +668,11 @@ module D = (TutorialEnv: TutorialEnv) => { // point_distribution, // prelude, // correct_impl, - your_tests: { - tests: your_tests_tests, - required: required_tests, - provided: provided_tests, - }, + // your_tests: { + // tests: your_tests_tests, + // required: required_tests, + // provided: provided_tests, + // }, your_impl, // hidden_bugs, hidden_tests: { diff --git a/src/haz3lweb/Editors.re b/src/haz3lweb/Editors.re index c2a78f4ad8..ec0dfecc08 100644 --- a/src/haz3lweb/Editors.re +++ b/src/haz3lweb/Editors.re @@ -250,11 +250,6 @@ let reset_current = title: status.eds.title, description: status.eds.description, your_impl: your_impl_zipper, - your_tests: { - tests: status.eds.your_tests.tests.state.zipper, - required: status.eds.your_tests.required, - provided: status.eds.your_tests.provided, - }, hidden_tests: { tests: hidden_tests_zipper, hints: status.eds.hidden_tests.hints, diff --git a/src/haz3lweb/Store.re b/src/haz3lweb/Store.re index 9f90341c7b..594b1e6856 100644 --- a/src/haz3lweb/Store.re +++ b/src/haz3lweb/Store.re @@ -389,14 +389,10 @@ module Tutorial = { let of_persistent = (~settings, (name, slides, results): persistent): t => { let state_to_editor = ((str: string, status: Tutorial.persistent_state)) => { - let your_tests_zipper = - List.assoc(Tutorial.YourTestsTesting, status.editors); let your_impl_zipper = List.assoc(Tutorial.YourImpl, status.editors); let hidden_tests_zipper = List.assoc(Tutorial.HiddenTests, status.editors); - let (_, your_tests_editor) = - unpersist((str, your_tests_zipper), ~settings); let (_, your_impl_editor) = unpersist((str, your_impl_zipper), ~settings); let (_, hidden_tests_editor) = @@ -408,11 +404,6 @@ module Tutorial = { title: "", description: status.description, your_impl: your_impl_editor, - your_tests: { - tests: your_tests_editor, - required: 0, - provided: 0, - }, hidden_tests: { tests: hidden_tests_editor, hints: [], diff --git a/src/haz3lweb/view/Page.re b/src/haz3lweb/view/Page.re index 528423cbf0..d2585076fd 100644 --- a/src/haz3lweb/view/Page.re +++ b/src/haz3lweb/view/Page.re @@ -111,7 +111,7 @@ let main_view = (view, cursor_info); | Tutorial(name, slides) => - print_endline(name); + print_endline("hi" ++ name); let info = SlideContent.get_content(editors) |> Option.map(i => div(~attrs=[Attr.id("slide")], [i])) @@ -119,38 +119,25 @@ let main_view = let matching_slide = List.find_opt(((slide_name, _)) => slide_name == name, slides); - switch (matching_slide) { - | Some((_, tutorialState)) => - let stitched_dynamics = - Tutorial.stitch_dynamic( - settings.core, - tutorialState, /* Use the state from the matching slide */ - settings.core.dynamics ? Some(results) : None, - ); - (); /* Use the state from the matching slide */ - let result = - switch (matching_slide) { - | None => [] - | Some((_, tutorial_state)) => - TutorialMode.view( - ~inject, - ~ui_state, - ~settings, - ~highlights, - // ~results, - ~stitched_dynamics, - ~tutorial=tutorial_state, - // ~results, - // ~highlights, - // ~editor, - ) - }; - (info @ result, cursor_info); - /* Use stitched_dynamics here */ - | _ => failwith("Invalid Slide") - /* Handle the case where no matching slide exists */ - }; + let result = + switch (matching_slide) { + | None => [] + | Some((_, tutorial_state)) => + TutorialMode.view( + ~inject, + ~ui_state, + ~settings, + ~highlights, + ~results, + ~tutorial=tutorial_state, + // ~results, + // ~highlights, + // ~editor, + ) + }; + + (info @ result, cursor_info); | Documentation(name, _) => let result_key = ScratchSlide.scratch_key(name); let view = diff --git a/src/haz3lweb/view/TutorialMode.re b/src/haz3lweb/view/TutorialMode.re index d0a68f9fa7..587a027f32 100644 --- a/src/haz3lweb/view/TutorialMode.re +++ b/src/haz3lweb/view/TutorialMode.re @@ -7,14 +7,6 @@ type vis_marked('a) = | InstructorOnly(unit => 'a) | Always('a); -// type validation_result = -// | ValidationSuccess(test_case) -// | ValidationFailure(test_case, string, string); - -// type validation_result = -// | ValidationSuccess(test_case) -// | ValidationFailure(test_case, string, string); - let render_cells = (settings: Settings.t, v: list(vis_marked(Node.t))) => { List.filter_map( vis => @@ -26,111 +18,13 @@ let render_cells = (settings: Settings.t, v: list(vis_marked(Node.t))) => { ); }; -let get_code = (z: Zipper.t): string => { - let segment = Zipper.unselect_and_zip(z); - let term = MakeTerm.go(segment).term; - UExp.show(term); // Convert the term into a string representation -}; -let zipper_to_string = (zipper: Haz3lcore.Zipper.t): string => { - Haz3lcore.Zipper.show( - zipper /* Automatically derived show function */ - ); -}; - -let editor_to_zipper = (editor: Editor.t): ZipperBase.t => { - editor.state. - zipper; /* Access zipper field */ -}; - -let hidden_tests_to_zipper = - (hidden_tests: Tutorial.hidden_tests(Editor.t)): ZipperBase.t => { - hidden_tests.tests.state. - zipper; /* Access zipper field */ -}; - -// let validate_user_impl = (~user_impl: string, ~hidden_tests: test_case) => { -// let func = test_case => { -// let expected_output = TestCase.get_expected_output(test_case); -// let actual_output = -// if (user_impl == "fib") { -// expected_output; -// } else { -// "error"; -// }; - -// if (actual_output == expected_output) { -// ValidationSuccess(test_case); -// } else { -// ValidationFailure(test_case, actual_output, expected_output); -// }; -// }; -// func(hidden_tests); -// }; - -let get_code = (z: Zipper.t): string => { - let segment = Zipper.unselect_and_zip(z); - let term = MakeTerm.go(segment).term; - UExp.show(term); // Convert the term into a string representation -}; -let zipper_to_string = (zipper: Haz3lcore.Zipper.t): string => { - Haz3lcore.Zipper.show( - zipper /* Automatically derived show function */ - ); -}; - -let editor_to_zipper = (editor: Editor.t): ZipperBase.t => { - editor.state. - zipper; /* Access zipper field */ -}; - -let hidden_tests_to_zipper = - (hidden_tests: Tutorial.hidden_tests(Editor.t)): ZipperBase.t => { - hidden_tests.tests.state. - zipper; /* Access zipper field */ -}; - -// let convert_editors_to_test_cases = -// (editors: Tutorial.hidden_tests(Editor.t)): test_case => { -// let zipper = hidden_tests_to_zipper(editors); -// let func = editor => { -// let input_code = get_code(editor); /* Replace with actual extraction logic */ -// TestCase.create( -// ~input=[input_code], -// ~expected_output="4", /* Example expected output */ -// ~description=Some("Sample Test Case"), -// ); -// }; -// func(zipper); -// }; - -// let validate_user_impl = (~user_impl: string, ~hidden_tests: test_case) => { -// let func = test_case => { -// let expected_output = TestCase.get_expected_output(test_case); -// let actual_output = -// if (user_impl == "fib") { -// expected_output; -// } else { -// "error"; -// }; - -// if (actual_output == expected_output) { -// ValidationSuccess(test_case); -// } else { -// ValidationFailure(test_case, actual_output, expected_output); -// }; -// }; -// func(hidden_tests); -// }; - let view = ( ~inject, ~ui_state: Model.ui_state, ~settings: Settings.t, ~tutorial, - // ~results, - ~stitched_dynamics, - // ~results, + ~results, // ~stitched_dynamics, ~highlights, ) => { @@ -138,27 +32,20 @@ let view = // let result = ModelResults.lookup(results, result_key); let Tutorial.{eds, pos} = tutorial; - // let stitched_dynamics = - // Tutorial.stitch_dynamic( - // settings.core, - // tutorial, - // settings.core.dynamics ? Some(results) : None, - // ); - // let stitched_dynamics = - // Tutorial.stitch_dynamic( - // settings.core, - // tutorial, - // settings.core.dynamics ? Some(results) : None, - // ); + let stitched_dynamics = + Tutorial.stitch_dynamic( + settings.core, + tutorial, + settings.core.dynamics ? Some(results) : None, + ); let { test_validation, user_impl, - user_tests, + // user_tests, // prelude, instructor, // hidden_bugs, - hidden_tests, - // hidden_tests, + hidden_tests: _, }: Tutorial.stitched(Tutorial.DynamicsItem.t) = stitched_dynamics; let grading_report = @@ -213,22 +100,6 @@ let view = ); }; - let your_tests_view = - Always( - editor_view( - YourTestsValidation, - ~caption="Test Validation", - ~subcaption=": Your Tests vs. Correct Implementation", - ~editor=eds.your_tests.tests, - ~di=test_validation, - ~footer=[] // TutorialGrading.TestValidationReport.view( - // ~inject, - // grading_report.test_validation_report, - // grading_report.point_distribution.test_validation, - // ), - ), - ); - let hidden_tests_view = InstructorOnly( () => @@ -240,40 +111,38 @@ let view = ), ); + // let your_tests_view = + // Always( + // editor_view( + // YourTestsValidation, + // ~caption="Test Validation", + // ~subcaption=": Your Tests vs. Correct Implementation", + // ~editor=eds.hidden_tests.tests, + // ~di=test_validation, + // ~footer=[] // TutorialGrading.TestValidationReport.view( + // // ~inject, + // // grading_report.test_validation_report, + // // grading_report.point_distribution.test_validation, + // // ), + // ), + // ); + let impl_validation_view = Always( - editor_view( - YourTestsTesting, - ~caption="Implementation Validation", - ~subcaption= - ": Your Tests (synchronized with Test Validation above) vs. Your Implementation", - ~editor=eds.your_tests.tests, - ~di=user_tests, - ~footer=[ - Cell.test_report_footer_view( - ~inject, - ~test_results=ModelResult.test_results(user_tests.result), - ), - ], + TutorialGrading.ImplGradingReport.view( + ~inject, + ~report=grading_report.impl_grading_report, + ~max_points=4, ), ); - // let impl_validation_view = - // Always( - // TutorialGrading.ImplGradingReport.view( - // ~inject, - // ~report=grading_report.impl_grading_report, - // ~max_points=4, - // ), - // ); - [title_view] @ render_cells( settings, [ your_impl_view, hidden_tests_view, - your_tests_view, + // your_tests_view, impl_validation_view, ], ); From 616033fb5459e3ac5f26783a6cc1c96fae46d625 Mon Sep 17 00:00:00 2001 From: facundoy Date: Sat, 7 Dec 2024 21:25:07 -0500 Subject: [PATCH 11/11] Fixed a bug where points were not being displayed correctly and another were information between editors was not being shared correctly --- src/haz3lschool/Tutorial.re | 39 +++++++----------------------- src/haz3lschool/TutorialGrading.re | 5 ++-- src/haz3lweb/view/Page.re | 23 ++++++++++++++++-- src/haz3lweb/view/TutorialMode.re | 12 ++------- 4 files changed, 34 insertions(+), 45 deletions(-) diff --git a/src/haz3lschool/Tutorial.re b/src/haz3lschool/Tutorial.re index 8292af2764..4656e4ebc5 100644 --- a/src/haz3lschool/Tutorial.re +++ b/src/haz3lschool/Tutorial.re @@ -90,7 +90,6 @@ module D = (TutorialEnv: TutorialEnv) => { [@deriving (show({with_path: false}), sexp, yojson)] type pos = | YourImpl - | YourTestsValidation | HiddenTests; [@deriving (show({with_path: false}), sexp, yojson)] @@ -134,7 +133,6 @@ module D = (TutorialEnv: TutorialEnv) => { ({pos, eds, _}) => switch (pos) { | YourImpl => eds.your_impl - | YourTestsValidation => eds.hidden_tests.tests | HiddenTests => eds.hidden_tests.tests }; @@ -147,7 +145,6 @@ module D = (TutorialEnv: TutorialEnv) => { your_impl: editor, }, } - | YourTestsValidation | HiddenTests => { ...state, eds: { @@ -165,7 +162,7 @@ module D = (TutorialEnv: TutorialEnv) => { eds.hidden_tests.tests, ]; - let editor_positions = [YourImpl, HiddenTests, YourTestsValidation]; + let editor_positions = [YourImpl, HiddenTests]; let positioned_editors = state => List.combine(editor_positions, editors(state)); @@ -173,8 +170,7 @@ module D = (TutorialEnv: TutorialEnv) => { let idx_of_pos = (pos, p: p('code)) => switch (pos) { | YourImpl => 0 - | YourTestsValidation => 1 - | HiddenTests => 1 + List.length(p.hidden_tests.tests) + | HiddenTests => 0 + List.length(p.hidden_tests.tests) }; let pos_of_idx = (p: p('code), idx: int) => @@ -264,7 +260,6 @@ module D = (TutorialEnv: TutorialEnv) => { let visible_in = (pos, ~instructor_mode) => { switch (pos) { | YourImpl => true - | YourTestsValidation => true | HiddenTests => instructor_mode }; }; @@ -346,7 +341,6 @@ module D = (TutorialEnv: TutorialEnv) => { // }; type stitched('a) = { - test_validation: 'a, // prelude + correct_impl + your_tests user_impl: 'a, // prelude + your_impl instructor: 'a, // prelude + correct_impl + hidden_tests.tests // TODO only needs to run in instructor mode hidden_tests: 'a, @@ -389,22 +383,20 @@ module D = (TutorialEnv: TutorialEnv) => { EditorUtil.append_exp(term_of(ed1)); let stitch_term = ({eds, _}: state): stitched(UExp.t) => { - let instructor = eds.hidden_tests.tests |> term_of; + let instructor = + EditorUtil.append_exp( + term_of(eds.your_impl), + term_of(eds.hidden_tests.tests), + ); let user_impl_term = { eds.your_impl |> term_of |> wrap_filter(FilterAction.Step); }; - let test_validation_term = eds.hidden_tests.tests |> term_of; // No combining of your_impl_term with hidden_tests let hidden_tests_term = EditorUtil.append_exp(user_impl_term, term_of(eds.hidden_tests.tests)); - { - user_impl: user_impl_term, - instructor, - test_validation: test_validation_term, - hidden_tests: hidden_tests_term, - }; + {user_impl: user_impl_term, instructor, hidden_tests: hidden_tests_term}; }; let stitch_term = Core.Memo.general(stitch_term); @@ -425,7 +417,6 @@ module D = (TutorialEnv: TutorialEnv) => { }; let instructor = mk(t.instructor); { - test_validation: mk(t.test_validation), user_impl: mk(t.user_impl), instructor, hidden_tests: mk(t.hidden_tests), @@ -458,20 +449,18 @@ module D = (TutorialEnv: TutorialEnv) => { let key_for_statics = (state: state): string => switch (state.pos) { | YourImpl => user_impl_key - | YourTestsValidation => test_validation_key | HiddenTests => hidden_tests_key }; let spliced_elabs = (settings: CoreSettings.t, state: state) : list((ModelResults.key, Elaborator.Elaboration.t)) => { - let {test_validation, user_impl, instructor, hidden_tests} = + let {user_impl, instructor, hidden_tests} = stitch_static(settings, stitch_term(state)); let elab = (s: Editor.CachedStatics.t): Elaborator.Elaboration.t => { d: Interface.elaborate(~settings, s.info_map, s.term), }; [ - (test_validation_key, elab(test_validation)), (user_impl_key, elab(user_impl)), (instructor_key, elab(instructor)), (hidden_tests_key, elab(hidden_tests)), @@ -500,7 +489,6 @@ module D = (TutorialEnv: TutorialEnv) => { (state: state, s: stitched(DynamicsItem.t)): Editor.CachedStatics.t => switch (state.pos) { | YourImpl => s.user_impl.statics - | YourTestsValidation => s.test_validation.statics | HiddenTests => s.hidden_tests.statics }; @@ -515,7 +503,6 @@ module D = (TutorialEnv: TutorialEnv) => { ) : stitched(DynamicsItem.t) => { let { - test_validation, user_impl, // user_tests, // prelude, @@ -531,11 +518,6 @@ module D = (TutorialEnv: TutorialEnv) => { ModelResults.lookup(results, key) |> Option.value(~default=ModelResult.NoElab) }; - let test_validation = - DynamicsItem.{ - statics: test_validation, - result: result_of(test_validation_key), - }; let user_impl = DynamicsItem.{statics: user_impl, result: result_of(user_impl_key)}; @@ -549,7 +531,6 @@ module D = (TutorialEnv: TutorialEnv) => { result: result_of(hidden_tests_key), }; { - test_validation, user_impl, // user_tests, instructor, @@ -571,7 +552,6 @@ module D = (TutorialEnv: TutorialEnv) => { } else if (settings.statics) { let t = stitch_static(settings, stitch_term(state)); { - test_validation: DynamicsItem.statics_only(t.test_validation), user_impl: DynamicsItem.statics_only(t.user_impl), // user_tests: DynamicsItem.statics_only(t.user_tests), instructor: DynamicsItem.statics_only(t.instructor), @@ -581,7 +561,6 @@ module D = (TutorialEnv: TutorialEnv) => { }; } else { { - test_validation: DynamicsItem.empty, user_impl: DynamicsItem.empty, // user_tests: DynamicsItem.empty, instructor: DynamicsItem.empty, diff --git a/src/haz3lschool/TutorialGrading.re b/src/haz3lschool/TutorialGrading.re index bcf3368660..7496be673c 100644 --- a/src/haz3lschool/TutorialGrading.re +++ b/src/haz3lschool/TutorialGrading.re @@ -59,7 +59,7 @@ module D = (TutorialEnv: Tutorial.TutorialEnv) => { if (total == 0.0) { 0.0; // Avoid division by zero } else { - 100.0 *. (passed /. total); // Return percentage as a float + passed /. total; // Return percentage as a float }; }; @@ -131,11 +131,10 @@ module D = (TutorialEnv: Tutorial.TutorialEnv) => { // MutationTestingReport.percentage(mutation_testing_report), // point_distribution.mutation_testing, // ); - let max_impl_grading = 100; let (ig_points, ig_max) = score_of_percent( ImplGradingReport.percentage(impl_grading_report), - max_impl_grading, + 1, ); let total_points = ig_points; let max_points = ig_max; diff --git a/src/haz3lweb/view/Page.re b/src/haz3lweb/view/Page.re index d2585076fd..a458732ec9 100644 --- a/src/haz3lweb/view/Page.re +++ b/src/haz3lweb/view/Page.re @@ -124,17 +124,36 @@ let main_view = switch (matching_slide) { | None => [] | Some((_, tutorial_state)) => + let stitched_dynamics = + Tutorial.stitch_dynamic( + settings.core, + tutorial_state, + settings.core.dynamics ? Some(results) : None, + ); + let statics = + Tutorial.statics_of_stiched_dynamics( + tutorial_state, + stitched_dynamics, + ); + let cursor_info = + Indicated.ci_of(editor.state.zipper, statics.info_map); + let highlights = + ExplainThis.get_color_map( + ~settings, + ~explainThisModel, + cursor_info, + ); TutorialMode.view( ~inject, ~ui_state, ~settings, ~highlights, - ~results, + ~stitched_dynamics, ~tutorial=tutorial_state, // ~results, // ~highlights, // ~editor, - ) + ); }; (info @ result, cursor_info); diff --git a/src/haz3lweb/view/TutorialMode.re b/src/haz3lweb/view/TutorialMode.re index 587a027f32..7203ffb68d 100644 --- a/src/haz3lweb/view/TutorialMode.re +++ b/src/haz3lweb/view/TutorialMode.re @@ -24,22 +24,14 @@ let view = ~ui_state: Model.ui_state, ~settings: Settings.t, ~tutorial, - ~results, - // ~stitched_dynamics, + ~stitched_dynamics, ~highlights, ) => { // editor : Editor.t, // let result = ModelResults.lookup(results, result_key); let Tutorial.{eds, pos} = tutorial; - let stitched_dynamics = - Tutorial.stitch_dynamic( - settings.core, - tutorial, - settings.core.dynamics ? Some(results) : None, - ); let { - test_validation, user_impl, // user_tests, // prelude, @@ -132,7 +124,7 @@ let view = TutorialGrading.ImplGradingReport.view( ~inject, ~report=grading_report.impl_grading_report, - ~max_points=4, + ~max_points=1, ), );