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

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

38 ответов

10 просмотров

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

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

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

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

@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Заметил в ghci 9.4.8: > :t (<*>) @((->)_) (<*>) @((->)_) :: (w -> (a -> b)) -> (w -> a) -> w -> b Разве не должно (w -> (a -> b)) быть записано как (w -> a -> b)? Это баг, ил...
Михаил
13
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Any electron dev here?
Sayanth Tezro
12
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
так это может кто что знает или использует что-то как макбук только не макбук? на 13…14 дюймов
Michael
9
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
Кто-нибудь знает почему SPM клонирует репо целиком? Некоторые репы просто огромные, как та же swift-syntax которая нужна для использования макросов. Сначала подумал, что это...
iMike
6
Карта сайта