Add MonadFix instance for FreshIdT

This commit is contained in:
Ken Micklas 2019-03-09 16:44:40 -05:00
parent fd63be4f96
commit a1fd246d01

View file

@ -49,7 +49,13 @@ class Monad m => MonadFreshId i m | m -> i where
freshId = lift freshId
newtype FreshIdT i m a = FreshIdT { unFreshIdT :: StateT i m a }
deriving (Functor, Applicative, Monad, MonadTrans)
deriving
( Functor
, Applicative
, Monad
, MonadTrans
, MonadFix
)
instance (Monad m, Num i) => MonadFreshId i (FreshIdT i m) where
freshId = FreshIdT $ get <* modify (+ 1)