В “хорошем” ФП такой неожиданности бы не было потому что: 1. Либо создание объекта явно говорило что оно будет отправлять запрос, либо 2. Оно бы не говорило об этом, и, соответственно не могло отправить запрос даже по случайности
mkObject :: (MonadBaseControl IO m, MonadLogger m, MonadFooBar m) => m Object Смотришь и сразу понятно, что лучше эту процедуру вообще не вызывать никогда
Хороший пример: в Джаве в какой-то момент создание каких-то объектов из стандартной библиотеки отправляло запросы в интернет. Просто создание объектов. Это для многих было неожиданно.
автор в статье писал что в фп если вы хотите сделать нечто нечистым, то вы должны сделать это самостоятельно.
а про изоляцию грязного кода он пишет "мы можем выносить непредсказуемые механизмы на уровни, ещё более отдалённые от основной функции. В итоге мы можем вынести их, условно говоря, в «пограничные области» кода. Это приведёт к тому, что у нас будет тонкая оболочка из нечистого кода, которая окружает хорошо протестированное и предсказуемое ядро." и я подумал что так и принято в фп в целом
а про изоляцию грязного кода он пишет "мы можем выносить непредсказуемые механизмы на уровни, ещё более отдалённые от основной функции. В итоге мы можем вынести их, условно говоря, в «пограничные области» кода. Это приведёт к тому, что у нас будет тонкая оболочка из нечистого кода, которая окружает хорошо протестированное и предсказуемое ядро." и я подумал что так и принято в фп в целом
Смысл ФП не в том, чтобы огораживаться от IO и состояния, оно ж всё равно будет. Можно разве что свести это к минимуму, что невредно. А смысл в том, чтобы код писать композицией функций, а не какими-то другими примитивами, как в других языках
Смысл ФП не в том, чтобы огораживаться от IO и состояния, оно ж всё равно будет. Можно разве что свести это к минимуму, что невредно. А смысл в том, чтобы код писать композицией функций, а не какими-то другими примитивами, как в других языках
Я правильно понимаю один из аспектов функционально подхода в отношении чистых и нечистых функций? мы изолируем нечистые функции(ввод-вывод допустим) , а они уже вызывают чистую функцию, которая в свою очередь может последовательно вызвать цепочку чистых функций. таким образом изолируется "грязный" код как я понял.
> ввод-вывод допустим Ввод-вывод тоже может быть чистым. Например, в раннем хаскеле, он делался в виде функции обработки ленивого списка, поступающего "извне".