Fix MonadFreshId instances in wrong places
This commit is contained in:
parent
6e48df506e
commit
6a5718458d
|
@ -84,7 +84,7 @@ import GHC.DataSize
|
|||
type MonadNix e m =
|
||||
(Scoped (NThunk m) m, Framed e m, Has e SrcSpan, Has e Options,
|
||||
Typeable m, MonadVar m, MonadEffects m, MonadFix m, MonadCatch m,
|
||||
Alternative m)
|
||||
Alternative m, MonadFreshId Int m)
|
||||
|
||||
data ExecFrame m = Assertion SrcSpan (NValue m)
|
||||
deriving (Show, Typeable)
|
||||
|
@ -489,7 +489,7 @@ newtype Lazy m a = Lazy
|
|||
{ runLazy :: ReaderT (Context (Lazy m) (NThunk (Lazy m)))
|
||||
(StateT (HashMap FilePath NExprLoc) (FreshIdT Int m)) a }
|
||||
deriving (Functor, Applicative, Alternative, Monad, MonadPlus,
|
||||
MonadFix, MonadIO, MonadFreshId Int,
|
||||
MonadFix, MonadIO,
|
||||
MonadReader (Context (Lazy m) (NThunk (Lazy m))))
|
||||
|
||||
instance MonadTrans Lazy where
|
||||
|
@ -520,6 +520,9 @@ instance MonadException m => MonadException (Lazy m) where
|
|||
in runLazy <$> f run'
|
||||
#endif
|
||||
|
||||
instance Monad m => MonadFreshId Int (Lazy m) where
|
||||
freshId = Lazy $ lift $ lift freshId
|
||||
|
||||
instance MonadStore m => MonadStore (Lazy m) where
|
||||
addPath' = lift . addPath'
|
||||
toFile_' n = lift . toFile_' n
|
||||
|
|
|
@ -117,7 +117,7 @@ unpackSymbolic :: MonadVar m
|
|||
unpackSymbolic = readVar . coerce
|
||||
|
||||
type MonadLint e m = (Scoped (SThunk m) m, Framed e m, MonadVar m,
|
||||
MonadCatch m)
|
||||
MonadCatch m, MonadFreshId Int m)
|
||||
|
||||
symerr :: forall e m a. MonadLint e m => String -> m a
|
||||
symerr = evalError @(Symbolic m) . ErrorCall
|
||||
|
|
|
@ -100,7 +100,6 @@ instance MonadFreshId i m => MonadFreshId i (StateT s m)
|
|||
type MonadVar m =
|
||||
( MonadAtomicRef m
|
||||
, GEq (Ref m)
|
||||
, MonadFreshId Int m
|
||||
)
|
||||
|
||||
eqVar :: forall m a. GEq (Ref m) => Ref m a -> Ref m a -> Bool
|
||||
|
@ -146,7 +145,7 @@ instance Exception ThunkLoop
|
|||
valueRef :: v -> Thunk m v
|
||||
valueRef = Value
|
||||
|
||||
buildThunk :: MonadVar m => m v -> m (Thunk m v)
|
||||
buildThunk :: (MonadVar m, MonadFreshId Int m) => m v -> m (Thunk m v)
|
||||
buildThunk action =do
|
||||
freshThunkId <- freshId
|
||||
Thunk freshThunkId <$> newVar False <*> newVar (Deferred action)
|
||||
|
|
Loading…
Reference in a new issue