LINUX.ORG.RU
Ответ на: комментарий от anonymous

Не неси херни

У тебя в монаде IO есть возможность кодить императивно.

В монаде IO такой же чистый функциональный код, как и во вне.

Изолированный блок кода, в котором ты и осуществляешь взаимодействие с миром.

А блок с монадой IO можно изолировать? Без читинга с unsafePerformIO.

anonymous
()
Ответ на: Не неси херни от anonymous

Сам не неси

Не прикапывайся к формулировкам, сам сообрази, в каком смысле он «императивный».

Наверно не понял вопрос... Блок с ио у тебя и так топ-левел. Его можно разбить на функции а->ио б, и внутри них общаться посредством внешего мира с другим ио-кодом, нарушая эээ информационную замкнутость do-блока, но все эти функции как на ладони, с одним ио-клеймом все. А при хорошем дизайне их ещё и мало.

unsafePerformIO юзают, например, когда подключают сторонню библиотеку, реализующую чистые вычисления. В общем, когда мы делаем что-то в ио, но это не может ни на кого повлиять. Иное использование - суть ересь и автор подлежит сожжению со своим кодом.

Надеюсь, ответил

anonymous
()
Ответ на: Не неси херни от anonymous

а вообще, похоже что нельзя

но зато у нас такой код отделён от остального

anonymous
()
Ответ на: Сам не неси от anonymous

Не прикапывайся к формулировкам

Ну нихера себе. Если в контексте C++ говорят «константная ссылка» про «ссылку на константу», то поправлять такое — прикапываться к формулировкам.

А когда на чистый функциональный код говорят, что он императивный — это не проблема формулировки, это абсолютное враньё.

Блок с ио у тебя и так топ-левел.

Да. Так что никакого изолированного IO у тебя нет, у тебя весь код в IO. Лол.

anonymous
()
Ответ на: комментарий от anonymous

Послушай, ты себе можешь представить, в каком смысле он императивный? Хотя бы (как ты скорее всего посчитаешь) с большой натяжкой, косноязычно? Нет? Ну ок, в одностороннем порядке закрываю тему. Мне не интересно спорить по таким мелочам.

Ио не изолирован сам от себя. Ио, находящийся дальше по стеку может принимать и передавать информацию не через аргумент или возвращаемое значение, но только в другое ио. От не-ио он изолирован. Он, конечно, теоретически может насрать в память, и чистая функция вернёт что-то не то, но это что-то внешнее по отношению к семантике языка. Ио изолирован в том смысле, что не может (окей, штатными средствами) вмешаться в код чистых вычислений или получить их результат иначе как через возвращаемое значение.

Но я не очень понимаю, зачем я всё это говорю. Ты и так знаешь всё это, и наверно даже смог бы это всё сам написать. Ты просто прикопался к формулировкам, потому что тебе кажется, будто о предмете можно мыслить только определёнными формулировками, а другие автоматически не валидны. Это не так. Суть (операционную, семантическу, не важно) можно передать и другими словами, особенно людям не в теме. Поэтому если возражений по существу нет, то предлагаю закругляться. Понимаю, что они в твоём восприятии уже были в том или ином смысле по существу, но додумайся, что я имею в виду, когда говорю «по существу». А то надоело. Это слишком похоже на троллинг - заставить оправдываться по пустякам.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.