
Pavel
14.04.2018
22:14:29
Это как интерфейсы у классов, только для структур и они более compile-time чтоли

Denis
14.04.2018
22:14:43
а почему это называется алгебраическим типом?
думал это про математику

Pavel
14.04.2018
22:15:51
Чето понятия не имею. Но так называется

Google

Pavel
14.04.2018
22:15:59
https://en.wikipedia.org/wiki/Algebraic_data_type
Один из многих примеров в CS когда за страшным ужасным названием скрывается абсолютно очевидная вещь.
Да еще там объяснено так что взрывается моск
Тип-сумма (англ. sum type; также Σ-тип, меченое объединение) — конструкция в языках программирования и интуиционистской теории типов[en], тип данных, построенный как дизъюнктное объединение исходных типов.

Denis
14.04.2018
22:18:32
на самом деле там union + флажок какой тип лежит
?

Pavel
14.04.2018
22:18:43
ага
Ну и немного статической магии, чтобы список возможных типов задавался фиксированно при объявлении алгебраика

Denis
14.04.2018
22:21:22
ну это в шаблоне происходит как я понимаю?

Pavel
14.04.2018
22:30:44
Да алгебраик это шаблон в котором нужно четко перечислить какие типы собираешься хранить внутри

Denis
14.04.2018
22:35:36
спасибо буду знать что такое уже изобретено
название не удачное это точно

Evgeny
15.04.2018
04:51:11
меченое объединение :) tagged algebraic

Google

Dmitry
15.04.2018
06:42:44
Кстати, а при вставке элмемента в начало массива получается, что аллокация будет *гарантирована*. Если в конце может быть место зарезервировано, то в начале же по идее такого быть не может

Maxim
15.04.2018
07:18:12
скорее всего, всё обойдется простым memmove внутри, аллокация будет, только если capacity меньше длины результирующего массива

Dmitry
15.04.2018
07:20:30
Т.е. сложность на O(1) будет как при вставке в конец?

Maxim
15.04.2018
07:22:29
не, там же в любом случае будет сдвиг всех элементов массива

Pavel
15.04.2018
10:30:26
о! https://dlang.org/phobos/std_variant.html#Algebraic

Pavel
15.04.2018
10:39:01
Да это именно оно

Pavel
15.04.2018
10:43:43
Я почему-то подумал будто свой делался.

Pavel
15.04.2018
10:46:38
Я делал надстройку над этим чтобы содержимое могло еще без лишних телодвижений сериализоваться в vibe json
Кто-то пробовал упарываться partial примененем шаблонов?
О нашел что-то, круто https://forum.dlang.org/thread/brolwqbcuvhzomnusxby@forum.dlang.org

Dmitry
15.04.2018
15:01:30

Pavel
15.04.2018
15:03:03
Ну ты понимаешь что такое union?

Dmitry
15.04.2018
15:03:16
Нет
У меня каша в голове. Юнион, алгебраические типы, Variants и тд

Pavel
15.04.2018
15:05:08
Тогда наверно забей, лучше не знать чем иметь кашу
Но юнион это базовое понятие во всей этой иерархии

Dmitry
15.04.2018
15:06:14
Ну все же простыми словами можешь объяснить?
Просто для меня Variant это структура которая может принимать фиксированный набор типов. Не больше, ни меньше

Denis
15.04.2018
15:34:55
https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%8A%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_(%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85)
целая статья аж в википедии

Google

Denis
15.04.2018
15:36:15
правда статья так себе
короче, на пальцах - union это то же самое что структура, но её члены лежат не рядышком друг с другом, а друг на друге. если запишешь одно то будет затёрто (повреждено, перезаписано) другое.

Dark
15.04.2018
15:37:46
Набор указателей на одну точку в пространство?

Pavel
15.04.2018
15:39:00
Пространство в памяти, достаточное для записи значения любого из указанных типов.

Ackeard
15.04.2018
15:42:53
А вариант это юнион с полем указывающим какой тип данных записан

Dmitry
15.04.2018
16:03:46
А где это бывает полезно?

