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/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`). 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 9fd4a599..c128ced4 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,234 @@ 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 = 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. + 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. 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) :| []))) + 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 + -- 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. 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) :| []) + ) + ] + ) + (objectProp (refLocal (Name "c")) b) + 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 + -- 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 + -- 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, literalInt 2)]) $ + 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 +3671,19 @@ 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 ∷ Exp → Int + self = \case + LiteralObject {} → 1 + ObjectUpdate {} → 1 + _ → 0 + isRef ∷ Exp → Bool isRef = \case Ref {} → True 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/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..5a486538 --- /dev/null +++ b/test/ps/output/Golden.ScalarReplacement.Test/golden.ir @@ -0,0 +1,209 @@ +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 "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 + ( ModuleName "Effect.Console" ) ".spago/p/console/f82835a0b873aafe6bd7b14dd30cc150553d4ab9/src/Effect/Console.purs" + [ ( Nothing, Name "log" ) ] + ), Standalone + ( QName + { 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" + }, 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" ) :| [] ) + ( PrimBinOp Nothing PrimAdd + ( PrimBinOp Nothing PrimAdd + ( Ref Nothing ( Local ( Name "n" ) ) ) + ( LiteralInt Nothing 1 ) + ) + ( PrimBinOp Nothing PrimMul + ( Ref Nothing ( Local ( Name "n" ) ) ) + ( LiteralInt Nothing 2 ) + ) + ) + ), Standalone + ( QName + { qnameModuleName = ModuleName "Golden.ScalarReplacement.Test", qnameName = Name "defaults" + }, AbsN Nothing + ( ParamNamed Nothing ( Name "n" ) :| [] ) + ( PrimBinOp Nothing PrimAdd + ( PrimBinOp Nothing PrimAdd + ( Ref Nothing ( Local ( Name "n" ) ) ) + ( LiteralInt Nothing 2 ) + ) + ( Ref Nothing ( Local ( Name "n" ) ) ) + ) + ) + ], 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$232" ) :| [] ) + ( AbsN Nothing + ( 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" ) ) ) + ) + ( PrimBinOp Nothing PrimAdd + ( Ref Nothing ( Local ( Name "chained$p1$232" ) ) ) + ( Ref Nothing ( Local ( Name "chained$p2$233" ) ) ) + ) + ) + ) + ), + ( 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 "Effect.Console" ) ( Name "log" ) ) ) + ( AppN Nothing + ( Ref Nothing ( Imported ( ModuleName "Data.Show" ) ( Name "showIntImpl" ) ) ) + ( LiteralInt Nothing 31 :| [] ) :| [] + ) + ) + ( Ref Nothing ( Imported ( ModuleName "Prim" ) ( Name "$magicDoRun" ) ) :| [] ) + ) :| + [ Standalone + ( Nothing, Name "_", AppN Nothing + ( AppN Nothing + ( Ref Nothing ( Imported ( ModuleName "Effect.Console" ) ( Name "log" ) ) ) + ( AppN Nothing + ( 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 "Effect.Console" ) ( Name "log" ) ) ) + ( AppN Nothing + ( 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 "Effect.Console" ) ( Name "log" ) ) ) + ( AppN Nothing + ( Ref Nothing ( Imported ( ModuleName "Data.Show" ) ( Name "showIntImpl" ) ) ) + ( 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 "Effect.Console" ) ( Name "log" ) ) ) + ( AppN Nothing + ( Ref Nothing ( Imported ( ModuleName "Data.Show" ) ( Name "showIntImpl" ) ) ) + ( AppN Nothing + ( Ref Nothing + ( Imported + ( ModuleName "Golden.ScalarReplacement.Test" ) + ( Name "wholeValue" ) + ) + ) + ( 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..5c98054a --- /dev/null +++ b/test/ps/output/Golden.ScalarReplacement.Test/golden.lua @@ -0,0 +1,35 @@ +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 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 Effect_Console_log = Effect_Console_foreign.log +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 +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 _ = 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" ) ) ] :| [] ) ) ) 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 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))