on master help sign in
Fix generation of let definitions
0b00f1cEvan Czaplicki
src/Optimize/Expression.hs+7−7
@@ -187,15 +187,15 @@ optimizeDef cycle def body =
187
187
188optimizeDefHelp :: Cycle -> N.Name -> [Can.Pattern] -> Can.Expr -> Opt.Expr -> Names.Tracker Opt.Expr
188optimizeDefHelp :: Cycle -> N.Name -> [Can.Pattern] -> Can.Expr -> Opt.Expr -> Names.Tracker Opt.Expr
189optimizeDefHelp cycle name args expr body =
189optimizeDefHelp cycle name args expr body =
190+ do oexpr <- optimize cycle expr
190− case args of
191+ case args of
191− [] ->
192+ [] ->
192− do oexpr <- optimize cycle expr
193 pure $ Opt.Let (Opt.Def name oexpr) body
193 pure $ Opt.Let (Opt.Def name oexpr) body
194
194
195− _ ->
195+ _ ->
196− do (argNames, destructors) <- destructArgs args
196+ do (argNames, destructors) <- destructArgs args
197− let oexpr = Opt.Function argNames (foldr Opt.Destruct body destructors)
197+ let ofunc = Opt.Function argNames (foldr Opt.Destruct oexpr destructors)
198− pure $ Opt.Let (Opt.Def name oexpr) body
198+ pure $ Opt.Let (Opt.Def name ofunc) body
199
199
200
200
201
201