
Denis
12.06.2017
12:55:13
Никак, мап-редьюс не про это же?
Простой цикл решил бы твою проблему, кмк
https://habrahabr.ru/company/infopulse/blog/330708/
На ловца и зверь, @DmitryBubnenkov
Вдруг оказывается, что кто-то слышал что-то об одной классной вещи, а его коллега читал комментарий о другой на Хабре, а третий человек видел пост в блоге о ещё чём-то похожем… и вот мы уже пребываем в полнейшем ступоре, беспомощно барахтаясь в попытках выбора между совершенно противоположными по своей сути системами, уже и забыв, что мы вообще пытаемся выбрать и почему.
Рациональные люди не принимают решения таким образом. Но именно так программисты часто решают использовать что-то вроде MapReduce.

Google

Dmitry
12.06.2017
16:04:32

Dmitry
12.06.2017
16:05:20
У меня не полуичлось, я сделал циклом как @ahdenchik предложил. Сработало

Denis
12.06.2017
16:07:26
Гоню.
Один фиг, считаю что не надо мап тут совершенно. Вот упрётся когда в производительность тогда уже и думать. Таких задач у большинства разрабов нет.

Dmitry
12.06.2017
21:00:57
Хорошие новости от LDC.
Experimental integration of LLD, the LLVM cross-linker, for MSVC targets.

Denis
13.06.2017
10:51:28
А вот у нас @nogc и nothrow вещи ортогональные? подразумевается что throw не использует GC?

Oleg
13.06.2017
10:56:53
скорее что non-nothrow использует @nogc
но они ортогональны)

Denis
13.06.2017
10:57:33
угу, но ведь throw подразумевает new, а new подразумевает аллокацию класса?
как-то этот момент мимо меня проехал

Oleg
13.06.2017
10:58:06
вроде nothrow может Error кидать
а там аллокация используется

Denis
13.06.2017
11:03:06
а, понял - используют самодельный аллокатор

Google

Denis
13.06.2017
11:03:12
https://github.com/caraus-ecms/tanya/blob/master/source/tanya/container/string.d#L617
и он кучу не трогает, видимо. Или это уже просто наша проблема
точнее, это интерфейс, а аллокатор вот: https://github.com/caraus-ecms/tanya/blob/master/source/tanya/memory/mallocator.d
https://forum.dlang.org/post/weiktdahzvcqrzoejehk@forum.dlang.org свежие вакансии в социоматике

Oleg
13.06.2017
11:57:51

Denis
13.06.2017
13:00:58
core.exception.AssertError@/home/d210/f156.d(2): Assertion failure
эээ
но ведь nothrow
nothrow means that a function won't throw an exception. They can still throw errors. (errors are not supposed to be caught)
погоди, речь о @nogc была
всё равно компилится
может Error уже всегда аллоцирована и просто ждёт своего часа?

Oleg
13.06.2017
13:18:54

Denis
13.06.2017
13:19:58
кроме ассертов есть и обычные эксепшены
которые уже конкретно аллоцируются

qwerty
16.06.2017
08:47:52
https://github.com/dlang/dmd/pull/6771 как в том анекдоте.
"А жизнь-то налаживается"

Denis
16.06.2017
09:24:26
Хотели же парсер в библиотеку выделить? Или это оно и есть?

qwerty
16.06.2017
11:13:54
Уже сделали в другом PR. Теперь делают dub script для того, чтоб это либу тянуть в проекты
блин постоянно забываю как сравнивать классы в compile time
is(T == int)

Google

qwerty
16.06.2017
11:14:55
Не могли более интуитивно понятную конструкцию сделать

Denis
16.06.2017
11:24:11
is уже слово было просто
можно было просто сравнивать как значения, наверно, но опять же, наверное, это вело к ошибкам

Shorty(Ale Chapa) Manskiy
16.06.2017
11:40:48

Denis
16.06.2017
11:42:35
is() поддерживает SFINAE
не совсем уловил при чём оно тут но ок

Shorty(Ale Chapa) Manskiy
16.06.2017
11:43:13
сейчас некогда, но потом подробней напишу. Если не забуду.

Denis
16.06.2017
11:43:43
Да это ладно, а вот про улучшение is интересно


Shorty(Ale Chapa) Manskiy
16.06.2017
12:28:06
bool func()() if (!is(NeverExists!blablabla : NotDefined))
{
return is(NotDefinedToo);
}
import std.stdio;
struct Struct {}
void main()
{
assert(func == false);
}
Этот код компилируется, хотя не должен, не должен не потому-что не соответсвтует правилам D (он вполне соответствует), а потому-что порождает ошибки, подобные ошибки были в стандартной библиотеке (да, той что phobos) , но их молча исправили и даже в списке изменений не упамянули про то что они вообще были.
Вот как я считаю, выражение is(someSymbol), должно пораждать ошибку во время компиляции если идентификатор someSymbol не существует.
Так, в примере что выше, таких ошибок 4-ре, т.к. символов NeverExists, blablabla, NotDefined, NotDefinedToo — несуществует.
Я вовсе не предлагаю, что если ЕСТЬ символ symbol и у него НЕТУ поля field, то код is(symbol.field) должен порождать ошибку, я считаю что в таком случаи шибки недолжно быть.
если котортко, то хочу так — код может компилироваться только в том случае, если несуществующий символ находится после точки, например is(symbol.notDefined) но не такой код is(notDefined).
Вот мое предложение. я бы написал на форуме, но они скорее не поймут мой английский...
У меня есть еще несколько предложений по языку, но пока-что лень писать.


