1. Инфраструктура на будущее не нужна и запрещена. Всё равно придётся ломать API. Боль от миграций надо уменьшать другими способами (LTS версии, конвертаторы кода, методы-прокладки, shading, etc.) & 2. Ни единого дубликата кода быть не должно. Дубликация кода это не рациональное решение, это нехватка мозгов для его исправления.
>>3457776 (OP) А как вы вообще на работу устраиваетесь на жабе? ИДЕ и нейронка сейчас пишет весь код за программиста, джуны не нужны в принципе. Да и сама жаба вскоре отпадет, когда в контекст нейронки можно будет запихнуть весь проект на миллиарды строк кода и она за секунду выдаст код на современном языке типа голанга.
>>3457963 >Да и сама жаба вскоре отпадет, когда в контекст нейронки можно будет запихнуть весь проект на миллиарды строк кода и она за секунду выдаст код на современном языке типа голанга. Не забывай про ежедневный приём таблеток.
>>3457962 Чтобы убрать полностью дубликацию кода надо сделать систему типов очень мощной и разрешить жаванам делать очень много всякого. Неглупые люди сверху на это не пойдут. Они же понимают, кто такие жаваны и насколько им опасно давать такие инструменты.
Без этого дубликация в той или иной степени все равно будет, терпим..
>>3458053 Я же уже сказал, что тебе еще надо? Без kind у тебя нет четкой разницы между контекстом и значением, иначе говоря коллекции и значения - это одно и то же. Что из этого следует, ты не можешь сделать метод, который абстрагируется не по значению, а по тому, что его как бы хранит. Типа того: <A, B, F> F<B> functor(F<A>, Function<A, B> f);
Также без kind у тебя есть только крайне ограниченные интерфейсы, а не тайпклассы.
>>3458074 Ну это базовый уровень. Функтор фактически интерфейс для функции map любой коллекции. Потом идет развитие из функтора в аппликативный, если раньше функтор принимал чистую функцию и обернутое контекстом значение, а потом сливал их, то теперь он берет обернутую контекстом функцию и обернутое контекстом значение. Ключевая разница в том, что теперь сливаются два контекста. <A, B, F> F<B> applicative(F<A> v, F<Function<A, B>> f); Третье и финальное развитие - это bind. Когда на входе чистая функция, которая в итоге оборачивает результат в контекст и значение в контексте. Bind по сути берет и вытаскивает из контекста значение и передает этой функции, получая еще один контекст. <A, B, F> F<B> bind(F<A> v, Function<A, F<B>> f); <A, F> F<A> pure(A a); Пример в жабе, это map - https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html#map-java.util.function.Function- это bind - https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html#flatMap-java.util.function.Function- Тогда Functor - это интерфейс для map, а Monad интерфейс для bind, ну и еще pure. Как вершина, типы позволяют изолировать ресурсы, создавая сколемы - https://thoughtsfactorial.com/posts/2021-08-07-the-st-trick/ В виде картинок, может понятнее будет - https://www.adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html
>>3457968 Чел, что ты несешь. Для систем-типов-enjoyеров уже всю дорогу существовала скала, которая жила-жила, да так и померла. Какие нахуй неглупые люди...
Всем давно и плотно похуй на дубликацию кода. Программисты необучаемые блять - косплеят жалкие косплеи на ФП да переизобретают одно и то же по тыще раз, называя это развитием. Никакой теории заговора не надо.
И вот ты говоришь - "нужно сделать систему типов мощной джаванам"... Нахуя, если джаваны даже половины возможностей имеющейся системы типов не используют?
Чтобы эффективно работать в мощной системе типов, надо уметь мыслить абстракциями. А для этого надо чтобы мозг иметь хотя бы чуток прокачанный в математический уклад, чтобы не выпадать в осадок от пресловутых названий артефактов из терката. А таких людей не то чтобы много. На порядки меньше чем лоускильных квадратногнездовых промптеров. Поэтому джава именно такая, какая есть. Живи с этим.
>>3458335 Так это не я же предлагал убрать дубликацию, я наоборот согласен с тобой, что это не баг, а фича жабы. Все правильно делают, жаванам ничего доверить низя, что явно показывает история с unsafe
>>3458335 чел, индустрии надо чтобы чем более лоускильная макака может высирать рабочий код - тем лучше. Тем продукты дешевле и маржа больше. Нахуй никому не нужен твой пердолинг и вышмат, он денег не приносит