к
type Gen = Int
f :: Gen -> (Int, Gen)
f gen = (fromGen gen, nextGen gen)
where
-- тут более интересные функции должны быть
fromGen gen = gen
nextGen gen = gen + 1
fs :: State Gen Int
fs = state f
main = do
gen <- newGen
pure $ flip evalState gen do
a <- fs
b <- fs
pure (a, b)