Вы пробовали писать именно приложения на haskell и zio/effect-ts? Если нет, то возможно вы не совсем понимаете концепцию продуктивной системы эффектов.
Основополагающим для неё является вывод возвращаемого типа эффекта параметризованного всеми задействованными в do-нотации ошибками и зависимостями, которого в haskell нет (буду рад узнать что есть какое-то расширения языка которое я упустил).
Два факта позволяют получить заметное улучшение опыта разработки за счёт использования эффектов: возможность посмотреть выведенный тайпхинт в котором на виду пояснены все ошибки и зависимости (а не скрыты за каким-то номинальным типом), и возможность не писать самому этих тайпхинтов повсюду.
Я и мои коллеги приняли решение что эта возможность видеть ошибки и зависимости в типах стоит каждой строчки необходимого бойлерплейта.
Стоит еще добавить что помимо безопасности, система эффектов как и любая монада/монадтрансформер добавляет целый мета-уровень в исполнение программы. Что позволяет например получать практически бесплатные трассировки запросов которые показывают каждую вызванную функцию и все тайминги. В ZIO вообще без единой строчки кода (за счет имплиситов scala), в Effect-ts нужно оборачивать объявленные функции в Effect.fn (с чем тоже можно смириться, если посмотреть на другие решения для трейсинга в экосистеме ts и сравнить)
До тех пор пока не придется написать связный список.
Вы пробовали писать именно приложения на haskell и zio/effect-ts? Если нет, то возможно вы не совсем понимаете концепцию продуктивной системы эффектов.
Основополагающим для неё является вывод возвращаемого типа эффекта параметризованного всеми задействованными в do-нотации ошибками и зависимостями, которого в haskell нет (буду рад узнать что есть какое-то расширения языка которое я упустил).
Два факта позволяют получить заметное улучшение опыта разработки за счёт использования эффектов: возможность посмотреть выведенный тайпхинт в котором на виду пояснены все ошибки и зависимости (а не скрыты за каким-то номинальным типом), и возможность не писать самому этих тайпхинтов повсюду.
Я и мои коллеги приняли решение что эта возможность видеть ошибки и зависимости в типах стоит каждой строчки необходимого бойлерплейта.
Стоит еще добавить что помимо безопасности, система эффектов как и любая монада/монадтрансформер добавляет целый мета-уровень в исполнение программы. Что позволяет например получать практически бесплатные трассировки запросов которые показывают каждую вызванную функцию и все тайминги. В ZIO вообще без единой строчки кода (за счет имплиситов scala), в Effect-ts нужно оборачивать объявленные функции в Effect.fn (с чем тоже можно смириться, если посмотреть на другие решения для трейсинга в экосистеме ts и сравнить)