From 3d1ac572f56a8d0398063e058de748e9850da3f6 Mon Sep 17 00:00:00 2001 From: Yura Lazarev Date: Mon, 27 Jul 2026 14:45:59 +0200 Subject: [PATCH 1/5] test(golden): pin the pre-#240 boxed shapes of field-wise records MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A new Golden.ScalarReplacement.Test module covering the aggregate shapes issue #240 unpacks: a let-bound record read at two fields (fieldwise), the defaults pattern of a literal read at a field and used as an update base (defaults), a record-update chain read field-wise (chained), and a record flowing into a branch result as a whole value that must keep its allocation (wholeValue), the soundness guard. The goldens pin the current boxed form — every record a table allocation, every update a PSLUA_object_update copy — so the unpacking rewrite shows as a reviewable diff against them; the hand-written eval oracle pins the runtime outputs the rewrite must preserve. --- .../Golden.ScalarReplacement.Test/corefn.json | 1 + .../eval/.gitignore | 1 + .../eval/golden.txt | 5 + .../Golden.ScalarReplacement.Test/golden.ir | 371 ++++++++++++++++++ .../Golden.ScalarReplacement.Test/golden.lua | 59 +++ .../ps/src/Golden/ScalarReplacement/Test.purs | 63 +++ 6 files changed, 500 insertions(+) create mode 100644 test/ps/output/Golden.ScalarReplacement.Test/corefn.json create mode 100644 test/ps/output/Golden.ScalarReplacement.Test/eval/.gitignore create mode 100644 test/ps/output/Golden.ScalarReplacement.Test/eval/golden.txt create mode 100644 test/ps/output/Golden.ScalarReplacement.Test/golden.ir create mode 100644 test/ps/output/Golden.ScalarReplacement.Test/golden.lua create mode 100644 test/ps/src/Golden/ScalarReplacement/Test.purs diff --git a/test/ps/output/Golden.ScalarReplacement.Test/corefn.json b/test/ps/output/Golden.ScalarReplacement.Test/corefn.json new file mode 100644 index 00000000..95b55132 --- /dev/null +++ b/test/ps/output/Golden.ScalarReplacement.Test/corefn.json @@ -0,0 +1 @@ +{"builtWith":"0.15.16","comments":[{"LineComment":" | Let-bound records and record updates that are only ever read"},{"LineComment":" | field-wise still allocate their tables (issue #240): the goldens"},{"LineComment":" | pin the current boxed shapes so the scalar-replacement rewrite"},{"LineComment":" | shows as a reviewable diff. Covers a record read at two fields"},{"LineComment":" | (`fieldwise`), the defaults pattern — a literal read at a field"},{"LineComment":" | and updated (`defaults`), a record-update chain read field-wise"},{"LineComment":" | (`chained`), and a record that flows somewhere whole and must"},{"LineComment":" | keep its allocation (`wholeValue`), the soundness guard."},{"LineComment":" @inline wholeValue never"}],"decls":[{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"bindType":"NonRec","expression":{"abstraction":{"annotation":{"meta":{"metaType":"IsForeign"},"sourceSpan":{"end":[52,23],"start":[52,22]}},"type":"Var","value":{"identifier":"add","moduleName":["Data","Semiring"]}},"annotation":{"meta":{"metaType":"IsSyntheticApp"},"sourceSpan":{"end":[52,25],"start":[52,20]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"type":"Var","value":{"identifier":"semiringInt","moduleName":["Data","Semiring"]}},"type":"App"},"identifier":"add"},{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"bindType":"NonRec","expression":{"abstraction":{"annotation":{"meta":{"metaType":"IsForeign"},"sourceSpan":{"end":[53,17],"start":[53,16]}},"type":"Var","value":{"identifier":"greaterThan","moduleName":["Data","Ord"]}},"annotation":{"meta":{"metaType":"IsSyntheticApp"},"sourceSpan":{"end":[53,19],"start":[53,12]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"type":"Var","value":{"identifier":"ordInt","moduleName":["Data","Ord"]}},"type":"App"},"identifier":"greaterThan"},{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"bindType":"NonRec","expression":{"abstraction":{"annotation":{"meta":{"metaType":"IsForeign"},"sourceSpan":{"end":[53,43],"start":[53,42]}},"type":"Var","value":{"identifier":"sub","moduleName":["Data","Ring"]}},"annotation":{"meta":{"metaType":"IsSyntheticApp"},"sourceSpan":{"end":[53,47],"start":[53,40]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"type":"Var","value":{"identifier":"ringInt","moduleName":["Data","Ring"]}},"type":"App"},"identifier":"sub"},{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"bindType":"NonRec","expression":{"abstraction":{"annotation":{"meta":{"metaType":"IsForeign"},"sourceSpan":{"end":[21,36],"start":[21,35]}},"type":"Var","value":{"identifier":"mul","moduleName":["Data","Semiring"]}},"annotation":{"meta":{"metaType":"IsSyntheticApp"},"sourceSpan":{"end":[21,38],"start":[21,33]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"type":"Var","value":{"identifier":"semiringInt","moduleName":["Data","Semiring"]}},"type":"App"},"identifier":"mul"},{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"bindType":"NonRec","expression":{"abstraction":{"abstraction":{"annotation":{"meta":{"metaType":"IsForeign"},"sourceSpan":{"end":[59,25],"start":[59,3]}},"type":"Var","value":{"identifier":"discard","moduleName":["Control","Bind"]}},"annotation":{"meta":{"metaType":"IsSyntheticApp"},"sourceSpan":{"end":[59,25],"start":[59,3]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"type":"Var","value":{"identifier":"discardUnit","moduleName":["Control","Bind"]}},"type":"App"},"annotation":{"meta":{"metaType":"IsSyntheticApp"},"sourceSpan":{"end":[59,25],"start":[59,3]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"type":"Var","value":{"identifier":"bindEffect","moduleName":["Effect"]}},"type":"App"},"identifier":"discard"},{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"bindType":"NonRec","expression":{"abstraction":{"annotation":{"meta":{"metaType":"IsForeign"},"sourceSpan":{"end":[59,10],"start":[59,3]}},"type":"Var","value":{"identifier":"logShow","moduleName":["Effect","Console"]}},"annotation":{"meta":{"metaType":"IsSyntheticApp"},"sourceSpan":{"end":[59,25],"start":[59,3]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"type":"Var","value":{"identifier":"showInt","moduleName":["Data","Show"]}},"type":"App"},"identifier":"logShow"},{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"bindType":"NonRec","expression":{"abstraction":{"annotation":{"meta":{"metaType":"IsForeign"},"sourceSpan":{"end":[63,26],"start":[63,24]}},"type":"Var","value":{"identifier":"negate","moduleName":["Data","Ring"]}},"annotation":{"meta":{"metaType":"IsSyntheticApp"},"sourceSpan":{"end":[63,26],"start":[63,24]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"type":"Var","value":{"identifier":"ringInt","moduleName":["Data","Ring"]}},"type":"App"},"identifier":"negate"},{"annotation":{"meta":null,"sourceSpan":{"end":[49,25],"start":[49,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[49,25],"start":[49,1]}},"argument":"n","body":{"annotation":{"meta":null,"sourceSpan":{"end":[55,14],"start":[51,3]}},"binds":[{"annotation":{"meta":null,"sourceSpan":{"end":[52,27],"start":[52,5]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[52,27],"start":[52,9]}},"type":"Literal","value":{"literalType":"ObjectLiteral","value":[["a",{"annotation":{"meta":null,"sourceSpan":{"end":[52,15],"start":[52,14]}},"type":"Var","value":{"identifier":"n","sourcePos":[50,1]}}],["b",{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"type":"Var","value":{"identifier":"add","moduleName":["Golden","ScalarReplacement","Test"]}},"annotation":{"meta":null,"sourceSpan":{"end":[52,25],"start":[52,20]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[52,21],"start":[52,20]}},"type":"Var","value":{"identifier":"n","sourcePos":[50,1]}},"type":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[52,25],"start":[52,20]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[52,25],"start":[52,24]}},"type":"Literal","value":{"literalType":"IntLiteral","value":1}},"type":"App"}]]}},"identifier":"r"},{"annotation":{"meta":null,"sourceSpan":{"end":[53,49],"start":[53,5]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[53,49],"start":[53,9]}},"caseAlternatives":[{"binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[53,49],"start":[53,9]}},"binderType":"LiteralBinder","literal":{"literalType":"BooleanLiteral","value":true}}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[53,26],"start":[53,25]}},"type":"Var","value":{"identifier":"r","sourcePos":[52,5]}},"isGuarded":false},{"binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[53,49],"start":[53,9]}},"binderType":"NullBinder"}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[53,49],"start":[53,32]}},"binds":[{"annotation":{"meta":null,"sourceSpan":{"end":[55,14],"start":[50,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[53,33],"start":[53,32]}},"type":"Var","value":{"identifier":"r","sourcePos":[52,5]}},"identifier":"v"}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[53,49],"start":[53,32]}},"copy":["b"],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"type":"Var","value":{"identifier":"v","sourcePos":[50,1]}},"type":"ObjectUpdate","updates":[["a",{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"type":"Var","value":{"identifier":"sub","moduleName":["Golden","ScalarReplacement","Test"]}},"annotation":{"meta":null,"sourceSpan":{"end":[53,47],"start":[53,40]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[53,41],"start":[53,40]}},"type":"Literal","value":{"literalType":"IntLiteral","value":0}},"type":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[53,47],"start":[53,40]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[53,47],"start":[53,44]}},"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[53,45],"start":[53,44]}},"type":"Var","value":{"identifier":"r","sourcePos":[52,5]}},"fieldName":"a","type":"Accessor"},"type":"App"}]]},"type":"Let"},"isGuarded":false}],"caseExpressions":[{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"type":"Var","value":{"identifier":"greaterThan","moduleName":["Golden","ScalarReplacement","Test"]}},"annotation":{"meta":null,"sourceSpan":{"end":[53,19],"start":[53,12]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[53,15],"start":[53,12]}},"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[53,13],"start":[53,12]}},"type":"Var","value":{"identifier":"r","sourcePos":[52,5]}},"fieldName":"a","type":"Accessor"},"type":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[53,19],"start":[53,12]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[53,19],"start":[53,18]}},"type":"Literal","value":{"literalType":"IntLiteral","value":0}},"type":"App"}],"type":"Case"},"identifier":"s"}],"expression":{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"type":"Var","value":{"identifier":"add","moduleName":["Golden","ScalarReplacement","Test"]}},"annotation":{"meta":null,"sourceSpan":{"end":[55,14],"start":[55,5]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[55,8],"start":[55,5]}},"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[55,6],"start":[55,5]}},"type":"Var","value":{"identifier":"s","sourcePos":[53,5]}},"fieldName":"a","type":"Accessor"},"type":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[55,14],"start":[55,5]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[55,14],"start":[55,11]}},"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[55,12],"start":[55,11]}},"type":"Var","value":{"identifier":"s","sourcePos":[53,5]}},"fieldName":"b","type":"Accessor"},"type":"App"},"type":"Let"},"type":"Abs"},"identifier":"wholeValue"},{"annotation":{"meta":null,"sourceSpan":{"end":[18,24],"start":[18,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[18,24],"start":[18,1]}},"argument":"n","body":{"annotation":{"meta":null,"sourceSpan":{"end":[23,23],"start":[20,3]}},"binds":[{"annotation":{"meta":null,"sourceSpan":{"end":[21,40],"start":[21,5]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[21,40],"start":[21,9]}},"type":"Literal","value":{"literalType":"ObjectLiteral","value":[["width",{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"type":"Var","value":{"identifier":"add","moduleName":["Golden","ScalarReplacement","Test"]}},"annotation":{"meta":null,"sourceSpan":{"end":[21,23],"start":[21,18]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[21,19],"start":[21,18]}},"type":"Var","value":{"identifier":"n","sourcePos":[19,1]}},"type":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[21,23],"start":[21,18]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[21,23],"start":[21,22]}},"type":"Literal","value":{"literalType":"IntLiteral","value":1}},"type":"App"}],["height",{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"type":"Var","value":{"identifier":"mul","moduleName":["Golden","ScalarReplacement","Test"]}},"annotation":{"meta":null,"sourceSpan":{"end":[21,38],"start":[21,33]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[21,34],"start":[21,33]}},"type":"Var","value":{"identifier":"n","sourcePos":[19,1]}},"type":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[21,38],"start":[21,33]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[21,38],"start":[21,37]}},"type":"Literal","value":{"literalType":"IntLiteral","value":2}},"type":"App"}]]}},"identifier":"r"}],"expression":{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"type":"Var","value":{"identifier":"add","moduleName":["Golden","ScalarReplacement","Test"]}},"annotation":{"meta":null,"sourceSpan":{"end":[23,23],"start":[23,5]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[23,12],"start":[23,5]}},"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[23,6],"start":[23,5]}},"type":"Var","value":{"identifier":"r","sourcePos":[21,5]}},"fieldName":"width","type":"Accessor"},"type":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[23,23],"start":[23,5]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[23,23],"start":[23,15]}},"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[23,16],"start":[23,15]}},"type":"Var","value":{"identifier":"r","sourcePos":[21,5]}},"fieldName":"height","type":"Accessor"},"type":"App"},"type":"Let"},"type":"Abs"},"identifier":"fieldwise"},{"annotation":{"meta":null,"sourceSpan":{"end":[28,23],"start":[28,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[28,23],"start":[28,1]}},"argument":"n","body":{"annotation":{"meta":null,"sourceSpan":{"end":[34,47],"start":[30,3]}},"binds":[{"annotation":{"meta":null,"sourceSpan":{"end":[31,36],"start":[31,5]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[31,36],"start":[31,12]}},"type":"Literal","value":{"literalType":"ObjectLiteral","value":[["verbose",{"annotation":{"meta":null,"sourceSpan":{"end":[31,24],"start":[31,23]}},"type":"Literal","value":{"literalType":"IntLiteral","value":1}}],["level",{"annotation":{"meta":null,"sourceSpan":{"end":[31,34],"start":[31,33]}},"type":"Var","value":{"identifier":"n","sourcePos":[29,1]}}]]}},"identifier":"opts"},{"annotation":{"meta":null,"sourceSpan":{"end":[32,34],"start":[32,5]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[32,34],"start":[32,14]}},"binds":[{"annotation":{"meta":null,"sourceSpan":{"end":[34,47],"start":[29,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[32,18],"start":[32,14]}},"type":"Var","value":{"identifier":"opts","sourcePos":[31,5]}},"identifier":"v"}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[32,34],"start":[32,14]}},"copy":["level"],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"type":"Var","value":{"identifier":"v","sourcePos":[29,1]}},"type":"ObjectUpdate","updates":[["verbose",{"annotation":{"meta":null,"sourceSpan":{"end":[32,32],"start":[32,31]}},"type":"Literal","value":{"literalType":"IntLiteral","value":2}}]]},"type":"Let"},"identifier":"chosen"}],"expression":{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"type":"Var","value":{"identifier":"add","moduleName":["Golden","ScalarReplacement","Test"]}},"annotation":{"meta":null,"sourceSpan":{"end":[34,47],"start":[34,5]}},"argument":{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"type":"Var","value":{"identifier":"add","moduleName":["Golden","ScalarReplacement","Test"]}},"annotation":{"meta":null,"sourceSpan":{"end":[34,47],"start":[34,5]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[34,15],"start":[34,5]}},"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[34,9],"start":[34,5]}},"type":"Var","value":{"identifier":"opts","sourcePos":[31,5]}},"fieldName":"level","type":"Accessor"},"type":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[34,47],"start":[34,5]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[34,32],"start":[34,18]}},"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[34,24],"start":[34,18]}},"type":"Var","value":{"identifier":"chosen","sourcePos":[32,5]}},"fieldName":"verbose","type":"Accessor"},"type":"App"},"type":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[34,47],"start":[34,5]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[34,47],"start":[34,35]}},"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[34,41],"start":[34,35]}},"type":"Var","value":{"identifier":"chosen","sourcePos":[32,5]}},"fieldName":"level","type":"Accessor"},"type":"App"},"type":"Let"},"type":"Abs"},"identifier":"defaults"},{"annotation":{"meta":null,"sourceSpan":{"end":[38,29],"start":[38,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[38,29],"start":[38,1]}},"argument":"a","body":{"annotation":{"meta":null,"sourceSpan":{"end":[38,29],"start":[38,1]}},"argument":"b","body":{"annotation":{"meta":null,"sourceSpan":{"end":[45,23],"start":[40,3]}},"binds":[{"annotation":{"meta":null,"sourceSpan":{"end":[41,30],"start":[41,5]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[41,30],"start":[41,10]}},"type":"Literal","value":{"literalType":"ObjectLiteral","value":[["x",{"annotation":{"meta":null,"sourceSpan":{"end":[41,16],"start":[41,15]}},"type":"Var","value":{"identifier":"a","sourcePos":[39,1]}}],["y",{"annotation":{"meta":null,"sourceSpan":{"end":[41,22],"start":[41,21]}},"type":"Literal","value":{"literalType":"IntLiteral","value":0}}],["z",{"annotation":{"meta":null,"sourceSpan":{"end":[41,28],"start":[41,27]}},"type":"Literal","value":{"literalType":"IntLiteral","value":0}}]]}},"identifier":"r0"},{"annotation":{"meta":null,"sourceSpan":{"end":[42,22],"start":[42,5]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[42,22],"start":[42,10]}},"binds":[{"annotation":{"meta":null,"sourceSpan":{"end":[45,23],"start":[39,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[42,12],"start":[42,10]}},"type":"Var","value":{"identifier":"r0","sourcePos":[41,5]}},"identifier":"v"}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[42,22],"start":[42,10]}},"copy":["x","z"],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"type":"Var","value":{"identifier":"v","sourcePos":[39,1]}},"type":"ObjectUpdate","updates":[["y",{"annotation":{"meta":null,"sourceSpan":{"end":[42,20],"start":[42,19]}},"type":"Var","value":{"identifier":"b","sourcePos":[39,1]}}]]},"type":"Let"},"identifier":"r1"},{"annotation":{"meta":null,"sourceSpan":{"end":[43,26],"start":[43,5]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[43,26],"start":[43,10]}},"binds":[{"annotation":{"meta":null,"sourceSpan":{"end":[45,23],"start":[39,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[43,12],"start":[43,10]}},"type":"Var","value":{"identifier":"r1","sourcePos":[42,5]}},"identifier":"v"}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[43,26],"start":[43,10]}},"copy":["x","y"],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"type":"Var","value":{"identifier":"v","sourcePos":[39,1]}},"type":"ObjectUpdate","updates":[["z",{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"type":"Var","value":{"identifier":"add","moduleName":["Golden","ScalarReplacement","Test"]}},"annotation":{"meta":null,"sourceSpan":{"end":[43,24],"start":[43,19]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[43,20],"start":[43,19]}},"type":"Var","value":{"identifier":"a","sourcePos":[39,1]}},"type":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[43,24],"start":[43,19]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[43,24],"start":[43,23]}},"type":"Var","value":{"identifier":"b","sourcePos":[39,1]}},"type":"App"}]]},"type":"Let"},"identifier":"r2"}],"expression":{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"type":"Var","value":{"identifier":"add","moduleName":["Golden","ScalarReplacement","Test"]}},"annotation":{"meta":null,"sourceSpan":{"end":[45,23],"start":[45,5]}},"argument":{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"type":"Var","value":{"identifier":"add","moduleName":["Golden","ScalarReplacement","Test"]}},"annotation":{"meta":null,"sourceSpan":{"end":[45,23],"start":[45,5]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[45,9],"start":[45,5]}},"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[45,7],"start":[45,5]}},"type":"Var","value":{"identifier":"r2","sourcePos":[43,5]}},"fieldName":"x","type":"Accessor"},"type":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[45,23],"start":[45,5]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[45,16],"start":[45,12]}},"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[45,14],"start":[45,12]}},"type":"Var","value":{"identifier":"r2","sourcePos":[43,5]}},"fieldName":"y","type":"Accessor"},"type":"App"},"type":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[45,23],"start":[45,5]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[45,23],"start":[45,19]}},"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[45,21],"start":[45,19]}},"type":"Var","value":{"identifier":"r2","sourcePos":[43,5]}},"fieldName":"z","type":"Accessor"},"type":"App"},"type":"Let"},"type":"Abs"},"type":"Abs"},"identifier":"chained"},{"annotation":{"meta":null,"sourceSpan":{"end":[57,20],"start":[57,1]}},"bindType":"NonRec","expression":{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"type":"Var","value":{"identifier":"discard","moduleName":["Golden","ScalarReplacement","Test"]}},"annotation":{"meta":null,"sourceSpan":{"end":[59,25],"start":[59,3]}},"argument":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"type":"Var","value":{"identifier":"logShow","moduleName":["Golden","ScalarReplacement","Test"]}},"annotation":{"meta":null,"sourceSpan":{"end":[59,25],"start":[59,3]}},"argument":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[59,21],"start":[59,12]}},"type":"Var","value":{"identifier":"fieldwise","moduleName":["Golden","ScalarReplacement","Test"]}},"annotation":{"meta":null,"sourceSpan":{"end":[59,24],"start":[59,12]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[59,24],"start":[59,22]}},"type":"Literal","value":{"literalType":"IntLiteral","value":10}},"type":"App"},"type":"App"},"type":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[59,25],"start":[59,3]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[59,25],"start":[59,3]}},"argument":"$__unused","body":{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"type":"Var","value":{"identifier":"discard","moduleName":["Golden","ScalarReplacement","Test"]}},"annotation":{"meta":null,"sourceSpan":{"end":[60,23],"start":[60,3]}},"argument":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"type":"Var","value":{"identifier":"logShow","moduleName":["Golden","ScalarReplacement","Test"]}},"annotation":{"meta":null,"sourceSpan":{"end":[60,23],"start":[60,3]}},"argument":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[60,20],"start":[60,12]}},"type":"Var","value":{"identifier":"defaults","moduleName":["Golden","ScalarReplacement","Test"]}},"annotation":{"meta":null,"sourceSpan":{"end":[60,22],"start":[60,12]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[60,22],"start":[60,21]}},"type":"Literal","value":{"literalType":"IntLiteral","value":5}},"type":"App"},"type":"App"},"type":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[60,23],"start":[60,3]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[60,23],"start":[60,3]}},"argument":"$__unused","body":{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"type":"Var","value":{"identifier":"discard","moduleName":["Golden","ScalarReplacement","Test"]}},"annotation":{"meta":null,"sourceSpan":{"end":[61,24],"start":[61,3]}},"argument":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"type":"Var","value":{"identifier":"logShow","moduleName":["Golden","ScalarReplacement","Test"]}},"annotation":{"meta":null,"sourceSpan":{"end":[61,24],"start":[61,3]}},"argument":{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[61,19],"start":[61,12]}},"type":"Var","value":{"identifier":"chained","moduleName":["Golden","ScalarReplacement","Test"]}},"annotation":{"meta":null,"sourceSpan":{"end":[61,21],"start":[61,12]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[61,21],"start":[61,20]}},"type":"Literal","value":{"literalType":"IntLiteral","value":3}},"type":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[61,23],"start":[61,12]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[61,23],"start":[61,22]}},"type":"Literal","value":{"literalType":"IntLiteral","value":4}},"type":"App"},"type":"App"},"type":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[61,24],"start":[61,3]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[61,24],"start":[61,3]}},"argument":"$__unused","body":{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"type":"Var","value":{"identifier":"discard","moduleName":["Golden","ScalarReplacement","Test"]}},"annotation":{"meta":null,"sourceSpan":{"end":[62,25],"start":[62,3]}},"argument":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"type":"Var","value":{"identifier":"logShow","moduleName":["Golden","ScalarReplacement","Test"]}},"annotation":{"meta":null,"sourceSpan":{"end":[62,25],"start":[62,3]}},"argument":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[62,22],"start":[62,12]}},"type":"Var","value":{"identifier":"wholeValue","moduleName":["Golden","ScalarReplacement","Test"]}},"annotation":{"meta":null,"sourceSpan":{"end":[62,24],"start":[62,12]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[62,24],"start":[62,23]}},"type":"Literal","value":{"literalType":"IntLiteral","value":5}},"type":"App"},"type":"App"},"type":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[62,25],"start":[62,3]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[62,25],"start":[62,3]}},"argument":"$__unused","body":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"type":"Var","value":{"identifier":"logShow","moduleName":["Golden","ScalarReplacement","Test"]}},"annotation":{"meta":null,"sourceSpan":{"end":[63,28],"start":[63,3]}},"argument":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[63,22],"start":[63,12]}},"type":"Var","value":{"identifier":"wholeValue","moduleName":["Golden","ScalarReplacement","Test"]}},"annotation":{"meta":null,"sourceSpan":{"end":[63,27],"start":[63,12]}},"argument":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"type":"Var","value":{"identifier":"negate","moduleName":["Golden","ScalarReplacement","Test"]}},"annotation":{"meta":null,"sourceSpan":{"end":[63,26],"start":[63,24]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[63,26],"start":[63,25]}},"type":"Literal","value":{"literalType":"IntLiteral","value":3}},"type":"App"},"type":"App"},"type":"App"},"type":"Abs"},"type":"App"},"type":"Abs"},"type":"App"},"type":"Abs"},"type":"App"},"type":"Abs"},"type":"App"},"identifier":"main"}],"exports":["fieldwise","defaults","chained","wholeValue","main"],"foreign":[],"imports":[{"annotation":{"meta":null,"sourceSpan":{"end":[63,28],"start":[10,1]}},"moduleName":["Control","Bind"]},{"annotation":{"meta":null,"sourceSpan":{"end":[63,28],"start":[10,1]}},"moduleName":["Data","Ord"]},{"annotation":{"meta":null,"sourceSpan":{"end":[63,28],"start":[10,1]}},"moduleName":["Data","Ring"]},{"annotation":{"meta":null,"sourceSpan":{"end":[63,28],"start":[10,1]}},"moduleName":["Data","Semiring"]},{"annotation":{"meta":null,"sourceSpan":{"end":[63,28],"start":[10,1]}},"moduleName":["Data","Show"]},{"annotation":{"meta":null,"sourceSpan":{"end":[63,28],"start":[10,1]}},"moduleName":["Effect"]},{"annotation":{"meta":null,"sourceSpan":{"end":[63,28],"start":[10,1]}},"moduleName":["Effect","Console"]},{"annotation":{"meta":null,"sourceSpan":{"end":[63,28],"start":[10,1]}},"moduleName":["Golden","ScalarReplacement","Test"]},{"annotation":{"meta":null,"sourceSpan":{"end":[12,15],"start":[12,1]}},"moduleName":["Prelude"]},{"annotation":{"meta":null,"sourceSpan":{"end":[63,28],"start":[10,1]}},"moduleName":["Prim"]}],"moduleName":["Golden","ScalarReplacement","Test"],"modulePath":"src/Golden/ScalarReplacement/Test.purs","reExports":{},"sourceSpan":{"end":[63,28],"start":[10,1]}} \ No newline at end of file diff --git a/test/ps/output/Golden.ScalarReplacement.Test/eval/.gitignore b/test/ps/output/Golden.ScalarReplacement.Test/eval/.gitignore new file mode 100644 index 00000000..d2dc29bb --- /dev/null +++ b/test/ps/output/Golden.ScalarReplacement.Test/eval/.gitignore @@ -0,0 +1 @@ +actual.txt diff --git a/test/ps/output/Golden.ScalarReplacement.Test/eval/golden.txt b/test/ps/output/Golden.ScalarReplacement.Test/eval/golden.txt new file mode 100644 index 00000000..3f887353 --- /dev/null +++ b/test/ps/output/Golden.ScalarReplacement.Test/eval/golden.txt @@ -0,0 +1,5 @@ +31 +12 +14 +11 +1 diff --git a/test/ps/output/Golden.ScalarReplacement.Test/golden.ir b/test/ps/output/Golden.ScalarReplacement.Test/golden.ir new file mode 100644 index 00000000..996522cb --- /dev/null +++ b/test/ps/output/Golden.ScalarReplacement.Test/golden.ir @@ -0,0 +1,371 @@ +UberModule + { uberModuleBindings = + [ Standalone + ( QName + { qnameModuleName = ModuleName "Data.Show", qnameName = Name "foreign" + }, ForeignImport Nothing + ( ModuleName "Data.Show" ) ".spago/p/prelude/5718c84fdde6247749cb053e816df696c30fe691/src/Data/Show.purs" + [ ( Nothing, Name "showIntImpl" ) ] + ), Standalone + ( QName + { qnameModuleName = ModuleName "Effect.Console", qnameName = Name "foreign" + }, ForeignImport Nothing + ( ModuleName "Effect.Console" ) ".spago/p/console/f82835a0b873aafe6bd7b14dd30cc150553d4ab9/src/Effect/Console.purs" + [ ( Nothing, Name "log" ) ] + ), Standalone + ( QName + { qnameModuleName = ModuleName "Data.Semiring", qnameName = Name "semiringInt" + }, LiteralObject Nothing + [ + ( PropName "add", AbsN Nothing + ( ParamNamed Nothing ( Name "x$193" ) :| [] ) + ( AbsN Nothing + ( ParamNamed Nothing ( Name "y$194" ) :| [] ) + ( PrimBinOp Nothing PrimAdd + ( Ref Nothing ( Local ( Name "x$193" ) ) ) + ( Ref Nothing ( Local ( Name "y$194" ) ) ) + ) + ) + ), + ( PropName "zero", LiteralInt Nothing 0 ), + ( PropName "mul", AbsN Nothing + ( ParamNamed Nothing ( Name "x$191" ) :| [] ) + ( AbsN Nothing + ( ParamNamed Nothing ( Name "y$192" ) :| [] ) + ( PrimBinOp Nothing PrimMul + ( Ref Nothing ( Local ( Name "x$191" ) ) ) + ( Ref Nothing ( Local ( Name "y$192" ) ) ) + ) + ) + ), + ( PropName "one", LiteralInt Nothing 1 ) + ] + ), Standalone + ( QName + { qnameModuleName = ModuleName "Data.Ring", qnameName = Name "sub" }, AbsN Nothing + ( ParamNamed Nothing ( Name "dict" ) :| [] ) + ( ObjectProp Nothing ( Ref Nothing ( Local ( Name "dict" ) ) ) ( PropName "sub" ) ) + ), Standalone + ( QName + { qnameModuleName = ModuleName "Data.Ring", qnameName = Name "ringInt" + }, LiteralObject Nothing + [ + ( PropName "sub", AbsN Nothing + ( ParamNamed Nothing ( Name "x$189" ) :| [] ) + ( AbsN Nothing + ( ParamNamed Nothing ( Name "y$190" ) :| [] ) + ( PrimBinOp Nothing PrimSub + ( Ref Nothing ( Local ( Name "x$189" ) ) ) + ( Ref Nothing ( Local ( Name "y$190" ) ) ) + ) + ) + ), + ( PropName "Semiring0", AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( Ref Nothing ( Imported ( ModuleName "Data.Semiring" ) ( Name "semiringInt" ) ) ) + ) + ] + ), Standalone + ( QName + { qnameModuleName = ModuleName "Golden.ScalarReplacement.Test", qnameName = Name "logShow" + }, AbsN Nothing + ( ParamNamed Nothing ( Name "a$2" ) :| [] ) + ( AppN Nothing + ( ObjectProp Nothing + ( Ref Nothing ( Imported ( ModuleName "Effect.Console" ) ( Name "foreign" ) ) ) + ( PropName "log" ) + ) + ( AppN Nothing + ( ObjectProp Nothing + ( Ref Nothing ( Imported ( ModuleName "Data.Show" ) ( Name "foreign" ) ) ) + ( PropName "showIntImpl" ) + ) + ( Ref Nothing ( Local ( Name "a$2" ) ) :| [] ) :| [] + ) + ) + ), Standalone + ( QName + { qnameModuleName = ModuleName "Golden.ScalarReplacement.Test", qnameName = Name "wholeValue" + }, AbsN ( Just Never ) + ( ParamNamed Nothing ( Name "n" ) :| [] ) + ( Let Nothing + ( Standalone + ( Nothing, Name "r", LiteralObject Nothing + [ + ( PropName "a", Ref Nothing ( Local ( Name "n" ) ) ), + ( PropName "b", PrimBinOp Nothing PrimAdd + ( Ref Nothing ( Local ( Name "n" ) ) ) + ( LiteralInt Nothing 1 ) + ) + ] + ) :| + [ Standalone + ( Nothing, Name "s", IfThenElse Nothing + ( PrimBinOp Nothing PrimAnd + ( PrimBinOp Nothing PrimGe + ( ObjectProp Nothing ( Ref Nothing ( Local ( Name "r" ) ) ) ( PropName "a" ) ) + ( LiteralInt Nothing 0 ) + ) + ( PrimNot Nothing + ( Eq Nothing + ( ObjectProp Nothing + ( Ref Nothing ( Local ( Name "r" ) ) ) + ( PropName "a" ) + ) + ( LiteralInt Nothing 0 ) + ) + ) + ) + ( Ref Nothing ( Local ( Name "r" ) ) ) + ( ObjectUpdate Nothing + ( Ref Nothing ( Local ( Name "r" ) ) ) + ( + ( PropName "a", PrimBinOp Nothing PrimSub + ( LiteralInt Nothing 0 ) + ( ObjectProp Nothing ( Ref Nothing ( Local ( Name "r" ) ) ) ( PropName "a" ) ) + ) :| [] + ) + ) + ) + ] + ) + ( PrimBinOp Nothing PrimAdd + ( ObjectProp Nothing ( Ref Nothing ( Local ( Name "s" ) ) ) ( PropName "a" ) ) + ( ObjectProp Nothing ( Ref Nothing ( Local ( Name "s" ) ) ) ( PropName "b" ) ) + ) + ) + ), Standalone + ( QName + { qnameModuleName = ModuleName "Golden.ScalarReplacement.Test", qnameName = Name "fieldwise" + }, AbsN Nothing + ( ParamNamed Nothing ( Name "n" ) :| [] ) + ( Let Nothing + ( Standalone + ( Nothing, Name "r", LiteralObject Nothing + [ + ( PropName "width", PrimBinOp Nothing PrimAdd + ( Ref Nothing ( Local ( Name "n" ) ) ) + ( LiteralInt Nothing 1 ) + ), + ( PropName "height", PrimBinOp Nothing PrimMul + ( Ref Nothing ( Local ( Name "n" ) ) ) + ( LiteralInt Nothing 2 ) + ) + ] + ) :| [] + ) + ( PrimBinOp Nothing PrimAdd + ( ObjectProp Nothing ( Ref Nothing ( Local ( Name "r" ) ) ) ( PropName "width" ) ) + ( ObjectProp Nothing ( Ref Nothing ( Local ( Name "r" ) ) ) ( PropName "height" ) ) + ) + ) + ), Standalone + ( QName + { qnameModuleName = ModuleName "Golden.ScalarReplacement.Test", qnameName = Name "defaults" + }, AbsN Nothing + ( ParamNamed Nothing ( Name "n" ) :| [] ) + ( Let Nothing + ( Standalone + ( Nothing, Name "opts", LiteralObject Nothing + [ + ( PropName "verbose", LiteralInt Nothing 1 ), + ( PropName "level", Ref Nothing ( Local ( Name "n" ) ) ) + ] + ) :| + [ Standalone + ( Nothing, Name "chosen", ObjectUpdate Nothing + ( Ref Nothing ( Local ( Name "opts" ) ) ) + ( ( PropName "verbose", LiteralInt Nothing 2 ) :| [] ) + ) + ] + ) + ( PrimBinOp Nothing PrimAdd + ( PrimBinOp Nothing PrimAdd + ( ObjectProp Nothing ( Ref Nothing ( Local ( Name "opts" ) ) ) ( PropName "level" ) ) + ( ObjectProp Nothing + ( Ref Nothing ( Local ( Name "chosen" ) ) ) + ( PropName "verbose" ) + ) + ) + ( ObjectProp Nothing ( Ref Nothing ( Local ( Name "chosen" ) ) ) ( PropName "level" ) ) + ) + ) + ), Standalone + ( QName + { qnameModuleName = ModuleName "Golden.ScalarReplacement.Test", qnameName = Name "chained$w" + }, AbsN Nothing + ( ParamNamed Nothing ( Name "a" ) :| [ ParamNamed Nothing ( Name "b" ) ] ) + ( Let Nothing + ( Standalone + ( Nothing, Name "r0", LiteralObject Nothing + [ + ( PropName "x", Ref Nothing ( Local ( Name "a" ) ) ), + ( PropName "y", LiteralInt Nothing 0 ), + ( PropName "z", LiteralInt Nothing 0 ) + ] + ) :| + [ Standalone + ( Nothing, Name "r1", ObjectUpdate Nothing + ( Ref Nothing ( Local ( Name "r0" ) ) ) + ( ( PropName "y", Ref Nothing ( Local ( Name "b" ) ) ) :| [] ) + ), Standalone + ( Nothing, Name "r2", ObjectUpdate Nothing + ( Ref Nothing ( Local ( Name "r1" ) ) ) + ( + ( PropName "z", PrimBinOp Nothing PrimAdd + ( Ref Nothing ( Local ( Name "a" ) ) ) + ( Ref Nothing ( Local ( Name "b" ) ) ) + ) :| [] + ) + ) + ] + ) + ( PrimBinOp Nothing PrimAdd + ( PrimBinOp Nothing PrimAdd + ( ObjectProp Nothing ( Ref Nothing ( Local ( Name "r2" ) ) ) ( PropName "x" ) ) + ( ObjectProp Nothing ( Ref Nothing ( Local ( Name "r2" ) ) ) ( PropName "y" ) ) + ) + ( ObjectProp Nothing ( Ref Nothing ( Local ( Name "r2" ) ) ) ( PropName "z" ) ) + ) + ) + ) + ], uberModuleForeigns = [], uberModuleExports = + [ + ( Name "fieldwise", Ref Nothing + ( Imported ( ModuleName "Golden.ScalarReplacement.Test" ) ( Name "fieldwise" ) ) + ), + ( Name "defaults", Ref Nothing + ( Imported ( ModuleName "Golden.ScalarReplacement.Test" ) ( Name "defaults" ) ) + ), + ( Name "chained", AbsN Nothing + ( ParamNamed Nothing ( Name "chained$p1$229" ) :| [] ) + ( AbsN Nothing + ( ParamNamed Nothing ( Name "chained$p2$230" ) :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported ( ModuleName "Golden.ScalarReplacement.Test" ) ( Name "chained$w" ) ) + ) + ( Ref Nothing + ( Local ( Name "chained$p1$229" ) ) :| + [ Ref Nothing ( Local ( Name "chained$p2$230" ) ) ] + ) + ) + ) + ), + ( Name "wholeValue", Ref Nothing + ( Imported ( ModuleName "Golden.ScalarReplacement.Test" ) ( Name "wholeValue" ) ) + ), + ( Name "main", AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( Let Nothing + ( Standalone + ( Nothing, Name "_", AppN Nothing + ( AppN Nothing + ( Ref Nothing + ( Imported ( ModuleName "Golden.ScalarReplacement.Test" ) ( Name "logShow" ) ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported ( ModuleName "Golden.ScalarReplacement.Test" ) ( Name "fieldwise" ) ) + ) + ( LiteralInt Nothing 10 :| [] ) :| [] + ) + ) + ( Ref Nothing ( Imported ( ModuleName "Prim" ) ( Name "$magicDoRun" ) ) :| [] ) + ) :| + [ Standalone + ( Nothing, Name "_", AppN Nothing + ( AppN Nothing + ( Ref Nothing + ( Imported ( ModuleName "Golden.ScalarReplacement.Test" ) ( Name "logShow" ) ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.ScalarReplacement.Test" ) + ( Name "defaults" ) + ) + ) + ( LiteralInt Nothing 5 :| [] ) :| [] + ) + ) + ( Ref Nothing ( Imported ( ModuleName "Prim" ) ( Name "$magicDoRun" ) ) :| [] ) + ), Standalone + ( Nothing, Name "_", AppN Nothing + ( AppN Nothing + ( Ref Nothing + ( Imported ( ModuleName "Golden.ScalarReplacement.Test" ) ( Name "logShow" ) ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.ScalarReplacement.Test" ) + ( Name "chained$w" ) + ) + ) + ( LiteralInt Nothing 3 :| [ LiteralInt Nothing 4 ] ) :| [] + ) + ) + ( Ref Nothing ( Imported ( ModuleName "Prim" ) ( Name "$magicDoRun" ) ) :| [] ) + ), Standalone + ( Nothing, Name "_", AppN Nothing + ( AppN Nothing + ( Ref Nothing + ( Imported ( ModuleName "Golden.ScalarReplacement.Test" ) ( Name "logShow" ) ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.ScalarReplacement.Test" ) + ( Name "wholeValue" ) + ) + ) + ( LiteralInt Nothing 5 :| [] ) :| [] + ) + ) + ( Ref Nothing ( Imported ( ModuleName "Prim" ) ( Name "$magicDoRun" ) ) :| [] ) + ) + ] + ) + ( AppN Nothing + ( AppN Nothing + ( Ref Nothing + ( Imported ( ModuleName "Golden.ScalarReplacement.Test" ) ( Name "logShow" ) ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported ( ModuleName "Golden.ScalarReplacement.Test" ) ( Name "wholeValue" ) ) + ) + ( AppN Nothing + ( AppN Nothing + ( AppN Nothing + ( Ref Nothing ( Imported ( ModuleName "Data.Ring" ) ( Name "sub" ) ) ) + ( Ref Nothing + ( Imported ( ModuleName "Data.Ring" ) ( Name "ringInt" ) ) :| [] + ) + ) + ( ObjectProp Nothing + ( AppN Nothing + ( ObjectProp Nothing + ( Ref Nothing + ( Imported ( ModuleName "Data.Ring" ) ( Name "ringInt" ) ) + ) + ( PropName "Semiring0" ) + ) + ( Ref Nothing + ( Imported ( ModuleName "Prim" ) ( Name "undefined" ) ) :| [] + ) + ) + ( PropName "zero" ) :| [] + ) + ) + ( LiteralInt Nothing 3 :| [] ) :| [] + ) :| [] + ) + ) + ( Ref Nothing ( Imported ( ModuleName "Prim" ) ( Name "$magicDoRun" ) ) :| [] ) + ) + ) + ) + ] + } \ No newline at end of file diff --git a/test/ps/output/Golden.ScalarReplacement.Test/golden.lua b/test/ps/output/Golden.ScalarReplacement.Test/golden.lua new file mode 100644 index 00000000..6b0cc468 --- /dev/null +++ b/test/ps/output/Golden.ScalarReplacement.Test/golden.lua @@ -0,0 +1,59 @@ +local function PSLUA_object_update(o, patches) + local o_copy = {} + for k, v in pairs(o) do + local patch_v = patches[k] + if patch_v ~= nil then o_copy[k] = patch_v else o_copy[k] = v end + end + return o_copy +end +local Data_Show_foreign = { showIntImpl = function(n) return tostring(n) end } +local Effect_Console_foreign = { + log = function(s) return function() print(s) end end +} +local Data_Semiring_semiringInt = { + add = function(x_S_0) return function(y_S_0) return x_S_0 + y_S_0 end end, + zero = 0, + mul = function(x_S_1) return function(y_S_1) return x_S_1 * y_S_1 end end, + one = 1 +} +local Data_Ring_sub = function(dict) return dict.sub end +local Data_Ring_ringInt = { + sub = function(x_S_2) return function(y_S_2) return x_S_2 - y_S_2 end end, + Semiring0 = function() return Data_Semiring_semiringInt end +} +local Golden_ScalarReplacement_Test_logShow = function(a_S_0) + return Effect_Console_foreign.log(Data_Show_foreign.showIntImpl(a_S_0)) +end +local Golden_ScalarReplacement_Test_wholeValue = function(n) + local r = { a = n, b = n + 1 } + local s = (function() + if r.a >= 0 and r.a ~= 0 then + return r + else + return PSLUA_object_update(r, { a = 0 - r.a }) + end + end)() + return s.a + s.b +end +local Golden_ScalarReplacement_Test_fieldwise = function(n) + local r = { width = n + 1, height = n * 2 } + return r.width + r.height +end +local Golden_ScalarReplacement_Test_defaults = function(n) + local opts = { verbose = 1, level = n } + local chosen = PSLUA_object_update(opts, { verbose = 2 }) + return opts.level + chosen.verbose + chosen.level +end +local Golden_ScalarReplacement_Test_chained_S_w = function(a, b) + local r0 = { x = a, y = 0, z = 0 } + local r1 = PSLUA_object_update(r0, { y = b }) + local r2 = PSLUA_object_update(r1, { z = a + b }) + return r2.x + r2.y + r2.z +end +return (function() + local _ = Golden_ScalarReplacement_Test_logShow(Golden_ScalarReplacement_Test_fieldwise(10))() + local _ = Golden_ScalarReplacement_Test_logShow(Golden_ScalarReplacement_Test_defaults(5))() + local _ = Golden_ScalarReplacement_Test_logShow(Golden_ScalarReplacement_Test_chained_S_w(3, 4))() + local _ = Golden_ScalarReplacement_Test_logShow(Golden_ScalarReplacement_Test_wholeValue(5))() + return Golden_ScalarReplacement_Test_logShow(Golden_ScalarReplacement_Test_wholeValue(Data_Ring_sub(Data_Ring_ringInt)((Data_Ring_ringInt.Semiring0()).zero)(3)))() +end)() diff --git a/test/ps/src/Golden/ScalarReplacement/Test.purs b/test/ps/src/Golden/ScalarReplacement/Test.purs new file mode 100644 index 00000000..264aae20 --- /dev/null +++ b/test/ps/src/Golden/ScalarReplacement/Test.purs @@ -0,0 +1,63 @@ +-- | Let-bound records and record updates that are only ever read +-- | field-wise still allocate their tables (issue #240): the goldens +-- | pin the current boxed shapes so the scalar-replacement rewrite +-- | shows as a reviewable diff. Covers a record read at two fields +-- | (`fieldwise`), the defaults pattern — a literal read at a field +-- | and updated (`defaults`), a record-update chain read field-wise +-- | (`chained`), and a record that flows somewhere whole and must +-- | keep its allocation (`wholeValue`), the soundness guard. +-- @inline wholeValue never +module Golden.ScalarReplacement.Test where + +import Prelude + +import Effect (Effect) +import Effect.Console (logShow) + +-- | Read at two fields only: the table exists just to be projected. +fieldwise :: Int -> Int +fieldwise n = + let + r = { width: n + 1, height: n * 2 } + in + r.width + r.height + +-- | The defaults pattern: a literal read at a field and used as the +-- | base of an update whose result is again read field-wise. The +-- | field set is statically known, so both tables are reconstructible. +defaults :: Int -> Int +defaults n = + let + opts = { verbose: 1, level: n } + chosen = opts { verbose = 2 } + in + opts.level + chosen.verbose + chosen.level + +-- | A record-update chain read field-wise: every intermediate copy +-- | exists only to be projected or updated again. +chained :: Int -> Int -> Int +chained a b = + let + r0 = { x: a, y: 0, z: 0 } + r1 = r0 { y = b } + r2 = r1 { z = a + b } + in + r2.x + r2.y + r2.z + +-- | The record flows into a branch result as a whole value, so its +-- | allocation must stay. +wholeValue :: Int -> Int +wholeValue n = + let + r = { a: n, b: n + 1 } + s = if r.a > 0 then r else r { a = 0 - r.a } + in + s.a + s.b + +main :: Effect Unit +main = do + logShow (fieldwise 10) + logShow (defaults 5) + logShow (chained 3 4) + logShow (wholeValue 5) + logShow (wholeValue (-3)) From 9788699221f13a13df647a80f072bc429e6e6749 Mon Sep 17 00:00:00 2001 From: Yura Lazarev Date: Mon, 27 Jul 2026 14:57:01 +0200 Subject: [PATCH 2/5] test(optimizer): specs for field-wise record unpacking (#240) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pins the contract of the scalar-replacement rules before their implementation: a let-bound record literal read only field-wise unpacks to per-field binders (bound once, never duplicated), an update use is reconstructed as one literal from the known field set, a let-bound record update folds its reads to the patch values and the base record and coalesces a chained update onto the base, and the in-place fold collapses an update over a manifest literal — the shape used-once inlining leaves behind. Declines pin the soundness boundary: a whole-value use, a read at a label the literal lacks, or an update patching a foreign label all keep the allocation. The reference-multiset property uses an allocation-count oracle because a countFreeRef check on a still-bound name is vacuous. --- .../PureScript/Backend/IR/Optimizer/Spec.hs | 236 ++++++++++++++++++ 1 file changed, 236 insertions(+) diff --git a/test/Language/PureScript/Backend/IR/Optimizer/Spec.hs b/test/Language/PureScript/Backend/IR/Optimizer/Spec.hs index 9fd4a599..5c9a73c8 100644 --- a/test/Language/PureScript/Backend/IR/Optimizer/Spec.hs +++ b/test/Language/PureScript/Backend/IR/Optimizer/Spec.hs @@ -1,5 +1,6 @@ module Language.PureScript.Backend.IR.Optimizer.Spec where +import Control.Lens (toListOf) import Data.Map qualified as Map import Data.Text qualified as Text import Hedgehog (PropertyT, annotateShow, diff, evalEither, forAll, (===)) @@ -88,6 +89,7 @@ import Language.PureScript.Backend.IR.Types , refLocal , reflectCtor , setAnn + , subexpressions , pattern EffectRunArg ) import Language.PureScript.Backend.IR.Uniquify (uniquifyNamesInExpr) @@ -1671,6 +1673,229 @@ spec = describe "IR Optimizer" do (arrayIndex v index) unboundLocals (optimizedExpression original) === [] + describe "unpacks let-bound records read only field-wise (#240)" do + let m = moduleNameFromString "M" + a = PropName "a" + b = PropName "b" + r = refLocal (Name "r") + use e = application (refImported m (Name "use")) e + + -- An application: re-evaluating it would repeat the work, so it + -- is the shape the field-binder must not duplicate. + nonTrivial = application (refImported m (Name "g")) (literalInt 1) + + -- The optimized bodies of 'main' after the checked pipeline + -- (mirrors the #214/#225 end-to-end tests): 'main' is exported + -- twice so it is not itself inlined away. + mainMod = moduleNameFromString "Main" + collapsedMainBodies body = + optimizedUberModuleChecked + mempty + Linker.UberModule + { uberModuleForeigns = [] + , uberModuleBindings = + [Standalone (QName mainMod (Name "main"), body)] + , uberModuleExports = + [ (Name "r1", refImported mainMod (Name "main")) + , (Name "r2", refImported mainMod (Name "main")) + ] + } + <&> \optimized → + [ e + | Standalone (QName _ (Name "main"), e) ← + Linker.uberModuleBindings optimized + ] + + it "folds scalar field reads through the let to a constant" do + let original = + let1 (Name "r") (literalObject [(a, literalInt 1), (b, literalInt 2)]) $ + primBinOp PrimAdd (objectProp r a) (objectProp r b) + optimizedExpression original `shouldBe` literalInt 3 + + it "binds a field read at several sites once (no duplication)" do + -- r's field read twice with a non-trivial value: the field is + -- bound to one field-binder read twice, never copied to each site. + let original = + let1 (Name "r") (literalObject [(a, nonTrivial)]) $ + application + (application (refImported m (Name "pair")) (objectProp r a)) + (objectProp r a) + field = Name "$prop0" + expected = + let1 + field + nonTrivial + ( application + (application (refImported m (Name "pair")) (refLocal field)) + (refLocal field) + ) + optimizedExpression original `shouldSatisfy` alphaEq expected + + it "folds an update over an in-place record literal" do + -- The shape local inlining leaves behind a used-once record + -- binding: the copy folds into one literal, the patched-over + -- field's value dropped, never evaluated. + let original = + use + ( objectUpdate + (literalObject [(a, nonTrivial), (b, literalInt 2)]) + ((a, literalInt 5) :| []) + ) + expected = use (literalObject [(a, literalInt 5), (b, literalInt 2)]) + optimizedExpression original `shouldBe` expected + + it "declines an in-place update patching a label the literal lacks" do + -- The runtime update only overwrites existing keys, so a foreign + -- patch label is ill-typed input: decline rather than reconstruct + -- a record with a key the original never had. + let original = + use + ( objectUpdate + (literalObject [(a, literalInt 1)]) + ((b, literalInt 2) :| []) + ) + optimizedExpression original `shouldBe` original + + it "reconstructs an update use from the known field set" do + -- The update result flows on whole (a direct projection would fold + -- by reduceObjectProp alone) and the record is read again, so + -- used-once inlining cannot expose the in-place fold: the update + -- use is rebuilt as a literal, one allocation instead of an + -- allocation plus a runtime copy. + let original = + let1 (Name "r") (literalObject [(a, literalInt 1), (b, nonTrivial)]) $ + application + (application (refImported m (Name "pair")) (objectProp r b)) + (use (objectUpdate r ((b, literalInt 5) :| []))) + field = Name "$prop0" + expected = + let1 field nonTrivial $ + application + (application (refImported m (Name "pair")) (refLocal field)) + (use (literalObject [(a, literalInt 1), (b, literalInt 5)])) + optimizedExpression original `shouldSatisfy` alphaEq expected + + it "declines when the binder is read as a whole value" do + -- r also flows into a function whole, so dropping the binding + -- would dangle the reference; the binding survives untouched. + let original = + let1 (Name "r") (literalObject [(a, literalInt 1)]) $ + application + (application (refImported m (Name "pair")) (objectProp r a)) + r + optimizedExpression original `shouldBe` original + + it "declines a read at a label the literal lacks" do + -- Reads no existing field (ill-typed input): folding it would + -- mint a field-binder the literal cannot bind. + let original = + let1 (Name "r") (literalObject [(a, literalInt 1)]) $ + application (application (refImported m (Name "pair")) (objectProp r a)) (objectProp r b) + optimizedExpression original `shouldBe` original + + it "declines an update patching a label the literal lacks" do + -- The let-bound twin of the in-place decline; the extra read + -- keeps the binding multi-use so nothing else moves the literal. + let original = + let1 (Name "r") (literalObject [(a, literalInt 1)]) $ + application + (application (refImported m (Name "pair")) (objectProp r a)) + (use (objectUpdate r ((b, literalInt 2) :| []))) + optimizedExpression original `shouldBe` original + + it "unpacks a literal used from a later sibling binding" do + -- The defaults pattern: both bindings of the same Let, the second + -- updating the first, the body projecting the second. Both tables + -- dissolve. + let original = + lets + ( Standalone (noAnn, Name "r", literalObject [(a, literalInt 1), (b, nonTrivial)]) + :| [ Standalone + ( noAnn + , Name "c" + , objectUpdate r ((a, literalInt 2) :| []) + ) + ] + ) + (objectProp (refLocal (Name "c")) b) + optimizedExpression original `shouldBe` nonTrivial + + it "folds reads of an update-bound record to patch and base" do + -- x = y { a = g 1 }: the patched field read twice binds once, the + -- unpatched field reads through to the base record, and the + -- runtime copy disappears. + let y = refLocal (Name "y") + x = refLocal (Name "x") + original = + let1 (Name "x") (objectUpdate y ((a, nonTrivial) :| [])) $ + primBinOp + PrimAdd + (objectProp x a) + (primBinOp PrimAdd (objectProp x a) (objectProp x b)) + field = Name "$prop0" + expected = + let1 field nonTrivial $ + primBinOp + PrimAdd + (refLocal field) + (primBinOp PrimAdd (refLocal field) (objectProp y b)) + optimizedExpression original `shouldSatisfy` alphaEq expected + + it "coalesces an update chain onto the base record" do + -- x = y { a = 1 } used once as an update base: two runtime copies + -- become one, patches merged with the later update winning. + let y = refLocal (Name "y") + x = refLocal (Name "x") + original = + let1 (Name "x") (objectUpdate y ((a, literalInt 1) :| [])) $ + use (objectUpdate x ((b, literalInt 2) :| [])) + expected = + use (objectUpdate y ((a, literalInt 1) :| [(b, literalInt 2)])) + optimizedExpression original `shouldBe` expected + + it "declines when the update binder escapes whole" do + let y = refLocal (Name "y") + x = refLocal (Name "x") + original = + let1 (Name "x") (objectUpdate y ((a, literalInt 1) :| [])) $ + application + (application (refImported m (Name "pair")) (objectProp x a)) + x + optimizedExpression original `shouldBe` original + + prop "eliminates the allocation without growing the reference multiset" do + -- The non-trivial field keeps the record itself uninlinable, so + -- with it Let-bound and read twice only the unpacking rule can + -- drop the table — and it never invents or multiplies a free + -- reference. (A countFreeRef check would be vacuous: refs to a + -- name its Let still binds are not free.) + field ← forAll Gen.scalarExp + let original = + let1 (Name "r") (literalObject [(a, field), (b, nonTrivial)]) $ + use (primBinOp PrimAdd (objectProp r a) (objectProp r b)) + optimized = optimizedExpression original + countObjectAllocations optimized === 0 + Map.isSubmapOfBy (<=) (countFreeRefs optimized) (countFreeRefs original) + === True + + prop "folds a whole-flowing update across scalar fields end to end" do + -- Through the checked pipeline, so a GUC or scoping violation + -- fails here rather than pass silently: the used-once record + -- inlines into the update position, the copy folds to a literal, + -- and the patched-over field is dropped whatever it was. + field ← forAll Gen.scalarExp + let original = + let1 (Name "r") (literalObject [(a, field)]) $ + application + (refImported mainMod (Name "use")) + (objectUpdate r ((a, literalInt 5) :| [])) + mainBodies ← evalEither (collapsedMainBodies original) + mainBodies + === [ application + (refImported mainMod (Name "use")) + (literalObject [(a, literalInt 5)]) + ] + -- Case-of-case over the IfThenElse decision tree: a boolean-returning -- tree consumed in a strict position (an Eq against a literal, or the -- condition of another if) sits in expression position, where codegen @@ -3441,6 +3666,17 @@ wrapInModule e = let1 ∷ Name → Exp → Exp → Exp let1 n e = lets (Standalone (noAnn, n, e) :| []) +-- | Record-table allocations (literals and update copies) anywhere in +-- the expression: the quantity scalar replacement is meant to remove. +countObjectAllocations ∷ Exp → Int +countObjectAllocations = go + where + go e = self e + sum (go <$> toListOf subexpressions e) + self = \case + LiteralObject {} → 1 + ObjectUpdate {} → 1 + _ → 0 + isRef ∷ Exp → Bool isRef = \case Ref {} → True From bf60d30c6f4301e9ae8aa6a84fc666a55bc9a84f Mon Sep 17 00:00:00 2001 From: Yura Lazarev Date: Mon, 27 Jul 2026 15:16:47 +0200 Subject: [PATCH 3/5] feat(optimizer): unpack let-bound records read only field-wise MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A let-bound record literal or record update whose binder never flows anywhere as a whole value exists only to be projected or updated again, yet it still allocates its table — and an update pays a runtime copy on top. Three rewrites remove the aggregates (issue #240), gated on the exact-use census Query.hasWholeValueObjectRead takes over every occurrence: * propagateKnownObjectThroughLet explodes a literal binding into per-field binders: reads become the binders, an update use is reconstructed as a single literal over the known field set, and the binding is dropped. Occurrences fold across trailing sibling groupings as well as the body, so the sequentially-scoped defaults pattern (let opts = {…}; chosen = opts { … }) dissolves whole. * propagateObjectUpdateThroughLet binds the update's own parts (base and read patches) instead: reads reach the patch values or the base directly, and a chained update coalesces onto the base with patch lists merged — two copies become one. * reduceObjectUpdate folds the in-place shapes used-once inlining leaves behind: an update over a manifest literal becomes the patched literal, an update over an update coalesces. A value isInlinableValue admits is pasted at its occurrences instead of bound, the substitution inlineLocalBinding would perform one step later. Whole-value uses, reads at labels a literal lacks, and updates patching such labels all decline, preserving sharing — the boundary Golden.ScalarReplacement.Test pins from both sides. Dictionary towers built as local records collapse the same way: Golden.LongWriterBind drops its Writer-transformer dictionaries entirely (895 → 838 Lua lines and no more module table). Closes #240 --- .../PureScript/Backend/IR/Optimizer.hs | 337 + lib/Language/PureScript/Backend/IR/Query.hs | 34 + .../PureScript/Backend/IR/Optimizer/Spec.hs | 49 +- .../Golden.LongReaderBind.Test/golden.ir | 8 +- .../Golden.LongWriterBind.Test/golden.ir | 7328 +++++++---------- .../Golden.LongWriterBind.Test/golden.lua | 871 +- .../Golden.ScalarReplacement.Test/golden.ir | 274 +- .../Golden.ScalarReplacement.Test/golden.lua | 44 +- .../Golden.StringCodePoints.Test/golden.ir | 116 +- .../Golden.TailRecM2Shadow.Test/golden.ir | 14 +- 10 files changed, 3743 insertions(+), 5332 deletions(-) diff --git a/lib/Language/PureScript/Backend/IR/Optimizer.hs b/lib/Language/PureScript/Backend/IR/Optimizer.hs index 11e29114..527d4f0f 100644 --- a/lib/Language/PureScript/Backend/IR/Optimizer.hs +++ b/lib/Language/PureScript/Backend/IR/Optimizer.hs @@ -1067,6 +1067,7 @@ optimizedExpressionWithPastes ctorTags canon pastes policy env = `thenRewrite` reassociateConstants `thenRewrite` foldRecordSurgery `thenRewrite` reduceObjectProp + `thenRewrite` reduceObjectUpdate `thenRewrite` reduceArrayRead `thenRewrite` sinkProjectionIntoLet `thenRewrite` cancelLetValuesOfValues @@ -1077,6 +1078,8 @@ optimizedExpressionWithPastes ctorTags canon pastes policy env = `thenRewrite` reduceKnownCtorRefRead env `thenRewrite` propagateKnownCtorThroughLet env `thenRewrite` propagateKnownArrayThroughLet + `thenRewrite` propagateKnownObjectThroughLet + `thenRewrite` propagateObjectUpdateThroughLet `thenRewrite` resolveDictionaryProp pastes policy env `thenRewrite` inlineAnnotatedProjection policy env `thenRewrite` inlineSaturatedCall pastes policy env @@ -1422,6 +1425,59 @@ reduceObjectProp = Nothing → ObjectProp ann obj prop _ → Nothing +{- | Folds a record update over a statically-known operand — the +'reduceObjectProp' sibling for updates, and the shape used-once local +inlining leaves behind when a record binding's single use is an update +base (issue #240): + + * over a manifest literal, the copy /is/ the patched literal, so one + allocation replaces an allocation plus a runtime copy; + * over another update, the two copies coalesce into one with the + patch lists merged, the later update winning a contested label. + +The runtime update ('Language.PureScript.Backend.Lua.Fixture.objectUpdate') +copies its operand's keys and only overwrites existing ones, which +makes both folds exact: a patched-over field's value is dropped, never +evaluated — the licence 'reduceObjectProp' spells out — and a patch +label the literal lacks would patch nothing, so the literal arm +declines rather than reconstruct a record with a key the original +never had (possible only on ill-typed input, see Note [IR is assumed +well-typed]). Both arms strictly shrink (two nodes into one), so the +rule is fixpoint-safe. The result takes the update node's own +annotation, for the reason spelled out on 'reduceObjectProp'. +-} +reduceObjectUpdate ∷ Applicative m ⇒ RewriteRuleM m Ann +reduceObjectUpdate = + pure . \case + ObjectUpdate ann (LiteralObject _ props) patches + | all ((`elem` map fst props) . fst) patches → + Just . LiteralObject ann $ + [ (label, fromMaybe value (List.lookup label (toList patches))) + | (label, value) ← props + ] + ObjectUpdate ann (ObjectUpdate _ obj earlier) later → + Just $ ObjectUpdate ann obj (mergePatches earlier later) + _ → Nothing + +{- | Merge two patch lists applied in sequence into one: the later list +wins a contested label in the earlier list's position; its new labels +append in their own order. +-} +mergePatches + ∷ NonEmpty (PropName, RawExp ann) + → NonEmpty (PropName, RawExp ann) + → NonEmpty (PropName, RawExp ann) +mergePatches earlier later = + ( earlier <&> \(label, value) → + (label, fromMaybe value (List.lookup label laterList)) + ) + `NE.appendList` [ p + | p@(label, _) ← laterList + , label `notElem` toList (fst <$> earlier) + ] + where + laterList = toList later + {- | Folds array reads over an in-place array literal, the 'reduceObjectProp' sibling for arrays (issue #225): the length of a literal array is its element count, and an in-range index reads the @@ -1935,6 +1991,287 @@ propagateKnownArrayThroughLet = \case Ref aiAnn (Local e) other → over subexpressions go other +{- | The record twin of 'propagateKnownCtorThroughLet' and +'propagateKnownArrayThroughLet' (issue #240): a 'Standalone' Let +binding whose right-hand side is a manifest record literal and whose +binder is used only field-wise — read at a field, or as the base of a +record update — has its aggregate replaced by scalars, so the table is +never allocated. Each field an occurrence needs is bound once to a +fresh field-binder (the field-binder discipline of +'propagateKnownCtorThroughLet'), in field order, preserving the +evaluation order of the kept field expressions: + + * a field read becomes its field-binder; + * an update use is reconstructed as a single literal over the known + field set — patched labels take their patch expressions in place, + unpatched labels their field-binders — so neither the record nor + its runtime copy is built ('reduceObjectUpdate' spells out why the + reconstruction is exact); + * the record binding is dropped, its unread fields discarded with + the licence 'reduceObjectProp' spells out. + +A field value 'isInlinableValue' admits — binder-free and free to +re-emit — is pasted at its occurrences directly instead of bound, the +substitution 'inlineLocalBinding' would otherwise perform against the +binder one step later, minus the spent binding it leaves for DCE. + +Unlike its constructor and array siblings, occurrences are folded +across the trailing sibling groupings as well as the body: Let +bindings scope sequentially (Note [Sequential scoping of Let +bindings]), so the record bound by one grouping is typically the +update base of the next — the defaults pattern +@let opts = {…}; chosen = opts { … } in …@ — and confining the fold +to the body would miss it. The field-binders take the record +binding's position, so they scope over every folded occurrence. + +The rule declines when the binder is read as a whole value, read at a +label the literal lacks, or updated at one — either reaches no +existing field, so both count as whole-value reads +('Query.hasWholeValueObjectRead') — and when a preceding sibling +grouping references the name (impossible under GUC scoping, where +earlier bindings do not see later binders, but 'optimizedExpression' +also runs on generated input). Terminates under fixpoint iteration: +each firing drops the bound literal and every reconstruction replaces +an update node one-for-one, so the record-node count strictly +decreases. GUC keeps the fresh field-binders unique and the binder +resolved by name. +-} +propagateKnownObjectThroughLet ∷ RewriteRuleM SupplyM Ann +propagateKnownObjectThroughLet = \case + Let ann groupings body + | Just (before, (name, props), after) ← + findStandaloneBinding + (\case LiteralObject _ props → Just props; _ → Nothing) + (toList groupings) + , all ((== 0) . countFreeRefGrouping name) before + , let targets = body : (groupingExprs =<< after) + , sum (countFreeRef (Local name) <$> targets) > 0 + , let labels = Set.fromList (fst <$> props) + , not (any (Query.hasWholeValueObjectRead (Just labels) name) targets) → do + let needed = foldMap (neededObjectLabels name labels) targets + boundFields ← + bindUnlessInlinable + "$prop" + [(l, e) | (l, e) ← props, l `Set.member` needed] + let replacements = + Map.fromList + [(l, replacement) | (l, replacement, _bind) ← boundFields] + foldReads = foldObjectReads name props replacements + fieldBinds = [bind | (_l, _rep, Just bind) ← boundFields] + after' = fmap (fmap (fmap foldReads)) after + pure . Just $ case nonEmpty (before <> fieldBinds <> after') of + Nothing → foldReads body + Just gs → Let ann gs (foldReads body) + _ → pure Nothing + where + -- The labels whose values the folded occurrences reference: every + -- read label, plus — for each update use — the labels its patches do + -- not cover (the reconstruction reads those). Unneeded fields bind + -- nothing and their expressions are dropped. + neededObjectLabels ∷ Name → Set PropName → Exp → Set PropName + neededObjectLabels name labels = go + where + go e = self e <> foldMap go (toListOf subexpressions e) + self = \case + ObjectProp _ (Ref _ (Local n)) l | n == name → Set.singleton l + ObjectUpdate _ (Ref _ (Local n)) ps + | n == name → + Set.difference labels (Set.fromList (toList (fst <$> ps))) + _ → mempty + + foldObjectReads + ∷ Name → [(PropName, Exp)] → Map PropName Exp → Exp → Exp + foldObjectReads name props replacements = go + where + go = \case + ObjectProp pAnn (Ref _ (Local n)) l + | n == name + , Just replacement ← Map.lookup l replacements → + setAnn pAnn replacement + ObjectUpdate uAnn (Ref _ (Local n)) ps + | n == name + , Just merged ← traverse (mergedField ps) props → + LiteralObject uAnn merged + other → over subexpressions go other + + -- Total on every occurrence the census admitted: an unpatched + -- label is in the needed set by construction, so its replacement + -- lookup succeeds. + mergedField + ∷ NonEmpty (PropName, Exp) → (PropName, Exp) → Maybe (PropName, Exp) + mergedField ps (l, _fieldExp) = + (l,) <$> case List.lookup l (toList ps) of + Just patch → Just (go patch) + Nothing → Map.lookup l replacements + +{- | The update-bound companion of 'propagateKnownObjectThroughLet': a +'Standalone' Let binding whose right-hand side is a record update and +whose binder is used only field-wise. The field set behind an update +is unknown, so nothing is reconstructed from scratch; instead the +update's own parts are bound — the base record (only when some +occurrence still needs it) and each patch expression an occurrence +reads — and the copy the binding denoted never runs: + + * a read at a patched label becomes that patch's binder; + * a read at any other label reads the base record directly — the + same reach-through 'reduceObjectProp' performs on an in-place + update; + * an update use coalesces onto the base with the patch lists + merged, the later update winning a contested label + ('reduceObjectUpdate' spells out why the merge is exact): two + copies become one. + +Occurrences are folded across the trailing sibling groupings as well +as the body, the rule declines on a whole-value use or a +preceding-sibling reference, and an 'isInlinableValue' base or patch +expression is pasted directly instead of bound, all for the reasons +spelled out on 'propagateKnownObjectThroughLet'. The binders keep the +original evaluation order — base first, then the kept patches in +patch order; dropped parts are never evaluated, the licence +'reduceObjectProp' spells out. Terminates under fixpoint iteration: +each firing drops the bound update node and coalescing replaces +update nodes one-for-one, so the record-node count strictly +decreases. +-} +propagateObjectUpdateThroughLet ∷ RewriteRuleM SupplyM Ann +propagateObjectUpdateThroughLet = \case + Let ann groupings body + | Just (before, (name, (base, patches)), after) ← + findStandaloneBinding + (\case ObjectUpdate _ base ps → Just (base, ps); _ → Nothing) + (toList groupings) + , all ((== 0) . countFreeRefGrouping name) before + , let targets = body : (groupingExprs =<< after) + , sum (countFreeRef (Local name) <$> targets) > 0 + , not (any (Query.hasWholeValueObjectRead Nothing name) targets) → do + let patchedLabels = Set.fromList (toList (fst <$> patches)) + (needed, Any baseNeeded) = + foldMap (neededUpdateParts name patchedLabels) targets + (baseRep, baseBinds) ← + if not baseNeeded || isInlinableValue base + then pure (base, []) + else + freshName "$rec" <&> \f → + (Ref noAnn (Local f), [Standalone (noAnn, f, base)]) + boundPatches ← + bindUnlessInlinable + "$prop" + [(l, e) | (l, e) ← toList patches, l `Set.member` needed] + let replacements = + Map.fromList + [(l, replacement) | (l, replacement, _bind) ← boundPatches] + foldReads = foldUpdateReads name baseRep patches replacements + binds = baseBinds <> [bind | (_l, _rep, Just bind) ← boundPatches] + after' = fmap (fmap (fmap foldReads)) after + pure . Just $ case nonEmpty (before <> binds <> after') of + Nothing → foldReads body + Just gs → Let ann gs (foldReads body) + _ → pure Nothing + where + -- Which of the update's parts the folded occurrences reference: the + -- patch labels that are read directly plus — for each update use — + -- the ones its own patches do not override, and whether any + -- occurrence still reaches the base record (an unpatched-label read + -- or an update use). Unneeded parts bind nothing and their + -- expressions are dropped. + neededUpdateParts ∷ Name → Set PropName → Exp → (Set PropName, Any) + neededUpdateParts name patched = go + where + go e = self e <> foldMap go (toListOf subexpressions e) + self = \case + ObjectProp _ (Ref _ (Local n)) l + | n == name → + if l `Set.member` patched + then (Set.singleton l, Any False) + else (mempty, Any True) + ObjectUpdate _ (Ref _ (Local n)) ps + | n == name → + ( Set.difference patched (Set.fromList (toList (fst <$> ps))) + , Any True + ) + _ → mempty + + foldUpdateReads + ∷ Name → Exp → NonEmpty (PropName, Exp) → Map PropName Exp → Exp → Exp + foldUpdateReads name baseRep patches replacements = go + where + go = \case + ObjectProp pAnn (Ref _ (Local n)) l + | n == name → + case Map.lookup l replacements of + Just replacement → setAnn pAnn replacement + Nothing → ObjectProp pAnn baseRep l + ObjectUpdate uAnn (Ref _ (Local n)) ps + | n == name + , Just merged ← mergedPatches ps → + ObjectUpdate uAnn baseRep merged + other → over subexpressions go other + + -- Total on every occurrence the census admitted: a patch label + -- the use does not override is in the needed set by construction, + -- so its replacement lookup succeeds. + mergedPatches + ∷ NonEmpty (PropName, Exp) → Maybe (NonEmpty (PropName, Exp)) + mergedPatches ps = + (`NE.appendList` newer) <$> traverse earlierValue patches + where + psList = toList ps + earlierValue (l, _patchExp) = + (l,) <$> case List.lookup l psList of + Just override → Just (go override) + Nothing → Map.lookup l replacements + newer = + [ (l, go p) + | (l, p) ← psList + , l `notElem` toList (fst <$> patches) + ] + +{- | The first 'Standalone' binding whose right-hand side the shape +matcher accepts and that does not reference its own binder — which +cannot arise under GUC (a Standalone RHS does not see its own binder), +but 'optimizedExpression' also runs on generated input, and dropping +such a binding would dangle the copied reference (cf. +'findCtorBinding') — split out from its siblings. +-} +findStandaloneBinding + ∷ (Exp → Maybe rhs) + → [Grouping (Ann, Name, Exp)] + → Maybe + ( [Grouping (Ann, Name, Exp)] + , (Name, rhs) + , [Grouping (Ann, Name, Exp)] + ) +findStandaloneBinding match = go [] + where + go _before [] = Nothing + go before (grouping : after) = case grouping of + Standalone (_bAnn, name, rhs) + | Just matched ← match rhs + , countFreeRef (Local name) rhs == 0 → + Just (reverse before, (name, matched), after) + _ → go (grouping : before) after + +-- | The right-hand sides of a grouping's bindings. +groupingExprs ∷ Grouping (ann, Name, RawExp ann) → [RawExp ann] +groupingExprs g = [e | (_ann, _name, e) ← listGrouping g] + +{- | Bind each labelled expression to a fresh binder unless +'isInlinableValue' admits it — binder-free and free to re-emit, the +same guard 'inlineLocalBinding' substitutes by — returning per label +the expression its occurrences fold to (the value itself, or a +reference to its binder) and the binding to emit, if any. +-} +bindUnlessInlinable + ∷ Text + → [(PropName, Exp)] + → SupplyM [(PropName, Exp, Maybe (Grouping (Ann, Name, Exp)))] +bindUnlessInlinable prefix = traverse \(l, e) → + if isInlinableValue e + then pure (l, e, Nothing) + else + freshName prefix <&> \f → + (l, Ref noAnn (Local f), Just (Standalone (noAnn, f, e))) + {- | The through-a-reference companion of 'reduceKnownConstructor' — the relationship 'resolveDictionaryProp' bears to 'reduceObjectProp'. A constructor value used at a saturated site is a reference-headed call: the diff --git a/lib/Language/PureScript/Backend/IR/Query.hs b/lib/Language/PureScript/Backend/IR/Query.hs index b1e4b214..94bf0801 100644 --- a/lib/Language/PureScript/Backend/IR/Query.hs +++ b/lib/Language/PureScript/Backend/IR/Query.hs @@ -10,6 +10,7 @@ import Language.PureScript.Backend.IR.Names ( CtorName , ModuleName , Name (Name) + , PropName , Qualified (Imported, Local) , TyName , runModuleName @@ -228,3 +229,36 @@ hasWholeValueArrayRead name len = go ArrayIndex _ (Ref _ (Local n)) i | n == name, i < len → False Ref _ (Local n) | n == name → True other → any go (toListOf subexpressions other) + +{- | The record sibling of 'hasWholeValueRead', for a binder whose +right-hand side is a record value: whether some @Ref name@ is reached +other than through a field read or as the base of a record update — +the two uses field-wise unpacking can fold. Patch expressions of an +update whose base is the binder are traversed like any other +subexpression: the binder occurring inside one is its own use. + +When the binder's field set is statically known (a manifest literal), +pass it as @Just labels@: a read at a label outside the set, or an +update patching one, reaches no existing field — the runtime update +only overwrites keys the record already has — so either counts as a +whole-value read, forcing the caller to decline. Such input is +ill-typed (see Note [IR is assumed well-typed] in +"Language.PureScript.Backend.IR.Optimizer"); the guard keeps callers +sound on the non-GUC \/ generated input 'optimizedExpression' also +runs on. Pass @Nothing@ when the field set is unknown (an update +right-hand side): any label may exist, so every field read and patch +is admissible. +-} +hasWholeValueObjectRead ∷ Maybe (Set PropName) → Name → Exp → Bool +hasWholeValueObjectRead knownLabels name = go + where + labelOk ∷ PropName → Bool + labelOk l = maybe True (Set.member l) knownLabels + + go = \case + ObjectProp _ (Ref _ (Local n)) l | n == name → not (labelOk l) + ObjectUpdate _ (Ref _ (Local n)) patches + | n == name → + not (all (labelOk . fst) patches) || any (go . snd) patches + Ref _ (Local n) | n == name → True + other → any go (toListOf subexpressions other) diff --git a/test/Language/PureScript/Backend/IR/Optimizer/Spec.hs b/test/Language/PureScript/Backend/IR/Optimizer/Spec.hs index 5c9a73c8..c128ced4 100644 --- a/test/Language/PureScript/Backend/IR/Optimizer/Spec.hs +++ b/test/Language/PureScript/Backend/IR/Optimizer/Spec.hs @@ -1678,7 +1678,7 @@ spec = describe "IR Optimizer" do a = PropName "a" b = PropName "b" r = refLocal (Name "r") - use e = application (refImported m (Name "use")) e + use = application (refImported m (Name "use")) -- An application: re-evaluating it would repeat the work, so it -- is the shape the field-binder must not duplicate. @@ -1761,19 +1761,20 @@ spec = describe "IR Optimizer" do -- by reduceObjectProp alone) and the record is read again, so -- used-once inlining cannot expose the in-place fold: the update -- use is rebuilt as a literal, one allocation instead of an - -- allocation plus a runtime copy. + -- allocation plus a runtime copy. Through the checked pipeline — + -- the non-trivial field's spent binder awaits DCE — which also + -- lints every pass's contract. let original = let1 (Name "r") (literalObject [(a, literalInt 1), (b, nonTrivial)]) $ application (application (refImported m (Name "pair")) (objectProp r b)) (use (objectUpdate r ((b, literalInt 5) :| []))) - field = Name "$prop0" - expected = - let1 field nonTrivial $ - application - (application (refImported m (Name "pair")) (refLocal field)) - (use (literalObject [(a, literalInt 1), (b, literalInt 5)])) - optimizedExpression original `shouldSatisfy` alphaEq expected + mainBodies ← either (fail . show) pure (collapsedMainBodies original) + mainBodies + `shouldBe` [ application + (application (refImported m (Name "pair")) nonTrivial) + (use (literalObject [(a, literalInt 1), (b, literalInt 5)])) + ] it "declines when the binder is read as a whole value" do -- r also flows into a function whole, so dropping the binding @@ -1790,7 +1791,9 @@ spec = describe "IR Optimizer" do -- mint a field-binder the literal cannot bind. let original = let1 (Name "r") (literalObject [(a, literalInt 1)]) $ - application (application (refImported m (Name "pair")) (objectProp r a)) (objectProp r b) + application + (application (refImported m (Name "pair")) (objectProp r a)) + (objectProp r b) optimizedExpression original `shouldBe` original it "declines an update patching a label the literal lacks" do @@ -1806,19 +1809,21 @@ spec = describe "IR Optimizer" do it "unpacks a literal used from a later sibling binding" do -- The defaults pattern: both bindings of the same Let, the second -- updating the first, the body projecting the second. Both tables - -- dissolve. + -- dissolve. Through the checked pipeline — the non-trivial + -- field's spent binder awaits DCE. let original = lets ( Standalone (noAnn, Name "r", literalObject [(a, literalInt 1), (b, nonTrivial)]) :| [ Standalone - ( noAnn - , Name "c" - , objectUpdate r ((a, literalInt 2) :| []) - ) + ( noAnn + , Name "c" + , objectUpdate r ((a, literalInt 2) :| []) + ) ] ) (objectProp (refLocal (Name "c")) b) - optimizedExpression original `shouldBe` nonTrivial + mainBodies ← either (fail . show) pure (collapsedMainBodies original) + mainBodies `shouldBe` [nonTrivial] it "folds reads of an update-bound record to patch and base" do -- x = y { a = g 1 }: the patched field read twice binds once, the @@ -1864,14 +1869,14 @@ spec = describe "IR Optimizer" do optimizedExpression original `shouldBe` original prop "eliminates the allocation without growing the reference multiset" do - -- The non-trivial field keeps the record itself uninlinable, so - -- with it Let-bound and read twice only the unpacking rule can + -- A record literal is never inlined whole (it is an allocation), + -- so with it Let-bound and read twice only the unpacking rule can -- drop the table — and it never invents or multiplies a free -- reference. (A countFreeRef check would be vacuous: refs to a -- name its Let still binds are not free.) field ← forAll Gen.scalarExp let original = - let1 (Name "r") (literalObject [(a, field), (b, nonTrivial)]) $ + let1 (Name "r") (literalObject [(a, field), (b, literalInt 2)]) $ use (primBinOp PrimAdd (objectProp r a) (objectProp r b)) optimized = optimizedExpression original countObjectAllocations optimized === 0 @@ -3666,12 +3671,14 @@ wrapInModule e = let1 ∷ Name → Exp → Exp → Exp let1 n e = lets (Standalone (noAnn, n, e) :| []) --- | Record-table allocations (literals and update copies) anywhere in --- the expression: the quantity scalar replacement is meant to remove. +{- | Record-table allocations (literals and update copies) anywhere in +the expression: the quantity scalar replacement is meant to remove. +-} countObjectAllocations ∷ Exp → Int countObjectAllocations = go where go e = self e + sum (go <$> toListOf subexpressions e) + self ∷ Exp → Int self = \case LiteralObject {} → 1 ObjectUpdate {} → 1 diff --git a/test/ps/output/Golden.LongReaderBind.Test/golden.ir b/test/ps/output/Golden.LongReaderBind.Test/golden.ir index 197c5a4d..a8d8850c 100644 --- a/test/ps/output/Golden.LongReaderBind.Test/golden.ir +++ b/test/ps/output/Golden.LongReaderBind.Test/golden.ir @@ -16,13 +16,13 @@ UberModule ( QName { qnameModuleName = ModuleName "Golden.LongReaderBind.Test", qnameName = Name "go" }, AbsN Nothing - ( ParamNamed Nothing ( Name "r$563" ) :| [] ) + ( ParamNamed Nothing ( Name "r$571" ) :| [] ) ( PrimBinOp Nothing PrimAdd ( PrimBinOp Nothing PrimAdd - ( Ref Nothing ( Local ( Name "r$563" ) ) ) - ( Ref Nothing ( Local ( Name "r$563" ) ) ) + ( Ref Nothing ( Local ( Name "r$571" ) ) ) + ( Ref Nothing ( Local ( Name "r$571" ) ) ) ) - ( Ref Nothing ( Local ( Name "r$563" ) ) ) + ( Ref Nothing ( Local ( Name "r$571" ) ) ) ) ), Standalone ( QName diff --git a/test/ps/output/Golden.LongWriterBind.Test/golden.ir b/test/ps/output/Golden.LongWriterBind.Test/golden.ir index 7d8bedc9..4f687638 100644 --- a/test/ps/output/Golden.LongWriterBind.Test/golden.ir +++ b/test/ps/output/Golden.LongWriterBind.Test/golden.ir @@ -19,12 +19,6 @@ UberModule ( ModuleName "Data.Semigroup" ) ".spago/p/prelude/5718c84fdde6247749cb053e816df696c30fe691/src/Data/Semigroup.purs" [ ( Nothing, Name "concatArray" ) ] ), Standalone - ( QName - { qnameModuleName = ModuleName "Data.Semigroup", qnameName = Name "concatArray" - }, ObjectProp Nothing - ( Ref Nothing ( Imported ( ModuleName "Data.Semigroup" ) ( Name "foreign" ) ) ) - ( PropName "concatArray" ) - ), Standalone ( QName { qnameModuleName = ModuleName "Data.Show", qnameName = Name "foreign" }, ForeignImport Nothing @@ -37,15 +31,6 @@ UberModule ( ModuleName "Effect.Console" ) ".spago/p/console/f82835a0b873aafe6bd7b14dd30cc150553d4ab9/src/Effect/Console.purs" [ ( Nothing, Name "log" ) ] ), Standalone - ( QName - { qnameModuleName = ModuleName "Data.Semigroup", qnameName = Name "semigroupArray" - }, LiteralObject Nothing - [ - ( PropName "append", Ref Nothing - ( Imported ( ModuleName "Data.Semigroup" ) ( Name "concatArray" ) ) - ) - ] - ), Standalone ( QName { qnameModuleName = ModuleName "Data.Tuple", qnameName = Name "Tuple$w" }, AbsN Nothing ( ParamNamed Nothing ( Name "value0" ) :| [ ParamNamed Nothing ( Name "value1" ) ] ) @@ -57,262 +42,49 @@ UberModule ) ), Standalone ( QName - { qnameModuleName = ModuleName "Data.Identity", qnameName = Name "applyIdentity" - }, LiteralObject Nothing - [ - ( PropName "apply", AbsN Nothing - ( ParamNamed Nothing ( Name "v" ) :| [] ) - ( AbsN Nothing - ( ParamNamed Nothing ( Name "v1" ) :| [] ) - ( AppN Nothing - ( Ref Nothing ( Local ( Name "v" ) ) ) - ( Ref Nothing ( Local ( Name "v1" ) ) :| [] ) - ) - ) - ), - ( PropName "Functor0", AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( LiteralObject Nothing - [ - ( PropName "map", AbsN Nothing - ( ParamNamed Nothing ( Name "f$505" ) :| [] ) - ( AbsN Nothing - ( ParamNamed Nothing ( Name "m$506" ) :| [] ) - ( AppN Nothing - ( Ref Nothing ( Local ( Name "f$505" ) ) ) - ( Ref Nothing ( Local ( Name "m$506" ) ) :| [] ) - ) - ) - ) - ] - ) - ) - ] - ), Standalone - ( QName - { qnameModuleName = ModuleName "Data.Identity", qnameName = Name "applicativeIdentity" - }, LiteralObject Nothing - [ - ( PropName "pure", AbsN Nothing - ( ParamNamed Nothing ( Name "x$507" ) :| [] ) - ( Ref Nothing ( Local ( Name "x$507" ) ) ) - ), - ( PropName "Apply0", AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( Ref Nothing ( Imported ( ModuleName "Data.Identity" ) ( Name "applyIdentity" ) ) ) - ) - ] - ), Standalone - ( QName - { qnameModuleName = ModuleName "Control.Monad.Writer.Trans", qnameName = Name "applyWriterT$w" + { qnameModuleName = ModuleName "Golden.LongWriterBind.Test", qnameName = Name "discard$w" }, AbsN Nothing - ( ParamNamed Nothing - ( Name "dictSemigroup" ) :| - [ ParamNamed Nothing ( Name "dictApply" ) ] - ) + ( ParamNamed Nothing ( Name "v$528" ) :| [ ParamNamed Nothing ( Name "k$529" ) ] ) ( Let Nothing ( Standalone - ( Nothing, Name "Functor0", AppN Nothing - ( ObjectProp Nothing - ( Ref Nothing ( Local ( Name "dictApply" ) ) ) - ( PropName "Functor0" ) + ( Nothing, Name "m$554", AppN Nothing + ( Ref Nothing ( Local ( Name "k$529" ) ) ) + ( DataArgumentByIndex Nothing ProductType 0 + ( Ref Nothing ( Local ( Name "v$528" ) ) ) :| [] ) - ( Ref Nothing ( Imported ( ModuleName "Prim" ) ( Name "undefined" ) ) :| [] ) ) :| [] ) - ( LiteralObject Nothing - [ - ( PropName "apply", AbsN Nothing - ( ParamNamed Nothing ( Name "v" ) :| [] ) - ( AbsN Nothing - ( ParamNamed Nothing ( Name "v1" ) :| [] ) - ( AppN Nothing - ( AppN Nothing - ( ObjectProp Nothing - ( Ref Nothing ( Local ( Name "dictApply" ) ) ) - ( PropName "apply" ) - ) - ( AppN Nothing - ( AppN Nothing - ( ObjectProp Nothing - ( Ref Nothing ( Local ( Name "Functor0" ) ) ) - ( PropName "map" ) - ) - ( AbsN Nothing - ( ParamNamed Nothing ( Name "v3$33" ) :| [] ) - ( AbsN Nothing - ( ParamNamed Nothing ( Name "v4$34" ) :| [] ) - ( AppN Nothing - ( Ref Nothing - ( Imported ( ModuleName "Data.Tuple" ) ( Name "Tuple$w" ) ) - ) - ( AppN Nothing - ( DataArgumentByIndex Nothing ProductType 0 - ( Ref Nothing ( Local ( Name "v3$33" ) ) ) - ) - ( DataArgumentByIndex Nothing ProductType 0 - ( Ref Nothing ( Local ( Name "v4$34" ) ) ) :| [] - ) :| - [ AppN Nothing - ( AppN Nothing - ( ObjectProp Nothing - ( Ref Nothing ( Local ( Name "dictSemigroup" ) ) ) - ( PropName "append" ) - ) - ( DataArgumentByIndex Nothing ProductType 1 - ( Ref Nothing ( Local ( Name "v3$33" ) ) ) :| [] - ) - ) - ( DataArgumentByIndex Nothing ProductType 1 - ( Ref Nothing ( Local ( Name "v4$34" ) ) ) :| [] - ) - ] - ) - ) - ) :| [] - ) - ) - ( Ref Nothing ( Local ( Name "v" ) ) :| [] ) :| [] - ) - ) - ( Ref Nothing ( Local ( Name "v1" ) ) :| [] ) + ( AppN Nothing + ( Ref Nothing ( Imported ( ModuleName "Data.Tuple" ) ( Name "Tuple$w" ) ) ) + ( DataArgumentByIndex Nothing ProductType 0 + ( Ref Nothing ( Local ( Name "m$554" ) ) ) :| + [ AppN Nothing + ( AppN Nothing + ( ObjectProp Nothing + ( Ref Nothing ( Imported ( ModuleName "Data.Semigroup" ) ( Name "foreign" ) ) ) + ( PropName "concatArray" ) + ) + ( DataArgumentByIndex Nothing ProductType 1 + ( Ref Nothing ( Local ( Name "v$528" ) ) ) :| [] ) ) - ), - ( PropName "Functor0", AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( LiteralObject Nothing - [ - ( PropName "map", AbsN Nothing - ( ParamNamed Nothing ( Name "f$500" ) :| [] ) - ( AbsN Nothing - ( ParamNamed Nothing ( Name "v$503" ) :| [] ) - ( AppN Nothing - ( AppN Nothing - ( ObjectProp Nothing - ( Ref Nothing ( Local ( Name "Functor0" ) ) ) - ( PropName "map" ) - ) - ( AbsN Nothing - ( ParamNamed Nothing ( Name "v$501" ) :| [] ) - ( AppN Nothing - ( Ref Nothing - ( Imported ( ModuleName "Data.Tuple" ) ( Name "Tuple$w" ) ) - ) - ( AppN Nothing - ( Ref Nothing ( Local ( Name "f$500" ) ) ) - ( DataArgumentByIndex Nothing ProductType 0 - ( Ref Nothing ( Local ( Name "v$501" ) ) ) :| [] - ) :| - [ DataArgumentByIndex Nothing ProductType 1 - ( Ref Nothing ( Local ( Name "v$501" ) ) ) - ] - ) - ) :| [] - ) - ) - ( Ref Nothing ( Local ( Name "v$503" ) ) :| [] ) - ) - ) - ) - ] + ( DataArgumentByIndex Nothing ProductType 1 + ( Ref Nothing ( Local ( Name "m$554" ) ) ) :| [] ) - ) - ] + ] + ) ) ) ), Standalone ( QName - { qnameModuleName = ModuleName "Golden.LongWriterBind.Test", qnameName = Name "discard" - }, Let Nothing - ( Standalone - ( Nothing, Name "dictBind$524", LiteralObject Nothing - [ - ( PropName "bind", AbsN Nothing - ( ParamNamed Nothing ( Name "v$530" ) :| [] ) - ( AbsN Nothing - ( ParamNamed Nothing ( Name "f$531" ) :| [] ) - ( AppN Nothing - ( Ref Nothing ( Local ( Name "f$531" ) ) ) - ( Ref Nothing ( Local ( Name "v$530" ) ) :| [] ) - ) - ) - ), - ( PropName "Apply0", AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( Ref Nothing ( Imported ( ModuleName "Data.Identity" ) ( Name "applyIdentity" ) ) ) - ) - ] - ) :| [] - ) - ( AbsN Nothing - ( ParamNamed Nothing ( Name "v$526" ) :| [] ) - ( AbsN Nothing - ( ParamNamed Nothing ( Name "k$527" ) :| [] ) - ( AppN Nothing - ( AppN Nothing - ( ObjectProp Nothing - ( Ref Nothing ( Local ( Name "dictBind$524" ) ) ) - ( PropName "bind" ) - ) - ( Ref Nothing ( Local ( Name "v$526" ) ) :| [] ) - ) - ( AbsN Nothing - ( ParamNamed Nothing ( Name "v1$528" ) :| [] ) - ( AppN Nothing - ( AppN Nothing - ( ObjectProp Nothing - ( AppN Nothing - ( ObjectProp Nothing - ( AppN Nothing - ( ObjectProp Nothing - ( Ref Nothing ( Local ( Name "dictBind$524" ) ) ) - ( PropName "Apply0" ) - ) - ( Ref Nothing - ( Imported ( ModuleName "Prim" ) ( Name "undefined" ) ) :| [] - ) - ) - ( PropName "Functor0" ) - ) - ( Ref Nothing - ( Imported ( ModuleName "Prim" ) ( Name "undefined" ) ) :| [] - ) - ) - ( PropName "map" ) - ) - ( AbsN Nothing - ( ParamNamed Nothing ( Name "v3$529" ) :| [] ) - ( AppN Nothing - ( Ref Nothing ( Imported ( ModuleName "Data.Tuple" ) ( Name "Tuple$w" ) ) ) - ( DataArgumentByIndex Nothing ProductType 0 - ( Ref Nothing ( Local ( Name "v3$529" ) ) ) :| - [ AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported ( ModuleName "Data.Semigroup" ) ( Name "concatArray" ) ) - ) - ( DataArgumentByIndex Nothing ProductType 1 - ( Ref Nothing ( Local ( Name "v1$528" ) ) ) :| [] - ) - ) - ( DataArgumentByIndex Nothing ProductType 1 - ( Ref Nothing ( Local ( Name "v3$529" ) ) ) :| [] - ) - ] - ) - ) :| [] - ) - ) - ( AppN Nothing - ( Ref Nothing ( Local ( Name "k$527" ) ) ) - ( DataArgumentByIndex Nothing ProductType 0 - ( Ref Nothing ( Local ( Name "v1$528" ) ) ) :| [] - ) :| [] - ) - ) :| [] - ) - ) + { qnameModuleName = ModuleName "Golden.LongWriterBind.Test", qnameName = Name "tell" + }, AbsN Nothing + ( ParamNamed Nothing ( Name "x$1165" ) :| [] ) + ( AppN Nothing + ( Ref Nothing ( Imported ( ModuleName "Data.Tuple" ) ( Name "Tuple$w" ) ) ) + ( Ref Nothing + ( Imported ( ModuleName "Data.Unit" ) ( Name "unit" ) ) :| + [ Ref Nothing ( Local ( Name "x$1165" ) ) ] ) ) ), Standalone @@ -320,5820 +92,4324 @@ UberModule { qnameModuleName = ModuleName "Golden.LongWriterBind.Test", qnameName = Name "go" }, Let Nothing ( Standalone - ( Nothing, Name "$kont759", AppN Nothing + ( Nothing, Name "$kont6569", AppN Nothing + ( Ref Nothing + ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) ( Name "discard$w" ) ) + ) ( AppN Nothing ( Ref Nothing - ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) ( Name "discard" ) ) - ) - ( AppN Nothing - ( Ref Nothing ( Imported ( ModuleName "Data.Tuple" ) ( Name "Tuple$w" ) ) ) - ( Ref Nothing - ( Imported ( ModuleName "Data.Unit" ) ( Name "unit" ) ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 161 ] ] - ) :| [] + ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) ( Name "tell" ) ) ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing [ LiteralInt Nothing 161 ] :| [] ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing - ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) ( Name "discard" ) ) + ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) ( Name "discard$w" ) ) ) ( AppN Nothing - ( Ref Nothing ( Imported ( ModuleName "Data.Tuple" ) ( Name "Tuple$w" ) ) ) ( Ref Nothing - ( Imported ( ModuleName "Data.Unit" ) ( Name "unit" ) ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 162 ] ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) ( Name "discard" ) ) - ) - ( AppN Nothing - ( Ref Nothing ( Imported ( ModuleName "Data.Tuple" ) ( Name "Tuple$w" ) ) ) - ( Ref Nothing - ( Imported ( ModuleName "Data.Unit" ) ( Name "unit" ) ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 163 ] ] - ) :| [] - ) + ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) ( Name "tell" ) ) ) - ( AbsN Nothing + ( LiteralArray Nothing [ LiteralInt Nothing 162 ] :| [] ) :| + [ AbsN Nothing ( ParamUnused Nothing :| [] ) ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) ( AppN Nothing ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported ( ModuleName "Data.Tuple" ) ( Name "Tuple$w" ) ) - ) - ( Ref Nothing - ( Imported ( ModuleName "Data.Unit" ) ( Name "unit" ) ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 164 ] ] - ) :| [] + ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) ( Name "tell" ) ) ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing [ LiteralInt Nothing 163 ] :| [] ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing - ( Imported ( ModuleName "Data.Tuple" ) ( Name "Tuple$w" ) ) - ) - ( Ref Nothing - ( Imported ( ModuleName "Data.Unit" ) ( Name "unit" ) ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 165 ] ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported ( ModuleName "Data.Tuple" ) ( Name "Tuple$w" ) ) - ) - ( Ref Nothing - ( Imported ( ModuleName "Data.Unit" ) ( Name "unit" ) ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 166 ] ] - ) :| [] + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( AbsN Nothing + ( LiteralArray Nothing [ LiteralInt Nothing 164 ] :| [] ) :| + [ AbsN Nothing ( ParamUnused Nothing :| [] ) ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 167 ] ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing [ LiteralInt Nothing 165 ] :| [] ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 168 ] ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 166 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 169 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 170 ] - ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 167 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 171 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 168 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 172 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "tell" ) ) ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) - ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 173 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 169 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 174 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 170 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 175 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 176 ] - ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 171 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 177 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 172 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 178 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 179 ] - ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 173 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 180 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 174 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 181 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 182 ] - ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 175 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 183 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 176 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 184 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 185 ] - ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 177 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 186 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 178 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 187 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 188 ] - ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 179 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 189 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 180 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 190 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "tell" ) ) ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) - ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 191 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 181 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 192 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 182 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 193 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 194 ] - ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 183 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 195 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 184 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 196 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 197 ] - ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 185 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 198 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 186 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 199 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "tell" ) ) ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( LiteralArray Nothing + [ LiteralInt Nothing 187 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) ) - ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 200 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( ObjectProp Nothing ( AppN Nothing - ( Let Nothing - ( Standalone - ( Nothing, Name "dictMonoid$520", LiteralObject Nothing - [ - ( PropName "mempty", LiteralArray Nothing [] - ), - ( PropName "Semigroup0", AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Semigroup" ) - ( Name "semigroupArray" ) - ) - ) - ) - ] - ) :| [] + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) - ( AbsN Nothing - ( ParamNamed Nothing - ( Name "dictApplicative$521" ) :| [] + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 188 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) ) - ( LiteralObject Nothing - [ - ( PropName "pure", AbsN Nothing - ( ParamNamed Nothing - ( Name "a$522" ) :| [] - ) - ( AppN Nothing - ( ObjectProp Nothing - ( Ref Nothing - ( Local - ( Name "dictApplicative$521" ) - ) - ) - ( PropName "pure" ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) - ) - ( Ref Nothing - ( Local - ( Name "a$522" ) - ) :| - [ ObjectProp Nothing - ( Ref Nothing - ( Local - ( Name "dictMonoid$520" ) - ) - ) - ( PropName "mempty" ) - ] - ) :| [] + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 189 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ), - ( PropName "Apply0", AbsN Nothing - ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Control.Monad.Writer.Trans" ) - ( Name "applyWriterT$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( AppN Nothing - ( ObjectProp Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 190 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing ( Ref Nothing - ( Local - ( Name "dictMonoid$520" ) + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( PropName "Semigroup0" ) - ) - ( Ref Nothing - ( Imported - ( ModuleName "Prim" ) - ( Name "undefined" ) - ) :| [] - ) :| - [ AppN Nothing - ( ObjectProp Nothing + ( AppN Nothing ( Ref Nothing - ( Local - ( Name "dictApplicative$521" ) + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( PropName "Apply0" ) - ) - ( Ref Nothing - ( Imported - ( ModuleName "Prim" ) - ( Name "undefined" ) - ) :| [] + ( LiteralArray Nothing + [ LiteralInt Nothing 191 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 192 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 193 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 194 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 195 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 196 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 197 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 198 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 199 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 200 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Data.Tuple" ) + ( Name "Tuple$w" ) + ) + ) + ( LiteralInt Nothing 42 :| + [ LiteralArray Nothing [] ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] ) - ] - ) + ) + ] ) ) ] ) ) - ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Identity" ) - ( Name "applicativeIdentity" ) - ) :| [] - ) + ] ) - ( PropName "pure" ) ) - ( LiteralInt Nothing 42 :| [] ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) ) :| [ Standalone - ( Nothing, Name "$kont760", AppN Nothing + ( Nothing, Name "$kont6570", AppN Nothing + ( Ref Nothing + ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) ( Name "discard$w" ) ) + ) ( AppN Nothing ( Ref Nothing - ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) ( Name "discard" ) ) - ) - ( AppN Nothing - ( Ref Nothing ( Imported ( ModuleName "Data.Tuple" ) ( Name "Tuple$w" ) ) ) - ( Ref Nothing - ( Imported ( ModuleName "Data.Unit" ) ( Name "unit" ) ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 121 ] ] - ) :| [] + ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) ( Name "tell" ) ) ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing [ LiteralInt Nothing 121 ] :| [] ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing - ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) ( Name "discard" ) ) + ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) ( Name "discard$w" ) ) ) ( AppN Nothing - ( Ref Nothing ( Imported ( ModuleName "Data.Tuple" ) ( Name "Tuple$w" ) ) ) ( Ref Nothing - ( Imported ( ModuleName "Data.Unit" ) ( Name "unit" ) ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 122 ] ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported ( ModuleName "Data.Tuple" ) ( Name "Tuple$w" ) ) - ) - ( Ref Nothing - ( Imported ( ModuleName "Data.Unit" ) ( Name "unit" ) ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 123 ] ] - ) :| [] - ) + ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) ( Name "tell" ) ) ) - ( AbsN Nothing + ( LiteralArray Nothing [ LiteralInt Nothing 122 ] :| [] ) :| + [ AbsN Nothing ( ParamUnused Nothing :| [] ) ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported ( ModuleName "Data.Tuple" ) ( Name "Tuple$w" ) ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported ( ModuleName "Data.Unit" ) ( Name "unit" ) ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 124 ] ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing [ LiteralInt Nothing 123 ] :| [] ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing - ( Imported ( ModuleName "Data.Tuple" ) ( Name "Tuple$w" ) ) - ) - ( Ref Nothing - ( Imported ( ModuleName "Data.Unit" ) ( Name "unit" ) ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 125 ] ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported ( ModuleName "Data.Tuple" ) ( Name "Tuple$w" ) ) - ) - ( Ref Nothing - ( Imported ( ModuleName "Data.Unit" ) ( Name "unit" ) ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 126 ] ] - ) :| [] + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( AbsN Nothing + ( LiteralArray Nothing [ LiteralInt Nothing 124 ] :| [] ) :| + [ AbsN Nothing ( ParamUnused Nothing :| [] ) ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 127 ] ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 125 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 128 ] ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 126 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 129 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "tell" ) ) ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) - ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 130 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 127 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 131 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 128 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 132 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 133 ] - ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 129 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 134 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 130 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 135 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 136 ] - ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 131 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 137 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 132 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 138 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 139 ] - ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 133 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 140 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 134 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 141 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "tell" ) ) ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) - ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 142 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 135 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 143 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 136 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 144 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 145 ] - ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 137 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 146 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 138 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 147 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "tell" ) ) ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) - ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 148 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 139 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 149 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 140 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 150 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 151 ] - ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 141 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 152 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 142 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 153 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 154 ] - ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 143 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 155 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 144 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 156 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 157 ] - ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 145 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 158 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 146 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 159 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "tell" ) ) ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( LiteralArray Nothing + [ LiteralInt Nothing 147 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 148 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 149 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 150 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 151 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 152 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 153 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 154 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 155 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 156 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 157 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 158 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 159 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 160 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( Ref Nothing + ( Local + ( Name "$kont6569" ) + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 160 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( Ref Nothing - ( Local - ( Name "$kont759" ) - ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) ), Standalone - ( Nothing, Name "$kont761", AppN Nothing + ( Nothing, Name "$kont6571", AppN Nothing + ( Ref Nothing + ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) ( Name "discard$w" ) ) + ) ( AppN Nothing ( Ref Nothing - ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) ( Name "discard" ) ) + ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) ( Name "tell" ) ) ) - ( AppN Nothing - ( Ref Nothing ( Imported ( ModuleName "Data.Tuple" ) ( Name "Tuple$w" ) ) ) - ( Ref Nothing - ( Imported ( ModuleName "Data.Unit" ) ( Name "unit" ) ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 81 ] ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing [ LiteralInt Nothing 81 ] :| [] ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing - ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) ( Name "discard" ) ) + ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) ( Name "discard$w" ) ) ) ( AppN Nothing - ( Ref Nothing ( Imported ( ModuleName "Data.Tuple" ) ( Name "Tuple$w" ) ) ) ( Ref Nothing - ( Imported ( ModuleName "Data.Unit" ) ( Name "unit" ) ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 82 ] ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported ( ModuleName "Data.Tuple" ) ( Name "Tuple$w" ) ) - ) - ( Ref Nothing - ( Imported ( ModuleName "Data.Unit" ) ( Name "unit" ) ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 83 ] ] - ) :| [] - ) + ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) ( Name "tell" ) ) ) - ( AbsN Nothing + ( LiteralArray Nothing [ LiteralInt Nothing 82 ] :| [] ) :| + [ AbsN Nothing ( ParamUnused Nothing :| [] ) ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported ( ModuleName "Data.Tuple" ) ( Name "Tuple$w" ) ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported ( ModuleName "Data.Unit" ) ( Name "unit" ) ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 84 ] ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing [ LiteralInt Nothing 83 ] :| [] ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing - ( Imported ( ModuleName "Data.Tuple" ) ( Name "Tuple$w" ) ) - ) - ( Ref Nothing - ( Imported ( ModuleName "Data.Unit" ) ( Name "unit" ) ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 85 ] ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported ( ModuleName "Data.Tuple" ) ( Name "Tuple$w" ) ) - ) - ( Ref Nothing - ( Imported ( ModuleName "Data.Unit" ) ( Name "unit" ) ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 86 ] ] - ) :| [] + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( AbsN Nothing + ( LiteralArray Nothing [ LiteralInt Nothing 84 ] :| [] ) :| + [ AbsN Nothing ( ParamUnused Nothing :| [] ) ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 87 ] ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing [ LiteralInt Nothing 85 ] :| [] ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 88 ] ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 86 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 89 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 90 ] - ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 87 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 91 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 88 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 92 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 93 ] - ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 89 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 94 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 90 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 95 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 96 ] - ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 91 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 97 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 92 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 98 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 99 ] - ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 93 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 100 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 94 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 101 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 102 ] - ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 95 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 103 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 96 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 104 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 105 ] - ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 97 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 106 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 98 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 107 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 108 ] - ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 99 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 109 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 100 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 110 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "tell" ) ) ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) - ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 111 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 101 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 112 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 102 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 113 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 114 ] - ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 103 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 115 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 104 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 116 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 117 ] - ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 105 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 118 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 106 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 119 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "tell" ) ) ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( LiteralArray Nothing + [ LiteralInt Nothing 107 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 108 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 109 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 110 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 111 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 112 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 113 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 114 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 115 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 116 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 117 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 118 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 119 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 120 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( Ref Nothing + ( Local + ( Name "$kont6570" ) + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 120 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( Ref Nothing - ( Local - ( Name "$kont760" ) - ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) ), Standalone - ( Nothing, Name "$kont762", AppN Nothing + ( Nothing, Name "$kont6572", AppN Nothing + ( Ref Nothing + ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) ( Name "discard$w" ) ) + ) ( AppN Nothing ( Ref Nothing - ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) ( Name "discard" ) ) - ) - ( AppN Nothing - ( Ref Nothing ( Imported ( ModuleName "Data.Tuple" ) ( Name "Tuple$w" ) ) ) - ( Ref Nothing - ( Imported ( ModuleName "Data.Unit" ) ( Name "unit" ) ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 41 ] ] - ) :| [] + ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) ( Name "tell" ) ) ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing [ LiteralInt Nothing 41 ] :| [] ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing - ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) ( Name "discard" ) ) + ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) ( Name "discard$w" ) ) ) ( AppN Nothing - ( Ref Nothing ( Imported ( ModuleName "Data.Tuple" ) ( Name "Tuple$w" ) ) ) ( Ref Nothing - ( Imported ( ModuleName "Data.Unit" ) ( Name "unit" ) ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 42 ] ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported ( ModuleName "Data.Tuple" ) ( Name "Tuple$w" ) ) - ) - ( Ref Nothing - ( Imported ( ModuleName "Data.Unit" ) ( Name "unit" ) ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 43 ] ] - ) :| [] - ) + ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) ( Name "tell" ) ) ) - ( AbsN Nothing + ( LiteralArray Nothing [ LiteralInt Nothing 42 ] :| [] ) :| + [ AbsN Nothing ( ParamUnused Nothing :| [] ) ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported ( ModuleName "Data.Tuple" ) ( Name "Tuple$w" ) ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported ( ModuleName "Data.Unit" ) ( Name "unit" ) ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 44 ] ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing [ LiteralInt Nothing 43 ] :| [] ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing - ( Imported ( ModuleName "Data.Tuple" ) ( Name "Tuple$w" ) ) - ) - ( Ref Nothing - ( Imported ( ModuleName "Data.Unit" ) ( Name "unit" ) ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 45 ] ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported ( ModuleName "Data.Tuple" ) ( Name "Tuple$w" ) ) - ) - ( Ref Nothing - ( Imported ( ModuleName "Data.Unit" ) ( Name "unit" ) ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 46 ] ] - ) :| [] + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( AbsN Nothing + ( LiteralArray Nothing [ LiteralInt Nothing 44 ] :| [] ) :| + [ AbsN Nothing ( ParamUnused Nothing :| [] ) ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 47 ] ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing [ LiteralInt Nothing 45 ] :| [] ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 48 ] ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 46 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 49 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 50 ] - ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 47 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 51 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 48 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 52 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 53 ] - ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 49 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 54 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 50 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 55 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "tell" ) ) ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) - ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 56 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 51 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 57 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 52 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 58 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 59 ] - ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 53 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 60 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 54 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 61 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 62 ] - ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 55 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 63 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 56 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 64 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "tell" ) ) ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) - ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 65 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 57 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 66 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 58 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 67 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 68 ] - ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 59 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 69 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 60 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 70 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 71 ] - ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 61 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 72 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 62 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 73 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 74 ] - ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 63 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 75 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 64 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 76 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 77 ] - ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 65 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 78 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 66 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 79 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "tell" ) ) ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( LiteralArray Nothing + [ LiteralInt Nothing 67 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 68 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 69 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 70 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 71 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 72 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 73 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 74 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 75 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 76 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 77 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 78 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 79 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 80 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( Ref Nothing + ( Local + ( Name "$kont6571" ) + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 80 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( Ref Nothing - ( Local - ( Name "$kont761" ) - ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) ) ] ) ( AppN Nothing + ( Ref Nothing + ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) ( Name "discard$w" ) ) + ) ( AppN Nothing ( Ref Nothing - ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) ( Name "discard" ) ) + ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) ( Name "tell" ) ) ) - ( AppN Nothing - ( Ref Nothing ( Imported ( ModuleName "Data.Tuple" ) ( Name "Tuple$w" ) ) ) - ( Ref Nothing - ( Imported ( ModuleName "Data.Unit" ) ( Name "unit" ) ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 1 ] ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing [ LiteralInt Nothing 1 ] :| [] ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing - ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) ( Name "discard" ) ) + ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) ( Name "discard$w" ) ) ) ( AppN Nothing - ( Ref Nothing ( Imported ( ModuleName "Data.Tuple" ) ( Name "Tuple$w" ) ) ) ( Ref Nothing - ( Imported ( ModuleName "Data.Unit" ) ( Name "unit" ) ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 2 ] ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) ( Name "discard" ) ) - ) - ( AppN Nothing - ( Ref Nothing ( Imported ( ModuleName "Data.Tuple" ) ( Name "Tuple$w" ) ) ) - ( Ref Nothing - ( Imported ( ModuleName "Data.Unit" ) ( Name "unit" ) ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 3 ] ] - ) :| [] - ) + ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) ( Name "tell" ) ) ) - ( AbsN Nothing + ( LiteralArray Nothing [ LiteralInt Nothing 2 ] :| [] ) :| + [ AbsN Nothing ( ParamUnused Nothing :| [] ) ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) ( AppN Nothing ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported ( ModuleName "Data.Tuple" ) ( Name "Tuple$w" ) ) - ) - ( Ref Nothing - ( Imported ( ModuleName "Data.Unit" ) ( Name "unit" ) ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 4 ] ] - ) :| [] + ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) ( Name "tell" ) ) ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing [ LiteralInt Nothing 3 ] :| [] ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing - ( Imported ( ModuleName "Data.Tuple" ) ( Name "Tuple$w" ) ) - ) - ( Ref Nothing - ( Imported ( ModuleName "Data.Unit" ) ( Name "unit" ) ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 5 ] ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported ( ModuleName "Data.Tuple" ) ( Name "Tuple$w" ) ) - ) - ( Ref Nothing - ( Imported ( ModuleName "Data.Unit" ) ( Name "unit" ) ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 6 ] ] - ) :| [] + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( AbsN Nothing + ( LiteralArray Nothing [ LiteralInt Nothing 4 ] :| [] ) :| + [ AbsN Nothing ( ParamUnused Nothing :| [] ) ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported ( ModuleName "Data.Tuple" ) ( Name "Tuple$w" ) ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported ( ModuleName "Data.Unit" ) ( Name "unit" ) ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 7 ] ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing [ LiteralInt Nothing 5 ] :| [] ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 8 ] ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 6 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing [ LiteralInt Nothing 9 ] ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 10 ] - ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 7 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 11 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 8 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 12 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 13 ] - ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 9 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 14 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 10 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 15 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) + ( Name "tell" ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 16 ] - ] - ) :| [] ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 11 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 17 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 12 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 18 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "tell" ) ) ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) - ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 19 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 13 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 20 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 14 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 21 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "tell" ) ) ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) - ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 22 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 15 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 23 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 16 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 24 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "tell" ) ) ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) - ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 25 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 17 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 26 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 18 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 27 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "tell" ) ) ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) - ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 28 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 19 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 29 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 20 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 30 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "tell" ) ) ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) - ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 31 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 21 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 32 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 22 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 33 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "tell" ) ) ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) - ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 34 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 23 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 35 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 24 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 36 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "tell" ) ) ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) - ) - ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 37 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing + ( LiteralArray Nothing + [ LiteralInt Nothing 25 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "discard$w" ) ) ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 38 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) - ) - ) + ( LiteralArray Nothing + [ LiteralInt Nothing 26 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) ( AppN Nothing ( Ref Nothing ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 39 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Golden.LongWriterBind.Test" ) - ( Name "discard" ) + ( Name "tell" ) ) ) - ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Data.Tuple" ) - ( Name "Tuple$w" ) + ( LiteralArray Nothing + [ LiteralInt Nothing 27 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 28 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 29 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 30 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 31 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 32 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 33 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 34 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 35 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 36 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 37 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 38 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 39 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "discard$w" ) + ) + ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.LongWriterBind.Test" ) + ( Name "tell" ) + ) + ) + ( LiteralArray Nothing + [ LiteralInt Nothing 40 ] :| [] + ) :| + [ AbsN Nothing + ( ParamUnused Nothing :| [] ) + ( Ref Nothing + ( Local + ( Name "$kont6572" ) + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] + ) + ) + ] ) ) - ( Ref Nothing - ( Imported - ( ModuleName "Data.Unit" ) - ( Name "unit" ) - ) :| - [ LiteralArray Nothing - [ LiteralInt Nothing 40 ] - ] - ) :| [] - ) - ) - ( AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( Ref Nothing - ( Local - ( Name "$kont762" ) - ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) - ) :| [] - ) - ) :| [] + ) + ] + ) ) - ) :| [] + ] ) ) ), Standalone diff --git a/test/ps/output/Golden.LongWriterBind.Test/golden.lua b/test/ps/output/Golden.LongWriterBind.Test/golden.lua index 5bf5593f..cb4b335d 100644 --- a/test/ps/output/Golden.LongWriterBind.Test/golden.lua +++ b/test/ps/output/Golden.LongWriterBind.Test/golden.lua @@ -1,4 +1,3 @@ -local M = {} local Data_Unit_foreign = { unit = {} } local Data_Unit_unit = Data_Unit_foreign.unit local Data_Semigroup_foreign = { @@ -14,198 +13,142 @@ local Data_Semigroup_foreign = { end end } -local Data_Semigroup_concatArray = Data_Semigroup_foreign.concatArray local Data_Show_foreign = { showIntImpl = function(n) return tostring(n) end } local Effect_Console_foreign = { log = function(s) return function() print(s) end end } -local Data_Semigroup_semigroupArray = { append = Data_Semigroup_concatArray } local Data_Tuple_Tuple_S_w = function(value0, value1) return { value0, value1 } end -local Data_Identity_applyIdentity = { - apply = function(v) return function(v1) return v(v1) end end, - Functor0 = function() - return { - map = function(f_S_0) return function(m_S_0) return f_S_0(m_S_0) end end - } - end -} -local Data_Identity_applicativeIdentity = { - pure = function(x_S_0) return x_S_0 end, - Apply0 = function() return Data_Identity_applyIdentity end -} -M.Control_Monad_Writer_Trans_applyWriterT_S_w = function( dictSemigroup -, dictApply ) - local Functor0 = dictApply.Functor0() - return { - apply = function(v) - return function(v1) - return dictApply.apply(Functor0.map(function(v3_S_0) - return function(v4_S_0) - return Data_Tuple_Tuple_S_w(v3_S_0[1](v4_S_0[1]), dictSemigroup.append(v3_S_0[2])(v4_S_0[2])) - end - end)(v))(v1) - end - end, - Functor0 = function() - return { - map = function(f_S_1) - return function(v_S_0) - return Functor0.map(function(v_S_1) - return Data_Tuple_Tuple_S_w(f_S_1(v_S_1[1]), v_S_1[2]) - end)(v_S_0) - end - end - } - end - } +local Golden_LongWriterBind_Test_discard_S_w = function(v_S_0, k_S_0) + local m_S_0 = k_S_0(v_S_0[1]) + return Data_Tuple_Tuple_S_w(m_S_0[1], Data_Semigroup_foreign.concatArray(v_S_0[2])(m_S_0[2])) +end +local Golden_LongWriterBind_Test_tell = function(x_S_0) + return Data_Tuple_Tuple_S_w(Data_Unit_unit, x_S_0) end -local Golden_LongWriterBind_Test_discard = (function() - local dictBind_S_0 = { - bind = function(v_S_2) return function(f_S_2) return f_S_2(v_S_2) end end, - Apply0 = function() return Data_Identity_applyIdentity end - } - return function(v_S_3) - return function(k_S_0) - return dictBind_S_0.bind(v_S_3)(function(v1_S_0) - return ((dictBind_S_0.Apply0()).Functor0()).map(function(v3_S_1) - return Data_Tuple_Tuple_S_w(v3_S_1[1], Data_Semigroup_concatArray(v1_S_0[2])(v3_S_1[2])) - end)(k_S_0(v1_S_0[1])) - end) - end - end -end)() local Golden_LongWriterBind_Test_go = (function() - local _S_kont0 = Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + local _S_kont0 = Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 161 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 162 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 163 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 164 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 165 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 166 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 167 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 168 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 169 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 170 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 171 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 172 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 173 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 174 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 175 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 176 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 177 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 178 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 179 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 180 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 181 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 182 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 183 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 184 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 185 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 186 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 187 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 188 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 189 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 190 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 191 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 192 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 193 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 194 - }))(function( ) - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function( ) + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 195 - }))(function( ) - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function( ) + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 196 - }))(function( ) - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function( ) + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 197 - }))(function( ) - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function( ) + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 198 - }))(function( ) - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function( ) + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 199 - }))(function( ) - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function( ) + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 200 - }))(function( ) - local dictMonoid_S_0 = { - mempty = {}, - Semigroup0 = function( ) - return Data_Semigroup_semigroupArray - end - } - local dictApplicative_S_0 = Data_Identity_applicativeIdentity - local a_S_0 = 42 - return dictApplicative_S_0.pure(Data_Tuple_Tuple_S_w(a_S_0, dictMonoid_S_0.mempty)) + }), function( ) + return Data_Tuple_Tuple_S_w(42, {}) end) end) end) @@ -246,126 +189,126 @@ local Golden_LongWriterBind_Test_go = (function() end) end) end) - local _S_kont1 = Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + local _S_kont1 = Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 121 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 122 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 123 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 124 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 125 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 126 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 127 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 128 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 129 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 130 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 131 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 132 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 133 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 134 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 135 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 136 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 137 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 138 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 139 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 140 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 141 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 142 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 143 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 144 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 145 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 146 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 147 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 148 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 149 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 150 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 151 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 152 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 153 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 154 - }))(function( ) - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function( ) + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 155 - }))(function( ) - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function( ) + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 156 - }))(function( ) - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function( ) + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 157 - }))(function( ) - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function( ) + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 158 - }))(function( ) - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function( ) + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 159 - }))(function( ) - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function( ) + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 160 - }))(function( ) + }), function( ) return _S_kont0 end) end) @@ -407,126 +350,126 @@ local Golden_LongWriterBind_Test_go = (function() end) end) end) - local _S_kont2 = Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + local _S_kont2 = Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 81 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 82 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 83 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 84 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 85 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 86 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 87 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 88 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 89 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 90 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 91 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 92 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 93 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 94 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 95 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 96 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 97 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 98 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 99 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 100 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 101 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 102 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 103 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 104 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 105 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 106 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 107 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 108 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 109 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 110 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 111 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 112 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 113 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 114 - }))(function( ) - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function( ) + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 115 - }))(function( ) - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function( ) + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 116 - }))(function( ) - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function( ) + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 117 - }))(function( ) - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function( ) + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 118 - }))(function( ) - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function( ) + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 119 - }))(function( ) - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function( ) + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 120 - }))(function( ) + }), function( ) return _S_kont1 end) end) @@ -568,126 +511,126 @@ local Golden_LongWriterBind_Test_go = (function() end) end) end) - local _S_kont3 = Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + local _S_kont3 = Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 41 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 42 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 43 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 44 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 45 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 46 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 47 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 48 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 49 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 50 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 51 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 52 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 53 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 54 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 55 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 56 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 57 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 58 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 59 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 60 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 61 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 62 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 63 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 64 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 65 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 66 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 67 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 68 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 69 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 70 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 71 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 72 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 73 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 74 - }))(function( ) - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function( ) + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 75 - }))(function( ) - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function( ) + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 76 - }))(function( ) - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function( ) + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 77 - }))(function( ) - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function( ) + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 78 - }))(function( ) - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function( ) + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 79 - }))(function( ) - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function( ) + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 80 - }))(function( ) + }), function( ) return _S_kont2 end) end) @@ -729,126 +672,126 @@ local Golden_LongWriterBind_Test_go = (function() end) end) end) - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 1 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 2 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 3 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 4 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 5 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 6 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 7 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 8 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 9 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 10 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 11 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 12 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 13 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 14 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 15 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 16 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 17 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 18 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 19 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 20 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 21 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 22 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 23 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 24 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 25 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 26 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 27 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 28 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 29 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 30 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 31 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 32 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 33 - }))(function() - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function() + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 34 - }))(function( ) - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function( ) + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 35 - }))(function( ) - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function( ) + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 36 - }))(function( ) - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function( ) + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 37 - }))(function( ) - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function( ) + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 38 - }))(function( ) - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function( ) + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 39 - }))(function( ) - return Golden_LongWriterBind_Test_discard(Data_Tuple_Tuple_S_w(Data_Unit_unit, { + }), function( ) + return Golden_LongWriterBind_Test_discard_S_w(Golden_LongWriterBind_Test_tell({ [1] = 40 - }))(function( ) + }), function( ) return _S_kont3 end) end) diff --git a/test/ps/output/Golden.ScalarReplacement.Test/golden.ir b/test/ps/output/Golden.ScalarReplacement.Test/golden.ir index 996522cb..5a486538 100644 --- a/test/ps/output/Golden.ScalarReplacement.Test/golden.ir +++ b/test/ps/output/Golden.ScalarReplacement.Test/golden.ir @@ -7,6 +7,12 @@ UberModule ( ModuleName "Data.Show" ) ".spago/p/prelude/5718c84fdde6247749cb053e816df696c30fe691/src/Data/Show.purs" [ ( Nothing, Name "showIntImpl" ) ] ), Standalone + ( QName + { qnameModuleName = ModuleName "Data.Show", qnameName = Name "showIntImpl" + }, ObjectProp Nothing + ( Ref Nothing ( Imported ( ModuleName "Data.Show" ) ( Name "foreign" ) ) ) + ( PropName "showIntImpl" ) + ), Standalone ( QName { qnameModuleName = ModuleName "Effect.Console", qnameName = Name "foreign" }, ForeignImport Nothing @@ -14,75 +20,10 @@ UberModule [ ( Nothing, Name "log" ) ] ), Standalone ( QName - { qnameModuleName = ModuleName "Data.Semiring", qnameName = Name "semiringInt" - }, LiteralObject Nothing - [ - ( PropName "add", AbsN Nothing - ( ParamNamed Nothing ( Name "x$193" ) :| [] ) - ( AbsN Nothing - ( ParamNamed Nothing ( Name "y$194" ) :| [] ) - ( PrimBinOp Nothing PrimAdd - ( Ref Nothing ( Local ( Name "x$193" ) ) ) - ( Ref Nothing ( Local ( Name "y$194" ) ) ) - ) - ) - ), - ( PropName "zero", LiteralInt Nothing 0 ), - ( PropName "mul", AbsN Nothing - ( ParamNamed Nothing ( Name "x$191" ) :| [] ) - ( AbsN Nothing - ( ParamNamed Nothing ( Name "y$192" ) :| [] ) - ( PrimBinOp Nothing PrimMul - ( Ref Nothing ( Local ( Name "x$191" ) ) ) - ( Ref Nothing ( Local ( Name "y$192" ) ) ) - ) - ) - ), - ( PropName "one", LiteralInt Nothing 1 ) - ] - ), Standalone - ( QName - { qnameModuleName = ModuleName "Data.Ring", qnameName = Name "sub" }, AbsN Nothing - ( ParamNamed Nothing ( Name "dict" ) :| [] ) - ( ObjectProp Nothing ( Ref Nothing ( Local ( Name "dict" ) ) ) ( PropName "sub" ) ) - ), Standalone - ( QName - { qnameModuleName = ModuleName "Data.Ring", qnameName = Name "ringInt" - }, LiteralObject Nothing - [ - ( PropName "sub", AbsN Nothing - ( ParamNamed Nothing ( Name "x$189" ) :| [] ) - ( AbsN Nothing - ( ParamNamed Nothing ( Name "y$190" ) :| [] ) - ( PrimBinOp Nothing PrimSub - ( Ref Nothing ( Local ( Name "x$189" ) ) ) - ( Ref Nothing ( Local ( Name "y$190" ) ) ) - ) - ) - ), - ( PropName "Semiring0", AbsN Nothing - ( ParamUnused Nothing :| [] ) - ( Ref Nothing ( Imported ( ModuleName "Data.Semiring" ) ( Name "semiringInt" ) ) ) - ) - ] - ), Standalone - ( QName - { qnameModuleName = ModuleName "Golden.ScalarReplacement.Test", qnameName = Name "logShow" - }, AbsN Nothing - ( ParamNamed Nothing ( Name "a$2" ) :| [] ) - ( AppN Nothing - ( ObjectProp Nothing - ( Ref Nothing ( Imported ( ModuleName "Effect.Console" ) ( Name "foreign" ) ) ) - ( PropName "log" ) - ) - ( AppN Nothing - ( ObjectProp Nothing - ( Ref Nothing ( Imported ( ModuleName "Data.Show" ) ( Name "foreign" ) ) ) - ( PropName "showIntImpl" ) - ) - ( Ref Nothing ( Local ( Name "a$2" ) ) :| [] ) :| [] - ) - ) + { qnameModuleName = ModuleName "Effect.Console", qnameName = Name "log" + }, ObjectProp Nothing + ( Ref Nothing ( Imported ( ModuleName "Effect.Console" ) ( Name "foreign" ) ) ) + ( PropName "log" ) ), Standalone ( QName { qnameModuleName = ModuleName "Golden.ScalarReplacement.Test", qnameName = Name "wholeValue" @@ -139,24 +80,14 @@ UberModule { qnameModuleName = ModuleName "Golden.ScalarReplacement.Test", qnameName = Name "fieldwise" }, AbsN Nothing ( ParamNamed Nothing ( Name "n" ) :| [] ) - ( Let Nothing - ( Standalone - ( Nothing, Name "r", LiteralObject Nothing - [ - ( PropName "width", PrimBinOp Nothing PrimAdd - ( Ref Nothing ( Local ( Name "n" ) ) ) - ( LiteralInt Nothing 1 ) - ), - ( PropName "height", PrimBinOp Nothing PrimMul - ( Ref Nothing ( Local ( Name "n" ) ) ) - ( LiteralInt Nothing 2 ) - ) - ] - ) :| [] - ) + ( PrimBinOp Nothing PrimAdd ( PrimBinOp Nothing PrimAdd - ( ObjectProp Nothing ( Ref Nothing ( Local ( Name "r" ) ) ) ( PropName "width" ) ) - ( ObjectProp Nothing ( Ref Nothing ( Local ( Name "r" ) ) ) ( PropName "height" ) ) + ( Ref Nothing ( Local ( Name "n" ) ) ) + ( LiteralInt Nothing 1 ) + ) + ( PrimBinOp Nothing PrimMul + ( Ref Nothing ( Local ( Name "n" ) ) ) + ( LiteralInt Nothing 2 ) ) ) ), Standalone @@ -164,69 +95,12 @@ UberModule { qnameModuleName = ModuleName "Golden.ScalarReplacement.Test", qnameName = Name "defaults" }, AbsN Nothing ( ParamNamed Nothing ( Name "n" ) :| [] ) - ( Let Nothing - ( Standalone - ( Nothing, Name "opts", LiteralObject Nothing - [ - ( PropName "verbose", LiteralInt Nothing 1 ), - ( PropName "level", Ref Nothing ( Local ( Name "n" ) ) ) - ] - ) :| - [ Standalone - ( Nothing, Name "chosen", ObjectUpdate Nothing - ( Ref Nothing ( Local ( Name "opts" ) ) ) - ( ( PropName "verbose", LiteralInt Nothing 2 ) :| [] ) - ) - ] - ) - ( PrimBinOp Nothing PrimAdd - ( PrimBinOp Nothing PrimAdd - ( ObjectProp Nothing ( Ref Nothing ( Local ( Name "opts" ) ) ) ( PropName "level" ) ) - ( ObjectProp Nothing - ( Ref Nothing ( Local ( Name "chosen" ) ) ) - ( PropName "verbose" ) - ) - ) - ( ObjectProp Nothing ( Ref Nothing ( Local ( Name "chosen" ) ) ) ( PropName "level" ) ) - ) - ) - ), Standalone - ( QName - { qnameModuleName = ModuleName "Golden.ScalarReplacement.Test", qnameName = Name "chained$w" - }, AbsN Nothing - ( ParamNamed Nothing ( Name "a" ) :| [ ParamNamed Nothing ( Name "b" ) ] ) - ( Let Nothing - ( Standalone - ( Nothing, Name "r0", LiteralObject Nothing - [ - ( PropName "x", Ref Nothing ( Local ( Name "a" ) ) ), - ( PropName "y", LiteralInt Nothing 0 ), - ( PropName "z", LiteralInt Nothing 0 ) - ] - ) :| - [ Standalone - ( Nothing, Name "r1", ObjectUpdate Nothing - ( Ref Nothing ( Local ( Name "r0" ) ) ) - ( ( PropName "y", Ref Nothing ( Local ( Name "b" ) ) ) :| [] ) - ), Standalone - ( Nothing, Name "r2", ObjectUpdate Nothing - ( Ref Nothing ( Local ( Name "r1" ) ) ) - ( - ( PropName "z", PrimBinOp Nothing PrimAdd - ( Ref Nothing ( Local ( Name "a" ) ) ) - ( Ref Nothing ( Local ( Name "b" ) ) ) - ) :| [] - ) - ) - ] - ) + ( PrimBinOp Nothing PrimAdd ( PrimBinOp Nothing PrimAdd - ( PrimBinOp Nothing PrimAdd - ( ObjectProp Nothing ( Ref Nothing ( Local ( Name "r2" ) ) ) ( PropName "x" ) ) - ( ObjectProp Nothing ( Ref Nothing ( Local ( Name "r2" ) ) ) ( PropName "y" ) ) - ) - ( ObjectProp Nothing ( Ref Nothing ( Local ( Name "r2" ) ) ) ( PropName "z" ) ) + ( Ref Nothing ( Local ( Name "n" ) ) ) + ( LiteralInt Nothing 2 ) ) + ( Ref Nothing ( Local ( Name "n" ) ) ) ) ) ], uberModuleForeigns = [], uberModuleExports = @@ -238,16 +112,17 @@ UberModule ( Imported ( ModuleName "Golden.ScalarReplacement.Test" ) ( Name "defaults" ) ) ), ( Name "chained", AbsN Nothing - ( ParamNamed Nothing ( Name "chained$p1$229" ) :| [] ) + ( ParamNamed Nothing ( Name "chained$p1$232" ) :| [] ) ( AbsN Nothing - ( ParamNamed Nothing ( Name "chained$p2$230" ) :| [] ) - ( AppN Nothing - ( Ref Nothing - ( Imported ( ModuleName "Golden.ScalarReplacement.Test" ) ( Name "chained$w" ) ) + ( ParamNamed Nothing ( Name "chained$p2$233" ) :| [] ) + ( PrimBinOp Nothing PrimAdd + ( PrimBinOp Nothing PrimAdd + ( Ref Nothing ( Local ( Name "chained$p1$232" ) ) ) + ( Ref Nothing ( Local ( Name "chained$p2$233" ) ) ) ) - ( Ref Nothing - ( Local ( Name "chained$p1$229" ) ) :| - [ Ref Nothing ( Local ( Name "chained$p2$230" ) ) ] + ( PrimBinOp Nothing PrimAdd + ( Ref Nothing ( Local ( Name "chained$p1$232" ) ) ) + ( Ref Nothing ( Local ( Name "chained$p2$233" ) ) ) ) ) ) @@ -261,14 +136,10 @@ UberModule ( Standalone ( Nothing, Name "_", AppN Nothing ( AppN Nothing - ( Ref Nothing - ( Imported ( ModuleName "Golden.ScalarReplacement.Test" ) ( Name "logShow" ) ) - ) + ( Ref Nothing ( Imported ( ModuleName "Effect.Console" ) ( Name "log" ) ) ) ( AppN Nothing - ( Ref Nothing - ( Imported ( ModuleName "Golden.ScalarReplacement.Test" ) ( Name "fieldwise" ) ) - ) - ( LiteralInt Nothing 10 :| [] ) :| [] + ( Ref Nothing ( Imported ( ModuleName "Data.Show" ) ( Name "showIntImpl" ) ) ) + ( LiteralInt Nothing 31 :| [] ) :| [] ) ) ( Ref Nothing ( Imported ( ModuleName "Prim" ) ( Name "$magicDoRun" ) ) :| [] ) @@ -276,51 +147,38 @@ UberModule [ Standalone ( Nothing, Name "_", AppN Nothing ( AppN Nothing - ( Ref Nothing - ( Imported ( ModuleName "Golden.ScalarReplacement.Test" ) ( Name "logShow" ) ) - ) + ( Ref Nothing ( Imported ( ModuleName "Effect.Console" ) ( Name "log" ) ) ) ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.ScalarReplacement.Test" ) - ( Name "defaults" ) - ) - ) - ( LiteralInt Nothing 5 :| [] ) :| [] + ( Ref Nothing ( Imported ( ModuleName "Data.Show" ) ( Name "showIntImpl" ) ) ) + ( LiteralInt Nothing 12 :| [] ) :| [] ) ) ( Ref Nothing ( Imported ( ModuleName "Prim" ) ( Name "$magicDoRun" ) ) :| [] ) ), Standalone ( Nothing, Name "_", AppN Nothing ( AppN Nothing - ( Ref Nothing - ( Imported ( ModuleName "Golden.ScalarReplacement.Test" ) ( Name "logShow" ) ) - ) + ( Ref Nothing ( Imported ( ModuleName "Effect.Console" ) ( Name "log" ) ) ) ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.ScalarReplacement.Test" ) - ( Name "chained$w" ) - ) - ) - ( LiteralInt Nothing 3 :| [ LiteralInt Nothing 4 ] ) :| [] + ( Ref Nothing ( Imported ( ModuleName "Data.Show" ) ( Name "showIntImpl" ) ) ) + ( LiteralInt Nothing 14 :| [] ) :| [] ) ) ( Ref Nothing ( Imported ( ModuleName "Prim" ) ( Name "$magicDoRun" ) ) :| [] ) ), Standalone ( Nothing, Name "_", AppN Nothing ( AppN Nothing - ( Ref Nothing - ( Imported ( ModuleName "Golden.ScalarReplacement.Test" ) ( Name "logShow" ) ) - ) + ( Ref Nothing ( Imported ( ModuleName "Effect.Console" ) ( Name "log" ) ) ) ( AppN Nothing - ( Ref Nothing - ( Imported - ( ModuleName "Golden.ScalarReplacement.Test" ) - ( Name "wholeValue" ) + ( Ref Nothing ( Imported ( ModuleName "Data.Show" ) ( Name "showIntImpl" ) ) ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.ScalarReplacement.Test" ) + ( Name "wholeValue" ) + ) ) - ) - ( LiteralInt Nothing 5 :| [] ) :| [] + ( LiteralInt Nothing 5 :| [] ) :| [] + ) :| [] ) ) ( Ref Nothing ( Imported ( ModuleName "Prim" ) ( Name "$magicDoRun" ) ) :| [] ) @@ -329,37 +187,17 @@ UberModule ) ( AppN Nothing ( AppN Nothing - ( Ref Nothing - ( Imported ( ModuleName "Golden.ScalarReplacement.Test" ) ( Name "logShow" ) ) - ) + ( Ref Nothing ( Imported ( ModuleName "Effect.Console" ) ( Name "log" ) ) ) ( AppN Nothing - ( Ref Nothing - ( Imported ( ModuleName "Golden.ScalarReplacement.Test" ) ( Name "wholeValue" ) ) - ) + ( Ref Nothing ( Imported ( ModuleName "Data.Show" ) ( Name "showIntImpl" ) ) ) ( AppN Nothing - ( AppN Nothing - ( AppN Nothing - ( Ref Nothing ( Imported ( ModuleName "Data.Ring" ) ( Name "sub" ) ) ) - ( Ref Nothing - ( Imported ( ModuleName "Data.Ring" ) ( Name "ringInt" ) ) :| [] - ) - ) - ( ObjectProp Nothing - ( AppN Nothing - ( ObjectProp Nothing - ( Ref Nothing - ( Imported ( ModuleName "Data.Ring" ) ( Name "ringInt" ) ) - ) - ( PropName "Semiring0" ) - ) - ( Ref Nothing - ( Imported ( ModuleName "Prim" ) ( Name "undefined" ) ) :| [] - ) - ) - ( PropName "zero" ) :| [] + ( Ref Nothing + ( Imported + ( ModuleName "Golden.ScalarReplacement.Test" ) + ( Name "wholeValue" ) ) ) - ( LiteralInt Nothing 3 :| [] ) :| [] + ( LiteralInt Nothing ( -3 ) :| [] ) :| [] ) :| [] ) ) diff --git a/test/ps/output/Golden.ScalarReplacement.Test/golden.lua b/test/ps/output/Golden.ScalarReplacement.Test/golden.lua index 6b0cc468..5c98054a 100644 --- a/test/ps/output/Golden.ScalarReplacement.Test/golden.lua +++ b/test/ps/output/Golden.ScalarReplacement.Test/golden.lua @@ -6,24 +6,13 @@ local function PSLUA_object_update(o, patches) end return o_copy end +local M = {} local Data_Show_foreign = { showIntImpl = function(n) return tostring(n) end } +local Data_Show_showIntImpl = Data_Show_foreign.showIntImpl local Effect_Console_foreign = { log = function(s) return function() print(s) end end } -local Data_Semiring_semiringInt = { - add = function(x_S_0) return function(y_S_0) return x_S_0 + y_S_0 end end, - zero = 0, - mul = function(x_S_1) return function(y_S_1) return x_S_1 * y_S_1 end end, - one = 1 -} -local Data_Ring_sub = function(dict) return dict.sub end -local Data_Ring_ringInt = { - sub = function(x_S_2) return function(y_S_2) return x_S_2 - y_S_2 end end, - Semiring0 = function() return Data_Semiring_semiringInt end -} -local Golden_ScalarReplacement_Test_logShow = function(a_S_0) - return Effect_Console_foreign.log(Data_Show_foreign.showIntImpl(a_S_0)) -end +local Effect_Console_log = Effect_Console_foreign.log local Golden_ScalarReplacement_Test_wholeValue = function(n) local r = { a = n, b = n + 1 } local s = (function() @@ -35,25 +24,12 @@ local Golden_ScalarReplacement_Test_wholeValue = function(n) end)() return s.a + s.b end -local Golden_ScalarReplacement_Test_fieldwise = function(n) - local r = { width = n + 1, height = n * 2 } - return r.width + r.height -end -local Golden_ScalarReplacement_Test_defaults = function(n) - local opts = { verbose = 1, level = n } - local chosen = PSLUA_object_update(opts, { verbose = 2 }) - return opts.level + chosen.verbose + chosen.level -end -local Golden_ScalarReplacement_Test_chained_S_w = function(a, b) - local r0 = { x = a, y = 0, z = 0 } - local r1 = PSLUA_object_update(r0, { y = b }) - local r2 = PSLUA_object_update(r1, { z = a + b }) - return r2.x + r2.y + r2.z -end +M.Golden_ScalarReplacement_Test_fieldwise = function(n) return n + 1 + n * 2 end +M.Golden_ScalarReplacement_Test_defaults = function(n) return n + 2 + n end return (function() - local _ = Golden_ScalarReplacement_Test_logShow(Golden_ScalarReplacement_Test_fieldwise(10))() - local _ = Golden_ScalarReplacement_Test_logShow(Golden_ScalarReplacement_Test_defaults(5))() - local _ = Golden_ScalarReplacement_Test_logShow(Golden_ScalarReplacement_Test_chained_S_w(3, 4))() - local _ = Golden_ScalarReplacement_Test_logShow(Golden_ScalarReplacement_Test_wholeValue(5))() - return Golden_ScalarReplacement_Test_logShow(Golden_ScalarReplacement_Test_wholeValue(Data_Ring_sub(Data_Ring_ringInt)((Data_Ring_ringInt.Semiring0()).zero)(3)))() + local _ = Effect_Console_log(Data_Show_showIntImpl(31))() + local _ = Effect_Console_log(Data_Show_showIntImpl(12))() + local _ = Effect_Console_log(Data_Show_showIntImpl(14))() + local _ = Effect_Console_log(Data_Show_showIntImpl(Golden_ScalarReplacement_Test_wholeValue(5)))() + return Effect_Console_log(Data_Show_showIntImpl(Golden_ScalarReplacement_Test_wholeValue(-3)))() end)() diff --git a/test/ps/output/Golden.StringCodePoints.Test/golden.ir b/test/ps/output/Golden.StringCodePoints.Test/golden.ir index 6197a280..c11527e8 100644 --- a/test/ps/output/Golden.StringCodePoints.Test/golden.ir +++ b/test/ps/output/Golden.StringCodePoints.Test/golden.ir @@ -444,7 +444,7 @@ UberModule ( AppN Nothing ( Let Nothing ( Standalone - ( Nothing, Name "x$1603", AppN Nothing + ( Nothing, Name "x$1605", AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Data.String.CodeUnits" ) ( Name "length" ) ) ) @@ -452,19 +452,19 @@ UberModule ) :| [] ) ( AbsN Nothing - ( ParamNamed Nothing ( Name "y$1604" ) :| [] ) + ( ParamNamed Nothing ( Name "y$1606" ) :| [] ) ( IfThenElse Nothing ( PrimBinOp Nothing PrimLt - ( Ref Nothing ( Local ( Name "x$1603" ) ) ) - ( Ref Nothing ( Local ( Name "y$1604" ) ) ) + ( Ref Nothing ( Local ( Name "x$1605" ) ) ) + ( Ref Nothing ( Local ( Name "y$1606" ) ) ) ) ( Ref Nothing ( Imported ( ModuleName "Data.Ordering" ) ( Name "LT" ) ) ) ( IfThenElse Nothing ( Eq Nothing - ( Ref Nothing ( Local ( Name "x$1603" ) ) ) - ( Ref Nothing ( Local ( Name "y$1604" ) ) ) + ( Ref Nothing ( Local ( Name "x$1605" ) ) ) + ( Ref Nothing ( Local ( Name "y$1606" ) ) ) ) ( Ref Nothing ( Imported ( ModuleName "Data.Ordering" ) ( Name "EQ" ) ) @@ -551,7 +551,7 @@ UberModule ( QName { qnameModuleName = ModuleName "Data.String.CodePoints", qnameName = Name "fromCharCode" }, AbsN Nothing - ( ParamNamed Nothing ( Name "x$1729" ) :| [] ) + ( ParamNamed Nothing ( Name "x$1731" ) :| [] ) ( AppN Nothing ( ObjectProp Nothing ( Ref Nothing ( Imported ( ModuleName "Data.String.CodeUnits" ) ( Name "foreign" ) ) ) @@ -578,7 +578,7 @@ UberModule ( Ref Nothing ( Imported ( ModuleName "Data.Ord" ) ( Name "ordInt" ) ) :| [ Ref Nothing - ( Local ( Name "x$1729" ) ), AppN Nothing + ( Local ( Name "x$1731" ) ), AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Data.Enum" ) ( Name "toCharCode" ) ) ) @@ -596,7 +596,7 @@ UberModule ( Ref Nothing ( Imported ( ModuleName "Data.Ord" ) ( Name "ordInt" ) ) :| [ Ref Nothing - ( Local ( Name "x$1729" ) ), AppN Nothing + ( Local ( Name "x$1731" ) ), AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Data.Enum" ) ( Name "toCharCode" ) ) ) @@ -616,7 +616,7 @@ UberModule ( Ref Nothing ( Imported ( ModuleName "Data.Enum" ) ( Name "foreign" ) ) ) ( PropName "fromCharCode" ) ) - ( Ref Nothing ( Local ( Name "x$1729" ) ) :| [] ) + ( Ref Nothing ( Local ( Name "x$1731" ) ) :| [] ) ] ) ( Ref Nothing ( Imported ( ModuleName "Data.Maybe" ) ( Name "Nothing" ) ) ) @@ -634,7 +634,7 @@ UberModule ( Ref Nothing ( Imported ( ModuleName "Data.Ord" ) ( Name "ordInt" ) ) :| [ Ref Nothing - ( Local ( Name "x$1729" ) ), AppN Nothing + ( Local ( Name "x$1731" ) ), AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Data.Enum" ) ( Name "toCharCode" ) ) ) ( Ref Nothing ( Imported ( ModuleName "Data.Bounded" ) ( Name "bottomChar" ) ) :| [] @@ -975,10 +975,10 @@ UberModule ( PropName "unfoldrArrayImpl" ) ) ( AbsN Nothing - ( ParamNamed Nothing ( Name "v2$1527" ) :| [] ) + ( ParamNamed Nothing ( Name "v2$1529" ) :| [] ) ( Eq Nothing ( LiteralString Nothing "Data.Maybe∷Maybe.Nothing" ) - ( ReflectCtor Nothing ( Ref Nothing ( Local ( Name "v2$1527" ) ) ) ) + ( ReflectCtor Nothing ( Ref Nothing ( Local ( Name "v2$1529" ) ) ) ) ) :| [] ) ) @@ -989,14 +989,14 @@ UberModule ( AbsN Nothing ( ParamUnused Nothing :| [] ) ( AbsN Nothing - ( ParamNamed Nothing ( Name "v$1577" ) :| [] ) + ( ParamNamed Nothing ( Name "v$1579" ) :| [] ) ( IfThenElse Nothing ( Eq Nothing ( LiteralString Nothing "Data.Maybe∷Maybe.Just" ) - ( ReflectCtor Nothing ( Ref Nothing ( Local ( Name "v$1577" ) ) ) ) + ( ReflectCtor Nothing ( Ref Nothing ( Local ( Name "v$1579" ) ) ) ) ) ( DataArgumentByIndex Nothing SumType 0 - ( Ref Nothing ( Local ( Name "v$1577" ) ) ) + ( Ref Nothing ( Local ( Name "v$1579" ) ) ) ) ( Exception Nothing "No patterns matched" ) ) @@ -1005,16 +1005,16 @@ UberModule ) ) ( AbsN Nothing - ( ParamNamed Nothing ( Name "v$1525" ) :| [] ) + ( ParamNamed Nothing ( Name "v$1527" ) :| [] ) ( DataArgumentByIndex Nothing ProductType 0 - ( Ref Nothing ( Local ( Name "v$1525" ) ) ) + ( Ref Nothing ( Local ( Name "v$1527" ) ) ) ) :| [] ) ) ( AbsN Nothing - ( ParamNamed Nothing ( Name "v$1526" ) :| [] ) + ( ParamNamed Nothing ( Name "v$1528" ) :| [] ) ( DataArgumentByIndex Nothing ProductType 1 - ( Ref Nothing ( Local ( Name "v$1526" ) ) ) + ( Ref Nothing ( Local ( Name "v$1528" ) ) ) ) :| [] ) ) @@ -1022,7 +1022,7 @@ UberModule ( ParamNamed Nothing ( Name "s$8" ) :| [] ) ( Let Nothing ( Standalone - ( Nothing, Name "v1$1580", AppN Nothing + ( Nothing, Name "v1$1582", AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Data.String.CodePoints" ) ( Name "uncons" ) ) ) @@ -1032,7 +1032,7 @@ UberModule ( IfThenElse Nothing ( Eq Nothing ( LiteralString Nothing "Data.Maybe∷Maybe.Just" ) - ( ReflectCtor Nothing ( Ref Nothing ( Local ( Name "v1$1580" ) ) ) ) + ( ReflectCtor Nothing ( Ref Nothing ( Local ( Name "v1$1582" ) ) ) ) ) ( Ctor Nothing SumType ( ModuleName "Data.Maybe" ) @@ -1044,11 +1044,11 @@ UberModule ( CtorName "Tuple" ) [ ObjectProp Nothing ( DataArgumentByIndex Nothing SumType 0 - ( Ref Nothing ( Local ( Name "v1$1580" ) ) ) + ( Ref Nothing ( Local ( Name "v1$1582" ) ) ) ) ( PropName "head" ), ObjectProp Nothing ( DataArgumentByIndex Nothing SumType 0 - ( Ref Nothing ( Local ( Name "v1$1580" ) ) ) + ( Ref Nothing ( Local ( Name "v1$1582" ) ) ) ) ( PropName "tail" ) ] @@ -1303,7 +1303,7 @@ UberModule ( LiteralObject Nothing [ ( PropName "succ", AbsN Nothing - ( ParamNamed Nothing ( Name "a$1563" ) :| [] ) + ( ParamNamed Nothing ( Name "a$1565" ) :| [] ) ( AppN Nothing ( ObjectProp Nothing ( Ref Nothing @@ -1325,14 +1325,14 @@ UberModule ) ( PropName "fromEnum" ) ) - ( Ref Nothing ( Local ( Name "a$1563" ) ) :| [] ) + ( Ref Nothing ( Local ( Name "a$1565" ) ) :| [] ) ) ( LiteralInt Nothing 1 ) :| [] ) ) ), ( PropName "pred", AbsN Nothing - ( ParamNamed Nothing ( Name "a$1571" ) :| [] ) + ( ParamNamed Nothing ( Name "a$1573" ) :| [] ) ( AppN Nothing ( ObjectProp Nothing ( Ref Nothing @@ -1354,7 +1354,7 @@ UberModule ) ( PropName "fromEnum" ) ) - ( Ref Nothing ( Local ( Name "a$1571" ) ) :| [] ) + ( Ref Nothing ( Local ( Name "a$1573" ) ) :| [] ) ) ( LiteralInt Nothing 1 ) :| [] ) @@ -1411,17 +1411,17 @@ UberModule ( QName { qnameModuleName = ModuleName "Golden.StringCodePoints.Test", qnameName = Name "logShow2" }, AbsN Nothing - ( ParamNamed Nothing ( Name "logShow$p2$1700" ) :| [] ) + ( ParamNamed Nothing ( Name "logShow$p2$1702" ) :| [] ) ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Effect.Console" ) ( Name "logShow$w" ) ) ) ( LiteralObject Nothing [ ( PropName "show", AbsN Nothing - ( ParamNamed Nothing ( Name "v$1694" ) :| [] ) + ( ParamNamed Nothing ( Name "v$1696" ) :| [] ) ( IfThenElse Nothing ( Eq Nothing ( LiteralString Nothing "Data.Maybe∷Maybe.Just" ) - ( ReflectCtor Nothing ( Ref Nothing ( Local ( Name "v$1694" ) ) ) ) + ( ReflectCtor Nothing ( Ref Nothing ( Local ( Name "v$1696" ) ) ) ) ) ( PrimBinOp Nothing PrimConcat ( LiteralString Nothing "(Just " ) @@ -1431,7 +1431,7 @@ UberModule ( Imported ( ModuleName "Data.Show" ) ( Name "showIntImpl" ) ) ) ( DataArgumentByIndex Nothing SumType 0 - ( Ref Nothing ( Local ( Name "v$1694" ) ) ) :| [] + ( Ref Nothing ( Local ( Name "v$1696" ) ) ) :| [] ) ) ( LiteralString Nothing ")" ) @@ -1441,28 +1441,28 @@ UberModule ) ) ] :| - [ Ref Nothing ( Local ( Name "logShow$p2$1700" ) ) ] + [ Ref Nothing ( Local ( Name "logShow$p2$1702" ) ) ] ) ) ), Standalone ( QName { qnameModuleName = ModuleName "Golden.StringCodePoints.Test", qnameName = Name "cp" }, AbsN Nothing - ( ParamNamed Nothing ( Name "x$1692" ) :| [] ) + ( ParamNamed Nothing ( Name "x$1694" ) :| [] ) ( AppN Nothing ( AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Partial.Unsafe" ) ( Name "_unsafePartial" ) ) ) ( AbsN Nothing ( ParamUnused Nothing :| [] ) ( AbsN Nothing - ( ParamNamed Nothing ( Name "v$1535" ) :| [] ) + ( ParamNamed Nothing ( Name "v$1537" ) :| [] ) ( IfThenElse Nothing ( Eq Nothing ( LiteralString Nothing "Data.Maybe∷Maybe.Just" ) - ( ReflectCtor Nothing ( Ref Nothing ( Local ( Name "v$1535" ) ) ) ) + ( ReflectCtor Nothing ( Ref Nothing ( Local ( Name "v$1537" ) ) ) ) ) ( DataArgumentByIndex Nothing SumType 0 - ( Ref Nothing ( Local ( Name "v$1535" ) ) ) + ( Ref Nothing ( Local ( Name "v$1537" ) ) ) ) ( Exception Nothing "No patterns matched" ) ) @@ -1476,14 +1476,14 @@ UberModule ) ( PropName "toEnum" ) ) - ( Ref Nothing ( Local ( Name "x$1692" ) ) :| [] ) :| [] + ( Ref Nothing ( Local ( Name "x$1694" ) ) :| [] ) :| [] ) ) ), Standalone ( QName { qnameModuleName = ModuleName "Golden.StringCodePoints.Test", qnameName = Name "codes" }, AbsN Nothing - ( ParamNamed Nothing ( Name "x$1689" ) :| [] ) + ( ParamNamed Nothing ( Name "x$1691" ) :| [] ) ( AppN Nothing ( AppN Nothing ( ObjectProp Nothing @@ -1498,7 +1498,7 @@ UberModule ( Ref Nothing ( Imported ( ModuleName "Data.String.CodePoints" ) ( Name "toCodePointArray" ) ) ) - ( Ref Nothing ( Local ( Name "x$1689" ) ) :| [] ) :| [] + ( Ref Nothing ( Local ( Name "x$1691" ) ) :| [] ) :| [] ) ) ) @@ -1623,7 +1623,7 @@ UberModule ) ( Let Nothing ( Standalone - ( Nothing, Name "v1$1751", AppN Nothing + ( Nothing, Name "v1$1753", AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Data.String.CodePoints" ) @@ -1636,7 +1636,7 @@ UberModule ( IfThenElse Nothing ( Eq Nothing ( LiteralString Nothing "Data.Maybe∷Maybe.Just" ) - ( ReflectCtor Nothing ( Ref Nothing ( Local ( Name "v1$1751" ) ) ) ) + ( ReflectCtor Nothing ( Ref Nothing ( Local ( Name "v1$1753" ) ) ) ) ) ( Ctor Nothing SumType ( ModuleName "Data.Maybe" ) @@ -1650,7 +1650,7 @@ UberModule ) ) ( DataArgumentByIndex Nothing SumType 0 - ( Ref Nothing ( Local ( Name "v1$1751" ) ) ) :| [] + ( Ref Nothing ( Local ( Name "v1$1753" ) ) ) :| [] ) ] ) @@ -1667,7 +1667,7 @@ UberModule ) ( Let Nothing ( Standalone - ( Nothing, Name "v1$1753", AppN Nothing + ( Nothing, Name "v1$1755", AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Data.String.CodePoints" ) @@ -1680,7 +1680,7 @@ UberModule ( IfThenElse Nothing ( Eq Nothing ( LiteralString Nothing "Data.Maybe∷Maybe.Just" ) - ( ReflectCtor Nothing ( Ref Nothing ( Local ( Name "v1$1753" ) ) ) ) + ( ReflectCtor Nothing ( Ref Nothing ( Local ( Name "v1$1755" ) ) ) ) ) ( Ctor Nothing SumType ( ModuleName "Data.Maybe" ) @@ -1694,7 +1694,7 @@ UberModule ) ) ( DataArgumentByIndex Nothing SumType 0 - ( Ref Nothing ( Local ( Name "v1$1753" ) ) ) :| [] + ( Ref Nothing ( Local ( Name "v1$1755" ) ) ) :| [] ) ] ) @@ -1711,7 +1711,7 @@ UberModule ) ( Let Nothing ( Standalone - ( Nothing, Name "v1$1755", AppN Nothing + ( Nothing, Name "v1$1757", AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Data.String.CodePoints" ) @@ -1724,7 +1724,7 @@ UberModule ( IfThenElse Nothing ( Eq Nothing ( LiteralString Nothing "Data.Maybe∷Maybe.Just" ) - ( ReflectCtor Nothing ( Ref Nothing ( Local ( Name "v1$1755" ) ) ) ) + ( ReflectCtor Nothing ( Ref Nothing ( Local ( Name "v1$1757" ) ) ) ) ) ( Ctor Nothing SumType ( ModuleName "Data.Maybe" ) @@ -1738,7 +1738,7 @@ UberModule ) ) ( DataArgumentByIndex Nothing SumType 0 - ( Ref Nothing ( Local ( Name "v1$1755" ) ) ) :| [] + ( Ref Nothing ( Local ( Name "v1$1757" ) ) ) :| [] ) ] ) @@ -1755,7 +1755,7 @@ UberModule ) ( Let Nothing ( Standalone - ( Nothing, Name "v1$1760", AppN Nothing + ( Nothing, Name "v1$1762", AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Data.String.CodePoints" ) ( Name "uncons" ) ) ) @@ -1765,7 +1765,7 @@ UberModule ( IfThenElse Nothing ( Eq Nothing ( LiteralString Nothing "Data.Maybe∷Maybe.Just" ) - ( ReflectCtor Nothing ( Ref Nothing ( Local ( Name "v1$1760" ) ) ) ) + ( ReflectCtor Nothing ( Ref Nothing ( Local ( Name "v1$1762" ) ) ) ) ) ( Ctor Nothing SumType ( ModuleName "Data.Maybe" ) @@ -1780,7 +1780,7 @@ UberModule ) ( ObjectProp Nothing ( DataArgumentByIndex Nothing SumType 0 - ( Ref Nothing ( Local ( Name "v1$1760" ) ) ) + ( Ref Nothing ( Local ( Name "v1$1762" ) ) ) ) ( PropName "head" ) :| [] ) @@ -1798,11 +1798,11 @@ UberModule ( LiteralObject Nothing [ ( PropName "show", AbsN Nothing - ( ParamNamed Nothing ( Name "v$1683" ) :| [] ) + ( ParamNamed Nothing ( Name "v$1685" ) :| [] ) ( IfThenElse Nothing ( Eq Nothing ( LiteralString Nothing "Data.Maybe∷Maybe.Just" ) - ( ReflectCtor Nothing ( Ref Nothing ( Local ( Name "v$1683" ) ) ) ) + ( ReflectCtor Nothing ( Ref Nothing ( Local ( Name "v$1685" ) ) ) ) ) ( PrimBinOp Nothing PrimConcat ( LiteralString Nothing "(Just " ) @@ -1820,7 +1820,7 @@ UberModule ) ) ( DataArgumentByIndex Nothing SumType 0 - ( Ref Nothing ( Local ( Name "v$1683" ) ) ) :| [] + ( Ref Nothing ( Local ( Name "v$1685" ) ) ) :| [] ) ) ( LiteralString Nothing ")" ) @@ -1832,7 +1832,7 @@ UberModule ] :| [ Let Nothing ( Standalone - ( Nothing, Name "v1$1769", AppN Nothing + ( Nothing, Name "v1$1771", AppN Nothing ( Ref Nothing ( Imported ( ModuleName "Data.String.CodePoints" ) ( Name "uncons" ) ) ) @@ -1842,7 +1842,7 @@ UberModule ( IfThenElse Nothing ( Eq Nothing ( LiteralString Nothing "Data.Maybe∷Maybe.Just" ) - ( ReflectCtor Nothing ( Ref Nothing ( Local ( Name "v1$1769" ) ) ) ) + ( ReflectCtor Nothing ( Ref Nothing ( Local ( Name "v1$1771" ) ) ) ) ) ( Ctor Nothing SumType ( ModuleName "Data.Maybe" ) @@ -1857,7 +1857,7 @@ UberModule ) ( ObjectProp Nothing ( DataArgumentByIndex Nothing SumType 0 - ( Ref Nothing ( Local ( Name "v1$1769" ) ) ) + ( Ref Nothing ( Local ( Name "v1$1771" ) ) ) ) ( PropName "tail" ) :| [] ) diff --git a/test/ps/output/Golden.TailRecM2Shadow.Test/golden.ir b/test/ps/output/Golden.TailRecM2Shadow.Test/golden.ir index f1b93edc..1ea39325 100644 --- a/test/ps/output/Golden.TailRecM2Shadow.Test/golden.ir +++ b/test/ps/output/Golden.TailRecM2Shadow.Test/golden.ir @@ -275,21 +275,21 @@ UberModule ( ParamNamed Nothing ( Name "o$483" ) :| [] ) ( Let Nothing ( Standalone - ( Nothing, Name "$cse533", ObjectProp Nothing + ( Nothing, Name "$cse557", ObjectProp Nothing ( Ref Nothing ( Local ( Name "o$483" ) ) ) ( PropName "a" ) ) :| [] ) ( Let Nothing ( Standalone - ( Nothing, Name "$cse532", ObjectProp Nothing + ( Nothing, Name "$cse556", ObjectProp Nothing ( Ref Nothing ( Local ( Name "o$483" ) ) ) ( PropName "b" ) ) :| [] ) ( IfThenElse Nothing ( PrimBinOp Nothing PrimLt - ( Ref Nothing ( Local ( Name "$cse532" ) ) ) + ( Ref Nothing ( Local ( Name "$cse556" ) ) ) ( Ref Nothing ( Local ( Name "n" ) ) ) ) ( AppN Nothing @@ -301,11 +301,11 @@ UberModule [ LiteralObject Nothing [ ( PropName "a", PrimBinOp Nothing PrimAdd - ( Ref Nothing ( Local ( Name "$cse533" ) ) ) - ( Ref Nothing ( Local ( Name "$cse532" ) ) ) + ( Ref Nothing ( Local ( Name "$cse557" ) ) ) + ( Ref Nothing ( Local ( Name "$cse556" ) ) ) ), ( PropName "b", PrimBinOp Nothing PrimAdd - ( Ref Nothing ( Local ( Name "$cse532" ) ) ) + ( Ref Nothing ( Local ( Name "$cse556" ) ) ) ( LiteralInt Nothing 1 ) ) ] @@ -318,7 +318,7 @@ UberModule ( ModuleName "Control.Monad.Rec.Class" ) ( TyName "Step" ) ( CtorName "Done" ) - [ Ref Nothing ( Local ( Name "$cse533" ) ) ] :| [] + [ Ref Nothing ( Local ( Name "$cse557" ) ) ] :| [] ) ) ) From e8fd6b92084b2d35c5f70eb701675d70151c8443 Mon Sep 17 00:00:00 2001 From: Yura Lazarev Date: Mon, 27 Jul 2026 15:22:41 +0200 Subject: [PATCH 4/5] bench(macro): add the RecordFold spec for field-wise record unpacking MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A fold whose step builds a record, updates it, and reads the result back field-wise — the shape issue #240 unpacks. The committed counter goldens pin the unpacked steady state: one function-body table allocation in the whole artifact (the range input array, once per run) where the boxed form paid three per element (the literal, the update's patch table, and the copy inside PSLUA_object_update). Against the pre-change compiler the linked artifact runs 4.6x faster under LuaJIT (median 0.0237s -> 0.0052s at n=100000) and 5.3x under PUC Lua 5.1 (0.0405s -> 0.0076s), with identical results. --- bench/goldens/fnew_Bench.RecordFold.txt | 16 ++++++++++++++++ bench/goldens/tnew_Bench.RecordFold.txt | 8 ++++++++ bench/goldens/trace_record_fold.txt | 15 +++++++++++++++ bench/macro/record_fold.lua | 16 ++++++++++++++++ test/ps/src/Bench/RecordFold.purs | 22 ++++++++++++++++++++++ 5 files changed, 77 insertions(+) create mode 100644 bench/goldens/fnew_Bench.RecordFold.txt create mode 100644 bench/goldens/tnew_Bench.RecordFold.txt create mode 100644 bench/goldens/trace_record_fold.txt create mode 100644 bench/macro/record_fold.lua create mode 100644 test/ps/src/Bench/RecordFold.purs diff --git a/bench/goldens/fnew_Bench.RecordFold.txt b/bench/goldens/fnew_Bench.RecordFold.txt new file mode 100644 index 00000000..60d02d3b --- /dev/null +++ b/bench/goldens/fnew_Bench.RecordFold.txt @@ -0,0 +1,16 @@ +chunk: Bench.RecordFold.lua +runtime: LuaJIT 2.1.1741730670 +main-chunk FNEW: 5 +function-body FNEW: 9 +total FNEW: 14 +prototypes: 15 +function-body FNEW sites: + Bench.RecordFold.lua:10 + Bench.RecordFold.lua:9 + Bench.RecordFold.lua:20 + Bench.RecordFold.lua:19 + Bench.RecordFold.lua:44 + Bench.RecordFold.lua:43 + Bench.RecordFold.lua:42 + Bench.RecordFold.lua:51 + Bench.RecordFold.lua:50 diff --git a/bench/goldens/tnew_Bench.RecordFold.txt b/bench/goldens/tnew_Bench.RecordFold.txt new file mode 100644 index 00000000..89158404 --- /dev/null +++ b/bench/goldens/tnew_Bench.RecordFold.txt @@ -0,0 +1,8 @@ +chunk: Bench.RecordFold.lua +runtime: LuaJIT 2.1.1741730670 +main-chunk TNEW+TDUP: 4 +function-body TNEW+TDUP: 1 +total TNEW+TDUP: 5 +prototypes: 15 +function-body TNEW+TDUP sites: + Bench.RecordFold.lua:26 TNEW diff --git a/bench/goldens/trace_record_fold.txt b/bench/goldens/trace_record_fold.txt new file mode 100644 index 00000000..8eccda53 --- /dev/null +++ b/bench/goldens/trace_record_fold.txt @@ -0,0 +1,15 @@ +spec: record_fold +runtime: LuaJIT 2.1.1741730670 +workload: n=100000 reps=4 result=15000350000 +aborts (distinct site -- reason): + Bench.RecordFold.lua:19 -- NYI: bytecode FNEW + Bench.RecordFold.lua:20 -- NYI: bytecode FNEW + Bench.RecordFold.lua:28 -- inner loop in root trace + Bench.RecordFold.lua:50 -- NYI: bytecode FNEW + Bench.RecordFold.lua:51 -- NYI: bytecode FNEW +bytecode end state (J*=compiled, I*=blacklisted): + Bench.RecordFold.lua:17 IFORL + Bench.RecordFold.lua:28 JLOOP + Bench.RecordFold.lua:49 IFUNCF + Bench.RecordFold.lua:50 JFUNCF +counts: aborts=5 compiled=2 blacklisted=2 diff --git a/bench/macro/record_fold.lua b/bench/macro/record_fold.lua new file mode 100644 index 00000000..50991a0f --- /dev/null +++ b/bench/macro/record_fold.lua @@ -0,0 +1,16 @@ +-- A fold whose step builds a record, updates it, and reads the result +-- back field-wise -- never passing either table on whole. Unpacked +-- (issue #240) the step is plain arithmetic; boxed, every element +-- allocates the literal plus the update's runtime copy. +return { + artifact = "Bench.RecordFold", + n = 100000, + drive = function(mod, n) + return mod.run(n) + end, + ideal = function(n) + local acc = 0 + for i = 1, n do acc = acc + i + (i + 1) * 2 end + return acc + end, +} diff --git a/test/ps/src/Bench/RecordFold.purs b/test/ps/src/Bench/RecordFold.purs new file mode 100644 index 00000000..32273481 --- /dev/null +++ b/test/ps/src/Bench/RecordFold.purs @@ -0,0 +1,22 @@ +-- | A fold whose step builds a record, updates it, and reads the +-- | result back field-wise — never passing either table on whole +-- | (issue #240). Boxed, every element allocates the literal plus the +-- | update's runtime copy; unpacked, the step is straight-line +-- | arithmetic with no table allocation at all. +module Bench.RecordFold where + +import Prelude + +import Data.Array (range) +import Data.Foldable (foldl) + +run :: Int -> Int +run n = foldl step 0 (range 1 n) + where + step :: Int -> Int -> Int + step acc i = + let + r = { lo: i, hi: i + 1 } + s = r { hi = r.hi * 2 } + in + acc + s.lo + s.hi From 0bb6df1a27b221176e6863286a5abf65ef9fa271 Mon Sep 17 00:00:00 2001 From: Yura Lazarev Date: Mon, 27 Jul 2026 15:23:43 +0200 Subject: [PATCH 5/5] docs(changelog): fragment for #240 field-wise record unpacking --- ..._180000_unisay_unpack_fieldwise_records.md | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 changelog.d/20260727_180000_unisay_unpack_fieldwise_records.md diff --git a/changelog.d/20260727_180000_unisay_unpack_fieldwise_records.md b/changelog.d/20260727_180000_unisay_unpack_fieldwise_records.md new file mode 100644 index 00000000..ee157659 --- /dev/null +++ b/changelog.d/20260727_180000_unisay_unpack_fieldwise_records.md @@ -0,0 +1,33 @@ +### Added + +- Let-bound records read only field-wise unpack to scalars (#240). A + record literal or record update whose binder never flows anywhere as + a whole value exists only to be projected or updated again, yet it + still allocated its table — and every update paid a runtime copy on + top. Such a binding now explodes into per-field bindings: reads + become the field values, an update over a known literal is rebuilt + as a single literal, and a chained update coalesces onto its base + record with the patch lists merged. The fold reaches across sibling + `let` bindings, so the defaults pattern dissolves whole. A fold step + previously compiled to + + ```lua + local r_S_0 = { lo = i_S_0, hi = i_S_0 + 1 } + local s_S_0 = PSLUA_object_update(r_S_0, { hi = r_S_0.hi * 2 }) + return acc_S_1 + s_S_0.lo + s_S_0.hi + ``` + + now becomes allocation-free arithmetic: + + ```lua + return acc_S_1 + i_S_0 + (i_S_0 + 1) * 2 + ``` + + 4.6× faster under LuaJIT and 5.3× under PUC Lua 5.1 on the + `Bench.RecordFold` macrobenchmark. Locally-built dictionary records + collapse the same way — `Golden.LongWriterBind` drops its Writer + dictionary tower and 57 lines of Lua. A record used as a whole value + anywhere — returned, passed on, compared — keeps its allocation, the + soundness boundary `Golden.ScalarReplacement.Test` pins from both + sides (see `propagateKnownObjectThroughLet` in + `Language.PureScript.Backend.IR.Optimizer`).