Size: a a a

Programming Offtop

2021 March 24

U

Unat in Programming Offtop
Anton Korotkikh
с эрлангом в чятике, кстати странная история. его переодически обсуждают, но никто на нём не кодит, ни у кого ещё не былло тут прода на эрланге вроде бы
Чуууть-чуть касался его в проде. Сомнительная история.
источник

I

Ilmir in Programming Offtop
Алексей Худяков
Уточняю вопрос. Есть ли в языке с этой фичей параметрический полиморфизм? Тогда в рантайме мы ничего не можем сказать про тип. Или подразумевается, что можно проверить является ли параметр значением типа Err?
Да, возможность сделать instanceof в рантайме неявно подразумевалась, спасибо!
источник

АХ

Алексей Худяков... in Programming Offtop
Ilmir
Можно реифицировать дженерики (не вариант на JVM до прихода вальхаллы). Не всегда дженерики == стирание типов в рантайме.
Потому и спрашивал. Можено же так, а можно эдак
источник

AD

Apache DOG™ in Programming Offtop
Ilmir
1. Можно.
2. Нельзя. Как я в Either добавлю новый конструктор?
3. Расширение возвращаемого типа - несовместимое изменение. Ещё раз. Конкретно тебе я не запрещаю ломать код. Ломай сколько хочешь. Конкретно этот рант я написал после того, как ещё раз сломал бинарную совместимость и понял, что если бы в JVM были юнионы - мне этого делать не пришлось бы. Да, я пишу язык и от меня немного другие требования. В том числе к совместимости.
4. См 2. Как я добавлю новый конструктор в Either. Во, придумал аналогию. Смотри, у тебя есть класс String. Но от него наследоваться ты не можешь, ибо он стандартный и финальный. Функции-расширения как бы добавляют функциональность в класс, не наследуясь от него, точно так же, как и юнион типы позволяют расширить другой юнион.
5. Я рассматривал один (два) конкретный пример. Вариантность - это уже к дженерикам и там свои интересные заморочки. NB: И где этот мальчик увидел дженерики в примерах?
6. Прочти ещё раз и напиши нормально. Так дойдёт до того, что баг фиксы с добавлением обработки особого случая будут несовместимым изменением.
7. Неа, не понял ты написанного, а сразу писать комментарий.

Занятно. Я только что понял, что у меня появился хейтер. Причём такой, который хейтит не мои идеи, или взгляды, как @happy_bracket (Скобка - ты няша, несмотря на наши различия во взглядах на ХКТ), а именно меня. Что я, интересно, сделал? Не согласился с мнением, что опшн лучше нулябельности? Так вот и аргументы, почему он хуже. Но нет, надо не вести аргументированную дискуссию, как @sad_bracket, а накидывать "чё он за язык может написать". А также полностью перевирать оппонента "не совместимым изменения протокола" - я же объяснил, почему эти изменения протокола совместимые и не должны ломать пользовательский код. Подобные полемические приёмы и в до-интернетовскую не работали, а теперь, когда всё сохраняется и может быть скопировано - тем более.
1) и зачем тогда говна развозить по чатам?  2) легко, берём и юзаем Either[Domain Error, T]. Доменная ошибка наша АДТ как надо так и изменяем вот и окей. 3) пофиг что ты пишешь, противоречить логике нельзя 4) да ну чепуха это все, точно так же можно засунуть АДТ в АДТ и вот тебе расширение, это было придумано до всяких копродуктов и используется в ооп подобный прием очень давно. 5)  Вариантность относится не только к дженерикам, это свойство кода одобрять расширения или сужения контрактов. Частный случай - дженерики. 6) вы сменили контракт, все должны об этом узнать.
источник

AK

Anton Korotkikh in Programming Offtop
Dmitry Ponyatov
микросервисность доведенная до абсурда, и в микромасштабе
хм... так любой event driven фреймворк подойдёт. vert.x или moleculer, также сидишь и гоняешь сообщения между каким-то сущностями. при желании объединяя их в кластера по сети и имея распределённую шину событий
источник

