git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Use base-compat across package
commit2978939dec1d5e60b3d38e768753797726f841e3 authorOleg Grenrus <oleg.grenrus@iki.fi> dateThu 5 Nov 2015, 07:54 (11 years ago) parentd1d281a
50 files changed+260−349
purescript.cabal+1 src/Control/Monad/Logger.hs+3−5 src/Control/Monad/Supply.hs+3−4 src/Language/PureScript/AST/Declarations.hs+3−5 src/Language/PureScript/AST/SourcePos.hs+3−5 src/Language/PureScript/AST/Traversals.hs+58−67 src/Language/PureScript/Bundle.hs+6−7 src/Language/PureScript/CodeGen/JS.hs+3−4 src/Language/PureScript/CodeGen/JS/AST.hs+3−7 src/Language/PureScript/CodeGen/JS/Optimizer.hs+3−4 src/Language/PureScript/CodeGen/JS/Optimizer/Inliner.hs+3−5 src/Language/PureScript/Docs/ParseAndDesugar.hs+6−7 src/Language/PureScript/Docs/RenderedCode/Render.hs+3−6 src/Language/PureScript/Docs/RenderedCode/Types.hs+3−6 src/Language/PureScript/Docs/Types.hs+3−4 src/Language/PureScript/Errors.hs+3−9 src/Language/PureScript/Externs.hs+3−4 src/Language/PureScript/Kinds.hs+3−4 src/Language/PureScript/Linter.hs+3−4 src/Language/PureScript/Linter/Exhaustive.hs+3−4 src/Language/PureScript/Linter/Imports.hs+3−4 src/Language/PureScript/Make.hs+9−12 src/Language/PureScript/Parser/JS.hs+3−5 src/Language/PureScript/Parser/Kinds.hs+3−5 src/Language/PureScript/Pretty/JS.hs+6−8 src/Language/PureScript/Pretty/Values.hs−2 src/Language/PureScript/Publish.hs+6−8 src/Language/PureScript/Publish/ErrorsWarnings.hs+3−7 src/Language/PureScript/Renamer.hs+13−14 src/Language/PureScript/Sugar.hs+7−8 src/Language/PureScript/Sugar/BindingGroups.hs+3−5 src/Language/PureScript/Sugar/CaseDeclarations.hs+3−4 src/Language/PureScript/Sugar/DoNotation.hs+3−4 src/Language/PureScript/Sugar/Names.hs+7−9 src/Language/PureScript/Sugar/Names/Exports.hs+5−5 src/Language/PureScript/Sugar/Names/Imports.hs+8−8 src/Language/PureScript/Sugar/ObjectWildcards.hs+3−4 src/Language/PureScript/Sugar/Operators.hs+5−6 src/Language/PureScript/Sugar/TypeClasses.hs+5−6 src/Language/PureScript/Sugar/TypeClasses/Deriving.hs+4−5 src/Language/PureScript/Sugar/TypeDeclarations.hs+3−4 src/Language/PureScript/Traversals.hs+2−5 src/Language/PureScript/TypeChecker.hs+8−9 src/Language/PureScript/TypeChecker/Entailment.hs+5−10 src/Language/PureScript/TypeChecker/Kinds.hs+4−5 src/Language/PureScript/TypeChecker/Monad.hs+3−4 src/Language/PureScript/TypeChecker/Skolems.hs+3−5 src/Language/PureScript/TypeChecker/Synonyms.hs+3−4 src/Language/PureScript/TypeChecker/Types.hs+8−9 src/Language/PureScript/Types.hs+3−4
purescript.cabal+1
@@ -40,6 +40,7 @@ source-repository head
4040
4141library
4242 build-depends: base >=4.6 && <5,
43+ base-compat >=0.6.0,
4344 lifted-base >= 0.2.3 && < 0.2.4,
4445 monad-control >= 1.0.0.0 && < 1.1,
4546 transformers-base >= 0.4.0 && < 0.5,
src/Control/Monad/Logger.hs+3−5
@@ -12,19 +12,17 @@
1212--
1313-----------------------------------------------------------------------------
1414
15−{-# LANGUAGE CPP #-}
1615{-# LANGUAGE FlexibleInstances #-}
1716{-# LANGUAGE MultiParamTypeClasses #-}
1817{-# LANGUAGE TypeFamilies #-}
1918
2019module Control.Monad.Logger where
2120
21+import Prelude ()
22+import Prelude.Compat
23+
2224import Data.IORef
2325
24−#if __GLASGOW_HASKELL__ < 710
25−import Data.Monoid
26−import Control.Applicative
27−#endif
2826import Control.Monad (ap)
2927import Control.Monad.IO.Class
3028import Control.Monad.Writer.Class
src/Control/Monad/Supply.hs+3−4
@@ -14,15 +14,14 @@
1414-----------------------------------------------------------------------------
1515
1616{-# LANGUAGE GeneralizedNewtypeDeriving #-}
17−{-# LANGUAGE CPP #-}
1817
1918module Control.Monad.Supply where
2019
20+import Prelude ()
21+import Prelude.Compat
22+
2123import Data.Functor.Identity
2224
23−#if __GLASGOW_HASKELL__ < 710
24−import Control.Applicative
25−#endif
2625import Control.Monad.State
2726import Control.Monad.Error.Class (MonadError(..))
2827import Control.Monad.Reader
src/Language/PureScript/AST/Declarations.hs+3−5
@@ -15,10 +15,12 @@
1515{-# LANGUAGE DeriveDataTypeable #-}
1616{-# LANGUAGE ScopedTypeVariables #-}
1717{-# LANGUAGE TemplateHaskell #-}
18−{-# LANGUAGE CPP #-}
1918
2019module Language.PureScript.AST.Declarations where
2120
21+import Prelude ()
22+import Prelude.Compat
23+
2224import Data.Aeson.TH
2325
2426import qualified Data.Data as D
@@ -26,10 +28,6 @@ import qualified Data.Map as M
2628
2729import Control.Monad.Identity
2830
29−#if __GLASGOW_HASKELL__ < 710
30−import Control.Applicative
31−#endif
32−
3331import Language.PureScript.AST.Binders
3432import Language.PureScript.AST.Operators
3533import Language.PureScript.AST.SourcePos
src/Language/PureScript/AST/SourcePos.hs+3−5
@@ -12,7 +12,6 @@
1212--
1313-----------------------------------------------------------------------------
1414
15−{-# LANGUAGE CPP #-}
1615{-# LANGUAGE DeriveDataTypeable #-}
1716{-# LANGUAGE ScopedTypeVariables #-}
1817{-# LANGUAGE RecordWildCards #-}
@@ -20,14 +19,13 @@
2019
2120module Language.PureScript.AST.SourcePos where
2221
22+import Prelude ()
23+import Prelude.Compat
24+
2325import qualified Data.Data as D
2426import Data.Aeson ((.=), (.:))
2527import qualified Data.Aeson as A
2628
27−#if __GLASGOW_HASKELL__ < 710
28−import Control.Applicative
29−#endif
30−
3129-- |
3230-- Source position information
3331--
src/Language/PureScript/AST/Traversals.hs+58−67
@@ -12,21 +12,12 @@
1212--
1313-----------------------------------------------------------------------------
1414
15−{-# LANGUAGE CPP #-}
16−
1715module Language.PureScript.AST.Traversals where
1816
19−#if __GLASGOW_HASKELL__ < 710
20−import Data.Monoid (Monoid(..), mconcat)
21−#endif
22−import Data.Maybe (mapMaybe)
23−#if __GLASGOW_HASKELL__ < 710
24−import Data.Traversable (traverse)
25−#endif
17+import Prelude ()
18+import Prelude.Compat
2619
27−#if __GLASGOW_HASKELL__ < 710
28−import Control.Applicative
29−#endif
20+import Data.Maybe (mapMaybe)
3021import Control.Monad
3122import Control.Arrow ((***), (+++), second)
3223
@@ -101,10 +92,10 @@ everywhereOnValuesTopDownM :: (Functor m, Applicative m, Monad m) =>
10192 (Declaration -> m Declaration, Expr -> m Expr, Binder -> m Binder)
10293everywhereOnValuesTopDownM f g h = (f' <=< f, g' <=< g, h' <=< h)
10394 where
104− f' (DataBindingGroupDeclaration ds) = DataBindingGroupDeclaration <$> mapM (f' <=< f) ds
105− f' (ValueDeclaration name nameKind bs val) = ValueDeclaration name nameKind <$> mapM (h' <=< h) bs <*> eitherM (mapM (pairM (g' <=< g) (g' <=< g))) (g' <=< g) val
106− f' (BindingGroupDeclaration ds) = BindingGroupDeclaration <$> mapM (\(name, nameKind, val) -> (,,) name nameKind <$> (g val >>= g')) ds
107− f' (TypeClassDeclaration name args implies ds) = TypeClassDeclaration name args implies <$> mapM (f' <=< f) ds
95+ f' (DataBindingGroupDeclaration ds) = DataBindingGroupDeclaration <$> traverse (f' <=< f) ds
96+ f' (ValueDeclaration name nameKind bs val) = ValueDeclaration name nameKind <$> traverse (h' <=< h) bs <*> eitherM (traverse (pairM (g' <=< g) (g' <=< g))) (g' <=< g) val
97+ f' (BindingGroupDeclaration ds) = BindingGroupDeclaration <$> traverse (\(name, nameKind, val) -> (,,) name nameKind <$> (g val >>= g')) ds
98+ f' (TypeClassDeclaration name args implies ds) = TypeClassDeclaration name args implies <$> traverse (f' <=< f) ds
10899 f' (TypeInstanceDeclaration name cs className args ds) = TypeInstanceDeclaration name cs className args <$> traverseTypeInstanceBody (traverse (f' <=< f)) ds
109100 f' (PositionedDeclaration pos com d) = PositionedDeclaration pos com <$> (f d >>= f')
110101 f' other = f other
@@ -114,37 +105,37 @@ everywhereOnValuesTopDownM f g h = (f' <=< f, g' <=< g, h' <=< h)
114105 g' (Parens v) = Parens <$> (g v >>= g')
115106 g' (OperatorSection op (Left v)) = OperatorSection <$> (g op >>= g') <*> (Left <$> (g v >>= g'))
116107 g' (OperatorSection op (Right v)) = OperatorSection <$> (g op >>= g') <*> (Right <$> (g v >>= g'))
117− g' (ArrayLiteral vs) = ArrayLiteral <$> mapM (g' <=< g) vs
118− g' (ObjectLiteral vs) = ObjectLiteral <$> mapM (sndM (g' <=< g)) vs
119− g' (ObjectConstructor vs) = ObjectConstructor <$> mapM (sndM $ maybeM (g' <=< g)) vs
108+ g' (ArrayLiteral vs) = ArrayLiteral <$> traverse (g' <=< g) vs
109+ g' (ObjectLiteral vs) = ObjectLiteral <$> traverse (sndM (g' <=< g)) vs
110+ g' (ObjectConstructor vs) = ObjectConstructor <$> traverse (sndM $ maybeM (g' <=< g)) vs
120111 g' (TypeClassDictionaryConstructorApp name v) = TypeClassDictionaryConstructorApp name <$> (g v >>= g')
121112 g' (Accessor prop v) = Accessor prop <$> (g v >>= g')
122− g' (ObjectUpdate obj vs) = ObjectUpdate <$> (g obj >>= g') <*> mapM (sndM (g' <=< g)) vs
123− g' (ObjectUpdater obj vs) = ObjectUpdater <$> (maybeM g obj >>= maybeM g') <*> mapM (sndM $ maybeM (g' <=< g)) vs
113+ g' (ObjectUpdate obj vs) = ObjectUpdate <$> (g obj >>= g') <*> traverse (sndM (g' <=< g)) vs
114+ g' (ObjectUpdater obj vs) = ObjectUpdater <$> (maybeM g obj >>= maybeM g') <*> traverse (sndM $ maybeM (g' <=< g)) vs
124115 g' (Abs name v) = Abs name <$> (g v >>= g')
125116 g' (App v1 v2) = App <$> (g v1 >>= g') <*> (g v2 >>= g')
126117 g' (IfThenElse v1 v2 v3) = IfThenElse <$> (g v1 >>= g') <*> (g v2 >>= g') <*> (g v3 >>= g')
127− g' (Case vs alts) = Case <$> mapM (g' <=< g) vs <*> mapM handleCaseAlternative alts
118+ g' (Case vs alts) = Case <$> traverse (g' <=< g) vs <*> traverse handleCaseAlternative alts
128119 g' (TypedValue check v ty) = TypedValue check <$> (g v >>= g') <*> pure ty
129− g' (Let ds v) = Let <$> mapM (f' <=< f) ds <*> (g v >>= g')
130− g' (Do es) = Do <$> mapM handleDoNotationElement es
120+ g' (Let ds v) = Let <$> traverse (f' <=< f) ds <*> (g v >>= g')
121+ g' (Do es) = Do <$> traverse handleDoNotationElement es
131122 g' (PositionedValue pos com v) = PositionedValue pos com <$> (g v >>= g')
132123 g' other = g other
133124
134− h' (ConstructorBinder ctor bs) = ConstructorBinder ctor <$> mapM (h' <=< h) bs
135− h' (ObjectBinder bs) = ObjectBinder <$> mapM (sndM (h' <=< h)) bs
136− h' (ArrayBinder bs) = ArrayBinder <$> mapM (h' <=< h) bs
125+ h' (ConstructorBinder ctor bs) = ConstructorBinder ctor <$> traverse (h' <=< h) bs
126+ h' (ObjectBinder bs) = ObjectBinder <$> traverse (sndM (h' <=< h)) bs
127+ h' (ArrayBinder bs) = ArrayBinder <$> traverse (h' <=< h) bs
137128 h' (NamedBinder name b) = NamedBinder name <$> (h b >>= h')
138129 h' (PositionedBinder pos com b) = PositionedBinder pos com <$> (h b >>= h')
139130 h' (TypedBinder t b) = TypedBinder t <$> (h b >>= h')
140131 h' other = h other
141132
142− handleCaseAlternative (CaseAlternative bs val) = CaseAlternative <$> mapM (h' <=< h) bs
143− <*> eitherM (mapM (pairM (g' <=< g) (g' <=< g))) (g' <=< g) val
133+ handleCaseAlternative (CaseAlternative bs val) = CaseAlternative <$> traverse (h' <=< h) bs
134+ <*> eitherM (traverse (pairM (g' <=< g) (g' <=< g))) (g' <=< g) val
144135
145136 handleDoNotationElement (DoNotationValue v) = DoNotationValue <$> (g' <=< g) v
146137 handleDoNotationElement (DoNotationBind b v) = DoNotationBind <$> (h' <=< h) b <*> (g' <=< g) v
147− handleDoNotationElement (DoNotationLet ds) = DoNotationLet <$> mapM (f' <=< f) ds
138+ handleDoNotationElement (DoNotationLet ds) = DoNotationLet <$> traverse (f' <=< f) ds
148139 handleDoNotationElement (PositionedDoNotationElement pos com e) = PositionedDoNotationElement pos com <$> handleDoNotationElement e
149140
150141everywhereOnValuesM :: (Functor m, Applicative m, Monad m) =>
@@ -154,11 +145,11 @@ everywhereOnValuesM :: (Functor m, Applicative m, Monad m) =>
154145 (Declaration -> m Declaration, Expr -> m Expr, Binder -> m Binder)
155146everywhereOnValuesM f g h = (f', g', h')
156147 where
157− f' (DataBindingGroupDeclaration ds) = (DataBindingGroupDeclaration <$> mapM f' ds) >>= f
158− f' (ValueDeclaration name nameKind bs val) = (ValueDeclaration name nameKind <$> mapM h' bs <*> eitherM (mapM (pairM g' g')) g' val) >>= f
159− f' (BindingGroupDeclaration ds) = (BindingGroupDeclaration <$> mapM (\(name, nameKind, val) -> (,,) name nameKind <$> g' val) ds) >>= f
160− f' (TypeClassDeclaration name args implies ds) = (TypeClassDeclaration name args implies <$> mapM f' ds) >>= f
161− f' (TypeInstanceDeclaration name cs className args ds) = (TypeInstanceDeclaration name cs className args <$> traverseTypeInstanceBody (mapM f') ds) >>= f
148+ f' (DataBindingGroupDeclaration ds) = (DataBindingGroupDeclaration <$> traverse f' ds) >>= f
149+ f' (ValueDeclaration name nameKind bs val) = (ValueDeclaration name nameKind <$> traverse h' bs <*> eitherM (traverse (pairM g' g')) g' val) >>= f
150+ f' (BindingGroupDeclaration ds) = (BindingGroupDeclaration <$> traverse (\(name, nameKind, val) -> (,,) name nameKind <$> g' val) ds) >>= f
151+ f' (TypeClassDeclaration name args implies ds) = (TypeClassDeclaration name args implies <$> traverse f' ds) >>= f
152+ f' (TypeInstanceDeclaration name cs className args ds) = (TypeInstanceDeclaration name cs className args <$> traverseTypeInstanceBody (traverse f') ds) >>= f
162153 f' (PositionedDeclaration pos com d) = (PositionedDeclaration pos com <$> f' d) >>= f
163154 f' other = f other
164155
@@ -167,37 +158,37 @@ everywhereOnValuesM f g h = (f', g', h')
167158 g' (Parens v) = (Parens <$> g' v) >>= g
168159 g' (OperatorSection op (Left v)) = (OperatorSection <$> g' op <*> (Left <$> g' v)) >>= g
169160 g' (OperatorSection op (Right v)) = (OperatorSection <$> g' op <*> (Right <$> g' v)) >>= g
170− g' (ArrayLiteral vs) = (ArrayLiteral <$> mapM g' vs) >>= g
171− g' (ObjectLiteral vs) = (ObjectLiteral <$> mapM (sndM g') vs) >>= g
172− g' (ObjectConstructor vs) = (ObjectConstructor <$> mapM (sndM $ maybeM g') vs) >>= g
161+ g' (ArrayLiteral vs) = (ArrayLiteral <$> traverse g' vs) >>= g
162+ g' (ObjectLiteral vs) = (ObjectLiteral <$> traverse (sndM g') vs) >>= g
163+ g' (ObjectConstructor vs) = (ObjectConstructor <$> traverse (sndM $ maybeM g') vs) >>= g
173164 g' (TypeClassDictionaryConstructorApp name v) = (TypeClassDictionaryConstructorApp name <$> g' v) >>= g
174165 g' (Accessor prop v) = (Accessor prop <$> g' v) >>= g
175− g' (ObjectUpdate obj vs) = (ObjectUpdate <$> g' obj <*> mapM (sndM g') vs) >>= g
176− g' (ObjectUpdater obj vs) = (ObjectUpdater <$> maybeM g' obj <*> mapM (sndM $ maybeM g') vs) >>= g
166+ g' (ObjectUpdate obj vs) = (ObjectUpdate <$> g' obj <*> traverse (sndM g') vs) >>= g
167+ g' (ObjectUpdater obj vs) = (ObjectUpdater <$> maybeM g' obj <*> traverse (sndM $ maybeM g') vs) >>= g
177168 g' (Abs name v) = (Abs name <$> g' v) >>= g
178169 g' (App v1 v2) = (App <$> g' v1 <*> g' v2) >>= g
179170 g' (IfThenElse v1 v2 v3) = (IfThenElse <$> g' v1 <*> g' v2 <*> g' v3) >>= g
180− g' (Case vs alts) = (Case <$> mapM g' vs <*> mapM handleCaseAlternative alts) >>= g
171+ g' (Case vs alts) = (Case <$> traverse g' vs <*> traverse handleCaseAlternative alts) >>= g
181172 g' (TypedValue check v ty) = (TypedValue check <$> g' v <*> pure ty) >>= g
182− g' (Let ds v) = (Let <$> mapM f' ds <*> g' v) >>= g
183− g' (Do es) = (Do <$> mapM handleDoNotationElement es) >>= g
173+ g' (Let ds v) = (Let <$> traverse f' ds <*> g' v) >>= g
174+ g' (Do es) = (Do <$> traverse handleDoNotationElement es) >>= g
184175 g' (PositionedValue pos com v) = (PositionedValue pos com <$> g' v) >>= g
185176 g' other = g other
186177
187− h' (ConstructorBinder ctor bs) = (ConstructorBinder ctor <$> mapM h' bs) >>= h
188− h' (ObjectBinder bs) = (ObjectBinder <$> mapM (sndM h') bs) >>= h
189− h' (ArrayBinder bs) = (ArrayBinder <$> mapM h' bs) >>= h
178+ h' (ConstructorBinder ctor bs) = (ConstructorBinder ctor <$> traverse h' bs) >>= h
179+ h' (ObjectBinder bs) = (ObjectBinder <$> traverse (sndM h') bs) >>= h
180+ h' (ArrayBinder bs) = (ArrayBinder <$> traverse h' bs) >>= h
190181 h' (NamedBinder name b) = (NamedBinder name <$> h' b) >>= h
191182 h' (PositionedBinder pos com b) = (PositionedBinder pos com <$> h' b) >>= h
192183 h' (TypedBinder t b) = (TypedBinder t <$> h' b) >>= h
193184 h' other = h other
194185
195− handleCaseAlternative (CaseAlternative bs val) = CaseAlternative <$> mapM h' bs
196− <*> eitherM (mapM (pairM g' g')) g' val
186+ handleCaseAlternative (CaseAlternative bs val) = CaseAlternative <$> traverse h' bs
187+ <*> eitherM (traverse (pairM g' g')) g' val
197188
198189 handleDoNotationElement (DoNotationValue v) = DoNotationValue <$> g' v
199190 handleDoNotationElement (DoNotationBind b v) = DoNotationBind <$> h' b <*> g' v
200− handleDoNotationElement (DoNotationLet ds) = DoNotationLet <$> mapM f' ds
191+ handleDoNotationElement (DoNotationLet ds) = DoNotationLet <$> traverse f' ds
201192 handleDoNotationElement (PositionedDoNotationElement pos com e) = PositionedDoNotationElement pos com <$> handleDoNotationElement e
202193
203194everythingOnValues :: (r -> r -> r) ->
@@ -345,11 +336,11 @@ everywhereWithContextOnValuesM s0 f g h i j = (f'' s0, g'' s0, h'' s0, i'' s0, j
345336 where
346337 f'' s = uncurry f' <=< f s
347338
348− f' s (DataBindingGroupDeclaration ds) = DataBindingGroupDeclaration <$> mapM (f'' s) ds
349− f' s (ValueDeclaration name nameKind bs val) = ValueDeclaration name nameKind <$> mapM (h'' s) bs <*> eitherM (mapM (pairM (g'' s) (g'' s))) (g'' s) val
350− f' s (BindingGroupDeclaration ds) = BindingGroupDeclaration <$> mapM (thirdM (g'' s)) ds
351− f' s (TypeClassDeclaration name args implies ds) = TypeClassDeclaration name args implies <$> mapM (f'' s) ds
352− f' s (TypeInstanceDeclaration name cs className args ds) = TypeInstanceDeclaration name cs className args <$> traverseTypeInstanceBody (mapM (f'' s)) ds
339+ f' s (DataBindingGroupDeclaration ds) = DataBindingGroupDeclaration <$> traverse (f'' s) ds
340+ f' s (ValueDeclaration name nameKind bs val) = ValueDeclaration name nameKind <$> traverse (h'' s) bs <*> eitherM (traverse (pairM (g'' s) (g'' s))) (g'' s) val
341+ f' s (BindingGroupDeclaration ds) = BindingGroupDeclaration <$> traverse (thirdM (g'' s)) ds
342+ f' s (TypeClassDeclaration name args implies ds) = TypeClassDeclaration name args implies <$> traverse (f'' s) ds
343+ f' s (TypeInstanceDeclaration name cs className args ds) = TypeInstanceDeclaration name cs className args <$> traverseTypeInstanceBody (traverse (f'' s)) ds
353344 f' s (PositionedDeclaration pos com d1) = PositionedDeclaration pos com <$> f'' s d1
354345 f' _ other = return other
355346
@@ -360,28 +351,28 @@ everywhereWithContextOnValuesM s0 f g h i j = (f'' s0, g'' s0, h'' s0, i'' s0, j
360351 g' s (Parens v) = Parens <$> g'' s v
361352 g' s (OperatorSection op (Left v)) = OperatorSection <$> g'' s op <*> (Left <$> g'' s v)
362353 g' s (OperatorSection op (Right v)) = OperatorSection <$> g'' s op <*> (Right <$> g'' s v)
363− g' s (ArrayLiteral vs) = ArrayLiteral <$> mapM (g'' s) vs
364− g' s (ObjectLiteral vs) = ObjectLiteral <$> mapM (sndM (g'' s)) vs
365− g' s (ObjectConstructor vs) = ObjectConstructor <$> mapM (sndM $ maybeM (g'' s)) vs
354+ g' s (ArrayLiteral vs) = ArrayLiteral <$> traverse (g'' s) vs
355+ g' s (ObjectLiteral vs) = ObjectLiteral <$> traverse (sndM (g'' s)) vs
356+ g' s (ObjectConstructor vs) = ObjectConstructor <$> traverse (sndM $ maybeM (g'' s)) vs
366357 g' s (TypeClassDictionaryConstructorApp name v) = TypeClassDictionaryConstructorApp name <$> g'' s v
367358 g' s (Accessor prop v) = Accessor prop <$> g'' s v
368− g' s (ObjectUpdate obj vs) = ObjectUpdate <$> g'' s obj <*> mapM (sndM (g'' s)) vs
369− g' s (ObjectUpdater obj vs) = ObjectUpdater <$> maybeM (g'' s) obj <*> mapM (sndM $ maybeM (g'' s)) vs
359+ g' s (ObjectUpdate obj vs) = ObjectUpdate <$> g'' s obj <*> traverse (sndM (g'' s)) vs
360+ g' s (ObjectUpdater obj vs) = ObjectUpdater <$> maybeM (g'' s) obj <*> traverse (sndM $ maybeM (g'' s)) vs
370361 g' s (Abs name v) = Abs name <$> g'' s v
371362 g' s (App v1 v2) = App <$> g'' s v1 <*> g'' s v2
372363 g' s (IfThenElse v1 v2 v3) = IfThenElse <$> g'' s v1 <*> g'' s v2 <*> g'' s v3
373− g' s (Case vs alts) = Case <$> mapM (g'' s) vs <*> mapM (i'' s) alts
364+ g' s (Case vs alts) = Case <$> traverse (g'' s) vs <*> traverse (i'' s) alts
374365 g' s (TypedValue check v ty) = TypedValue check <$> g'' s v <*> pure ty
375− g' s (Let ds v) = Let <$> mapM (f'' s) ds <*> g'' s v
376− g' s (Do es) = Do <$> mapM (j'' s) es
366+ g' s (Let ds v) = Let <$> traverse (f'' s) ds <*> g'' s v
367+ g' s (Do es) = Do <$> traverse (j'' s) es
377368 g' s (PositionedValue pos com v) = PositionedValue pos com <$> g'' s v
378369 g' _ other = return other
379370
380371 h'' s = uncurry h' <=< h s
381372
382− h' s (ConstructorBinder ctor bs) = ConstructorBinder ctor <$> mapM (h'' s) bs
383− h' s (ObjectBinder bs) = ObjectBinder <$> mapM (sndM (h'' s)) bs
384− h' s (ArrayBinder bs) = ArrayBinder <$> mapM (h'' s) bs
373+ h' s (ConstructorBinder ctor bs) = ConstructorBinder ctor <$> traverse (h'' s) bs
374+ h' s (ObjectBinder bs) = ObjectBinder <$> traverse (sndM (h'' s)) bs
375+ h' s (ArrayBinder bs) = ArrayBinder <$> traverse (h'' s) bs
385376 h' s (NamedBinder name b) = NamedBinder name <$> h'' s b
386377 h' s (PositionedBinder pos com b) = PositionedBinder pos com <$> h'' s b
387378 h' s (TypedBinder t b) = TypedBinder t <$> h'' s b
@@ -389,13 +380,13 @@ everywhereWithContextOnValuesM s0 f g h i j = (f'' s0, g'' s0, h'' s0, i'' s0, j
389380
390381 i'' s = uncurry i' <=< i s
391382
392− i' s (CaseAlternative bs val) = CaseAlternative <$> mapM (h'' s) bs <*> eitherM (mapM (pairM (g'' s) (g'' s))) (g'' s) val
383+ i' s (CaseAlternative bs val) = CaseAlternative <$> traverse (h'' s) bs <*> eitherM (traverse (pairM (g'' s) (g'' s))) (g'' s) val
393384
394385 j'' s = uncurry j' <=< j s
395386
396387 j' s (DoNotationValue v) = DoNotationValue <$> g'' s v
397388 j' s (DoNotationBind b v) = DoNotationBind <$> h'' s b <*> g'' s v
398− j' s (DoNotationLet ds) = DoNotationLet <$> mapM (f'' s) ds
389+ j' s (DoNotationLet ds) = DoNotationLet <$> traverse (f'' s) ds
399390 j' s (PositionedDoNotationElement pos com e1) = PositionedDoNotationElement pos com <$> j'' s e1
400391
401392accumTypes :: (Monoid r) => (Type -> r) -> (Declaration -> r, Expr -> r, Binder -> r, CaseAlternative -> r, DoNotationElement -> r)
src/Language/PureScript/Bundle.hs+6−7
@@ -20,7 +20,6 @@
2020{-# LANGUAGE ScopedTypeVariables #-}
2121{-# LANGUAGE TupleSections #-}
2222{-# LANGUAGE RecordWildCards #-}
23−{-# LANGUAGE CPP #-}
2423
2524module Language.PureScript.Bundle (
2625 bundle
@@ -31,6 +30,9 @@ module Language.PureScript.Bundle (
3130 , printErrorMessage
3231) where
3332
33+import Prelude ()
34+import Prelude.Compat
35+
3436import Data.List (nub)
3537import Data.Maybe (mapMaybe, catMaybes)
3638import Data.Generics (everything, everywhere, mkQ, mkT)
@@ -39,9 +41,6 @@ import Data.Version (showVersion)
3941
4042import qualified Data.Set as S
4143
42−#if __GLASGOW_HASKELL__ < 710
43−import Control.Applicative
44−#endif
4544import Control.Monad
4645import Control.Monad.Error.Class
4746import Language.JavaScript.Parser
@@ -212,7 +211,7 @@ withDeps (Module modulePath es) = Module modulePath (map expandDeps es)
212211-- Other constructor.
213212toModule :: forall m. (Applicative m, MonadError ErrorMessage m) => S.Set String -> ModuleIdentifier -> JSNode -> m Module
214213toModule mids mid top
215− | JSSourceElementsTop ns <- node top = Module mid <$> mapM toModuleElement ns
214+ | JSSourceElementsTop ns <- node top = Module mid <$> traverse toModuleElement ns
216215 | otherwise = err InvalidTopLevel
217216 where
218217 err = throwError . ErrorInModule mid
@@ -262,7 +261,7 @@ toModule mids mid top
262261 , JSOperator eq <- node op
263262 , JSLiteral "=" <- node eq
264263 , JSObjectLiteral _ props _ <- node obj
265− = ExportsList <$> mapM toExport (filter (not . isSeparator) (map node props))
264+ = ExportsList <$> traverse toExport (filter (not . isSeparator) (map node props))
266265 where
267266 toExport :: Node -> m (ExportType, String, JSNode, [Key])
268267 toExport (JSPropertyNameandValue name _ [val] ) =
@@ -544,7 +543,7 @@ bundle inputStrs entryPoints mainModule namespace = do
544543
545544 let mids = S.fromList (map (moduleName . fst) input)
546545
547− modules <- mapM (fmap withDeps . uncurry (toModule mids)) input
546+ modules <- traverse (fmap withDeps . uncurry (toModule mids)) input
548547
549548 let compiled = compile modules entryPoints
550549 sorted = sortModules (filter (not . isModuleEmpty) compiled)
src/Language/PureScript/CodeGen/JS.hs+3−4
@@ -17,7 +17,6 @@
1717{-# LANGUAGE ViewPatterns #-}
1818{-# LANGUAGE FlexibleContexts #-}
1919{-# LANGUAGE ScopedTypeVariables #-}
20−{-# LANGUAGE CPP #-}
2120
2221module Language.PureScript.CodeGen.JS
2322 ( module AST
@@ -26,13 +25,13 @@ module Language.PureScript.CodeGen.JS
2625 , mainCall
2726 ) where
2827
28+import Prelude ()
29+import Prelude.Compat
30+
2931import Data.List ((\\), delete, intersect)
3032import Data.Maybe (isNothing)
3133import qualified Data.Traversable as T (traverse)
3234
33−#if __GLASGOW_HASKELL__ < 710
34−import Control.Applicative
35−#endif
3635import Control.Arrow ((&&&))
3736import Control.Monad (replicateM, forM)
3837import Control.Monad.Reader (MonadReader, asks)
src/Language/PureScript/CodeGen/JS/AST.hs+3−7
@@ -14,18 +14,14 @@
1414-----------------------------------------------------------------------------
1515
1616{-# LANGUAGE DeriveDataTypeable #-}
17−{-# LANGUAGE CPP #-}
1817
1918module Language.PureScript.CodeGen.JS.AST where
2019
21−#if __GLASGOW_HASKELL__ < 710
22−import Control.Applicative (Applicative, (<$>), (<*>))
23−#endif
20+import Prelude ()
21+import Prelude.Compat
22+
2423import Control.Monad.Identity
2524import Data.Data
26−#if __GLASGOW_HASKELL__ < 710
27−import Data.Traversable (traverse)
28−#endif
2925
3026import Language.PureScript.Comments
3127import Language.PureScript.Traversals
src/Language/PureScript/CodeGen/JS/Optimizer.hs+3−4
@@ -32,15 +32,14 @@
3232-----------------------------------------------------------------------------
3333
3434{-# LANGUAGE FlexibleContexts #-}
35−{-# LANGUAGE CPP #-}
3635
3736module Language.PureScript.CodeGen.JS.Optimizer (
3837 optimize
3938) where
4039
41−#if __GLASGOW_HASKELL__ < 710
42−import Control.Applicative (Applicative)
43−#endif
40+import Prelude ()
41+import Prelude.Compat
42+
4443import Control.Monad.Reader (MonadReader, ask, asks)
4544import Control.Monad.Supply.Class (MonadSupply)
4645
src/Language/PureScript/CodeGen/JS/Optimizer/Inliner.hs+3−5
@@ -13,8 +13,6 @@
1313--
1414-----------------------------------------------------------------------------
1515
16−{-# LANGUAGE CPP #-}
17−
1816module Language.PureScript.CodeGen.JS.Optimizer.Inliner (
1917 inlineVariables,
2018 inlineValues,
@@ -26,9 +24,9 @@ module Language.PureScript.CodeGen.JS.Optimizer.Inliner (
2624 evaluateIifes
2725) where
2826
29−#if __GLASGOW_HASKELL__ < 710
30−import Control.Applicative (Applicative)
31−#endif
27+import Prelude ()
28+import Prelude.Compat
29+
3230import Control.Monad.Supply.Class (MonadSupply, freshName)
3331import Data.Maybe (fromMaybe)
3432
src/Language/PureScript/Docs/ParseAndDesugar.hs+6−7
@@ -1,17 +1,16 @@
11{-# LANGUAGE TupleSections #-}
2−{-# LANGUAGE CPP #-}
32
43module Language.PureScript.Docs.ParseAndDesugar
54 ( parseAndDesugar
65 , ParseDesugarError(..)
76 ) where
87
8+import Prelude ()
9+import Prelude.Compat
10+
911import qualified Data.Map as M
1012import Control.Arrow (first)
1113import Control.Monad
12−#if __GLASGOW_HASKELL__ < 710
13−import Control.Applicative
14−#endif
1514
1615import Control.Monad.Trans.Except
1716import Control.Monad.Writer.Strict (runWriterT)
@@ -53,8 +52,8 @@ parseAndDesugar ::
5352 -> ([Bookmark] -> [P.Module] -> IO a)
5453 -> IO (Either ParseDesugarError a)
5554parseAndDesugar inputFiles depsFiles callback = do
56− inputFiles' <- mapM (parseAs Local) inputFiles
57− depsFiles' <- mapM (\(pkgName, f) -> parseAs (FromDep pkgName) f) depsFiles
55+ inputFiles' <- traverse (parseAs Local) inputFiles
56+ depsFiles' <- traverse (\(pkgName, f) -> parseAs (FromDep pkgName) f) depsFiles
5857
5958 runExceptT $ do
6059 ms <- parseFiles (inputFiles' ++ depsFiles')
@@ -122,7 +121,7 @@ desugar :: [P.Module] -> Either P.MultipleErrors [P.Module]
122121desugar = P.evalSupplyT 0 . desugar'
123122 where
124123 desugar' :: [P.Module] -> P.SupplyT (Either P.MultipleErrors) [P.Module]
125− desugar' = mapM P.desugarDoModule >=> P.desugarCasesModule >=> ignoreWarnings . P.desugarImports []
124+ desugar' = traverse P.desugarDoModule >=> P.desugarCasesModule >=> ignoreWarnings . P.desugarImports []
126125 ignoreWarnings m = liftM fst (runWriterT m)
127126
128127parseFile :: FilePath -> IO (FilePath, String)
src/Language/PureScript/Docs/RenderedCode/Render.hs+3−6
@@ -1,5 +1,3 @@
1−{-# LANGUAGE CPP #-}
2−
31-- | Functions for producing RenderedCode values from PureScript Type values.
42
53module Language.PureScript.Docs.RenderedCode.Render (
@@ -11,12 +9,11 @@ module Language.PureScript.Docs.RenderedCode.Render (
119 defaultRenderTypeOptions,
1210 renderTypeWithOptions
1311) where
12+
13+import Prelude ()
14+import Prelude.Compat
1415
15−#if __GLASGOW_HASKELL__ < 710
16−import Data.Monoid ((<>), mconcat, mempty)
17−#else
1816import Data.Monoid ((<>))
19−#endif
2017import Data.Maybe (fromMaybe)
2118
2219import Control.Arrow ((<+>))
src/Language/PureScript/Docs/RenderedCode/Types.hs+3−6
@@ -1,6 +1,5 @@
11{-# LANGUAGE GeneralizedNewtypeDeriving #-}
22{-# LANGUAGE OverloadedStrings #-}
3−{-# LANGUAGE CPP #-}
43
54-- | Data types and functions for representing a simplified form of PureScript
65-- code, intended for use in e.g. HTML documentation.
@@ -31,11 +30,9 @@ module Language.PureScript.Docs.RenderedCode.Types
3130 , keywordWhere
3231 ) where
3332
34−#if __GLASGOW_HASKELL__ < 710
35−import Control.Applicative ((<$>), (<*>), (*>), pure)
36−import Data.Foldable
37−import Data.Monoid
38−#endif
33+import Prelude ()
34+import Prelude.Compat
35+
3936import qualified Data.Aeson as A
4037import Data.Aeson.BetterErrors
4138import Control.Monad.Error.Class (MonadError(..))
src/Language/PureScript/Docs/Types.hs+3−4
@@ -2,7 +2,6 @@
22{-# LANGUAGE OverloadedStrings #-}
33{-# LANGUAGE TupleSections #-}
44{-# LANGUAGE RankNTypes #-}
5−{-# LANGUAGE CPP #-}
65
76module Language.PureScript.Docs.Types
87 ( module Language.PureScript.Docs.Types
@@ -10,10 +9,10 @@ module Language.PureScript.Docs.Types
109 )
1110 where
1211
12+import Prelude ()
13+import Prelude.Compat
14+
1315import Control.Arrow (first, (***))
14−#if __GLASGOW_HASKELL__ < 710
15−import Control.Applicative ((<$>), (<$), (<*>), pure)
16−#endif
1716import Control.Monad (when)
1817import Data.Maybe (mapMaybe)
1918import Data.Version
src/Language/PureScript/Errors.hs+3−9
@@ -15,19 +15,16 @@
1515{-# LANGUAGE GeneralizedNewtypeDeriving #-}
1616{-# LANGUAGE FlexibleContexts #-}
1717{-# LANGUAGE MultiParamTypeClasses #-}
18−{-# LANGUAGE CPP #-}
1918
2019module Language.PureScript.Errors where
2120
21+import Prelude ()
22+import Prelude.Compat
23+
2224import Data.Either (lefts, rights)
2325import Data.List (intercalate, transpose, nub, nubBy)
2426import Data.Function (on)
25−#if __GLASGOW_HASKELL__ < 710
26−import Data.Foldable (fold, foldMap)
27−import Data.Traversable (traverse)
28−#else
2927import Data.Foldable (fold)
30−#endif
3128
3229import qualified Data.Map as M
3330
@@ -35,9 +32,6 @@ import Control.Monad
3532import Control.Monad.Unify
3633import Control.Monad.Writer
3734import Control.Monad.Error.Class (MonadError(..))
38−#if __GLASGOW_HASKELL__ < 710
39−import Control.Applicative ((<$>), (<*>), Applicative, pure)
40−#endif
4135import Control.Monad.Trans.State.Lazy
4236import Control.Arrow(first)
4337
src/Language/PureScript/Externs.hs+3−4
@@ -13,7 +13,6 @@
1313--
1414-----------------------------------------------------------------------------
1515
16−{-# LANGUAGE CPP #-}
1716{-# LANGUAGE RecordWildCards #-}
1817{-# LANGUAGE PatternGuards #-}
1918{-# LANGUAGE TemplateHaskell #-}
@@ -27,13 +26,13 @@ module Language.PureScript.Externs
2726 , applyExternsFileToEnvironment
2827 ) where
2928
29+import Prelude ()
30+import Prelude.Compat
31+
3032import Data.List (find, foldl')
3133import Data.Maybe (mapMaybe, maybeToList, fromMaybe)
3234import Data.Foldable (fold)
3335import Data.Version (showVersion)
34−#if __GLASGOW_HASKELL__ < 710
35−import Data.Monoid
36−#endif
3736import Data.Aeson.TH
3837
3938import qualified Data.Map as M
src/Language/PureScript/Kinds.hs+3−4
@@ -14,16 +14,15 @@
1414
1515{-# LANGUAGE DeriveDataTypeable #-}
1616{-# LANGUAGE TemplateHaskell #-}
17−{-# LANGUAGE CPP #-}
1817
1918module Language.PureScript.Kinds where
2019
20+import Prelude ()
21+import Prelude.Compat
22+
2123import Data.Data
2224import qualified Data.Aeson.TH as A
2325
24−#if __GLASGOW_HASKELL__ < 710
25−import Control.Applicative
26−#endif
2726import Control.Monad.Unify (Unknown)
2827
2928-- |
src/Language/PureScript/Linter.hs+3−4
@@ -15,19 +15,18 @@
1515{-# LANGUAGE GeneralizedNewtypeDeriving #-}
1616{-# LANGUAGE FlexibleContexts #-}
1717{-# LANGUAGE ScopedTypeVariables #-}
18−{-# LANGUAGE CPP #-}
1918
2019module Language.PureScript.Linter (lint, module L) where
2120
21+import Prelude ()
22+import Prelude.Compat
23+
2224import Data.List (mapAccumL, nub, (\\))
2325import Data.Maybe (mapMaybe)
2426import Data.Monoid
2527
2628import qualified Data.Set as S
2729
28−#if __GLASGOW_HASKELL__ < 710
29−import Control.Applicative
30−#endif
3130import Control.Monad.Writer.Class
3231
3332import Language.PureScript.Crash
src/Language/PureScript/Linter/Exhaustive.hs+3−4
@@ -18,20 +18,19 @@
1818
1919{-# LANGUAGE FlexibleContexts #-}
2020{-# LANGUAGE ScopedTypeVariables #-}
21−{-# LANGUAGE CPP #-}
2221
2322module Language.PureScript.Linter.Exhaustive
2423 ( checkExhaustive
2524 , checkExhaustiveModule
2625 ) where
2726
27+import Prelude ()
28+import Prelude.Compat
29+
2830import qualified Data.Map as M
2931import Data.Maybe (fromMaybe)
3032import Data.List (foldl', sortBy, nub)
3133import Data.Function (on)
32−#if __GLASGOW_HASKELL__ < 710
33−import Data.Traversable (sequenceA)
34−#endif
3534
3635import Control.Monad (unless)
3736import Control.Applicative
src/Language/PureScript/Linter/Imports.hs+3−4
@@ -1,18 +1,17 @@
11{-# LANGUAGE ScopedTypeVariables #-}
22{-# LANGUAGE FlexibleContexts #-}
3−{-# LANGUAGE CPP #-}
43
54module Language.PureScript.Linter.Imports (findUnusedImports, Name(..), UsedImports()) where
65
6+import Prelude ()
7+import Prelude.Compat
8+
79import qualified Data.Map as M
810import Data.Maybe (mapMaybe)
911import Data.List ((\\), find)
1012import Control.Monad.Error.Class (MonadError(..))
1113import Control.Monad.Writer.Class
1214import Control.Monad(unless,when)
13−#if __GLASGOW_HASKELL__ < 710
14−import Control.Applicative
15−#endif
1615import Data.Foldable (forM_)
1716
1817import Language.PureScript.AST.Declarations
src/Language/PureScript/Make.hs+9−12
@@ -21,7 +21,6 @@
2121{-# LANGUAGE ScopedTypeVariables #-}
2222{-# LANGUAGE MultiParamTypeClasses #-}
2323{-# LANGUAGE TypeFamilies #-}
24−{-# LANGUAGE CPP #-}
2524
2625module Language.PureScript.Make
2726 (
@@ -38,14 +37,16 @@ module Language.PureScript.Make
3837 , buildMakeActions
3938 ) where
4039
41−#if __GLASGOW_HASKELL__ < 710
42−import Control.Applicative
43−#endif
44−import Control.Monad
40+import Prelude ()
41+import Prelude.Compat
42+
43+import Control.Monad hiding (sequence)
4544import Control.Monad.Error.Class (MonadError(..))
4645import Control.Monad.Writer.Class (MonadWriter(..))
46+import Control.Monad.Trans.Class (MonadTrans(..))
4747import Control.Monad.Trans.Except
48−import Control.Monad.Reader
48+import Control.Monad.IO.Class
49+import Control.Monad.Reader (MonadReader(..), ReaderT(..))
4950import Control.Monad.Logger
5051import Control.Monad.Supply
5152import Control.Monad.Base (MonadBase(..))
@@ -58,10 +59,6 @@ import Data.Maybe (fromMaybe, catMaybes)
5859import Data.Time.Clock
5960import Data.String (fromString)
6061import Data.Foldable (for_)
61−#if __GLASGOW_HASKELL__ < 710
62−import Data.Monoid (mempty, mconcat)
63−import Data.Traversable (traverse)
64−#endif
6562import Data.Traversable (for)
6663import Data.Version (showVersion)
6764import Data.Aeson (encode, decode)
@@ -207,12 +204,12 @@ make MakeActions{..} ms = do
207204 -- We need to wait for dependencies to be built, before checking if the current
208205 -- module should be rebuilt, so the first thing to do is to wait on the
209206 -- MVars for the module's dependencies.
210− mexterns <- fmap unzip . sequence <$> mapM (readMVar . fst . fromMaybe (internalError "make: no barrier") . flip lookup barriers) deps
207+ mexterns <- fmap unzip . sequence <$> traverse (readMVar . fst . fromMaybe (internalError "make: no barrier") . flip lookup barriers) deps
211208
212209 case mexterns of
213210 Just (_, externs) -> do
214211 outputTimestamp <- getOutputTimestamp moduleName
215− dependencyTimestamp <- maximumMaybe <$> mapM (fmap shouldExist . getOutputTimestamp) deps
212+ dependencyTimestamp <- maximumMaybe <$> traverse (fmap shouldExist . getOutputTimestamp) deps
216213 inputTimestamp <- getInputTimestamp moduleName
217214
218215 let shouldRebuild = case (inputTimestamp, dependencyTimestamp, outputTimestamp) of
src/Language/PureScript/Parser/JS.hs+3−5
@@ -13,16 +13,15 @@
1313-----------------------------------------------------------------------------
1414
1515{-# LANGUAGE FlexibleContexts #-}
16−{-# LANGUAGE CPP #-}
1716
1817module Language.PureScript.Parser.JS
1918 ( ForeignJS()
2019 , parseForeignModulesFromFiles
2120 ) where
2221
23−#if __GLASGOW_HASKELL__ < 710
24−import Control.Applicative ((*>), (<*))
25−#endif
22+import Prelude ()
23+import Prelude.Compat hiding (lex)
24+
2625import Control.Monad (forM_, when, msum)
2726import Control.Monad.Error.Class (MonadError(..))
2827import Control.Monad.Writer.Class (MonadWriter(..))
@@ -32,7 +31,6 @@ import Language.PureScript.Errors
3231import Language.PureScript.Names
3332import Language.PureScript.Parser.Common
3433import Language.PureScript.Parser.Lexer
35−import Prelude hiding (lex)
3634import qualified Data.Map as M
3735import qualified Text.Parsec as PS
3836
src/Language/PureScript/Parser/Kinds.hs+3−5
@@ -13,18 +13,16 @@
1313--
1414-----------------------------------------------------------------------------
1515
16−{-# LANGUAGE CPP #-}
17−
1816module Language.PureScript.Parser.Kinds (
1917 parseKind
2018) where
2119
20+import Prelude ()
21+import Prelude.Compat
22+
2223import Language.PureScript.Kinds
2324import Language.PureScript.Parser.Common
2425import Language.PureScript.Parser.Lexer
25−#if __GLASGOW_HASKELL__ < 710
26−import Control.Applicative
27−#endif
2826import qualified Text.Parsec as P
2927import qualified Text.Parsec.Expr as P
3028
src/Language/PureScript/Pretty/JS.hs+6−8
@@ -13,20 +13,18 @@
1313--
1414-----------------------------------------------------------------------------
1515
16−{-# LANGUAGE CPP #-}
17−
1816module Language.PureScript.Pretty.JS (
1917 prettyPrintJS
2018) where
2119
22−import Data.List
20+import Prelude ()
21+import Prelude.Compat
22+
23+import Data.List hiding (concat, concatMap)
2324import Data.Maybe (fromMaybe)
2425
25−#if __GLASGOW_HASKELL__ < 710
26−import Control.Applicative
27−#endif
2826import Control.Arrow ((<+>))
29−import Control.Monad.State
27+import Control.Monad.State hiding (sequence)
3028import Control.PatternArrows
3129import qualified Control.Arrow as A
3230
@@ -199,7 +197,7 @@ app :: Pattern PrinterState JS (String, JS)
199197app = mkPattern' match
200198 where
201199 match (JSApp val args) = do
202− jss <- mapM prettyPrintJS' args
200+ jss <- traverse prettyPrintJS' args
203201 return (intercalate ", " jss, val)
204202 match _ = mzero
205203
src/Language/PureScript/Pretty/Values.hs−2
@@ -13,8 +13,6 @@
1313--
1414-----------------------------------------------------------------------------
1515
16−{-# LANGUAGE CPP #-}
17−
1816module Language.PureScript.Pretty.Values (
1917 prettyPrintValue,
2018 prettyPrintBinder,
src/Language/PureScript/Publish.hs+6−8
@@ -2,7 +2,6 @@
22{-# LANGUAGE RecordWildCards #-}
33{-# LANGUAGE TupleSections #-}
44{-# LANGUAGE GeneralizedNewtypeDeriving #-}
5−{-# LANGUAGE CPP #-}
65
76module Language.PureScript.Publish
87 ( preparePackage
@@ -19,7 +18,8 @@ module Language.PureScript.Publish
1918 , getResolvedDependencies
2019 ) where
2120
22−import Prelude hiding (userError)
21+import Prelude ()
22+import Prelude.Compat hiding (userError)
2323
2424import Data.Maybe
2525import Data.Char (isSpace)
@@ -28,15 +28,13 @@ import Data.List.Split (splitOn)
2828import Data.List.NonEmpty (NonEmpty(..))
2929import Data.Version
3030import Data.Function (on)
31+import Data.Foldable (traverse_)
3132import Safe (headMay)
3233import Data.Aeson.BetterErrors
3334import qualified Data.Text as T
3435import qualified Data.Text.Lazy as TL
3536import qualified Data.Text.Lazy.Encoding as TL
3637
37−#if __GLASGOW_HASKELL__ < 710
38−import Control.Applicative
39−#endif
4038import Control.Category ((>>>))
4139import Control.Arrow ((***))
4240import Control.Exception (catch, try)
@@ -304,7 +302,7 @@ asDependencyStatus = do
304302
305303warnUndeclared :: [PackageName] -> [PackageName] -> PrepareM ()
306304warnUndeclared declared actual =
307− mapM_ (warn . UndeclaredDependency) (actual \\ declared)
305+ traverse_ (warn . UndeclaredDependency) (actual \\ declared)
308306
309307handleDeps ::
310308 [(PackageName, DependencyStatus)] -> PrepareM [(PackageName, Version)]
@@ -314,8 +312,8 @@ handleDeps deps = do
314312 (x:xs) ->
315313 userError (MissingDependencies (x :| xs))
316314 [] -> do
317− mapM_ (warn . NoResolvedVersion) noVersion
318− withVersions <- catMaybes <$> mapM tryExtractVersion' installed
315+ traverse_ (warn . NoResolvedVersion) noVersion
316+ withVersions <- catMaybes <$> traverse tryExtractVersion' installed
319317 filterM (liftIO . isPureScript . bowerDir . fst) withVersions
320318
321319 where
src/Language/PureScript/Publish/ErrorsWarnings.hs+3−7
@@ -1,6 +1,5 @@
11{-# LANGUAGE OverloadedStrings #-}
22{-# LANGUAGE RecordWildCards #-}
3−{-# LANGUAGE CPP #-}
43
54module Language.PureScript.Publish.ErrorsWarnings
65 ( PackageError(..)
@@ -16,16 +15,13 @@ module Language.PureScript.Publish.ErrorsWarnings
1615 , renderWarnings
1716 ) where
1817
19−#if __GLASGOW_HASKELL__ < 710
20−import Control.Applicative ((<$>))
21−#endif
18+import Prelude ()
19+import Prelude.Compat
20+
2221import Data.Aeson.BetterErrors
2322import Data.Version
2423import Data.Maybe
2524import Data.Monoid
26−#if __GLASGOW_HASKELL__ < 710
27−import Data.Foldable (foldMap)
28−#endif
2925import Data.List (intersperse, intercalate)
3026import Data.List.NonEmpty (NonEmpty(..))
3127import qualified Data.List.NonEmpty as NonEmpty
src/Language/PureScript/Renamer.hs+13−14
@@ -16,13 +16,12 @@
1616
1717{-# LANGUAGE FlexibleContexts #-}
1818{-# LANGUAGE ScopedTypeVariables #-}
19−{-# LANGUAGE CPP #-}
2019
2120module Language.PureScript.Renamer (renameInModules) where
2221
23−#if __GLASGOW_HASKELL__ < 710
24−import Control.Applicative
25−#endif
22+import Prelude ()
23+import Prelude.Compat
24+
2625import Control.Monad.State
2726
2827import Data.List (find)
@@ -135,8 +134,8 @@ renameInDecl isTopLevel (NonRec name val) = do
135134 name' <- if isTopLevel then return name else updateScope name
136135 NonRec name' <$> renameInValue val
137136renameInDecl isTopLevel (Rec ds) = do
138− ds' <- mapM updateNames ds
139− Rec <$> mapM updateValues ds'
137+ ds' <- traverse updateNames ds
138+ Rec <$> traverse updateValues ds'
140139 where
141140 updateNames :: (Ident, Expr Ann) -> Rename (Ident, Expr Ann)
142141 updateNames (name, val) = do
@@ -155,7 +154,7 @@ renameInValue c@(Constructor{}) = return c
155154renameInValue (Accessor ann prop v) =
156155 Accessor ann prop <$> renameInValue v
157156renameInValue (ObjectUpdate ann obj vs) =
158− ObjectUpdate ann <$> renameInValue obj <*> mapM (\(name, v) -> (,) name <$> renameInValue v) vs
157+ ObjectUpdate ann <$> renameInValue obj <*> traverse (\(name, v) -> (,) name <$> renameInValue v) vs
159158renameInValue e@(Abs (_, _, _, Just IsTypeClassConstructor) _ _) = return e
160159renameInValue (Abs ann name v) =
161160 newScope $ Abs ann <$> updateScope name <*> renameInValue v
@@ -165,16 +164,16 @@ renameInValue (Var ann (Qualified Nothing name)) =
165164 Var ann . Qualified Nothing <$> lookupIdent name
166165renameInValue v@(Var{}) = return v
167166renameInValue (Case ann vs alts) =
168− newScope $ Case ann <$> mapM renameInValue vs <*> mapM renameInCaseAlternative alts
167+ newScope $ Case ann <$> traverse renameInValue vs <*> traverse renameInCaseAlternative alts
169168renameInValue (Let ann ds v) =
170− newScope $ Let ann <$> mapM (renameInDecl False) ds <*> renameInValue v
169+ newScope $ Let ann <$> traverse (renameInDecl False) ds <*> renameInValue v
171170
172171-- |
173172-- Renames within literals.
174173--
175174renameInLiteral :: (a -> Rename a) -> Literal a -> Rename (Literal a)
176−renameInLiteral rename (ArrayLiteral bs) = ArrayLiteral <$> mapM rename bs
177−renameInLiteral rename (ObjectLiteral bs) = ObjectLiteral <$> mapM (sndM rename) bs
175+renameInLiteral rename (ArrayLiteral bs) = ArrayLiteral <$> traverse rename bs
176+renameInLiteral rename (ObjectLiteral bs) = ObjectLiteral <$> traverse (sndM rename) bs
178177renameInLiteral _ l = return l
179178
180179-- |
@@ -182,8 +181,8 @@ renameInLiteral _ l = return l
182181--
183182renameInCaseAlternative :: CaseAlternative Ann -> Rename (CaseAlternative Ann)
184183renameInCaseAlternative (CaseAlternative bs v) = newScope $
185− CaseAlternative <$> mapM renameInBinder bs
186− <*> eitherM (mapM (pairM renameInValue renameInValue)) renameInValue v
184+ CaseAlternative <$> traverse renameInBinder bs
185+ <*> eitherM (traverse (pairM renameInValue renameInValue)) renameInValue v
187186
188187-- |
189188-- Renames within binders.
@@ -195,6 +194,6 @@ renameInBinder (LiteralBinder ann b) =
195194renameInBinder (VarBinder ann name) =
196195 VarBinder ann <$> updateScope name
197196renameInBinder (ConstructorBinder ann tctor dctor bs) =
198− ConstructorBinder ann tctor dctor <$> mapM renameInBinder bs
197+ ConstructorBinder ann tctor dctor <$> traverse renameInBinder bs
199198renameInBinder (NamedBinder ann name b) =
200199 NamedBinder ann <$> updateScope name <*> renameInBinder b
src/Language/PureScript/Sugar.hs+7−8
@@ -14,15 +14,14 @@
1414-----------------------------------------------------------------------------
1515
1616{-# LANGUAGE FlexibleContexts #-}
17−{-# LANGUAGE CPP #-}
1817
1918module Language.PureScript.Sugar (desugar, module S) where
2019
20+import Prelude ()
21+import Prelude.Compat
22+
2123import Control.Monad
2224import Control.Category ((>>>))
23−#if __GLASGOW_HASKELL__ < 710
24−import Control.Applicative
25−#endif
2625import Control.Monad.Error.Class (MonadError())
2726import Control.Monad.Writer.Class (MonadWriter())
2827import Control.Monad.Supply.Class
@@ -67,13 +66,13 @@ import Language.PureScript.Sugar.TypeDeclarations as S
6766desugar :: (Applicative m, MonadSupply m, MonadError MultipleErrors m, MonadWriter MultipleErrors m) => [ExternsFile] -> [Module] -> m [Module]
6867desugar externs =
6968 map removeSignedLiterals
70− >>> mapM desugarObjectConstructors
71− >=> mapM desugarOperatorSections
72− >=> mapM desugarDoModule
69+ >>> traverse desugarObjectConstructors
70+ >=> traverse desugarOperatorSections
71+ >=> traverse desugarDoModule
7372 >=> desugarCasesModule
7473 >=> desugarTypeDeclarationsModule
7574 >=> desugarImports externs
7675 >=> rebracket externs
77− >=> mapM deriveInstances
76+ >=> traverse deriveInstances
7877 >=> desugarTypeClasses externs
7978 >=> createBindingGroupsModule
src/Language/PureScript/Sugar/BindingGroups.hs+3−5
@@ -15,7 +15,6 @@
1515-----------------------------------------------------------------------------
1616
1717{-# LANGUAGE FlexibleContexts #-}
18−{-# LANGUAGE CPP #-}
1918{-# LANGUAGE ScopedTypeVariables #-}
2019
2120module Language.PureScript.Sugar.BindingGroups (
@@ -25,13 +24,12 @@ module Language.PureScript.Sugar.BindingGroups (
2524 collapseBindingGroupsModule
2625) where
2726
27+import Prelude ()
28+import Prelude.Compat
29+
2830import Data.Graph
2931import Data.List (nub, intersect)
3032import Data.Maybe (isJust, mapMaybe)
31−#if __GLASGOW_HASKELL__ < 710
32−import Data.Foldable (foldMap)
33−import Control.Applicative
34−#endif
3533import Control.Monad ((<=<))
3634import Control.Monad.Error.Class (MonadError(..))
3735
src/Language/PureScript/Sugar/CaseDeclarations.hs+3−4
@@ -16,20 +16,19 @@
1616
1717{-# LANGUAGE FlexibleContexts #-}
1818{-# LANGUAGE ScopedTypeVariables #-}
19−{-# LANGUAGE CPP #-}
2019
2120module Language.PureScript.Sugar.CaseDeclarations (
2221 desugarCases,
2322 desugarCasesModule
2423) where
2524
25+import Prelude ()
26+import Prelude.Compat
27+
2628import Language.PureScript.Crash
2729import Data.Maybe (catMaybes)
2830import Data.List (nub, groupBy)
2931
30−#if __GLASGOW_HASKELL__ < 710
31−import Control.Applicative
32−#endif
3332import Control.Monad ((<=<), forM, replicateM, join, unless)
3433import Control.Monad.Error.Class (MonadError(..))
3534import Control.Monad.Supply.Class
src/Language/PureScript/Sugar/DoNotation.hs+3−4
@@ -16,12 +16,14 @@
1616
1717{-# LANGUAGE FlexibleContexts #-}
1818{-# LANGUAGE ScopedTypeVariables #-}
19−{-# LANGUAGE CPP #-}
2019
2120module Language.PureScript.Sugar.DoNotation (
2221 desugarDoModule
2322) where
2423
24+import Prelude ()
25+import Prelude.Compat
26+
2527import Language.PureScript.Crash
2628import Language.PureScript.Names
2729import Language.PureScript.AST
@@ -29,9 +31,6 @@ import Language.PureScript.Errors
2931
3032import qualified Language.PureScript.Constants as C
3133
32−#if __GLASGOW_HASKELL__ < 710
33−import Control.Applicative
34−#endif
3534import Control.Monad.Error.Class (MonadError(..))
3635import Control.Monad.Supply.Class
3736
src/Language/PureScript/Sugar/Names.hs+7−9
@@ -11,20 +11,18 @@
1111--
1212-----------------------------------------------------------------------------
1313
14−{-# LANGUAGE CPP #-}
1514{-# LANGUAGE FlexibleContexts #-}
1615{-# LANGUAGE RecordWildCards #-}
1716{-# LANGUAGE ScopedTypeVariables #-}
1817
1918module Language.PureScript.Sugar.Names (desugarImports) where
2019
20+import Prelude ()
21+import Prelude.Compat
22+
2123import Data.List (find, nub)
2224import Data.Maybe (fromMaybe, mapMaybe)
2325
24−#if __GLASGOW_HASKELL__ < 710
25−import Data.Monoid (mempty)
26−import Control.Applicative (Applicative(..), (<$>), (<*>))
27−#endif
2826import Control.Monad
2927import Control.Monad.Error.Class (MonadError(..))
3028import Control.Monad.Writer (MonadWriter(..), censor)
@@ -52,7 +50,7 @@ desugarImports :: forall m. (Applicative m, MonadError MultipleErrors m, MonadWr
5250desugarImports externs modules = do
5351 env <- silence $ foldM externsEnv primEnv externs
5452 env' <- foldM updateEnv env modules
55− mapM (renameInModule' env') modules
53+ traverse (renameInModule' env') modules
5654 where
5755 silence :: m a -> m a
5856 silence = censor (const mempty)
@@ -161,13 +159,13 @@ renameInModule env imports (Module ss coms mn decls exps) =
161159 updateDecl (_, bound) d@(PositionedDeclaration pos _ _) =
162160 return ((Just pos, bound), d)
163161 updateDecl (pos, bound) (DataDeclaration dtype name args dctors) =
164− (,) (pos, bound) <$> (DataDeclaration dtype name args <$> mapM (sndM (mapM (updateTypesEverywhere pos))) dctors)
162+ (,) (pos, bound) <$> (DataDeclaration dtype name args <$> traverse (sndM (traverse (updateTypesEverywhere pos))) dctors)
165163 updateDecl (pos, bound) (TypeSynonymDeclaration name ps ty) =
166164 (,) (pos, bound) <$> (TypeSynonymDeclaration name ps <$> updateTypesEverywhere pos ty)
167165 updateDecl (pos, bound) (TypeClassDeclaration className args implies ds) =
168166 (,) (pos, bound) <$> (TypeClassDeclaration className args <$> updateConstraints pos implies <*> pure ds)
169167 updateDecl (pos, bound) (TypeInstanceDeclaration name cs cn ts ds) =
170− (,) (pos, bound) <$> (TypeInstanceDeclaration name <$> updateConstraints pos cs <*> updateClassName cn pos <*> mapM (updateTypesEverywhere pos) ts <*> pure ds)
168+ (,) (pos, bound) <$> (TypeInstanceDeclaration name <$> updateConstraints pos cs <*> updateClassName cn pos <*> traverse (updateTypesEverywhere pos) ts <*> pure ds)
171169 updateDecl (pos, bound) (TypeDeclaration name ty) =
172170 (,) (pos, bound) <$> (TypeDeclaration name <$> updateTypesEverywhere pos ty)
173171 updateDecl (pos, bound) (ExternDeclaration name ty) =
@@ -225,7 +223,7 @@ renameInModule env imports (Module ss coms mn decls exps) =
225223 updateType t = return t
226224
227225 updateConstraints :: Maybe SourceSpan -> [Constraint] -> m [Constraint]
228− updateConstraints pos = mapM (\(name, ts) -> (,) <$> updateClassName name pos <*> mapM (updateTypesEverywhere pos) ts)
226+ updateConstraints pos = traverse (\(name, ts) -> (,) <$> updateClassName name pos <*> traverse (updateTypesEverywhere pos) ts)
229227
230228 updateTypeName :: Qualified ProperName -> Maybe SourceSpan -> m (Qualified ProperName)
231229 updateTypeName = update UnknownType (importedTypes imports) (resolveType . exportedTypes) IsProperName
src/Language/PureScript/Sugar/Names/Exports.hs+5−5
@@ -11,7 +11,6 @@
1111--
1212-----------------------------------------------------------------------------
1313
14−{-# LANGUAGE CPP #-}
1514{-# LANGUAGE FlexibleContexts #-}
1615{-# LANGUAGE RankNTypes #-}
1716{-# LANGUAGE ScopedTypeVariables #-}
@@ -22,12 +21,13 @@ module Language.PureScript.Sugar.Names.Exports
2221 , resolveExports
2322 ) where
2423
24+import Prelude ()
25+import Prelude.Compat
26+
2527import Data.List (find, intersect)
2628import Data.Maybe (fromMaybe, mapMaybe)
29+import Data.Foldable (traverse_)
2730
28−#if __GLASGOW_HASKELL__ < 710
29−import Control.Applicative (Applicative(..), (<$>))
30−#endif
3131import Control.Monad
3232import Control.Monad.Error.Class (MonadError(..))
3333
@@ -197,7 +197,7 @@ filterModule mn exps refs = do
197197 Nothing -> throwError . errorMessage . UnknownExportType $ name
198198 Just ((_, dcons), _) -> do
199199 let expDcons' = fromMaybe dcons expDcons
200− mapM_ (checkDcon name dcons) expDcons'
200+ traverse_ (checkDcon name dcons) expDcons'
201201 return $ ((name, expDcons'), mn) : result
202202 filterTypes _ result _ = return result
203203
src/Language/PureScript/Sugar/Names/Imports.hs+8−8
@@ -11,7 +11,6 @@
1111--
1212-----------------------------------------------------------------------------
1313
14−{-# LANGUAGE CPP #-}
1514{-# LANGUAGE FlexibleContexts #-}
1615{-# LANGUAGE ScopedTypeVariables #-}
1716{-# LANGUAGE TupleSections #-}
@@ -22,13 +21,14 @@ module Language.PureScript.Sugar.Names.Imports
2221 , findImports
2322 ) where
2423
24+import Prelude ()
25+import Prelude.Compat
26+
2527import Data.List (find)
2628import Data.Maybe (fromMaybe, isNothing)
29+import Data.Foldable (traverse_)
2730
2831import Control.Arrow (first)
29−#if __GLASGOW_HASKELL__ < 710
30−import Control.Applicative (Applicative(..), (<$>))
31−#endif
3232import Control.Monad
3333import Control.Monad.Error.Class (MonadError(..))
3434import Control.Monad.Writer (MonadWriter(..), censor)
@@ -57,7 +57,7 @@ findImports = foldM (go Nothing) M.empty
5757
5858 -- Ensure that classes don't appear in an `import X hiding (...)`
5959 checkImportRefType :: ImportDeclarationType -> m ()
60− checkImportRefType (Hiding refs) = mapM_ checkImportRef refs
60+ checkImportRefType (Hiding refs) = traverse_ checkImportRef refs
6161 checkImportRefType _ = return ()
6262 checkImportRef :: DeclarationRef -> m ()
6363 checkImportRef (ModuleRef name) = throwError . errorMessage $ ImportHidingModule name
@@ -105,7 +105,7 @@ resolveImport currentModule importModule exps imps impQual =
105105
106106 -- Check that a 'DeclarationRef' refers to an importable symbol
107107 checkRefs :: [DeclarationRef] -> m ()
108− checkRefs = mapM_ check
108+ checkRefs = traverse_ check
109109 where
110110 check (PositionedDeclarationRef pos _ r) =
111111 rethrowWithPosition pos $ check r
@@ -114,7 +114,7 @@ resolveImport currentModule importModule exps imps impQual =
114114 check (TypeRef name dctors) = do
115115 checkImportExists UnknownImportType ((fst . fst) `map` exportedTypes exps) name
116116 let allDctors = fst `map` allExportedDataConstructors name
117− maybe (return ()) (mapM_ $ checkDctorExists name allDctors) dctors
117+ maybe (return ()) (traverse_ $ checkDctorExists name allDctors) dctors
118118 check (TypeClassRef name) =
119119 checkImportExists UnknownImportTypeClass (fst `map` exportedTypeClasses exps) name
120120 --check (ModuleRef name) =
@@ -168,7 +168,7 @@ resolveImport currentModule importModule exps imps impQual =
168168 exportedDctors = allExportedDataConstructors name
169169 dctorNames :: [ProperName]
170170 dctorNames = fst `map` exportedDctors
171− maybe (return ()) (mapM_ $ checkDctorExists name dctorNames) dctors
171+ maybe (return ()) (traverse_ $ checkDctorExists name dctorNames) dctors
172172 when (null dctorNames && isNothing dctors) . tell . errorMessage $ MisleadingEmptyTypeImport importModule name
173173 dctors' <- foldM (\m -> updateImports m runProperName exportedDctors) (importedDataConstructors imp) (fromMaybe dctorNames dctors)
174174 return $ imp { importedTypes = types', importedDataConstructors = dctors' }
src/Language/PureScript/Sugar/ObjectWildcards.hs+3−4
@@ -14,15 +14,14 @@
1414
1515{-# LANGUAGE FlexibleContexts #-}
1616{-# LANGUAGE ScopedTypeVariables #-}
17−{-# LANGUAGE CPP #-}
1817
1918module Language.PureScript.Sugar.ObjectWildcards (
2019 desugarObjectConstructors
2120) where
2221
23−#if __GLASGOW_HASKELL__ < 710
24−import Control.Applicative
25−#endif
22+import Prelude ()
23+import Prelude.Compat
24+
2625import Control.Arrow (second)
2726import Control.Monad.Error.Class (MonadError(..))
2827import Control.Monad.Supply.Class
src/Language/PureScript/Sugar/Operators.hs+5−6
@@ -21,7 +21,6 @@
2121{-# LANGUAGE FlexibleContexts #-}
2222{-# LANGUAGE ScopedTypeVariables #-}
2323{-# LANGUAGE RecordWildCards #-}
24−{-# LANGUAGE CPP #-}
2524
2625module Language.PureScript.Sugar.Operators (
2726 rebracket,
@@ -29,15 +28,15 @@ module Language.PureScript.Sugar.Operators (
2928 desugarOperatorSections
3029) where
3130
31+import Prelude ()
32+import Prelude.Compat
33+
3234import Language.PureScript.Crash
3335import Language.PureScript.AST
3436import Language.PureScript.Errors
3537import Language.PureScript.Names
3638import Language.PureScript.Externs
3739
38−#if __GLASGOW_HASKELL__ < 710
39−import Control.Applicative
40−#endif
4140import Control.Monad.State
4241import Control.Monad.Error.Class (MonadError(..))
4342import Control.Monad.Supply.Class
@@ -60,7 +59,7 @@ rebracket externs ms = do
6059 let fixities = concatMap externsFixities externs ++ concatMap collectFixities ms
6160 ensureNoDuplicates $ map (\(i, pos, _) -> (i, pos)) fixities
6261 let opTable = customOperatorTable $ map (\(i, _, f) -> (i, f)) fixities
63− mapM (rebracketModule opTable) ms
62+ traverse (rebracketModule opTable) ms
6463
6564removeSignedLiterals :: Module -> Module
6665removeSignedLiterals (Module ss coms mn ds exts) = Module ss coms mn (map f' ds) exts
@@ -164,7 +163,7 @@ matchOp op = do
164163 guard $ ident == op
165164
166165desugarOperatorSections :: forall m. (Applicative m, MonadSupply m, MonadError MultipleErrors m) => Module -> m Module
167−desugarOperatorSections (Module ss coms mn ds exts) = Module ss coms mn <$> mapM goDecl ds <*> pure exts
166+desugarOperatorSections (Module ss coms mn ds exts) = Module ss coms mn <$> traverse goDecl ds <*> pure exts
168167 where
169168
170169 goDecl :: Declaration -> m Declaration
src/Language/PureScript/Sugar/TypeClasses.hs+5−6
@@ -16,7 +16,6 @@
1616
1717{-# LANGUAGE FlexibleContexts #-}
1818{-# LANGUAGE RecordWildCards #-}
19−{-# LANGUAGE CPP #-}
2019
2120module Language.PureScript.Sugar.TypeClasses
2221 ( desugarTypeClasses
@@ -24,6 +23,9 @@ module Language.PureScript.Sugar.TypeClasses
2423 , superClassDictionaryNames
2524 ) where
2625
26+import Prelude ()
27+import Prelude.Compat
28+
2729import Language.PureScript.Crash
2830import Language.PureScript.AST hiding (isExported)
2931import Language.PureScript.Environment
@@ -37,9 +39,6 @@ import Language.PureScript.Types
3739
3840import qualified Language.PureScript.Constants as C
3941
40−#if __GLASGOW_HASKELL__ < 710
41−import Control.Applicative
42−#endif
4342import Control.Arrow (first, second)
4443import Control.Monad.Error.Class (MonadError(..))
4544import Control.Monad.State
@@ -57,7 +56,7 @@ type Desugar = StateT MemberMap
5756-- instance dictionary expressions.
5857--
5958desugarTypeClasses :: (Functor m, Applicative m, MonadSupply m, MonadError MultipleErrors m) => [ExternsFile] -> [Module] -> m [Module]
60−desugarTypeClasses externs = flip evalStateT initialState . mapM desugarModule
59+desugarTypeClasses externs = flip evalStateT initialState . traverse desugarModule
6160 where
6261 initialState :: MemberMap
6362 initialState = M.fromList (externs >>= \ExternsFile{..} -> mapMaybe (fromExternsDecl efModuleName) efDeclarations)
@@ -262,7 +261,7 @@ typeInstanceDictionaryDeclaration name mn deps className tys decls =
262261 let memberTypes = map (second (replaceAllTypeVars (zip (map fst args) tys))) instanceTys
263262
264263 -- Create values for the type instance members
265− members <- zip (map typeClassMemberName decls) <$> mapM (memberToValue memberTypes) decls
264+ members <- zip (map typeClassMemberName decls) <$> traverse (memberToValue memberTypes) decls
266265
267266 -- Create the type of the dictionary
268267 -- The type is an object type, but depending on type instance dependencies, may be constrained.
src/Language/PureScript/Sugar/TypeClasses/Deriving.hs+4−5
@@ -19,19 +19,18 @@
1919{-# LANGUAGE PatternGuards #-}
2020{-# LANGUAGE RankNTypes #-}
2121{-# LANGUAGE ScopedTypeVariables #-}
22−{-# LANGUAGE CPP #-}
2322
2423module Language.PureScript.Sugar.TypeClasses.Deriving (
2524 deriveInstances
2625) where
2726
28−import Data.List
27+import Prelude ()
28+import Prelude.Compat
29+
30+import Data.List (foldl', find, sortBy)
2931import Data.Maybe (fromMaybe)
3032import Data.Ord (comparing)
3133
32−#if __GLASGOW_HASKELL__ < 710
33−import Control.Applicative
34−#endif
3534import Control.Monad (replicateM)
3635import Control.Monad.Supply.Class (MonadSupply, freshName)
3736import Control.Monad.Error.Class (MonadError(..))
src/Language/PureScript/Sugar/TypeDeclarations.hs+3−4
@@ -16,15 +16,14 @@
1616
1717{-# LANGUAGE FlexibleContexts #-}
1818{-# LANGUAGE ScopedTypeVariables #-}
19−{-# LANGUAGE CPP #-}
2019
2120module Language.PureScript.Sugar.TypeDeclarations (
2221 desugarTypeDeclarationsModule
2322) where
2423
25−#if __GLASGOW_HASKELL__ < 710
26−import Control.Applicative
27−#endif
24+import Prelude ()
25+import Prelude.Compat
26+
2827import Control.Monad (forM)
2928import Control.Monad.Error.Class (MonadError(..))
3029
src/Language/PureScript/Traversals.hs+2−5
@@ -12,13 +12,10 @@
1212--
1313-----------------------------------------------------------------------------
1414
15−{-# LANGUAGE CPP #-}
16−
1715module Language.PureScript.Traversals where
1816
19−#if __GLASGOW_HASKELL__ < 710
20−import Control.Applicative
21−#endif
17+import Prelude ()
18+import Prelude.Compat
2219
2320fstM :: (Functor f) => (a -> f c) -> (a, b) -> f (c, b)
2421fstM f (a, b) = flip (,) b <$> f a
src/Language/PureScript/TypeChecker.hs+8−9
@@ -14,13 +14,15 @@
1414-----------------------------------------------------------------------------
1515
1616{-# LANGUAGE FlexibleInstances #-}
17−{-# LANGUAGE CPP #-}
1817
1918module Language.PureScript.TypeChecker (
2019 module T,
2120 typeCheckModule
2221) where
2322
23+import Prelude ()
24+import Prelude.Compat
25+
2426import Language.PureScript.TypeChecker.Monad as T
2527import Language.PureScript.TypeChecker.Kinds as T
2628import Language.PureScript.TypeChecker.Types as T
@@ -28,13 +30,10 @@ import Language.PureScript.TypeChecker.Synonyms as T
2830
2931import Data.Maybe
3032import Data.List (nub, (\\), sort, group)
31−import Data.Foldable (for_)
33+import Data.Foldable (for_, traverse_)
3234
3335import qualified Data.Map as M
3436
35−#if __GLASGOW_HASKELL__ < 710
36−import Control.Applicative ((<$>), (<*))
37−#endif
3837import Control.Monad.State
3938import Control.Monad.Error.Class (MonadError(..))
4039
@@ -58,7 +57,7 @@ addDataType moduleName dtype name args dctors ctorKind = do
5857addDataConstructor :: ModuleName -> DataDeclType -> ProperName -> [String] -> ProperName -> [Type] -> Check ()
5958addDataConstructor moduleName dtype name args dctor tys = do
6059 env <- getEnv
61− mapM_ checkTypeSynonyms tys
60+ traverse_ checkTypeSynonyms tys
6261 let retTy = foldl TypeApp (TypeConstructor (Qualified (Just moduleName) name)) (map TypeVar args)
6362 let dctorTy = foldr function retTy tys
6463 let polyType = mkForAll args dctorTy
@@ -134,7 +133,7 @@ checkTypeSynonyms = void . replaceAllTypeSynonyms
134133-- * Process module imports
135134--
136135typeCheckAll :: ModuleName -> [DeclarationRef] -> [Declaration] -> Check [Declaration]
137−typeCheckAll moduleName _ ds = mapM go ds <* mapM_ checkOrphanFixities ds
136+typeCheckAll moduleName _ ds = traverse go ds <* traverse_ checkOrphanFixities ds
138137 where
139138 go :: Declaration -> Check Declaration
140139 go (DataDeclaration dtype name args dctors) = do
@@ -218,8 +217,8 @@ typeCheckAll moduleName _ ds = mapM go ds <* mapM_ checkOrphanFixities ds
218217 addTypeClass moduleName pn args implies tys
219218 return d
220219 go (d@(TypeInstanceDeclaration dictName deps className tys body)) = rethrow (addHint (ErrorInInstance className tys)) $ do
221− mapM_ (checkTypeClassInstance moduleName) tys
222− forM_ deps $ mapM_ (checkTypeClassInstance moduleName) . snd
220+ traverse_ (checkTypeClassInstance moduleName) tys
221+ forM_ deps $ traverse_ (checkTypeClassInstance moduleName) . snd
223222 checkOrphanInstance dictName className tys
224223 _ <- traverseTypeInstanceBody checkInstanceMembers body
225224 let dict = TypeClassDictionaryInScope (Qualified (Just moduleName) dictName) [] className tys (Just deps)
src/Language/PureScript/TypeChecker/Entailment.hs+5−10
@@ -13,23 +13,18 @@
1313--
1414-----------------------------------------------------------------------------
1515
16−{-# LANGUAGE CPP #-}
17−
1816module Language.PureScript.TypeChecker.Entailment (
1917 entails
2018) where
2119
20+import Prelude ()
21+import Prelude.Compat
22+
2223import Data.Function (on)
23−import Data.List
24+import Data.List (minimumBy, sortBy, groupBy)
2425import Data.Maybe (maybeToList, mapMaybe)
25−#if __GLASGOW_HASKELL__ < 710
26−import Data.Foldable (foldMap)
27−#endif
2826import qualified Data.Map as M
2927
30−#if __GLASGOW_HASKELL__ < 710
31−import Control.Applicative
32−#endif
3328import Control.Arrow (Arrow(..))
3429import Control.Monad.State
3530import Control.Monad.Error.Class (MonadError(..))
@@ -112,7 +107,7 @@ entails moduleName context = solve
112107 solveSubgoals :: [(String, Type)] -> Maybe [Constraint] -> Check (Maybe [DictionaryValue])
113108 solveSubgoals _ Nothing = return Nothing
114109 solveSubgoals subst (Just subgoals) = do
115− dict <- mapM (uncurry (go (work + 1)) . second (map (replaceAllTypeVars subst))) subgoals
110+ dict <- traverse (uncurry (go (work + 1)) . second (map (replaceAllTypeVars subst))) subgoals
116111 return $ Just dict
117112
118113 -- Make a dictionary from subgoal dictionaries by applying the correct function
src/Language/PureScript/TypeChecker/Kinds.hs+4−5
@@ -17,7 +17,6 @@
1717{-# LANGUAGE MultiParamTypeClasses #-}
1818{-# LANGUAGE FlexibleInstances #-}
1919{-# LANGUAGE TupleSections #-}
20−{-# LANGUAGE CPP #-}
2120
2221module Language.PureScript.TypeChecker.Kinds (
2322 kindOf,
@@ -26,15 +25,15 @@ module Language.PureScript.TypeChecker.Kinds (
2625 kindsOfAll
2726) where
2827
28+import Prelude ()
29+import Prelude.Compat
30+
2931import Data.Maybe (fromMaybe)
3032
3133import qualified Data.HashMap.Strict as H
3234import qualified Data.Map as M
3335
3436import Control.Arrow (second)
35−#if __GLASGOW_HASKELL__ < 710
36−import Control.Applicative
37−#endif
3837import Control.Monad
3938import Control.Monad.Error.Class (MonadError(..))
4039import Control.Monad.State
@@ -141,7 +140,7 @@ kindsOfAll moduleName syns tys = fmap tidyUp . liftUnify $ do
141140--
142141solveTypes :: Bool -> [Type] -> [Kind] -> Kind -> UnifyT Kind Check Kind
143142solveTypes isData ts kargs tyCon = do
144− ks <- mapM (fmap fst . infer) ts
143+ ks <- traverse (fmap fst . infer) ts
145144 when isData $ do
146145 tyCon =?= foldr FunKind Star kargs
147146 forM_ ks $ \k -> k =?= Star
src/Language/PureScript/TypeChecker/Monad.hs+3−4
@@ -19,17 +19,16 @@
1919{-# LANGUAGE MultiParamTypeClasses #-}
2020{-# LANGUAGE FlexibleContexts #-}
2121{-# LANGUAGE GADTs #-}
22−{-# LANGUAGE CPP #-}
2322
2423module Language.PureScript.TypeChecker.Monad where
2524
25+import Prelude ()
26+import Prelude.Compat
27+
2628import Data.Maybe
2729import Data.Foldable (for_)
2830import qualified Data.Map as M
2931
30−#if __GLASGOW_HASKELL__ < 710
31−import Control.Applicative
32−#endif
3332import Control.Monad.State
3433import Control.Monad.Unify
3534import Control.Monad.Writer.Strict
src/Language/PureScript/TypeChecker/Skolems.hs+3−5
@@ -13,8 +13,6 @@
1313--
1414-----------------------------------------------------------------------------
1515
16−{-# LANGUAGE CPP #-}
17−
1816module Language.PureScript.TypeChecker.Skolems (
1917 newSkolemConstant,
2018 introduceSkolemScope,
@@ -24,12 +22,12 @@ module Language.PureScript.TypeChecker.Skolems (
2422 skolemEscapeCheck
2523) where
2624
25+import Prelude ()
26+import Prelude.Compat
27+
2728import Data.List (nub, (\\))
2829import Data.Monoid
2930
30−#if __GLASGOW_HASKELL__ < 710
31−import Control.Applicative
32−#endif
3331import Control.Monad.Error.Class (MonadError(..))
3432import Control.Monad.Unify
3533
src/Language/PureScript/TypeChecker/Synonyms.hs+3−4
@@ -17,18 +17,17 @@
1717{-# LANGUAGE MultiParamTypeClasses #-}
1818{-# LANGUAGE PatternGuards #-}
1919{-# LANGUAGE GADTs #-}
20−{-# LANGUAGE CPP #-}
2120
2221module Language.PureScript.TypeChecker.Synonyms (
2322 replaceAllTypeSynonyms
2423) where
2524
25+import Prelude ()
26+import Prelude.Compat
27+
2628import Data.Maybe (fromMaybe)
2729import qualified Data.Map as M
2830
29−#if __GLASGOW_HASKELL__ < 710
30−import Control.Applicative
31−#endif
3231import Control.Monad.Error.Class (MonadError(..))
3332import Control.Monad.State
3433
src/Language/PureScript/TypeChecker/Types.hs+8−9
@@ -16,7 +16,6 @@
1616{-# LANGUAGE FlexibleContexts #-}
1717{-# LANGUAGE MultiParamTypeClasses #-}
1818{-# LANGUAGE OverloadedStrings #-}
19−{-# LANGUAGE CPP #-}
2019
2120module Language.PureScript.TypeChecker.Types (
2221 typesOf
@@ -38,14 +37,14 @@ module Language.PureScript.TypeChecker.Types (
3837 Check a function of a given type returns a value of another type when applied to its arguments
3938-}
4039
40+import Prelude ()
41+import Prelude.Compat
42+
4143import Data.Either (lefts, rights)
42−import Data.List
44+import Data.List (transpose, nub, (\\), partition, delete)
4345import Data.Maybe (fromMaybe)
4446import qualified Data.Map as M
4547
46−#if __GLASGOW_HASKELL__ < 710
47−import Control.Applicative
48−#endif
4948import Control.Monad
5049import Control.Monad.State
5150import Control.Monad.Unify
@@ -213,20 +212,20 @@ infer' v@(StringLiteral _) = return $ TypedValue True v tyString
213212infer' v@(CharLiteral _) = return $ TypedValue True v tyChar
214213infer' v@(BooleanLiteral _) = return $ TypedValue True v tyBoolean
215214infer' (ArrayLiteral vals) = do
216− ts <- mapM infer vals
215+ ts <- traverse infer vals
217216 els <- fresh
218217 forM_ ts $ \(TypedValue _ _ t) -> els =?= t
219218 return $ TypedValue True (ArrayLiteral ts) (TypeApp tyArray els)
220219infer' (ObjectLiteral ps) = do
221220 ensureNoDuplicateProperties ps
222− ts <- mapM (infer . snd) ps
221+ ts <- traverse (infer . snd) ps
223222 let fields = zipWith (\name (TypedValue _ _ t) -> (name, t)) (map fst ps) ts
224223 ty = TypeApp tyObject $ rowFromList (fields, REmpty)
225224 return $ TypedValue True (ObjectLiteral (zip (map fst ps) ts)) ty
226225infer' (ObjectUpdate o ps) = do
227226 ensureNoDuplicateProperties ps
228227 row <- fresh
229− newVals <- zipWith (\(name, _) t -> (name, t)) ps <$> mapM (infer . snd) ps
228+ newVals <- zipWith (\(name, _) t -> (name, t)) ps <$> traverse (infer . snd) ps
230229 let newTys = map (\(name, TypedValue _ _ ty) -> (name, ty)) newVals
231230 oldTys <- zip (map fst ps) <$> replicateM (length ps) fresh
232231 let oldTy = TypeApp tyObject $ rowFromList (oldTys, row)
@@ -365,7 +364,7 @@ inferBinder val (ObjectBinder props) = do
365364 return $ m1 `M.union` m2
366365inferBinder val (ArrayBinder binders) = do
367366 el <- fresh
368− m1 <- M.unions <$> mapM (inferBinder el) binders
367+ m1 <- M.unions <$> traverse (inferBinder el) binders
369368 val =?= TypeApp tyArray el
370369 return m1
371370inferBinder val (NamedBinder name binder) = do
src/Language/PureScript/Types.hs+3−4
@@ -16,10 +16,12 @@
1616{-# LANGUAGE DeriveDataTypeable #-}
1717{-# LANGUAGE GeneralizedNewtypeDeriving #-}
1818{-# LANGUAGE TemplateHaskell #-}
19−{-# LANGUAGE CPP #-}
2019
2120module Language.PureScript.Types where
2221
22+import Prelude ()
23+import Prelude.Compat
24+
2325import Data.Data
2426import Data.List (nub)
2527import Data.Maybe (fromMaybe)
@@ -28,9 +30,6 @@ import qualified Data.Aeson.TH as A
2830
2931import Control.Monad.Unify
3032import Control.Arrow (second)
31−#if __GLASGOW_HASKELL__ < 710
32−import Control.Applicative
33−#endif
3433import Control.Monad ((<=<))
3534
3635import Language.PureScript.Names