diff --git a/CHANGES.txt b/CHANGES.txt
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,5 +1,8 @@
 Changelog for HLint
 
+1.9.15
+    #106, avoid warnings with GHC 7.10
+    #105, build with GHC 7.10
 1.9.14
     #649, don't suggest const for values using RecordWildCards
 1.9.13
diff --git a/data/Default.hs b/data/Default.hs
--- a/data/Default.hs
+++ b/data/Default.hs
@@ -185,7 +185,7 @@
     where _ = noQuickCheck
 error = foldr  (&&) True ==> and
 error = foldl  (&&) True ==> and where note = IncreasesLaziness
-error = foldr1 (&&)  ==> and where note = RemovesError "on []"
+error = foldr1 (&&)  ==> and where note = RemovesError "on []"; _ = noQuickCheck
 error = foldl1 (&&)  ==> and where note = RemovesError "on []"
 error = foldr  (||) False ==> or
 error = foldl  (||) False ==> or where note = IncreasesLaziness
diff --git a/data/HLint_QuickCheck.hs b/data/HLint_QuickCheck.hs
--- a/data/HLint_QuickCheck.hs
+++ b/data/HLint_QuickCheck.hs
@@ -19,7 +19,7 @@
 import Test.QuickCheck.Test hiding (test)
 import Test.QuickCheck.Modifiers as X
 
-default(Maybe Bool,Int,Dbl)
+default(Maybe Bool,[Bool],Int,Dbl)
 
 -- We need a Show instance that nails down the sides, so defaulting works.
 -- The one from Text.Show.Functions is insufficient.
diff --git a/hlint.cabal b/hlint.cabal
--- a/hlint.cabal
+++ b/hlint.cabal
@@ -1,7 +1,7 @@
 cabal-version:      >= 1.6
 build-type:         Simple
 name:               hlint
-version:            1.9.14
+version:            1.9.15
 license:            BSD3
 license-file:       LICENSE
 category:           Development
@@ -76,6 +76,7 @@
         Report
         Util
         Parallel
+        PreludeEx
         HSE.All
         HSE.Bracket
         HSE.Evaluate
diff --git a/src/Apply.hs b/src/Apply.hs
--- a/src/Apply.hs
+++ b/src/Apply.hs
@@ -1,14 +1,14 @@
 
 module Apply(applyHints, applyHintFile, applyHintFiles) where
 
+import Prelude()
+import PreludeEx
 import HSE.All
 import Hint.All
-import Control.Applicative
 import Data.Tuple.Extra
 import Data.Either
 import Data.List.Extra
 import Data.Maybe
-import Data.Monoid
 import Data.Ord
 import Settings
 import Idea
diff --git a/src/HLint.hs b/src/HLint.hs
--- a/src/HLint.hs
+++ b/src/HLint.hs
@@ -3,7 +3,8 @@
 
 module HLint(hlint, Suggestion, suggestionLocation, suggestionSeverity, Severity(..)) where
 
-import Control.Applicative
+import Prelude()
+import PreludeEx
 import Control.Monad.Extra
 import System.Console.CmdArgs.Verbosity
 import Data.List
diff --git a/src/HSE/FreeVars.hs b/src/HSE/FreeVars.hs
--- a/src/HSE/FreeVars.hs
+++ b/src/HSE/FreeVars.hs
@@ -2,8 +2,9 @@
 
 module HSE.FreeVars(FreeVars, freeVars, vars, varss, pvars, declBind) where
 
+import Prelude()
+import PreludeEx
 import HSE.Type
-import Data.Monoid
 import qualified Data.Set as Set
 import Data.Set(Set)
 
diff --git a/src/HSE/Scope.hs b/src/HSE/Scope.hs
--- a/src/HSE/Scope.hs
+++ b/src/HSE/Scope.hs
@@ -4,11 +4,12 @@
     scopeMatch, scopeMove
     ) where
 
+import Prelude()
+import PreludeEx
 import HSE.Type
 import HSE.Util
 import Data.List
 import Data.Maybe
-import Data.Monoid
 
 {-
 the hint file can do:
diff --git a/src/HSE/Util.hs b/src/HSE/Util.hs
--- a/src/HSE/Util.hs
+++ b/src/HSE/Util.hs
@@ -2,7 +2,8 @@
 
 module HSE.Util where
 
-import Control.Applicative
+import Prelude()
+import PreludeEx
 import Control.Monad
 import Data.List
 import Data.Maybe
diff --git a/src/Hint/All.hs b/src/Hint/All.hs
--- a/src/Hint/All.hs
+++ b/src/Hint/All.hs
@@ -4,11 +4,12 @@
     resolveHints, hintRules, resolveBuiltin, builtinHints
     ) where
 
+import Prelude()
+import PreludeEx
 import Settings
 import Data.Either
 import Data.List
 import Data.Maybe
-import Data.Monoid
 import Hint.Type
 
 import Hint.Match
