История изменений
Исправление den73, (текущая версия) :
Хотя, насколько я понял, монада - это по сути переопределяемая «точка с запятой» из Си. Смысл монады в том, что она позволяют абстрагировать процесс порождения побочных эффектов и взять его под контроль. За счёт этого якобы можно реализовать внутри языка транзакции, call/cc, undo и т.п..
Насколько это в реальности возможно и насколько технологически сложно - я пока не выяснил.
Например, я спросил (тему не буду искать), легко ли сделать с помощью монад имитацию языка с исключениями (throw/catch), и оказалось, что на Хаскеле это можно, но нетривиально.
Исходная версия den73, :
Хотя, насколько я у понял, в монада - это по сути переопределяемая «точка с запятой» из Си. Смысл монады в том, что она позволяют абстрагировать процесс порождения побочных эффектов и взять его под контроль. За счёт этого якобы можно реализовать внутри языка транзакции, call/cc, undo и т.п..
Насколько это в реальности возможно и насколько технологически сложно - я пока не выяснил.
Например, я спросил (тему не буду искать), легко ли сделать с помощью монад имитацию языка с исключениями (throw/catch), и оказалось, что на Хаскеле это можно, но нетривиально.