@@ -332,23 +332,23 @@ codegenChain chainMode codegenEnv = collect []
332332 _ ->
333333 S.unthunk $ codegenExpr codegenEnv expression
334334
335− finish :: Boolean -> Array _ -> NeutralExpr -> ChezExpr
335+ finish :: Boolean -> Array _ -> ChezExpr -> ChezExpr
336336 finish shouldUnthunk bindings expression = do
337337 let
338338 maybeUnthunk :: ChezExpr -> ChezExpr
339339 maybeUnthunk = if shouldUnthunk then S.unthunk else identity
340340 case NEA.fromArray bindings of
341− Nothing -> maybeUnthunk $ codegenExpr codegenEnv expression
342− Just bindings' -> S.Let recursive bindings' $ maybeUnthunk $ codegenExpr codegenEnv expression
341+ Nothing -> maybeUnthunk expression
342+ Just bindings' -> S.Let recursive bindings' $ maybeUnthunk expression
343343
344344 collect :: Array _ -> NeutralExpr -> ChezExpr
345345 collect bindings expression = case unwrap expression of
346346 Let i l v e' ->
347347 collect (Array.snoc bindings $ Tuple (toChezIdent i l) (codegenExpr codegenEnv v)) e'
348348 EffectPure e' | chainMode.effect ->
349− finish false bindings e'
349+ finish false bindings (codegenExpr codegenEnv e')
350350 PrimEffect e' | chainMode.effect ->
351− codegenPrimEffect codegenEnv e'
351+ finish false bindings (codegenPrimEffect codegenEnv e')
352352 EffectBind i l v e' | chainMode.effect ->
353353 collect
354354 (Array.snoc bindings $ Tuple (toChezIdent i l) (codegenEffectBind v))
@@ -356,7 +356,7 @@ codegenChain chainMode codegenEnv = collect []
356356 EffectDefer e' | chainMode.effect ->
357357 collect bindings e'
358358 _ ->
359− finish chainMode.effect bindings expression
359+ finish chainMode.effect bindings (codegenExpr codegenEnv expression)
360360
361361codegenPrimOp :: CodegenEnv -> BackendOperator NeutralExpr -> ChezExpr
362362codegenPrimOp codegenEnv@{ currentModule } = case _ of