В момента знам следните методи за интегриране на страничните ефекти в чисто функционални езици за програмиране:
- ефективни системи
- продължения
- уникални видове
- монадите
Монадите често се посочват като най-ефективният и най-общ начин за това.
Кои други методи съществуват? Как ги сравняват?
Отговори:
1 за отговор № 1стрелките, които са по-общи от монадите.
0 за отговор № 2
Най-простият метод е просто да преминете около средата между функциите. Това често се използва за преподаване на схема.
0 за отговор № 3
За мен по-общ начин е чрез monad / comonadдвойка. Това обобщава често срещания подход „монада“, който правилно трябва да се нарече „силен монаден“ подход, тъй като работи само със силни монади.
Преминаването към двойка монада / comonad позволява ефекти къмда бъдат моделирани, което води до това, че някои променливи вече не са налични. Пример, когато това е полезно, е ефектът от мигрирането на нишка към друг хост в разпределена настройка.
Допълнителен метод от исторически интерес е данаправи цялата програма функция, която картографира поток / списък на входни събития към поток / списък на изходните събития. Вижте: „Как да обявя императив“ от Фил Уодлър: http://www.cs.bell-labs.com/~wadler/topics/monads.html#monadsdeclare