Начиная с определённого момента, котлин начинает форсить в вашу кодовую базу анемичную модель. Это не плохо и не хорошо, это просто следствие того, что он принял некоторые функциональные подходы и перевел фокус с действий на данные. Котлинисты теперь больше стали думать не над тем, как декораторы раскидать, а как по коллекции красиво пройтись, вот что-то из этого рода. В некотором смысле это можно назвать идиоматическим кодом.
Но тащить разные фичи в язык и называть их идиомами - это путь к тому, что Set.filter
возвращает лист, юзеры постоянно спотыкаются на корнер-кейсах, полгода переезжают с Ркса на корутины, а библиотекописари в замешательстве пытаются абстрагироваться над как раз suspend
-ом. Фичи в языке должны синергировать.
ХКТ - это не какая-то прихоть, и даже не идиома. Это логичное развитие любого языка с дженериками, потому что раз вы параметрически полиморфны по значениям, будьте добры быть параметрически полиморфными и по оберткам, иначе вы привязываетесь к бесконечному числу частных случаев.
И втаскивание фич в язык "по необходимости", а не "по задумке" - это, кстати, и есть С++ вей. Вот юзер споткнулся на каком-то кейсе, накатал пропозал, ему решили его проблему очередной фичей, отлично. Что это за фича? Будет ли она синергировать с другими? Нужна ли она другим юзерам? Какой мне толк от делегейтед пропертей, если команда крутит пальцем у виска, не понимая, что здесь написано?
Язык должен стремиться к тому, чтобы максимальное количество вещей можно было выразить на нём же, не открывая ютрек, иначе он всегда превратится в С++. Тут кстати и про суспенды - им необязательно быть частью компилятора, в пресловутом хаскеле почти такие же корутины реализованы на уровне библиотеки через ХКТ и монады и не отличаются от всего остального кода в смысле каких-то специальных ключевых слов или чего-то в этом роде.
Короче, если котлин-вей - обсуждать в пропозалах "а кому это надо" и "не сломает ли нам это что-нибудь", то увидимся через пять лет в паблике с мемами, где котлин будут сравнивать с плюсами. Если, конечно, язык выдержит такое многообразие взаимномешающих фич и вообще сможет развиваться
Повторюсь. Если тебе нужна скала, ты знаешь, где её взять. Теперь отвечу на домыслы про развитие языка и сравнение с плюсами: процесс сильно различается. В котлине упор на практику, а не обсуждение "не сломает ли чего". В течение этого периода как раз взаимодействие фич и проверяется. На практике. Появляются новые идиомы. Сколько всего нового в дотти? Сколько времени будут вылавливать все баги и через сколько десятилетий все передут на дотти, потому что совместимости нет. Корутины могут реализованы даже как макрос в кложе, без всякого хкт. Но чтобы реализовать эффективно, надо реализовать на уровне языка. Иначе сам бы песочил, что корутины тормозят. Зато теперь у нас есть CPS, на который можно натягивать другие фичи.
И да, хкт, как способ организации кода - именно идиома.
Короче, хватит пытаться натягивать идиомы из скалы на котлин. Почему-то джависты уже поняли, что котлин - другой язык, а фанатики - нет.