Skip to content

Commit 26c5475

Browse files
committed
update
1 parent d1e0d3d commit 26c5475

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

hs-src/Language/Egison/Types.hs

+10-10
Original file line numberDiff line numberDiff line change
@@ -1574,13 +1574,13 @@ liftEgisonM m = EgisonM $ ErrorT $ FreshT $ do
15741574
fromEgisonM :: EgisonM a -> IO (Either EgisonError a)
15751575
fromEgisonM = modifyCounter . runEgisonM
15761576

1577-
counter :: IORef Int
1578-
counter = unsafePerformIO (newIORef 0)
1577+
counter :: IORef (Int, Int)
1578+
counter = unsafePerformIO (newIORef (0, 0))
15791579

1580-
readCounter :: IO Int
1580+
readCounter :: IO (Int, Int)
15811581
readCounter = readIORef counter
15821582

1583-
updateCounter :: Int -> IO ()
1583+
updateCounter :: (Int, Int) -> IO ()
15841584
updateCounter = writeIORef counter
15851585

15861586
modifyCounter :: FreshT IO a -> IO a
@@ -1590,8 +1590,8 @@ modifyCounter m = do
15901590
updateCounter seed
15911591
return result
15921592

1593-
newtype FreshT m a = FreshT { unFreshT :: StateT Int m a }
1594-
deriving (Functor, Applicative, Monad, MonadState Int, MonadTrans, MP.MonadParallel)
1593+
newtype FreshT m a = FreshT { unFreshT :: StateT (Int, Int) m a }
1594+
deriving (Functor, Applicative, Monad, MonadState (Int, Int), MonadTrans, MP.MonadParallel)
15951595
-- deriving (Functor, Applicative, Monad, MonadState Int, MonadTrans)
15961596

15971597
type Fresh = FreshT Identity
@@ -1600,8 +1600,8 @@ class (Applicative m, Monad m) => MonadFresh m where
16001600
fresh :: m String
16011601

16021602
instance (Applicative m, Monad m) => MonadFresh (FreshT m) where
1603-
fresh = FreshT $ do counter <- get; modify (+ 1)
1604-
return $ "$_" ++ show counter
1603+
fresh = FreshT $ do (x, y) <- get; modify (\(x,y) -> (x + 1, y))
1604+
return $ "$_" ++ (show x) ++ (show y)
16051605

16061606
instance (MonadError e m) => MonadError e (FreshT m) where
16071607
throwError = lift . throwError
@@ -1629,10 +1629,10 @@ instance MonadIO (FreshT IO) where
16291629
instance (MP.MonadParallel m, Error e) => MP.MonadParallel (ErrorT e m)
16301630
instance (MP.MonadParallel m) => MP.MonadParallel (StateT s m)
16311631

1632-
runFreshT :: Monad m => Int -> FreshT m a -> m (a, Int)
1632+
runFreshT :: Monad m => (Int, Int) -> FreshT m a -> m (a, (Int, Int))
16331633
runFreshT seed = flip (runStateT . unFreshT) seed
16341634

1635-
runFresh :: Int -> Fresh a -> (a, Int)
1635+
runFresh :: (Int, Int) -> Fresh a -> (a, (Int, Int))
16361636
runFresh seed m = runIdentity $ flip runStateT seed $ unFreshT m
16371637

16381638

0 commit comments

Comments
 (0)