/ / Методи за странични ефекти в чисто функционални езици за програмиране - монади, продължения, странични ефекти, чисто функционални, ефективни системи

Методи за странични ефекти на чисто функционални езици за програмиране - монади, продължения, странични ефекти, чисто функционални системи за ефект

В момента знам следните методи за интегриране на страничните ефекти в чисто функционални езици за програмиране:

  • ефективни системи
  • продължения
  • уникални видове
  • монадите

Монадите често се посочват като най-ефективният и най-общ начин за това.

Кои други методи съществуват? Как ги сравняват?

Отговори:

1 за отговор № 1

стрелките, които са по-общи от монадите.


0 за отговор № 2

Най-простият метод е просто да преминете около средата между функциите. Това често се използва за преподаване на схема.


0 за отговор № 3

За мен по-общ начин е чрез monad / comonadдвойка. Това обобщава често срещания подход „монада“, който правилно трябва да се нарече „силен монаден“ подход, тъй като работи само със силни монади.

Преминаването към двойка монада / comonad позволява ефекти къмда бъдат моделирани, което води до това, че някои променливи вече не са налични. Пример, когато това е полезно, е ефектът от мигрирането на нишка към друг хост в разпределена настройка.

Допълнителен метод от исторически интерес е данаправи цялата програма функция, която картографира поток / списък на входни събития към поток / списък на изходните събития. Вижте: „Как да обявя императив“ от Фил Уодлър: http://www.cs.bell-labs.com/~wadler/topics/monads.html#monadsdeclare