diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+### 0.7.0.6
+
+- Fixes issue causing compilation error to happen with ghc-8.8.2 [#33][#34]
+
 ### 0.7.0.5
 
 - Fix an issue where in some cases pattern lines were matched out of order [#16]
diff --git a/System/Console/Docopt/OptParse.hs b/System/Console/Docopt/OptParse.hs
--- a/System/Console/Docopt/OptParse.hs
+++ b/System/Console/Docopt/OptParse.hs
@@ -68,17 +68,17 @@
                     let rest = list \\ [pat]
                     argDelimIfNotInShortOptStack
                     makeParser $ Unordered rest
-  (Optional pat) ->
-        case pat of
-          Unordered ps -> case ps of
-            p:[] -> makeParser $ Optional p
-            _  -> optional $ choice $ (parseThisThenRest ps) `map` ps
-                  where parseThisThenRest list pat = try $ do
-                          makeParser pat
-                          let rest = list \\ [pat]
-                          argDelimIfNotInShortOptStack
-                          makeParser $ Optional $ Unordered rest
-          _ -> optional $ try $ makeParser pat
+  -- (Optional pat) ->
+  --       case pat of
+  --         Unordered ps -> case ps of
+  --           p:[] -> makeParser $ Optional p
+  --           _  -> optional $ choice $ (parseThisThenRest ps) `map` ps
+  --                 where parseThisThenRest list pat = try $ do
+  --                         makeParser pat
+  --                         let rest = list \\ [pat]
+  --                         argDelimIfNotInShortOptStack
+  --                         makeParser $ Optional $ Unordered rest
+  --         _ -> optional $ try $ makeParser pat
   (Repeated pat) -> do
       case pat of
         (Optional p) -> (try $ makeParser p) `sepBy` argDelimIfNotInShortOptStack
diff --git a/System/Console/Docopt/Public.hs b/System/Console/Docopt/Public.hs
--- a/System/Console/Docopt/Public.hs
+++ b/System/Console/Docopt/Public.hs
@@ -190,7 +190,7 @@
 isPresentM args o = return $ isPresent args o
 
 {-# DEPRECATED getFirstArg "Use 'getAllArgs' instead" #-}
-getFirstArg :: Monad m => Arguments -> Option -> m String
+getFirstArg :: MonadFail m => Arguments -> Option -> m String
 getFirstArg args opt =
   let failure = fail $ "no argument given: " ++ show opt
   in  case opt `M.lookup` args of
diff --git a/System/Console/Docopt/QQ.hs b/System/Console/Docopt/QQ.hs
--- a/System/Console/Docopt/QQ.hs
+++ b/System/Console/Docopt/QQ.hs
@@ -56,7 +56,9 @@
                      , quotePat  = unsupported "Pattern"
                      , quoteType = unsupported "Type"
                      }
-    where unsupported = fail . (++ " context unsupported")
+    where unsupported :: String -> String -> Q a
+          unsupported qqType _ = do
+            fail $ (qqType ++ " context unsupported")
 
 -- | Same as 'docopt', but parses the given file instead of a literal
 -- string.
diff --git a/docopt.cabal b/docopt.cabal
--- a/docopt.cabal
+++ b/docopt.cabal
@@ -1,5 +1,5 @@
 name:                docopt
-version:             0.7.0.5
+version:             0.7.0.6
 synopsis:            A command-line interface parser that will make you smile
 description:         Docopt parses command-line interface usage text that adheres to a familiar syntax, and from it builds a command-line argument parser that will ensure your program is invoked correctly with the available options specified in the usage text. This allows the developer to write a usage text and get an argument parser for free.
 
@@ -12,7 +12,7 @@
 category:            Console
 
 build-type:          Simple
-cabal-version:       >=1.8
+cabal-version:       >=1.10
 
 homepage:            https://github.com/docopt/docopt.hs
 bug-reports:         https://github.com/docopt/docopt.hs/issues
@@ -34,6 +34,7 @@
     Build with QuasiQuoter usage parsers, which requires Template Haskell
 
 library
+  default-language: Haskell2010
   exposed-modules:    System.Console.Docopt.NoTH
 
   other-modules:      System.Console.Docopt.ApplicativeParsec
@@ -43,9 +44,9 @@
                       System.Console.Docopt.OptParse
                       System.Console.Docopt.Public
 
-  build-depends:      base >= 4.0 && < 5.0,
-                      parsec >= 3.1.0,
-                      containers
+  build-depends:      base >= 4.9 && < 5.0,
+                      parsec >= 3.1.14 && < 3.2,
+                      containers >= 0.6.2 && < 0.7
 
   ghc-options:        -Wall
                       -fno-warn-unused-binds
@@ -57,10 +58,11 @@
     exposed-modules:  System.Console.Docopt
     other-modules:    System.Console.Docopt.QQ
                       System.Console.Docopt.QQ.Instances
-    build-depends:    template-haskell,
-                      th-lift
+    build-depends:    template-haskell >= 2.15.0 && < 2.16,
+                      th-lift >= 0.8.2 && < 0.9
 
 test-suite tests
+  default-language: Haskell2010
   type:               exitcode-stdio-1.0
   hs-source-dirs:     ./, test
   main-is:            LangAgnosticTests.hs
@@ -73,8 +75,8 @@
                       -fno-warn-orphans
 
   build-depends:      base,
-                      parsec,
-                      containers,
+                      parsec >= 3.1.14 && < 3.2,
+                      containers >= 0.6.2 && < 0.7,
                       docopt,
                       HUnit,
                       split,
@@ -82,8 +84,8 @@
                       aeson,
                       bytestring,
                       text,
-                      template-haskell,
-                      th-lift
+                      template-haskell >= 2.15.0 && < 2.16,
+                      th-lift >= 0.8.2 && < 0.9
 
   other-modules:      System.Console.Docopt
                       System.Console.Docopt.ApplicativeParsec
