diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,7 @@
+4.5.3 [2023.01.21]
+------------------
+* Support building with GHC 9.6.
+
 4.5.2 [2022.06.17]
 ------------------
 * Fix a bug that would cause `Numeric.AD.Mode.Reverse.diff` and
diff --git a/ad.cabal b/ad.cabal
--- a/ad.cabal
+++ b/ad.cabal
@@ -1,5 +1,5 @@
 name:          ad
-version:       4.5.2
+version:       4.5.3
 license:       BSD3
 license-File:  LICENSE
 copyright:     (c) Edward Kmett 2010-2021,
diff --git a/include/internal_kahn.h b/include/internal_kahn.h
--- a/include/internal_kahn.h
+++ b/include/internal_kahn.h
@@ -66,7 +66,7 @@
 import System.IO.Unsafe (unsafePerformIO)
 import Data.Data (Data)
 import Data.Typeable (Typeable)
-import GHC.Exts as Exts
+import qualified GHC.Exts as Exts
 import Numeric.AD.Internal.Combinators
 import Numeric.AD.Internal.Identity
 import Numeric.AD.Jacobian
@@ -255,12 +255,12 @@
 -- strict list of scalars
 data List = Nil | Cons !SCALAR_TYPE !List
 
-instance IsList List where
+instance Exts.IsList List where
   type Item List = SCALAR_TYPE
-  fromList (x:xs) = Cons x (fromList xs)
+  fromList (x:xs) = Cons x (Exts.fromList xs)
   fromList [] = Nil
   toList Nil = []
-  toList (Cons x xs) = x : toList xs
+  toList (Cons x xs) = x : Exts.toList xs
 
 class Grad i o o' | i -> o o', o -> i o', o' -> i o where
   pack :: i -> [AD_TYPE] -> AD_TYPE
