Fix MonadFreshId instances in wrong places

This commit is contained in:
Ken Micklas 2019-03-09 20:25:10 -05:00
parent 6e48df506e
commit 6a5718458d
3 changed files with 7 additions and 5 deletions

View file

@ -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

View file

@ -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

View file

@ -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)