169 похожих чатов

Мы говорим про очереди?

38 ответов

44 просмотра

Про любой юнион который сделан по скала-обычаям: case class TheCase extends SealedTrait

Oleg-ℕižnik Автор вопроса

enum Event: case Create(...) case Change(...) case Delete(...)

Scala 3

То есть подтверждаете, что скала?

Oleg-ℕižnik Автор вопроса

да, можете закодировать свою структуру в scala 3, чтобы не было слова extends и использовать это в scala 2 коде

Вообще не спорил. Более того, то что этот бред пофиксил в 3 говорит о том, что это было полное говно в 2. Но не все знают, что это ьак

Ну не надо так, мейнстрим языков с нормальными типами-пересечениями не так много. Отсутствие union types в скале мешало, но куча других языков как-то живет без этой фичи. Начиная с джавы.

Ну я же говорю, выживать можно как угодно. Размахивать АДТ по всем Интернета и не иметь нормального определения суммы - такое себе.

Oleg-ℕižnik Автор вопроса

расскажите, как выглядит нормальное определение суммы

Так у вас претензии не к языку, и даже не к цирке, а к агрессивному фанатичному коммьюнити? Ну что поделаешь, другого коммюнити нет. Самое приличное обитает на реддите, кстати.

Вот так, например: type Shape = | Rectangle of width : float * length : float | Circle of radius : float | Prism of width : float * float * height : float

Oleg-ℕižnik Автор вопроса

Этот SML код в точности соответствует определению через enum

А в скале 2 что там про енам? А в скале 3 что там про цирку? Ответы: ни того, ни другого. Енамов нет в 2. Цирка есть - писать кодеки руками в 3.

Таки это полностью эквивалентно наследованию.

Oleg-ℕižnik Автор вопроса

в скале case class ... extends и есть энкодинг этого энама, он вводит несколько новых типов, которые вы вправе не использовать

Нет. Потому что НЕ надо менять определение Rectangle чтобы он поучаствовал в каком-либо юнионе. Rectangle знать не знает в каких он юнионах.

Rectangle уже определен как часть этого юниона. Он не может быть определен в другом модуле. Вот если бы он мог быть определен до определения юниона и после этого включен в юнион в другом модуле или включен в 2 разных юниона - это было бы что-то отличное от sealed trait

Так в scala 3 тоже есть extends https://docs.scala-lang.org/scala3/book/types-adts-gadts.html , просто он опускается. А вы согласились, что в scala3 круто. Видимо проблема в наличии "extends", а не в том, как это реализовано

Тма просто либ для JSON по факту нет - руками кодеки я могу писать сколько угодно. В 2021 для меня это немного странно и должно быть отдельно везде заявлено.

Oleg-ℕižnik Автор вопроса

Владимир, вы пример с ЖСОН то обещали на фарше

ну юнионы без наследования.я привел?

Не можешь. Час назад молил о примере

Перестань себя закапывать

Oleg-ℕižnik Автор вопроса

да они и в скале без наследования, никому не интересен этот бред про "без наследования", интересно, как вы автоматически распакуете вложенные рекорды с дискриминатором в популярной либе в другом зяыке

Они не без наследования. Они с другим синтаксисом наследования

Нет, там нет насдедования - можете в IL заглянуть

Oleg-ℕižnik Автор вопроса

вы пришли с конкретной задачей, вам привели несколько предложений

Да какая разница? Количество объявляемых сущностей такое же. Ограничения на них такие же.

и я это ценю но потом вы начали говорить как это прекрасно когда юнион заставляет менять определение классов которые в нем участвуют

Oleg-ℕižnik Автор вопроса

код на эфшарпе напишите с ЖСОНом потом поговорите

хорошо, то есть просто показать, что мои юнионы номально ложатся в JSON - правильно?

> юнион заставляет менять определение классов которые в нем участвуют вы кажется не различаете юнион и адт

Что они ложаться в JSON как-то принципиально лучше, чем код на кирке с Iso

Стикер

Нет такого "лучше" Есть два нормальных способа представлять юнионы: wrapped object и discriminator field

В моем коде тоже юнион не менял изначальные классы

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта