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

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

38 ответов

40 просмотров

Про любой юнион который сделан по скала-обычаям: 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

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

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

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

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
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
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта