diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,8 @@
+0.8.1
+-----
+
+* Support GHC 9.4
+
 0.8.0
 -----
 
diff --git a/app/toysat/toysat.hs b/app/toysat/toysat.hs
--- a/app/toysat/toysat.hs
+++ b/app/toysat/toysat.hs
@@ -1,6 +1,7 @@
 {-# LANGUAGE CPP #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE TypeOperators #-}
 {-# OPTIONS_GHC -Wall -fno-warn-unused-do-bind #-}
 -----------------------------------------------------------------------------
 -- |
diff --git a/src/ToySolver/Converter/Base.hs b/src/ToySolver/Converter/Base.hs
--- a/src/ToySolver/Converter/Base.hs
+++ b/src/ToySolver/Converter/Base.hs
@@ -2,6 +2,7 @@
 {-# OPTIONS_HADDOCK show-extensions #-}
 {-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE TypeOperators #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  ToySolver.Converter.Base
diff --git a/src/ToySolver/Data/Polynomial/Base.hs b/src/ToySolver/Data/Polynomial/Base.hs
--- a/src/ToySolver/Data/Polynomial/Base.hs
+++ b/src/ToySolver/Data/Polynomial/Base.hs
@@ -5,6 +5,7 @@
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE TypeOperators #-}
 {-# OPTIONS_GHC -Wall #-}
 {-# OPTIONS_HADDOCK show-extensions #-}
 -----------------------------------------------------------------------------
diff --git a/src/ToySolver/Graph/ShortestPath.hs b/src/ToySolver/Graph/ShortestPath.hs
--- a/src/ToySolver/Graph/ShortestPath.hs
+++ b/src/ToySolver/Graph/ShortestPath.hs
@@ -76,6 +76,7 @@
 import qualified Data.IntSet as IntSet
 import qualified Data.Heap as Heap -- http://hackage.haskell.org/package/heaps
 import Data.List (foldl')
+import Data.Maybe (fromJust)
 import Data.Monoid
 import Data.Ord
 import Data.Sequence (Seq)
@@ -304,7 +305,7 @@
       writeSTRef updatedRef IntSet.empty
       forM_ (IntSet.toList us) $ \u -> do
         -- modifySTRef' updatedRef (IntSet.delete u) -- possible optimization
-        Just (Pair du a) <- H.lookup d u
+        Pair du a <- liftM fromJust $ H.lookup d u
         forM_ (IntMap.findWithDefault [] u g) $ \(v, c, l) -> do
           m <- H.lookup d v
           case m of
diff --git a/src/ToySolver/SAT/Encoder/PB/Internal/Adder.hs b/src/ToySolver/SAT/Encoder/PB/Internal/Adder.hs
--- a/src/ToySolver/SAT/Encoder/PB/Internal/Adder.hs
+++ b/src/ToySolver/SAT/Encoder/PB/Internal/Adder.hs
@@ -71,7 +71,8 @@
 encodePBLinSumAdder :: forall m. PrimMonad m => Tseitin.Encoder m -> SAT.PBLinSum -> m [SAT.Lit]
 encodePBLinSumAdder enc lhs = do
   (buckets :: MutVar (PrimState m) (Seq (SQ.SeqQueue m SAT.Lit))) <- newMutVar Seq.empty
-  let insert i x = do
+  let insert :: Int -> Int -> m ()
+      insert i x = do
         bs <- readMutVar buckets
         let n = Seq.length bs
         q <- if i < n then do
diff --git a/src/ToySolver/Text/SDPFile.hs b/src/ToySolver/Text/SDPFile.hs
--- a/src/ToySolver/Text/SDPFile.hs
+++ b/src/ToySolver/Text/SDPFile.hs
@@ -3,6 +3,7 @@
 {-# LANGUAGE GADTs #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE TypeOperators #-}
 {-# OPTIONS_GHC -Wall #-}
 {-# OPTIONS_HADDOCK show-extensions #-}
 -----------------------------------------------------------------------------
diff --git a/toysolver.cabal b/toysolver.cabal
--- a/toysolver.cabal
+++ b/toysolver.cabal
@@ -1,6 +1,6 @@
 cabal-version: 2.4
 Name:		toysolver
-Version:	0.8.0
+Version:	0.8.1
 License:	BSD-3-Clause
 License-File:	COPYING
 Author:		Masahiro Sakai (masahiro.sakai@gmail.com)
@@ -131,8 +131,8 @@
   Hs-source-dirs: src
   Build-Depends:
      array >=0.5,
-     -- GHC >=8.6 && <9.3
-     base >=4.12 && <4.17,
+     -- GHC >=8.6 && <9.5
+     base >=4.12 && <4.18,
      bytestring >=0.9.2.1 && <0.12,
      bytestring-builder,
      bytestring-encoding >=0.1.1.0,
@@ -967,7 +967,7 @@
   build-depends:
     array,
     base,
-    criterion >=1.0 && <1.6,
+    criterion >=1.0 && <1.7,
     data-default-class,
     toysolver
   Default-Language: Haskell2010
@@ -978,7 +978,7 @@
   main-is:          BenchmarkKnapsack.hs
   build-depends:
     base,
-    criterion >=1.0 && <1.6,
+    criterion >=1.0 && <1.7,
     toysolver
   Default-Language: Haskell2010
 
@@ -988,7 +988,7 @@
   main-is:          BenchmarkSubsetSum.hs
   build-depends:
     base,
-    criterion >=1.0 && <1.6,
+    criterion >=1.0 && <1.7,
     toysolver,
     vector
   Default-Language: Haskell2010
