
Stepanos
24.09.2017
13:48:02
betterC не просто так появился)) ищем нишу

Dmitry
24.09.2017
14:39:11
Есть где-то статьи которые описывают как работают разные map! и filter! в контексте какие данные они между собой передают

Oleg
24.09.2017
14:39:22

Dmitry
24.09.2017
14:40:23
MS [3]ms;
struct MS
{
}
Это я типа 3 экземпляра структуры создам?

Google

Oleg
24.09.2017
14:40:33

Dmitry
24.09.2017
14:41:19
ну просто допустим variant как я понимаю это алгебраический тип данных и чтобы документацию по нему понять, нужно уже знать что это за тип

Oleg
24.09.2017
14:41:49

Dmitry
24.09.2017
14:42:16
это да, я просто так для краткости
типа просто решил проверить скомпилится или нет

Oleg
24.09.2017
14:43:09

Dmitry
24.09.2017
14:43:52
а как работает variant? Как я понимаю там тип уже определяется пост-фактум данных которые в нем
так погоди, в итоге то что будет? Мы 3 копии структуры создадим?
struct MyStruct
{
}
MyStruct[3] ms;

Oleg
24.09.2017
14:44:58
Там есть простой байтовый буфер для хранения любых типов и поле хранящее тип
Ну и куча проверок
По сути статический массив может не поместиться туда
Или структура большая

Dmitry
24.09.2017
14:45:59
а байтовый буфер растущий? если туда прилетит что-то большое.
Вот прилетело туда:
123.010001
и как я coerce! будет работать?

Google

Andrey
24.09.2017
14:47:52
это просто безопасный union
у него есть ограничение на максимальны размер объекта
Variant это экземпляр Algebraic из того же модуля

Oleg
24.09.2017
14:49:34
в std это структура

Andrey
24.09.2017
14:49:46
щас проверю
Я неправильно сказал. alias Algebraic(T...) = VariantN!(maxSize!T, T);
alias Variant = VariantN!(maxSize!(creal, char[], void delegate()));

Dmitry
24.09.2017
14:52:56

Andrey
24.09.2017
14:53:56
да, 3 штуки на стеке (или нет), один за другим

Oleg
24.09.2017
15:01:10

Andrey
24.09.2017
15:01:41
Так и в модуле можно написать
и в структуре/классе/юнионе

Oleg
24.09.2017
15:02:08
ну да

Andrey
24.09.2017
15:03:26
на стеке будет если массив (или агрегат в котором находится массив) лежит в функции

Dmitry
24.09.2017
15:46:01

Andrey
24.09.2017
15:46:29
ты знаешь что такое union?

Dmitry
24.09.2017
15:47:11
прочитал только что в вики
данные которые могут быть разными типами

Andrey
24.09.2017
15:48:35
по сути внутри такой же юнион, но рядом с ним хранится какого типа переменная в юнионе щас лежит.

Google

Dmitry
24.09.2017
15:49:27
а реальный кейс использования какой?

Andrey
24.09.2017
15:49:56
динамическая типизация/опции конфига

Dmitry
24.09.2017
15:50:01
просто когда то в БД сталкивался с тем, что возвращается вроде как variant и потом его нужно через coerce! r нужному типу привести

Andrey
24.09.2017
15:50:47
я так один раз хранил свойства виджетов. Хэшмапа строка -> вариант
В случае когда можно хранить любые типы (Algebraic(T...) без параметров), там можно хранить всё что влезает в хранилище юниона (размер задается первым параметром, а набор типов вторым)
в jsvar.d на Variant ДжаваСкриптовые объекты сделаны

Dmitry
24.09.2017
15:56:27
типа когда мы не знаем что именно будем в переменную класть?
и auto тут не катит т.к. пока самих данных нет и не ясен их тип. Верно?

Oleg
24.09.2017
15:58:49
Ну или даже если тип ясен, но потом нужно положить что-то другое

Dmitry
24.09.2017
15:59:50
В Шарпе var так же работает?

Oleg
24.09.2017
16:02:34

Dmitry
24.09.2017
16:03:05
Потому что я пытаюсь понять в других языках такая же самая логика или нет

Oleg
24.09.2017
16:03:23
Всё очень похоже в пределах парадигмы

Dmitry
24.09.2017
16:04:33
а есть причина почему в Шарпе структуры не прижились и везде все на классах?

