Size: a a a

Dart & Flutter по-русски

2020 June 14

НА

Николай Артамонов... in Dart & Flutter по-русски
Artem Krupp
Хотя не противоречит твоему описанию
Противоречит. Запись в файл - операция, которая может привести к исключению. Исключение - это побочный эффект. Если оно возникло, то оно повлияет на возвращаемое значение.
источник

AK

Artem Krupp in Dart & Flutter по-русски
Николай Артамонов
Противоречит. Запись в файл - операция, которая может привести к исключению. Исключение - это побочный эффект. Если оно возникло, то оно повлияет на возвращаемое значение.
Если я исключение обрабатываю на месте?
источник

AK

Artem Krupp in Dart & Flutter по-русски
Ну сам поход в файл это сайд эффект
источник

AK

Artem Krupp in Dart & Flutter по-русски
Как и в сеть
источник

AK

Artem Krupp in Dart & Flutter по-русски
Пьюр фанкшн не должен зависеть ни от чего
источник

НА

Николай Артамонов... in Dart & Flutter по-русски
Artem Krupp
Если я исключение обрабатываю на месте?
Если ты все исключения обрабатываешь на месте и результат вычисления функции никак не зависит от того, что ты там с этим файлом делаешь, и кроме того, эти манипуляции никак не влияют на выч. окружение других частей программы, то эту функцию можно рассматривать как чистую. К слову, некоторые хаскельные функции внутри делают in-place мутации, но имеют чистый интерфейс.
источник

НА

Николай Артамонов... in Dart & Flutter по-русски
Artem Krupp
Пьюр фанкшн не должен зависеть ни от чего
Пьюр фанкшн не должен иметь "видимых" наружу эффектов. Так будет точнее.
источник

AK

Artem Krupp in Dart & Flutter по-русски
Николай Артамонов
Пьюр фанкшн не должен иметь "видимых" наружу эффектов. Так будет точнее.
В таком случае поход в сеть тоже не особо запрещен
источник

AK

Artem Krupp in Dart & Flutter по-русски
Функция при походе в файл и сеть перестает быть детерминированной
источник

AK

Artem Krupp in Dart & Flutter по-русски
То есть аутпут зависит не только от инпута
источник

AK

Artem Krupp in Dart & Flutter по-русски
Следовательно для одного инпута возможно несколько аутпутов в разные моменты времени
источник

НА

Николай Артамонов... in Dart & Flutter по-русски
Artem Krupp
В таком случае поход в сеть тоже не особо запрещен
Опять же - если 1) этот поход никакого влияния не возвращаемое значение не оказывает и 2) ты обрабатываешь все возможные исключения, причем так, что эта обработка опять же не оказывает влияние на возвращаемое значение, и 3) результат обращения в сеть не оказывает влияния на последующие в программе вызовы других функций - тогда эту функцию можно рассматривать как чистую.
источник

AK

Artem Krupp in Dart & Flutter по-русски
Николай Артамонов
Опять же - если 1) этот поход никакого влияния не возвращаемое значение не оказывает и 2) ты обрабатываешь все возможные исключения, причем так, что эта обработка опять же не оказывает влияние на возвращаемое значение, и 3) результат обращения в сеть не оказывает влияния на последующие в программе вызовы других функций - тогда эту функцию можно рассматривать как чистую.
Читай выше
источник

НА

Николай Артамонов... in Dart & Flutter по-русски
Artem Krupp
Функция при походе в файл и сеть перестает быть детерминированной
Зачастую да, потому что сложно представить ситуацию, когда ты лезешь в сеть и это не оказывает влияния на результат функции, либо последующие вызовы функций в программе. Но чисто теоретически так можно сделать. Правда, это будет бесполезное обращение в сеть.
источник

AK

Artem Krupp in Dart & Flutter по-русски
Николай Артамонов
Зачастую да, потому что сложно представить ситуацию, когда ты лезешь в сеть и это не оказывает влияния на результат функции, либо последующие вызовы функций в программе. Но чисто теоретически так можно сделать. Правда, это будет бесполезное обращение в сеть.
Тогда это сайд эффект
источник

AK

Artem Krupp in Dart & Flutter по-русски
Короче ни при каких условиях поход в сеть не может существовать в чистой функции
источник

ND

Nikita Domnickij in Dart & Flutter по-русски
Есть же монады
источник

ND

Nikita Domnickij in Dart & Flutter по-русски
Тот же IO в хаскеле выполняет сайд эфект, но результат все равно чистый
источник

AK

Artem Krupp in Dart & Flutter по-русски
Nikita Domnickij
Тот же IO в хаскеле выполняет сайд эфект, но результат все равно чистый
А где детерминированность?
источник

AK

Artem Krupp in Dart & Flutter по-русски
Потерял по дороге?
источник