Здравствуйте, AlexRK, Вы писали:
ARK>Здравствуйте, jazzer, Вы писали:
J>>Вот такое объяснение тебе нормально?
J>>http://rsdn.ru/forum/philosophy/5392303.1Автор: jazzer
Дата: 11.12.13
ARK>Да, это мне понятно. Но непонятно, как может выглядеть реализация этого.
ARK>Это похоже на "ты пишешь код, как будто дедлоков нет, но компилятор все отслеживает и не дает скомпилировать программу, если обнаружит дедлоки". То есть звучит все круто, но как это сделано?
все превращается во вложенные вызовы вложенных лябмд, по условию errno.
Ты это и сам пишешь в Си руками в виде многоэтажных ифов, монады просто позволяют это дело упрятать под капот.
Т.е. проверка errno и продолжение вычислений на основании его значения — это паттерн (синтаксический, если угодно).
Монада позволяет кишки этого паттерна спрятать.
Только и всего.
Никакого волшебства и зауми.
То есть всегда, когда у тебя в обычном языке есть несколько инструкций, которые друг с другом как-то связаны, и эта связь выражена одинаково (как в случае с errno) — ты можешь кишки, которыми закодирована эта связь, убрать с глаз долой внутрь монады. Независимо от характера связи. Вот и все.