@@ -37,6 +37,7 @@ module Language.PureScript.CodeGen.JS.Optimizer (
40+import Control.Applicative (Applicative)
40import Control.Monad.Reader (MonadReader, ask, asks)
41import Control.Monad.Reader (MonadReader, ask, asks)
41import Control.Monad.Supply.Class (MonadSupply)
42import Control.Monad.Supply.Class (MonadSupply)
@@ -54,12 +55,12 @@ import Language.PureScript.CodeGen.JS.Optimizer.Blocks
55-- Apply a series of optimizer passes to simplified Javascript code
56-- Apply a series of optimizer passes to simplified Javascript code
57−optimize :: (Monad m, MonadReader (Options mode) m, MonadSupply m) => JS -> m JS
58+optimize :: (Monad m, MonadReader (Options mode) m, Applicative m, MonadSupply m) => JS -> m JS
58optimize js = do
59optimize js = do
59 noOpt <- asks optionsNoOptimizations
60 noOpt <- asks optionsNoOptimizations
60 if noOpt then return js else optimize' js
61 if noOpt then return js else optimize' js
62−optimize' :: (Monad m, MonadReader (Options mode) m, MonadSupply m) => JS -> m JS
63+optimize' :: (Monad m, MonadReader (Options mode) m, Applicative m, MonadSupply m) => JS -> m JS
63optimize' js = do
64optimize' js = do
64 opts <- ask
65 opts <- ask
65 untilFixedPoint (inlineArrComposition . applyAll
66 untilFixedPoint (inlineArrComposition . applyAll