Ответ 1
Я отправился в Haskell.org для изучения вашего вопроса. Я нашел две важные статьи, которые вы должны прочитать, чтобы продолжить свое исследование, и я строю свой ответ на ваш вопрос из этих научных работ.
Push-Pull FRP от Conal Elliott
Обобщающие монады к стрелам Джона Хьюза
-
Да, но и нет. По словам Эллиота, push - это оценка FRP, основанная на данных, и pull относится к так называемой оценке спроса. Автор рекомендует вытягивать, потому что push имеет тенденцию простаивать между входами данных. Здесь crux: push-pull объединяет и уравновешивает эти поведения для главной цели минимизации необходимости пересчета значений. Это просто; работающая FRP с push-pull ускоряет реагирование. Стрелка - это другой метод использования абстрактных типов для связывания значений и оценки их одновременно. Все эти понятия принципиально разные. Но не верьте мне на слово:
Характер интерфейса Arrow проблематичен для минимальной переоценки. Входные события и поведение объединяются в один вход, который затем изменяется всякий раз, когда изменяется какой-либо компонент (Elliott).
Таким образом, Arrow противоречит цели push-pull. Это не значит, что вы не можете использовать все это сразу, просто чтобы это было сложно, и есть некоторые вещи, которые вы не можете вычислить без абстрактных типов стрелок.
-
Я не нашел научных мнений о том, какие подходы являются "способом будущего". Обратите внимание, что стрелки могут обрабатывать одновременность особенно хорошо. Если бы вы могли реализовать стрелки и использовать push-pull для минимизации вычислений, это было бы способом будущего.
-
Да, они касаются отдельных целей. Как я уже сказал, их можно сформулировать вместе, но их сложно реализовать, и даже если это действительно сработает, это, вероятно, отрицает преимущества реактивной скорости push-pull.
-
Этот субъективный, но Reactive и Yampa, по-видимому, являются наиболее часто цитируемыми языковыми библиотеками для FRP. Я бы сказал, что Reactive by Conal Elliott имеет глубокие корни, и Ямпа также создана. Другие проекты, такие как Netwire, возникли как замены, но это может быть некоторое время, прежде чем они заменят гигантов.
Надеюсь, это поможет! Как я уже сказал, чтение статей, которые я указал, даст вам лучшее представление о семантическом расстоянии между стрелкой, нажатием и тягой.