Oleg
24.09.2017
16:26:55
я конечно хз, но https://docs.microsoft.com/ru-ru/dotnet/csharp/programming-guide/classes-and-structs/using-structs
как бы они есть

Dmitry
24.09.2017
16:48:54
но их что-то никто не юзает... везде классы
даже когда из БД массив чего-то получают тоже в класс

Google

Ievgenii
24.09.2017
16:55:32

Dmitry
24.09.2017
17:10:20
а где это при работе с данными полезно

Pavel
24.09.2017
17:15:40
Везде где ООП

Dmitry
24.09.2017
17:17:22
Кстати, щас сюда скопипащу пост своего друга. Мне интересно кто какие решения предложит. Там про JS но думаю к языку там не сильно прибито
У тебя есть функция verifyNesting, которая на вход принимает сроку состоящую из "[", "{", или "(".
Тебе надо удостовериться что все эти сомволы корректно закрыты
Ну, например
console.log(verifyNesting('[{{[(){}]}}[]{}{{(())}}]')); //Правильно
console.log(verifyNesting('[{{[(){}]}}[]{}{({())}}]')); //Неправиильно
Кто бы как задачу решал?

Pavel
24.09.2017
17:18:21
Это классика, решается через стек

Dmitry
24.09.2017
17:19:28
Ну хотя да, эта задача как у меня с парсером, Олег тоже через стек предлагал парсер писать

Andrey
24.09.2017
17:32:20
можно соптимизировать. В элементах стека хранить кол-во подряд идущих одинаковых скобок.

Dmitry
24.09.2017
17:33:18
для стека лучше список использовать? если да то какой?

Admin
ERROR: S client not available

Andrey
24.09.2017
17:35:17
лучше динамический массив
даже Appender сойдет
когда вынимаешь элемент делаешь shrink

Dmitry
24.09.2017
17:47:12
встретили первый элемент, запушили его туда, дальше что?

Pavel
24.09.2017
17:49:46
Вообще это не совсем те вопросы чтобы задваться при решении задачи ;) Задача на стек - это задача на понимание стека, а не на списки/оптимизацию/скорость работы

Andrey
24.09.2017
18:06:02
вложенные скобочки, отступы в коде и дерево - это одно и тоже

qwerty
24.09.2017
18:11:39

Pavel
24.09.2017
18:12:19
рекурсия это же тоже стек)

Dmitry
24.09.2017
18:12:46
ну вот читаем мы туда первый элемент, дальше что?

Google

Dmitry
24.09.2017
18:13:10
как быть если за ним идет другой символ который так же нужно проверить на пару

Andrey
24.09.2017
18:14:00
открывающие скобки кладешь на стек, на закрывающих, берешь из стека и сравниваешь (Если не равны - ошибка). В конце стек должен быть пустой

Dmitry
24.09.2017
18:17:36
для каждого типа скобок свой отдельный стек?
и кстати, что мешает просто через count сделать? Типа считаем открывающие, считаем закрывающие?

Andrey
24.09.2017
18:18:24
1. один стек. Хранишь тип элемента. 2. это только когда скобки одного типа

qwerty
24.09.2017
18:20:09

Pavel
25.09.2017
11:56:09
Как считаете, нормально если я исходники https://github.com/facebook/dfuse всосу к себе в проект рядом в папку source положу?
И буду дорабатывать по мере нужд проекта.

Oleg
25.09.2017
12:52:38
хотя...

Pavel
25.09.2017
12:53:16
Ну я сделал, но ктож мое будет юзать? :) И потом, как всем этим пользоваться? Новый пакет чтоли в dub регистрировать?
Тут пахнет большими проблемами чем профитом.

Oleg
25.09.2017
12:53:57
ну и https://github.com/facebook/dfuse/blob/master/PATENTS хз что тут написанно
типа этот софт распостраняется facebook'ом

Pavel
25.09.2017
12:54:37
Там вроде лицензия boost которая совместима с MIT так что нарушений не будет. Копирайты я и не собираюсь стирать
Хм а может гит сабмодулем подключить?

Oleg
25.09.2017
12:57:01
ну норм вариант
кстати, может кому будет интересно http://code.dlang.org/packages/plot2d

Pavel
25.09.2017
12:59:07
https://github.com/lycus/mci вот тут так сделано и вроде норм ) Выглядит как решение

Oleg
25.09.2017
13:00:59

Anatoly
25.09.2017
13:04:52
а там есть подобие MVC ?

Oleg
25.09.2017
13:35:48

Anatoly
25.09.2017
13:36:10