Denis
15.04.2018
16:04:56
Например при безопасном изменении одного типа на другой (вместо cast)
то есть, ты точно знаешь что твой ubyte это char? отлично, клади их в union и забирай оттуда

Pavel
15.04.2018
16:06:37
Но там уже Variant

qwerty
15.04.2018
16:37:29
Мне кажется или у нас в чате тот самый товарищ Лопатин?

Dark
15.04.2018
16:37:42

qwerty
15.04.2018
16:38:38
User buggins (Vadim Lopatin)
https://github.com/buggins
Vadim это Вы?

Pavel
15.04.2018
16:42:00

Denis
15.04.2018
16:42:23

Dmitry
15.04.2018
16:42:51

Denis
15.04.2018
16:43:06
Я за год юнионы раза 4 юзал всего

Google

Pavel
15.04.2018
16:45:43
Ну вот а мне прям в телеге понадобились почти сразу же причем без них можно сделать но очень криво будет

Ackeard
15.04.2018
16:45:50
Я использовал при унификации разных протоколов

Pavel
15.04.2018
16:46:03

Pavel
15.04.2018
16:46:19
Еще и chat_id надо тоже переделать на алгебраик

Denis
15.04.2018
17:15:45
@chebotarevp https://github.com/nexor/telega/pull/3 а почему оно падает в CI?
https://github.com/ikod/dlang-requests вот такое же и не падает

Pavel
15.04.2018
17:16:27
Да хз написано что там нет ssl библиотеки

Admin
ERROR: S client not available

Pavel
15.04.2018
17:16:33
Потом разберусь

Denis
15.04.2018
17:16:48
конфиги тревеса сравнить вроде одинаковые
но он вайб в зависимости добавляет как 0.8
но подхватывается 0.8.3
странное короч
Ну вот, ничего не заблокировали

DarkRiDDeR
16.04.2018
01:34:16
москва ещё не проснулась

Maxim
16.04.2018
02:06:47
Реестр же 2 раза в день обновляется, вроде)

Stanislav
16.04.2018
02:12:34
Не-а
Когда захотят плюс есть понятие срочная блокировка, где нужно в течение часа заблокировать ресурс
Ну и почти все операторы как минимум в час выгрузку делают

Maxim
16.04.2018
04:08:23
ну будем ждать)

Google

Igor
16.04.2018
05:42:35

Denis
16.04.2018
05:43:42

Pavel
16.04.2018
05:45:22
Да вроде как я понял там сборка как раз тестируется на версии без vibed

Igor
16.04.2018
05:46:28
В requests?

Vadim
16.04.2018
05:46:31
Vadim это Вы? > ага

Igor
16.04.2018
05:48:30

Dmitry
16.04.2018
06:10:14

Igor
16.04.2018
06:15:16
Да

Pavel
16.04.2018
06:33:09
Оо автор в чате) а я как то не догадался. Ну респект ?

Igor
16.04.2018
06:38:15
Спасиб )

Denis
16.04.2018
07:13:41
Да
+ респект, юзаем у себя

Igor
16.04.2018
07:18:29

Evgeny
16.04.2018
07:41:50
Да
Кек, значит вот кто выполнил мою просьбу :)
https://github.com/ikod/dlang-requests/issues/51
Да, это радует, что автор в чате и русскоговорящий :)
правда я так и не воспользовался либой, но возможно воспользуюсь

Igor
16.04.2018
07:43:34
да, я стараюсь добавлять фичи именно по запросу тк фич можно придумать много, но неизвестно кому они нужны и нужны ли вообще

Evgeny
16.04.2018
07:44:14
за имплементацию этой фичи в вайб, я заплатил сонке 70 евро :)

Igor
16.04.2018
07:44:26
))))) капец

Denis
16.04.2018
07:45:15

Evgeny
16.04.2018
07:45:16
Ну я бы и тебе заплатил, если бы нужно было. Не вижу ничего плохого, чтобы платить людям за выполненную работу, особенно если эта работа прямо влияет на мою прибыль :)