Конкретная монада берет на себя всю работу с менеджментом эффектов и канкаренси в то время как я могу начать выстраивать свой дсл с помощью более высокоуровневых компонент, относящихся к логике конкретной задачи (в виде каких-нибуть зио модулей, ограничивая в конкретных местах контекст до необходимой подчасти а ля ZIO[Database with DatabaseConfig, ...]), а не к подробностям возни с эффектами
нет. надо эффекты кодировать, а не приложение
ZIO с чем угодно в параметре энва все ещё является конкретной монадой с бесконечно богатой экспрессивностью. То, что там в энве Database не означает, что она не может делать запросы по HTTP, например.
Всё, что ты сказал - и про высокоуровневые компоненты, и про логику - в целом не противоречит ТФ. Описывая логику на тайпклассах, ты точно так же будешь делегировать работу конкретной монаде, только она будет определена где-то в конце программы, а ты будешь писать высокоуровневый код. Никто ведь не заставляет тебя писать race заново, верно? Ты так же будешь заботиться о бизнес-логике своего приложения
Обсуждают сегодня