This patch contains a variety of fixes needed to build the libraries in the
what4 repo with GHC 9.6:
GHC 9.6 bundles mtl-2.3.*, which no longer re-exports Control.Monad,
Control.Monad.IO.Class, and similar modules from mtl-related modules.
To accommodate this, various imports have been made more explicit.
MonadTrans t now has a quantified forall m. Monad m => Monad (t m)
superclass in mtl-2.3.*. As a result, the MonadTrans (PartialT sym)
instance must now have an IsExpr (SymExpr sym) instance context in order
for it to typecheck, as this is the same instance context that PartialT's
Monad instance has.
This is technically a breaking change, so I have noted it in the what4
changelog. That being said, this change is unlikely to affect many people
in practice, considering that the MonadTrans instance for PartialT is
usually used in tandem with the Monad instance.
Various upper version bounds on base have been lifted to allow building
with base-4.18.
This patch contains a variety of fixes needed to build the libraries in the
what4
repo with GHC 9.6:mtl-2.3.*
, which no longer re-exportsControl.Monad
,Control.Monad.IO.Class
, and similar modules frommtl
-related modules. To accommodate this, various imports have been made more explicit.MonadTrans t
now has a quantifiedforall m. Monad m => Monad (t m)
superclass inmtl-2.3.*
. As a result, theMonadTrans (PartialT sym)
instance must now have anIsExpr (SymExpr sym)
instance context in order for it to typecheck, as this is the same instance context thatPartialT
'sMonad
instance has.This is technically a breaking change, so I have noted it in the
what4
changelog. That being said, this change is unlikely to affect many people in practice, considering that theMonadTrans
instance forPartialT
is usually used in tandem with theMonad
instance.base
have been lifted to allow building withbase-4.18
.aig
submodule has been bumped to bring in the changes from https://github.com/GaloisInc/aig/pull/15, which allows it to build with GHC 9.6.