Getting started есть пример кода с сомнительной корректностью, когда мутабельный объект расшаренно используется в разных IO и егойных комбинаторах.
‘’’
val logMessages = collection.mutable.ArrayBuffer.empty[String]
...
IO {
logMessages.append(XXX)
}
...
IO {
logMessages.append(YYY)
}
‘’’
Насколько оно вообще корректно с т.з. visibility, happens-before и т.п.? Я просто не в первый раз такое встречаю во всяких туториалах и документациях (в cats-effect есть похожий пример с расшаренным массивом). Это как-то специфицировано, что народ этим так вольготно пользуется или просто по незнанию?
Очень похоже, что некорректно
Обсуждают сегодня