Методы побочных эффектов в чисто функциональных языках программирования - PullRequest
1 голос
/ 11 августа 2009

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

  • системы эффектов
  • продолжений
  • уникальных типов
  • монады

Монады часто упоминаются как наиболее эффективный и наиболее общий способ сделать это.

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

Ответы [ 3 ]

1 голос
/ 11 августа 2009

Стрелки , которые являются более общими, чем монады.

0 голосов
/ 01 августа 2010

Для меня более общий способ - через пару монад / комонад. Это обобщает общий подход «монады», который следует правильно называть подходом «сильной монады», поскольку он работает только с сильными монадами.

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

Дополнительный метод, представляющий исторический интерес, состоит в том, чтобы сделать всю программу функцией, отображающей поток / список входных событий в поток / список выходных событий. См .: «Как объявить императив» Фила Уодлера: http://www.cs.bell -labs.com / ~ wadler / themes / monads.html # monadsdeclare

0 голосов
/ 11 августа 2009

Самый простой способ - просто передать среду между функциями. Это часто используется для обучения схеме.

...