ведь? черт знает, кто где и в каком порядке её мутирует
она не совсем глобальная, так как разные куски кода могут запускаться с разными иорефом параллельно
Тут вот я конечно не понял
run :: Int -> ReaderT (IORef Int) IO a -> IO a app :: ReaderT (IORef Int) IO () main = do async (run 1 app) async (run 2 app)
Все монадки это такая калька на фигню из программирования на си: ридерт/стейтт/врайтерт это калька на глобал вар, контт это калька на готу и т.д.
Обсуждают сегодня