+2
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1371r1.pdf#section.4
// Pattern Matching P1371R1
// before
auto&& [x, y] = p;
if (x == 0 && y == 0) {
std::cout << "on origin";
} else if (x == 0) {
std::cout << "on y-axis";
} else if (y == 0) {
std::cout << "on x-axis";
} else {
std::cout << x << ',' << y;
}
// after
inspect (p) {
[0, 0]: std::cout << "on origin";
[0, y]: std::cout << "on y-axis";
[x, 0]: std::cout << "on x-axis";
[x, y]: std::cout << x << ',' << y;
}
Говностандартизаторы очередную хуйню изобретают. Нет чтоб нормальную гомоиконность сделать, чтоб через нее любую такую поебень синтезировать можно было, не изменяя говностандарт, не добавляя всяких новых statement. И почему они не хотят эту херню прикрутить тупо к switch? Что если у меня переменная называется inspect, мне ее что, переименовывать?
Давайте пропосал напишем, чтоб для стейтментов отдельные неймспейсы были, и чтоб можно было свои самопальные стейтменты написать на каком-то отдельном говноязыке (шаблоны под эту хуйню, как я понял, не подходят)? Ну чтоб у всех окончательно сорвало крышу от обилия хуйни.
Запостил: j123123,
10 Января 2020
6arPoBblu_nemyx 10.01.2020 12:08 # 0
gost 10.01.2020 12:25 # +4
Кстати, в 4.6 что-то знакомое:
Какой калькулятор )))
Ой, пиздец. Почему бы не насыпать ещё больше спецсимволов, а?
Во-о-от, теперь — заебись! Именно так, по мнению этих говностандартизаторов, и должен выглядеть код на «Modern C++».
HoBorogHuu_nemyx 10.01.2020 13:12 # +1
Stallman 10.01.2020 14:13 # 0
guest8 10.01.2020 15:27 # −999
guest8 10.01.2020 15:27 # −999
guest8 10.01.2020 15:27 # −999
HoBorogHuu_nemyx 10.01.2020 15:44 # 0
$n(2*2) — присвоить переменной n результат выражения 2*2, т. е. 4.
$s[2*2] — присвоить переменной s строку "2*2".
$x{$s} — выполнить код в фигурных скобках и присвоить результат переменной x.
Красиво?
https://www.parser.ru/docs/lang/?vars.htm
guest8 10.01.2020 15:52 # −999
HoBorogHuu_nemyx 10.01.2020 16:09 # 0
Сейчас модно во всё пихать «Lua».
HoBorogHuu_nemyx 10.01.2020 18:32 # 0
guest8 10.01.2020 18:40 # −999
HoBorogHuu_nemyx 10.01.2020 18:43 # 0
guest8 10.01.2020 18:45 # −999
3.14159265 10.01.2020 18:07 # 0
Я запутался. Уже и ТАКОЕ в крестах компилируется?
Впрочем в С# завезли. В Скале было. В Жабу скоро завезут.
Чем C++ хуже?
gost 10.01.2020 18:08 # 0
3.14159265 10.01.2020 18:11 # 0
Ну типичный С++ way. Взяли нормальную идею и дико всё усложнили.
guest8 10.01.2020 18:12 # −999
3.14159265 10.01.2020 18:16 # +2
HoBorogHuu_nemyx 10.01.2020 18:18 # +1
3.14159265 10.01.2020 18:21 # +4
Поскольку он пока ещё сохраняет остатки читабельности.
adrnin 10.01.2020 18:38 # 0
adrnin 10.01.2020 18:39 # 0
Soul_re@ver 10.01.2020 18:55 # +1
Они готовят С++ к мерджу в Perl 6
gost 10.01.2020 18:15 # +2
Вот кстати да. Ладно там «constexpr» заняли — такого идентификатора реальный пример вряд ли можно привести. Но блядь, «inspect» в любом крупном проекте есть! Они там совсем ёбнулись, чи шо, я не пойму?..
guest8 10.01.2020 18:17 # −999
3.14159265 10.01.2020 18:18 # 0
guest8 10.01.2020 18:24 # −999
HoBorogHuu_nemyx 10.01.2020 18:28 # 0
adrnin 10.01.2020 19:07 # 0
HoBorogHuu_nemyx 10.01.2020 19:13 # 0
1024-- 10.01.2020 19:29 # 0
adrnin 10.01.2020 21:12 # 0
adrnin 10.01.2020 18:28 # 0
Soul_re@ver 10.01.2020 19:02 # +5
Но комитет, как всегда, не обратил внимания на это визгливое кукареканье. Пусть кукарекает, что с него взять?
Компилятор — не человек, и сегодня ему предстоит очень трудная сборка. У него уже в течение полутора лет каждая сборка была очень трудной, и теперь его лексер был разработан настолько, что одно и то же выражение могло обозначать что угодно, в зависимости от контекста.
1024-- 10.01.2020 19:32 # 0
Это парсеру потом надо пердолиться с вореантами и тормозить из-за этого.
guest8 10.01.2020 19:49 # −999
adrnin 10.01.2020 19:55 # 0
3.14159265 10.01.2020 20:56 # +2
Ситуация осложняется тем, что в js не так давно завезли новые алгебраические операторы.
gostinho 10.01.2020 20:57 # 0
3.14159265 10.01.2020 20:58 # 0
А тебе еще жжётся?
gostinho 10.01.2020 21:00 # 0
gostinho 10.01.2020 21:05 # +2
Это вообще багор
HoBorogHuu_nemyx 10.01.2020 21:08 # 0
3.14159265 10.01.2020 21:09 # +1
HoBorogHuu_nemyx 10.01.2020 21:12 # +2
gostinho 10.01.2020 21:35 # 0
adrnin 10.01.2020 21:17 # +2
gostinho 10.01.2020 21:19 # 0
1024-- 10.01.2020 21:30 # +3
gostinho 10.01.2020 21:31 # 0
1024-- 10.01.2020 21:33 # 0
guest8 10.01.2020 21:45 # −999
gostinho 10.01.2020 21:13 # 0
adrnin 10.01.2020 21:35 # 0
gostinho 10.01.2020 21:36 # 0
adrnin 10.01.2020 21:38 # 0
HoBorogHuu_nemyx 10.01.2020 21:46 # +1
Если, вставить лишний перенос строки, может случиться неожиданность. Допустим, фразу «return 42;» разбили переносом:
Для JS «return» является законченным выражением (когда функция ничего не возвращает, как void в сишке), поэтому код будет интерпретироваться, как будто написано так:
Были реальные примеры, когда минимизаторы и обфускаторы JS портили код переносом в неудобном месте.
gostinho 10.01.2020 21:47 # 0
guest8 10.01.2020 21:53 # −999
gostinho 10.01.2020 21:56 # 0
guest8 10.01.2020 22:00 # −999
HoBorogHuu_nemyx 10.01.2020 22:14 # 0
gostinho 10.01.2020 21:04 # 0
HoBorogHuu_nemyx 10.01.2020 21:10 # +1
1024-- 10.01.2020 20:45 # 0
Если необходимую для вычислений память: У лексера контекст структурно проще. Смотрит он конструкцию 0+"123", и на подходе к двойке ему нужно помнить, что он вошёл в строку - это будет его контекстом. У парсера контекст будет "вот эта питушня вроде подошла под набор хитрожопых правил с рекурсией.
С другой стороны, название "КС" как бы намекает, что контекста нет, но это уже в другом смысле.
1024-- 10.01.2020 19:28 # +2
Какой C++ )))
P.S. Идея для любителей понаотвечать на старые треды: если видите, что код читаемый и не содержит фич цпп2017+, пишите "Где здесь C++?"
bormand 10.01.2020 20:03 # +1
3.14159265 10.01.2020 21:25 # +3
Впрочем у них хватило ума switch не переименовывать. Там yield вместо break замутили.
https://openjdk.java.net/jeps/354
guest8 10.01.2020 21:29 # −999
HoBorogHuu_nemyx 10.01.2020 21:41 # +2
gostinho 10.01.2020 21:28 # 0
guest8 10.01.2020 21:28 # −999
j123123 11.01.2020 16:15 # +2
inkanus_gray 11.01.2020 19:12 # 0
guest8 10.01.2020 22:56 # −999