Denis
16.06.2017
12:32:53
Не понятно зачем это

Shorty(Ale Chapa) Manskiy
16.06.2017
12:33:15
чтобы было меньше ошибок.

Denis
16.06.2017
12:33:30
А почему ошибки не должно быть если филд есть?

Shorty(Ale Chapa) Manskiy
16.06.2017
12:35:00
неважно есть там филд или нету, важно то, что первый символ должен быть всегда.

Shorty(Ale Chapa) Manskiy
16.06.2017
12:35:21
если его нету, то это явно ошибка.

Denis
16.06.2017
12:35:52
Почему? там может static bool?

Shorty(Ale Chapa) Manskiy
16.06.2017
12:36:49

Denis
16.06.2017
12:37:35
ну аргумент времени компиляции
а, is же

Shorty(Ale Chapa) Manskiy
16.06.2017
12:37:53
давай код.

Denis
16.06.2017
12:38:32
не не сейчас никак

Google

Denis
16.06.2017
12:38:49
symbol возвращать тип разве не может?

qwerty
16.06.2017
12:38:52
охренеть! Действительно он не ругается на отсутствующие символы

Denis
16.06.2017
12:38:53
if(symbol)
у нас же есть туплы типов

Shorty(Ale Chapa) Manskiy
16.06.2017
12:39:24

qwerty
16.06.2017
12:39:38
что за ISFINAE?
пошел гуглить

Admin
ERROR: S client not available

Denis
16.06.2017
12:40:15
дык отсутствие у всех подходящих типов определённого поля это всё равно ошибка

Shorty(Ale Chapa) Manskiy
16.06.2017
12:40:16
SFINAE без I, я просто опечатался.

Denis
16.06.2017
12:42:31
is() проверяет равенство или наличие типов
так?
типа is(bool == bool) == true

qwerty
16.06.2017
12:42:49
пишут, что это нужно для уменьшения сложности без жертв

Shorty(Ale Chapa) Manskiy
16.06.2017
12:43:37

qwerty
16.06.2017
12:43:59
http://forum.dlang.org/post/fs0dhv$29eo$1@digitalmars.com
какой старый тред

Google

Denis
16.06.2017
12:52:43
ого я всё жизнь заблуждался


Shorty(Ale Chapa) Manskiy
16.06.2017
12:54:23
bool func()() if (!is(NeverExists!blablabla : NotDefined))
{
return is(NotDefinedToo);
}
import std.stdio;
struct Struct {}
void main()
{
assert(func == false);
}
Этот код компилируется, хотя не должен, не должен не потому-что не соответсвтует правилам D (он вполне соответствует), а потому-что порождает ошибки, подобные ошибки были в стандартной библиотеке (да, той что phobos) , но их молча исправили и даже в списке изменений не упамянули про то что они вообще были.
Вот как я считаю, выражение is(someSymbol), должно пораждать ошибку во время компиляции если идентификатор someSymbol не существует.
Так, в примере что выше, таких ошибок 4-ре, т.к. символов NeverExists, blablabla, NotDefined, NotDefinedToo — несуществует.
Я вовсе не предлагаю, что если ЕСТЬ символ symbol и у него НЕТУ поля field, то код is(symbol.field) должен порождать ошибку, я считаю что в таком случаи шибки недолжно быть.
если котортко, то хочу так — код может компилироваться только в том случае, если несуществующий символ находится после точки, например is(symbol.notDefined) но не такой код is(notDefined).
Вот мое предложение. я бы написал на форуме, но они скорее не поймут мой английский...
У меня есть еще несколько предложений по языку, но пока-что лень писать.
Ну так что, кто-нибудь против моего предложиния, или может кто еще не понял его суть?


Denis
16.06.2017
12:54:42
Не понятно как оно радикаьно жизнь упростит

Shorty(Ale Chapa) Manskiy
16.06.2017
12:55:46
не радикально, но точно улучшит. тем более как мне кажется никто и не заметит изменений, ведь все писали правильный код...
... и не думаю что это будет сложно сделать тем, кто компилятор пишет.

Denis
16.06.2017
12:57:05
ну странно что сразу так не сделано, кстати
видимо есть причина
при исправлении фобоса наверняка всплывало

Shorty(Ale Chapa) Manskiy
16.06.2017
12:57:46
просто об этом походу никто не думал. и да — всплывало но они дружно исправляли и молчали.

Denis
16.06.2017
12:58:06
Написать по-русски и попросить перевести

Shorty(Ale Chapa) Manskiy
16.06.2017
12:58:40
Ну я написал, осталось только перевести.
что за ISFINAE?
Тут хорошо описано что это такое http://scrutator.me/post/2016/12/12/sfinae.aspx

qwerty
16.06.2017
13:05:29
Спасибо!

Denis
16.06.2017
13:06:05
Бывалые C++ программисты знают, что возвращаемый тип в функции не является частью её сигнатуры, но даже многие бывалые не знают того, что возвращаемый тип является частью сигнатуры шаблона функции.
У нас тоже?
никогда не задумывался

Shorty(Ale Chapa) Manskiy
16.06.2017
13:07:17

Denis
16.06.2017
13:08:01
и вот как раз на этом строится проверка возвращаемого типа?

Shorty(Ale Chapa) Manskiy
16.06.2017
13:08:46