Я новичок в Haskell и STM, и я пытаюсь понять основную концепцию.
В Haskell и функциональном программировании в целом, поправьте меня, если я ошибаюсь, нет такой вещи, как присваивание.
Я не могу написать x=3;
, все, что я могу сделать, это сгенерировать другую привязку с x
и 3
.
Теперь, когда дело доходит до TVar и потоков, если у меня есть несколько потоков, использующих один и тот же TVar, если один поток изменит значение с помощью writeTVar
, другие потоки увидят измененное значение, я прав?
Итак, если у меня есть 2 потока, разделяющих одну и ту же переменную TVar Int
, и первый добавляет к ней 1, в случае успеха второй поток увидит обновленное значение?
Такс