diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,11 @@
 `slist` uses [PVP Versioning][1].
 The changelog is available [on GitHub][2].
 
+## 0.2.1.0 – Nov 3, 2022
+
+* [#56](https://github.com/kowainik/slist/issues/56):
+  Support GHC-9.4.
+
 ## 0.2.0.1 – Oct 7, 2022
 
 * [#53](https://github.com/kowainik/slist/issues/53):
diff --git a/slist.cabal b/slist.cabal
--- a/slist.cabal
+++ b/slist.cabal
@@ -1,6 +1,6 @@
 cabal-version:       2.4
 name:                slist
-version:             0.2.0.1
+version:             0.2.1.0
 synopsis:            Sized list
 description:         This package implements @Slist@ data structure that stores the size
                      of the list along with the list itself.
@@ -23,13 +23,14 @@
                    , GHC == 8.10.7
                    , GHC == 9.0.2
                    , GHC == 9.2.4
+                   , GHC == 9.4.2
 
 source-repository head
   type:                git
   location:            https://github.com/kowainik/slist.git
 
 common common-options
-  build-depends:       base >= 4.10.1.0 && < 4.17
+  build-depends:       base >= 4.10.1.0 && < 4.18
 
   ghc-options:         -Wall
                        -Wincomplete-uni-patterns
@@ -43,6 +44,11 @@
                        -Werror=missing-deriving-strategies
   if impl(ghc >= 8.10.1)
     ghc-options:       -Wunused-packages
+  if impl(ghc >= 9.0)
+    ghc-options:       -Winvalid-haddock
+  if impl(ghc >= 9.2)
+    ghc-options:       -Wredundant-bang-patterns
+                       -Woperator-whitespace
 
   default-extensions:  ConstraintKinds
                        DeriveGeneric
diff --git a/src/Slist.hs b/src/Slist.hs
--- a/src/Slist.hs
+++ b/src/Slist.hs
@@ -385,6 +385,7 @@
 1
 >>> head mempty
 *** Exception: Prelude.head: empty list
+...
 
 -}
 head :: Slist a -> a
@@ -415,6 +416,7 @@
 'y'
 >>> last mempty
 *** Exception: Prelude.last: empty list
+...
 
 @
 >> last $ infiniteSlist [1..]
@@ -677,7 +679,7 @@
 
     go :: Int -> Int -> Int
     go !acc 0 = acc
-    go !acc n = go (acc * n) (n - 1)
+    go acc n  = go (acc * n) (n - 1)
 {-# INLINE permutations #-}
 
 ----------------------------------------------------------------------------
@@ -937,7 +939,7 @@
   where
     go :: Int -> [a] -> (Int, [a])
     go !n [] = (n, [])
-    go !n (x:xs) =
+    go n (x:xs) =
         if p x
         then let (i, l) = go (n + 1) xs in (i, x:l)
         else (n, [])
@@ -967,7 +969,7 @@
   where
     go :: Int -> [a] -> (Int, [a])
     go !n [] = (n, [])
-    go !n (x:xs) =
+    go n (x:xs) =
         if p x
         then go (n + 1) xs
         else (n, x:xs)
@@ -997,7 +999,7 @@
   where
     go :: Int -> [a] -> (Int, [a], [a])
     go !n [] = (n, [], [])
-    go !n (x:xs) =
+    go n (x:xs) =
         if p x
         then let (s, l, r) = go (n + 1) xs in (s, x:l, r)
         else (n, [], x:xs)
@@ -1476,8 +1478,10 @@
 1
 >>> unsafeAt (-1) sl
 *** Exception: Prelude.!!: negative index
+...
 >>> unsafeAt 11 sl
 *** Exception: Prelude.!!: index too large
+...
 >>> unsafeAt 9 sl
 10
 -}
diff --git a/src/Slist/Maybe.hs b/src/Slist/Maybe.hs
--- a/src/Slist/Maybe.hs
+++ b/src/Slist/Maybe.hs
@@ -133,7 +133,7 @@
   where
     go :: Int -> [a] -> (Int, [b])
     go !accSize [] = (accSize, [])
-    go !accSize (x:xs) = case f x of
+    go accSize (x:xs) = case f x of
         Nothing -> go accSize xs
         Just r  -> second (r:) $ go (accSize + 1) xs
 
