diff --git a/Data/FMList.hs b/Data/FMList.hs
--- a/Data/FMList.hs
+++ b/Data/FMList.hs
@@ -97,6 +97,7 @@
 import Data.Foldable (Foldable, foldMap, foldr, toList)
 import Data.Traversable (Traversable, traverse)
 import Control.Monad
+import Control.Monad.Fail as MF
 import Control.Applicative
 
 -- | 'FMList' is a 'foldMap' function wrapped up in a newtype.
@@ -293,7 +294,9 @@
   return     = one
   m >>= g    = transform (\f -> foldMap f . g) m
   m >> k     = transform (\f -> const (foldMap f k)) m
-  fail _     = nil
+
+instance MF.MonadFail FMList where
+  fail _ = nil
 
 instance Applicative FMList where
   pure       = one
diff --git a/fmlist.cabal b/fmlist.cabal
--- a/fmlist.cabal
+++ b/fmlist.cabal
@@ -1,5 +1,5 @@
 name:                fmlist
-version:             0.9.2
+version:             0.9.3
 synopsis:            FoldMap lists
 description:
   FoldMap lists are lists represented by their foldMap function.
@@ -21,7 +21,10 @@
 Library
   exposed-modules:     Data.FMList
   build-depends:       base >= 3 && < 5
+  if impl(ghc < 8.0)
+    build-depends: fail
   default-language:    Haskell98
+
 
 source-repository head
   type:     git
