@@ -491,9 +491,9 @@ optimizeBinop context region op leftExpr rightExpr =
494+ do optLeft <- optimizeExpr Nothing leftExpr
495+ optRight <- optimizeExpr Nothing rightExpr
494− makeOptBinop op
496+ makeOptBinop op optLeft optRight
495− <$> optimizeExpr Nothing leftExpr
496− <*> optimizeExpr Nothing rightExpr
499-- left-associative ((x |> f) |> g)
499-- left-associative ((x |> f) |> g)
@@ -552,7 +552,7 @@ collect makeRoot assoc desiredOp annExpr@(A.A ann expr) =
552 makeRoot annExpr
552 makeRoot annExpr
555−makeOptBinop :: Var.Canonical -> Opt.Expr -> Opt.Expr -> Opt.Expr
555+makeOptBinop :: Var.Canonical -> Opt.Expr -> Opt.Expr -> Env.Optimizer Opt.Expr
556makeOptBinop (Var.Canonical home op) leftExpr rightExpr =
556makeOptBinop (Var.Canonical home op) leftExpr rightExpr =
557 case home of
557 case home of
558 Var.Local ->
558 Var.Local ->
@@ -562,7 +562,11 @@ makeOptBinop (Var.Canonical home op) leftExpr rightExpr =
562 error "bug manifesting in Optimize.makeOptBinop"
562 error "bug manifesting in Optimize.makeOptBinop"
564 Var.Module name ->
564 Var.Module name ->
565− Opt.Binop (Var.Global name op) leftExpr rightExpr
565+ do let var = Var.Global name op
567+ return $ Opt.Binop var leftExpr rightExpr
567 Var.TopLevel name ->
569 Var.TopLevel name ->
568− Opt.Binop (Var.Global name op) leftExpr rightExpr
570+ do let var = Var.Global name op
572+ return $ Opt.Binop var leftExpr rightExpr