
Дед Пегас
11.07.2017
08:55:27
Мол fuck(tits) >> wash >> show
:3

Даниил
11.07.2017
08:56:48
ну это всё через монадки работает
ща, вот допустим есть монада Maybe<T>, принимающая значение либо Just(T), либо Nothing (типобезопасный аналог nullable значений)
так вот, пусть у тебя есть два числа, завёрнутые в Maybe, и ты хочешь их сложить
как ты это делаешь без do-нотации:
mx = Just(42);
my = Just(3);
mx.bind(x => my.bind(y => Just(x + y))); // на выходе Just(45);
соответственно если где-то в примере выше вместо допустим Just(3) будет Nothing, то и последняя строка будет Nothing, вот
а теперь то же самое с do-нотацией:
do {
x <- Just(42);
y <- Just(3);
return Just(x + y);
}
это я отвечал на сообщение что чем это отличается от анонимного скоупа, но его удалили

Google

Даниил
11.07.2017
08:57:18
в общем, отличается тем, что <- внутри блока do "распаковывает" значение из монадки
(надеюсь меня не забанят за монадки в цепепе-чате ?)

Berkus
11.07.2017
09:01:22

Дед Пегас
11.07.2017
09:02:25
ML/C++
Неплохой вышел бы гибрид.

Berkus
11.07.2017
09:02:46
хых, template ml

Дед Пегас
11.07.2017
09:02:54
Дыа.

Antony
11.07.2017
09:03:50
ну это всё через монадки работает
ща, вот допустим есть монада Maybe<T>, принимающая значение либо Just(T), либо Nothing (типобезопасный аналог nullable значений)
так вот, пусть у тебя есть два числа, завёрнутые в Maybe, и ты хочешь их сложить
как ты это делаешь без do-нотации:
mx = Just(42);
my = Just(3);
mx.bind(x => my.bind(y => Just(x + y))); // на выходе Just(45);
соответственно если где-то в примере выше вместо допустим Just(3) будет Nothing, то и последняя строка будет Nothing, вот
а теперь то же самое с do-нотацией:
do {
x <- Just(42);
y <- Just(3);
return Just(x + y);
}
Я с Вицентом говорил, в идеале монады будут выглядеть так:
expected<double, error_condition> foo(double i, double j, double k) {
auto x = try safe_divide(i, k); // return в случае ошибки
auto y = try safe_divide(j, k); // return в случае ошибки
return x + y;
}

Даниил
11.07.2017
09:04:40
ну что-то похожее на do-нотацию по сути

Vladislav
11.07.2017
09:05:38

Antony
11.07.2017
09:06:27
поведение try должно настраиваться какими-то трейтами, которые может пользователь специализировать
тоессть может и для future, и для optional, и для expected работать

Google

Antony
11.07.2017
09:08:01
Но предложение сильно сырое, кажется что даже класс expected на ближаёшем собрании не одобрят

Constantine
11.07.2017
09:15:04
А можно краткий курс как это должно работать (для чайников)?

Vladislav
11.07.2017
09:17:24

Constantine
11.07.2017
09:22:20
https://en.m.wikibooks.org/wiki/Haskell/do_notation
А в более человеческой форме?) Подразумевается, что expected<Type, ErrorType> это Type либо ErrorType? Конструкция типа выше должна работать за счет неявного if () проверяющего на ErrorType и если ошибка возвращая ErrorType? Такой альтернативный способ записи строгих исключений?

Vladislav
11.07.2017
09:23:26
Да, да, да

Constantine
11.07.2017
09:26:19
а как обходиться без wrap-блоков?
в смысле, ошибка может нуждаться в контекстно-зависимом уточнении

Berkus
11.07.2017
09:30:01
есть chain, в него ошибка проваливается - если в первой операции сломалось, остальные не выполняются
уточнение ты сделал когда возвращал expected<,Error>

Constantine
11.07.2017
09:36:35
у меня есть метод
template <Type>
expected<std::notrolls::not_null_unique_ptr<Type>, std::out_of_memory_exception> deep_clone(std::notrolls::not_null_unique_ptr<Type> object);
его ошибка недостаточно показательна

Berkus
11.07.2017
09:38:12
Господин Полухин показывал возможный пропозал для уточнения эксепшенов, используй его.

Constantine
11.07.2017
09:40:06

Berkus
11.07.2017
09:40:10
https://stackoverflow.com/questions/44858395/why-is-the-template-specialization-not-chosen хех

Constantine
11.07.2017
09:40:55
как и твоя, так что остынь
я просто не понимаю, зачем нужна реплика в духе "загугли не знаю что", если человек изначально запрашивает обзорные сведения

Berkus
11.07.2017
09:41:14
bad_alloc достаточно показательная ошибка, так что непонятно чего ты хотел вообще

Дед Пегас
11.07.2017
09:41:42
Продолжаем день монад! http://www.fluentcpp.com/2017/07/11/dealing-multiple-paths-vector-monad-c/

Constantine
11.07.2017
09:42:19