SG

Sergey Grieg in Programming Offtop
Anton Korotkikh
хм... так любой event driven фреймворк подойдёт. vert.x или moleculer, также сидишь и гоняешь сообщения между каким-то сущностями. при желании объединяя их в кластера по сети и имея распределённую шину событий
Вот только два вопроса — на*уя и главное зачем стрелять из пушки по воробьям?
источник

IP

Iaroslav Postovalov in Programming Offtop
Еще один туда же
источник

АХ

Алексей Худяков... in Programming Offtop
О! А могут ли unions быть параметрами генериков? List<A|B>?
источник

IP

Iaroslav Postovalov in Programming Offtop
источник

А

Алексей in Programming Offtop
Алексей Худяков
О! А могут ли unions быть параметрами генериков? List<A|B>?
А почему нет?
источник

АХ

Алексей Худяков... in Programming Offtop
Unat
Чуууть-чуть касался его в проде. Сомнительная история.
Я даже писать на эрланге не собираюсь. Мне интересно как там устроен надзор за процессами. Может можно какие-нибудь идеи потырить
источник

VP

Vladimir Petrakovich in Programming Offtop
Алексей Худяков
О! А могут ли unions быть параметрами генериков? List<A|B>?
В прекрасном котлине будущего? Конечно!
Иначе они нахер не нужны
источник

IP

Iaroslav Postovalov in Programming Offtop
Алексей Худяков
О! А могут ли unions быть параметрами генериков? List<A|B>?
Окей, и что из этого ломается? Всякие List<out (A | B)>?
источник

I

Ilmir in Programming Offtop
Apache DOG™
1) и зачем тогда говна развозить по чатам?  2) легко, берём и юзаем Either[Domain Error, T]. Доменная ошибка наша АДТ как надо так и изменяем вот и окей. 3) пофиг что ты пишешь, противоречить логике нельзя 4) да ну чепуха это все, точно так же можно засунуть АДТ в АДТ и вот тебе расширение, это было придумано до всяких копродуктов и используется в ооп подобный прием очень давно. 5)  Вариантность относится не только к дженерикам, это свойство кода одобрять расширения или сужения контрактов. Частный случай - дженерики. 6) вы сменили контракт, все должны об этом узнать.
1. Чтобы хейтеров побесить!
2. Ок, вот у тебе надо обработать тип, ну не знаю, Int. Это не ошибка, расширять свой тип ошибки - противоречить логике.
3. Понятно, конструктива я не дождусь.
4. Ditto
5. Примеры, отличающиеся от моих и без дженериков в студию.
6. Понятно, конструктива я не дождусь.
источник

AM

Andrew Mikhaylov in Programming Offtop
Iaroslav Postovalov
Еще один туда же
F
источник

IP

Iaroslav Postovalov in Programming Offtop
Не, это друг мой
источник

IP

Iaroslav Postovalov in Programming Offtop
Я нормальный (нет, у меня просто винды нет и телефон слабый)
источник

АХ

Алексей Худяков... in Programming Offtop
Iaroslav Postovalov
Окей, и что из этого ломается? Всякие List<out (A | B)>?
Сразу на ум не приходит, но мне кажется что это тонкое место, где можно погореть на чём-нибудь, особенно на всякой ко- контравариантости. Тут надо сидеть и аккуратно проверять
источник

I

Ilmir in Programming Offtop
Алексей Худяков
О! А могут ли unions быть параметрами генериков? List<A|B>?
Да, причём List<A> можно привести к List<A|B> из-за ковариантности листа.
источник

IP

Iaroslav Postovalov in Programming Offtop
Алексей Худяков
Сразу на ум не приходит, но мне кажется что это тонкое место, где можно погореть на чём-нибудь, особенно на всякой ко- контравариантости. Тут надо сидеть и аккуратно проверять
Ооо, я помню, у меня какой-то код поломался
источник