diff --git a/src/Hint/Import.hs b/src/Hint/Import.hs
--- a/src/Hint/Import.hs
+++ b/src/Hint/Import.hs
@@ -42,8 +42,9 @@
 
 module Hint.Import(importHint) where
 
+import Prelude()
+import PreludeEx
 import Hint.Type
-import Control.Applicative
 import Data.List.Extra
 import Data.Maybe
 
diff --git a/src/Hint/List.hs b/src/Hint/List.hs
--- a/src/Hint/List.hs
+++ b/src/Hint/List.hs
@@ -27,7 +27,8 @@
 
 module Hint.List(listHint) where
 
-import Control.Applicative
+import Prelude()
+import PreludeEx
 import Hint.Type
 
 
diff --git a/src/Hint/Match.hs b/src/Hint/Match.hs
--- a/src/Hint/Match.hs
+++ b/src/Hint/Match.hs
@@ -39,6 +39,8 @@
 
 module Hint.Match(readMatch) where
 
+import Prelude()
+import PreludeEx
 import Data.List.Extra
 import Data.Maybe
 import Data.Data
@@ -46,7 +48,6 @@
 import Settings
 import Hint.Type
 import Control.Monad
-import Control.Applicative
 import Data.Tuple.Extra
 import Util
 import qualified Data.Set as Set
diff --git a/src/Hint/Monad.hs b/src/Hint/Monad.hs
--- a/src/Hint/Monad.hs
+++ b/src/Hint/Monad.hs
@@ -36,8 +36,9 @@
 
 module Hint.Monad(monadHint) where
 
+import Prelude()
+import PreludeEx
 import Data.Tuple.Extra
-import Control.Applicative
 import Data.Maybe
 import Data.List
 import Hint.Type
diff --git a/src/Hint/Type.hs b/src/Hint/Type.hs
--- a/src/Hint/Type.hs
+++ b/src/Hint/Type.hs
@@ -1,9 +1,10 @@
 
 module Hint.Type(module Hint.Type, module Idea, module HSE.All) where
 
+import Prelude()
+import PreludeEx
 import HSE.All
 import Idea
-import Data.Monoid
 
 
 type DeclHint = Scope -> Module_ -> Decl_ -> [Idea]
diff --git a/src/Language/Haskell/HLint2.hs b/src/Language/Haskell/HLint2.hs
--- a/src/Language/Haskell/HLint2.hs
+++ b/src/Language/Haskell/HLint2.hs
@@ -28,6 +28,8 @@
     Encoding, defaultEncoding, readEncoding, useEncoding
     ) where
 
+import Prelude()
+import PreludeEx
 import Settings
 import Idea
 import Apply
@@ -37,10 +39,8 @@
 import CmdLine
 import Paths_hlint
 
-import Control.Applicative
 import Data.Tuple.Extra
 import Data.List.Extra
-import Data.Monoid
 import System.FilePath
 
 
diff --git a/src/PreludeEx.hs b/src/PreludeEx.hs
new file mode 100644
--- /dev/null
+++ b/src/PreludeEx.hs
@@ -0,0 +1,11 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-} -- for GHC 7.9 compatibility
+
+-- | Alternative Prelude which exports more things, so we can be
+--   warning-compatible with GHC 7.10.
+module PreludeEx(
+    module Prelude,
+    Monoid(..), Applicative(..), (<$>)
+    ) where
+
+import Data.Monoid
+import Control.Applicative
diff --git a/src/Settings.hs b/src/Settings.hs
--- a/src/Settings.hs
+++ b/src/Settings.hs
@@ -7,12 +7,13 @@
     readSettings2, readPragma, findSettings2, addInfix
     ) where
 
+import Prelude()
+import PreludeEx
 import HSE.All
 import Control.Monad.Extra
 import Data.Char
 import Data.Either
 import Data.List.Extra
-import Data.Monoid
 import System.FilePath
 import Util
 
diff --git a/src/Test/InputOutput.hs b/src/Test/InputOutput.hs
--- a/src/Test/InputOutput.hs
+++ b/src/Test/InputOutput.hs
@@ -3,7 +3,8 @@
 -- | Check the input/output pairs in the tests/ directory
 module Test.InputOutput(testInputOutput) where
 
-import Control.Applicative
+import Prelude()
+import PreludeEx
 import Data.Tuple.Extra
 import Control.Exception
 import Control.Monad
diff --git a/src/Test/Proof.hs b/src/Test/Proof.hs
--- a/src/Test/Proof.hs
+++ b/src/Test/Proof.hs
@@ -3,7 +3,8 @@
 -- | Check the coverage of the hints given a list of Isabelle theorems
 module Test.Proof(proof) where
 
-import Control.Applicative
+import Prelude()
+import PreludeEx
 import Data.Tuple.Extra
 import Control.Monad
 import Control.Monad.Trans.State
