Size: a a a

2021 October 23

v

vsvsad in Haskell Start
Т.е присваивание нового значения будет вполне законно, а мутация нет?
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Если нет возможности защитить переменную от записи, передавайте везде вместо неё функцию, которая будет возвращать текущее значение
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Так вы получите "много мест, которые могут читать и мало мест, откуда будет возможна запись"
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Текущий слепок в виде иммутабельного массива тем и хорош, что его нельзя поменять :)
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Поэтому функция, выдающая текущее значение, не даст поменять источник
источник

v

vsvsad in Haskell Start
Ну да, я могу вывалить геттер например из замыкания
источник

AP

Aleksei (astynax) Pi... in Haskell Start
именно
источник

v

vsvsad in Haskell Start
А вот как добавить задачу
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Выдать функцию, которая строго добавляет значения?
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Выдать только в те места, где возможно добавление в очередь
источник

v

vsvsad in Haskell Start
Ну, да, я скорее интересуюсь как "правильно" с точки срения fp
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Вообще внутри такой функции "добавить в конец" можно встроить блокирование до момента, когда очередь дочитают.
источник

AP

Aleksei (astynax) Pi... in Haskell Start
"В ФП" так делают, например :)
источник

v

vsvsad in Haskell Start
А тот же haskell разве умеет переприсвоить переменнию, он же просто ассоциирует выражение
источник

AP

Aleksei (astynax) Pi... in Haskell Start
IORef — вполне себе переменная обычная
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Её можно читать или изменять только в IO
источник

AP

Aleksei (astynax) Pi... in Haskell Start
В чистом коде есть только связывание имени со значением, да
источник

v

vsvsad in Haskell Start
Ну понятно, всегда можно разбавить нечистым)
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Можно разделить код на чистый и с эффектами
источник

AP

Aleksei (astynax) Pi... in Haskell Start
И граница останется более-менее чёткой
источник