В моем приложении React мне нужно хранить некоторые данные, которые должны быть доступны почти везде, но не хотят хранить их в глобальной (то есть статической) структуре данных, чтобы было легко издев
Сигнатура modifyIORef достаточно прост: modifyIORef :: IORef a -> (a -> a) -> IO()
К сожалению, это не поточно. Существует альтернатива, которая касается этой проблемы: atomicModifyIORef :: IORef a
Я читал об избежании изменчивого состояния и о том, как шаблон одноэлементности плохо для глобального состояния. Я вижу несколько ответов о Dependency Injection http://www.objc.io/issue-13/singletons.