Я хочу изучать FRP в Haskell, но немного сложно выбрать библиотеку для использования. Многие из них кажутся мертвыми попытками, некоторые, похоже, воскрешены (например, недавняя активность на Ямпе).
Из того, что я прочитал, кажется, что есть два «вида» FRP: двухтактный FRP (как в Reactive-banana) с одной стороны и стрелочный FRP (как в Yampa) с другой стороны. Кажется, что во времена Fran и FrTime также был какой-то "классический FRP", но я не заметил какой-либо недавней активности в них.
Являются ли эти два (или три) действительно принципиально разными подходами FRP?
Является ли одна из них устаревшей теорией, в то время как другая станет «материалом будущего»?
Или они должны развиваться параллельно, решая разные задачи?
Я назвал наиболее выдающуюся библиотеку каждой категории или есть другие варианты для рассмотрения (Sodium, Netwire и др.)?
Наконец, я посмотрел выступление Эвана Чаплицкого, рекомендованное в комментариях Дж. Абрахамсона. Это очень интересно и помогло прояснить ситуацию для меня. Я настоятельно рекомендую его всем, кто нашел этот вопрос интересным.
reactive-banana
определенно основано на двухтактных, а не двухтактных. reactive
двухтактный Yampa
и netwire
стрелками. Существуют FRP, которые позволяют «накапливать значения», но не позволяют «переключение», FRP, которые допускают «переключение», но не «накапливают значения». Оба эти "простые" FRP. Arrowized FRP позволяет переключать и накапливать и использует стрелки, чтобы контролировать опасность объединения этих функций. Monadic FRP, как reactive-banana
, sodium
и elerea
использовать другие осторожные механизмы, чтобы гарантировать, что переключение и накопление не взаимодействуют слишком много.