Я хочу вивчити FRP в Haskell, але визначити, яку бібліотеку використовувати, трохи важко. Багато хто, здається, мертві спроби, деякі, здається, воскресилися (наприклад, недавня діяльність на Ямпа).
З того, що я прочитав, складається враження, що є два "види" FRP: "push-pull FRP" (як у "Реактивний банан") з одного боку та стрілеподібний FRP (як у Yampa) з іншого боку. Здається, що за Фран і FrTime раніше існував якийсь "класичний FRP", але я не помітив жодної недавньої активності в них.
Чи справді ці два (або три) принципово різні підходи FRP?
Чи є одна з них застарілою теорією, тоді як іншою буде "речі майбутнього"?
Або вони повинні розвиватися паралельно, вирішуючи різні цілі?
Я назвав найвидатнішу бібліотеку кожної категорії, чи є інші варіанти, які слід врахувати (Sodium, Netwire та ін.)?
Нарешті я подивився розмови Евана Чаплічки, рекомендовані у коментарях Дж. Абрахамсона. Це дуже цікаво і допомогло з’ясувати речі для мене. Я дуже рекомендую його всім, хто вважає це питання цікавим.
reactive-banana
безумовно, на основі тяги не push-pull. reactive
є push-pull. Yampa
і netwire
мають стрілку. Є FRP, які дозволяють "накопичувати значення", але не дозволяють "перемикатися", FRP, які дозволяють "перемикати", але не "накопичувати значення". Обидва ці "прості" FRP. Стрілене FRP дозволяє перемикати та накопичувати, а за допомогою стрілок контролювати небезпеку поєднання цих функцій. Monadic FRP, як reactive-banana
, sodium
і elerea
використовувати інші дбайливі механізми, щоб переключення та накопичення не взаємодіяло надто сильно.