169 похожих чатов

Привет всем. Не знаю, удачный ли чатик я выбрал для

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

15 ответов

27 просмотров

есть IO монад, который дает возможность выходить во внешний мир и мутировать, как я понял

В целом мире есть (ML-семья языков), это в хаскельной семье скорее нет.

Gellert-Cringewald Автор вопроса
Ильгар Гамидов
есть IO монад, который дает возможность выходить в...

то есть типа для 95% процентов кода мы пишем иммутабельный код, и в 5% используем мутабельный стейт, типа в акторах, в библиотеках, которые работают с файлами и тд?

Gellert-Cringewald Автор вопроса
IC Rainbow
В целом мире есть (ML-семья языков), это в хаскель...

то есть у фп в целом нет такого требования, что все должно быть иммутабельное? У каких то языков есть, у каких то нет?

Gellert Cringewald
то есть типа для 95% процентов кода мы пишем иммут...

да, если нужно прочитать файл, печатать в консоль читать из консоли и т.д. - IO Monad в помощь. он помогает спокойно работать с грязным кодом (с побочкой (side effect))

Gellert Cringewald
то есть у фп в целом нет такого требования, что вс...

ФП не может требовать, оно не субъект (: Может требовать препод по ТЯП, или кто-нибудь ещё. В это всё и упирается - а для какой цели вообще это разделение проводится?

Gellert Cringewald
то есть типа для 95% процентов кода мы пишем иммут...

по сути мы изолируем мутабельный код от иммутабельного. мутабельный называют tainted а иммутабельный pure их разделяют каким нибудь интерфейсом который выдает либо ожидаемый результат либо сообщает что результат получить не удалось. вроде в learn you a haskell так объяснялось

Gellert Cringewald
то есть типа для 95% процентов кода мы пишем иммут...

Соотношение, конечно, не такое, но основная идея в том что мы можем разделить код с эффектами от кода без эффектов. То есть у нас есть логическое разделение по тому, что может совершать подсистема в коде.

Strange Rabbit
Соотношение, конечно, не такое, но основная идея в...

правильно, так легче контролировать код и отлавливать ошибки в случае чего

deadgnom32 λ madao
по сути мы изолируем мутабельный код от иммутабель...

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

Gellert Cringewald
то есть типа для 95% процентов кода мы пишем иммут...

какие акторы имеются в виду? если те, что что в Акке или Эрланге, то они тоже могут быть полностью иммутабельны. там чистые данные на входе, чистые на выходе

Gellert-Cringewald Автор вопроса
Cheese Syrowiecki
какие акторы имеются в виду? если те, что что в Ак...

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

Gellert Cringewald
наверное не про конкретные какие то, в целом читал...

Не обязательно. Это может быть просто функция которая сама себя вызывает с новым "стейтом" в конце обработки сообщения.

Gellert Cringewald
🤔

actor counter = recv >>= \req -> print req >> actor (counter + 1)

Похожие вопросы

Обсуждают сегодня

Может кто встречал такое? Один набор данных, но в одном столбце кодировка нормальная, а в другом ироглифы. Как такое может быть?
Alexander
23
Всем привет. Подскажите, пожалуйста, почему не ищет русскую букву а? А английскую ищет. Полагаю что-то с кодировкой. Но как исправить это? procedure TfrmMain.btnOpenFileClic...
Евгений
7
И к какой архитектуре привязана Java?
Dmitry Olshansky
17
коллеги, добрый вечер! А никто не знает как модальная форма может себя закрыть? Ну допустим модальная форма определила, что смысла ей работать нет и хочет вернуть modalResult...
Михаил
83
@Aiwan что такое база образца?
Alexey
27
Не многие знают, а кто знает, тот уже успел забыть, что в далёком 2004 году эта игра произвела настоящий фурор, настолько революционной была технология, применяемая для её соз...
ICCID
4
Как это поможет если в архив положили папку?
Sasha Beep
8
Добрый день Хочу начать обучение языку, не являюсь представителем it, буду благодарна за помощь, совсем пока не понимаю ничего) Подскажите, пожалуйста, где можно начать первы...
Sara Lala
30
Хотя у меня сейчас есть более сложная задача, вот её думаю: как объяснить челу переходного возраста противоположного полу, обучающегося в польском колледже (а-ля наш техникум)...
Вячеслав Кузьменко
15
Короче я тут узнал полный пиздец Что кучу постов которые я создавал через posted Спустя время не могу редактировать и менять Мол телега возвращае ошибку Это реально так ...
inc.
13
Карта сайта