основе прочитанной документации.
0) предлагаю не упоминать ТФ в суе, он вообще не об этом. Предлагаю сравнивать корутины с ио/зиво
1) как на корутинах легко реализовать race ?
2) как композить ресурсы?
3) как удобно разделить построение ресурсов и их использование?
1. Вот так: suspend fun <A> race(a: suspend () -> A, b: suspend () -> A): A = coroutineScope { val da = async { a() } val db = async { b() } select { da.onAwait { db.cancel("race") it } db.onAwait { da.cancel("race") it } } } 2, 3 - в стандартной библиотеке нет, но Сергей скинул интересную реализацию на корутинах - https://arrow-kt.io/docs/apidocs/arrow-fx-coroutines/arrow.fx.coroutines/-resource/
Окей, это отвечает на вопрос "как с этим можно жить", но пока не убедило забросить все остальное
И не должно убедить. Я вот не уверен, что котлин лучше скалы для асинхронного кода. И в обратном тоже не уверен. Нужно просто сесть и попробовать что-нибудь написать. И потом поделиться ощущениями.
А арроу катэ кто-нибудь использует?
Ток апаче ерроу используют
Обсуждают сегодня