@dlangru

Страница 191 из 719
Denis
12.06.2017
12:55:13
Никак, мап-редьюс не про это же?

Простой цикл решил бы твою проблему, кмк

https://habrahabr.ru/company/infopulse/blog/330708/ На ловца и зверь, @DmitryBubnenkov

Вдруг оказывается, что кто-то слышал что-то об одной классной вещи, а его коллега читал комментарий о другой на Хабре, а третий человек видел пост в блоге о ещё чём-то похожем… и вот мы уже пребываем в полнейшем ступоре, беспомощно барахтаясь в попытках выбора между совершенно противоположными по своей сути системами, уже и забыв, что мы вообще пытаемся выбрать и почему. Рациональные люди не принимают решения таким образом. Но именно так программисты часто решают использовать что-то вроде MapReduce.

Google
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
а, понял - используют самодельный аллокатор
нет import std.stdio; void foo(int k) nothrow { assert(k < 10); } void main() { foo(5); writeln("ok"); foo(12); writeln("never print"); }

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
может Error уже всегда аллоцирована и просто ждёт своего часа?
может, но это в любом случае в std, а не в tanya

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
можно было просто сравнивать как значения, наверно, но опять же, наверное, это вело к ошибкам
is() поддерживает SFINAE. Так-что простого сравнения не хватилобы. У меня кстати есть предложение косательно улучшения is. Может быть как-нибуь напишу со всеми подробностями, хотябы здесь в чате, если не у них на форуме...

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
если его нету, то это явно ошибка.
... а существование какого-либо символа, должно проверятся какм-либо другим способом.

Почему? там может static bool?
примем покажи, а то я не понял о чем ты.

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
непонятно зачем так сделано
чтобы поддержать ISFINAE

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
пишут, что это нужно для уменьшения сложности без жертв

qwerty
16.06.2017
12:43:59
http://forum.dlang.org/post/fs0dhv$29eo$1@digitalmars.com

какой старый тред

is() проверяет равенство или наличие типов
не совсем http://dlang.org/spec/expression.html#is_expression

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

Страница 191 из 719