diff --git a/CHANGES.md b/CHANGES.md
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,9 +1,22 @@
+0.4.0.1
+-------
+
+_Andreas Abel, 2022-05-26_
+
+* add `LANGUAGE TypeOperators` for GHC 9.4
+
 0.4
 ---
+
+_Andreas Abel, 2022-02-03_
+
 * remove ErrorT instance for compatibility with transformers-0.6 and mtl-2.3
 
 0.3.5
 -----
+
+_Patrick Bahr, 2019-09-09_
+
 * compatibility with GHC 8.8
 
 0.3.4
diff --git a/equivalence.cabal b/equivalence.cabal
--- a/equivalence.cabal
+++ b/equivalence.cabal
@@ -1,6 +1,6 @@
 Cabal-Version:   >= 1.10
 Name:            equivalence
-Version:         0.4
+Version:         0.4.0.1
 License:         BSD3
 License-File:    LICENSE
 Author:          Patrick Bahr
@@ -21,15 +21,16 @@
 Build-Type:      Simple
 
 tested-with:
-  GHC == 7.10.3
-  GHC == 8.0.2
-  GHC == 8.2.2
-  GHC == 8.4.4
-  GHC == 8.6.5
-  GHC == 8.8.4
-  GHC == 8.10.7
+  GHC == 9.4.1
+  GHC == 9.2.2
   GHC == 9.0.2
-  GHC == 9.2.1
+  GHC == 8.10.7
+  GHC == 8.8.4
+  GHC == 8.6.5
+  GHC == 8.4.4
+  GHC == 8.2.2
+  GHC == 8.0.2
+  GHC == 7.10.3
 
 Extra-Source-Files: CHANGES.md
 
diff --git a/src/Data/Equivalence/Monad.hs b/src/Data/Equivalence/Monad.hs
--- a/src/Data/Equivalence/Monad.hs
+++ b/src/Data/Equivalence/Monad.hs
@@ -6,6 +6,7 @@
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE RankNTypes #-}
 {-# LANGUAGE TypeFamilies #-} -- for type equality ~
+{-# LANGUAGE TypeOperators #-} -- for type equality ~ with GHC 9.4
 {-# LANGUAGE UndecidableInstances #-}
 
 --------------------------------------------------------------------------------
@@ -92,7 +93,7 @@
 -- because EquivT already contains a ReaderT in its monad transformer stack.
 instance (MonadReader r m) => MonadReader r (EquivT s c v m) where
     ask = EquivT $ lift ask
-    local f (EquivT (ReaderT m)) = EquivT $ ReaderT $ (\ r -> local f (m r))
+    local f (EquivT (ReaderT m)) = EquivT $ ReaderT $ \ r -> local f (m r)
 
 {-| This function runs a monadic computation that maintains an
 equivalence relation. The first two arguments specify how to construct
