Ответ 1
PS: Интересно, почему библиотека Play Iteratees не была выбрана Мартином Odersky за свой курс, так как Play находится в стеке типов. Имеет ли это означает, что Мартин предпочитает RxScala над Play Iteratees?
Я отвечу на это. Решение о том, какой потоковый API для толкования/обучения не является тем, что было сделано только Мартином, но по методу Typesafe в целом. Я не знаю, что лично предпочитает Мартин (хотя я слышал, что он говорит, что это слишком сложно для новичков), но мы в "Типы" полагаем, что Iteratees требует слишком высокой кривой обучения, чтобы научить их новичков в асинхронном IO.
В конце дня выбор потоковой библиотеки действительно сводится к вашему прецеденту. Воспроизведение итераций библиотеки обрабатывает практически все существующие потоковые варианты использования, но по цене очень трудно освоить API (даже опытные разработчики Haskell часто борются с итерациями), а также некоторые потери производительности. Другие API-интерфейсы обрабатывают меньше случаев использования, например, RX не обрабатывает обратное давление (в настоящее время), и очень немногие из других API подходят для простого потокового анализа. Но потоковый синтаксический анализ на самом деле довольно редкий случай использования для конечных пользователей, в большинстве случаев достаточно просто выполнить буферизацию, затем разобрать. Таким образом, Typesafe выбрал API, которые легко узнать и соответствуют большинству наиболее распространенных случаев использования.