diff options
Diffstat (limited to 'utils/CC')
-rw-r--r-- | utils/CC/IdSupply.hs | 29 |
1 files changed, 0 insertions, 29 deletions
diff --git a/utils/CC/IdSupply.hs b/utils/CC/IdSupply.hs deleted file mode 100644 index 234f6cc..0000000 --- a/utils/CC/IdSupply.hs +++ /dev/null @@ -1,29 +0,0 @@ -module CC.IdSupply(IdSupply, runIdSupply, genId) where - -import Control.Monad.Trans - - -data IdSupply a = IdSupply (Int -> (Int, a)) - -instance Functor IdSupply where - fmap f (IdSupply act) = IdSupply (fmap f . act) - -instance Applicative IdSupply where - pure x = IdSupply (\idval -> (idval, x)) - IdSupply f <*> IdSupply x = - IdSupply (\idval -> let (idval', f') = f idval - in f' <$> x idval') - -instance Monad IdSupply where - IdSupply x >>= f = - IdSupply (\idval -> let (idval', x') = x idval - IdSupply res = f x' - in res idval') - -instance MonadTrans - -runIdSupply :: Int -> IdSupply a -> a -runIdSupply startid (IdSupply f) = snd (f startid) - -genId :: IdSupply Int -genId = IdSupply (\idval -> (idval + 1, idval)) |