Stanislav
11.07.2017
09:42:58
https://github.com/LoopPerfect/neither

Google

Berkus
11.07.2017
09:43:04

Constantine
11.07.2017
09:43:25

Berkus
11.07.2017
09:43:40
ты себя не зря в std::trolls:: засунул, прямо сочится из монитора

Дед Пегас
11.07.2017
09:44:18

Constantine
11.07.2017
09:44:31
добавь << backtrace();
а теперь если я захочу программно обрабатывать случай когда bad_alloc происходит в объекте, который может освободиться пулом параллельного потока и тогда retry?

Дед Пегас
11.07.2017
09:44:54
> в тексте
> 3.5 строчки комментов

Berkus
11.07.2017
09:45:26
это NP-полная проблема, нерешаемо

Constantine
11.07.2017
09:45:54
это мне?))))

Berkus
11.07.2017
09:46:00
возможно

Berkus
11.07.2017
09:46:26
> Tools for creating
Tools to create
> Resulting container is always has
Resulting container always has

Constantine
11.07.2017
09:46:47
я не подразумеваю случай блокировки, я подразумеваю аномальный случай когда 10 потоков неожиданно в один момент пошли работать с большими объемами данных

Berkus
11.07.2017
09:47:07

Constantine
11.07.2017
09:49:09
или еще более странная проблема что два параллельных потока задействовали гарантированный резервный буфер памяти, потому что у обоих одновременно что-то пошло не так

Berkus
11.07.2017
09:50:10
вряд ли эксепшены тебе тут сильно помогут

Дед Пегас
11.07.2017
09:50:30

Constantine
11.07.2017
09:50:58
вряд ли эксепшены тебе тут сильно помогут
это не ошибка многопоточного доступа, это исключительная ситуация - резервный аллокатор не может выделить большой последовательный блок, который гарантированно выделится в эксклюзивной среде

Google

Berkus
11.07.2017
10:00:22
чего ты ко мне прицепился, а
если ты не можешь сдизайнить свою систему - сиди и дизайни

Constantine
11.07.2017
10:00:42
отцепись от моих сообщений немедленно!

Berkus
11.07.2017
10:01:12
чую ты меня седня достанешь окончательно

Constantine
11.07.2017
10:01:23
и что будет?

Anatoly
11.07.2017
10:03:04
https://www.youtube.com/watch?v=BQ5FOtvGgGw

Admin
ERROR: S client not available

Anatoly
11.07.2017
10:03:20
предлагаю дружескую ничью

Constantine
11.07.2017
10:05:34
как бьет жеглов не то что чужой через стол, даже просто прямо в лузу сложно попасть)
я уже молчу что шар в створе лузы в американке это "!некст" сразу

Berkus
11.07.2017
10:15:09
неужели все это постановочное

Дед Пегас
11.07.2017
10:22:01
Продолжаем теребить монадки https://www.reddit.com/r/cpp/comments/6me836/outcome_v2_is_feature_complete/

Alexander
11.07.2017
10:26:35
У кого вижла 17 стоит, проверьте плиз вот это
https://pastebin.com/20yfcWhD
у меня падает компилятор

Constantine
11.07.2017
10:27:42
неужели все это постановочное
я помню видел как на спор свояк от середины короткого борта угловым шаром в среднюю били с 10 попыток, сам пробовал - чуть-чуть не попадал)

Stanislav
11.07.2017
10:28:06

Леонид
11.07.2017
10:28:36
Всем привет, ищу разработчика 1с.Участие в сопровождении конфигураций БП 3.0,ЗУП 2.5, КА 2.2. Если есть такой отзвись??, спасибо за внимание.Буду благодарен за любую обратную связь.Всем хорошего дня)

Alexander
11.07.2017
10:29:22

Google

Dart Kane
11.07.2017
10:29:32

Дед Пегас
11.07.2017
10:29:39

Alexander
11.07.2017
10:29:45
с вакансиями к @AlexFails

Stanislav
11.07.2017
10:30:35

Леонид
11.07.2017
10:30:44
Спасибо??

Alexander
11.07.2017
10:30:48
у них есть багзилла какая-нибудь?

Stanislav
11.07.2017
10:32:05
https://msdn.microsoft.com/ru-ru/library/mt748084.aspx
такое только находил

Constantine
11.07.2017
10:32:10

Berkus
11.07.2017
10:33:09
попробовали бы они такое в русском бильярде

Constantine
11.07.2017
10:33:24
это на русском, разумеется

Дед Пегас
11.07.2017
10:33:29
https://vittorioromeo.info/index/blog/zeroalloc_continuations_p0.html

Constantine
11.07.2017
10:33:33
свояки в пуле не бьют

Berkus
11.07.2017
10:34:01

Constantine
11.07.2017
10:34:21
я видел, как отцы забивали

Дед Пегас
11.07.2017
10:35:26
Вот не было нужды, но всё равно!
#define FWD(...) ::std::forward<decltype(__VA_ARGS__)>(__VA_ARGS__)
Вот это разве нереализуемо на вариадиках?