LINUX.ORG.RU

История изменений

Исправление pr849, (текущая версия) :

костыль

Нет, это один из изначально задекларированных способов использования лямбд.

Одно другому не мешает. :-/ Печально, что костыли изначально декларируются там, где можно было сразу сделать нормально. Потому что функционально этот способ экивалентен expression statement, но expression statement – это тривиальная конструкция в духе ФП «всё – выражение», а лямбда – лишняя сущность на ровном месте, причём ещё и временный объект. А что в итоге он optimized out – во-первых пофиг, а во-вторых получается что это уже не одна, а две лишних единицы информации: что это временный объект, и что он optimized out.

Я именно потому считаю это костылями, что подход «всё – выражение» проще, красивее, выразительнее, универсальнее, понятнее с точки зрения знакомых с ФП, и включает эти костыли как частный случай. Вместо частных случаев могли бы и поуниверсальней чего забабахать. Даже такую ерунду и то задизайнили наполовину: вместо if (int a = f(); int b = g(); ...; a == b) надо писать if (auto [a, b, ...] = std::tuple{f(), g(), ...}; a == b). Идиотизм же. Туда-сюда временный тупл на ровном месте.

А могли бы вообще if {expression statement без обвязки} .... Пока ещё своими костылями вообще все возможности впихнуть в этот многострадальный синтаксис что-то полезное не исчерпали.

Нет, они не стоят изменений в языке

Почему нет? В gcc же сделали.

и проблем, связанных с их особенностями.

Каких проблем? Мне не встречались. Бесит только нагромождение скобок ({ ... }) и что нельзя отключить индивидуально warning при включённом pedantic.

Исправление pr849, :

костыль

Нет, это один из изначально задекларированных способов использования лямбд.

Одно другому не мешает. :-/ Печально, что костыли изначально декларируются там, где можно было сразу сделать нормально. Потому что функционально этот способ экивалентен expression statement, но expression statement – это тривиальная конструкция в духе ФП «всё – выражение», а лямбда – лишняя сущность на ровном месте, причём ещё и временный объект. А что в итоге он optimized out – во-первых пофиг, а во-вторых получается что это уже не одна, а две лишних единицы информации: что это временный объект, и что он optimized out.

Я именно потому считаю это костылями, что подход «всё – выражение» проще, красивее, выразительнее, универсальнее, понятнее с точки зрения знакомых с ФП, и включает эти костыли как частный случай. Вместо частных случаев могли бы и поуниверсальней чего забабахать. Даже такую ерунду и то задизайнили наполовину: вместо if (int a = f(); int b = g(); ...; a == b) надо писать if (auto [a, b, ...] = std::tuple{f(), g(), ...}; a == b). Идиотизм же. Туда-сюда временный тупл на ровном месте.

А могли бы вообще if {expression statement без обвязки} .... Пока ещё своими костылями вообще все возможности впихнуть в этот синтаксис что-то полезное не исчерпали.

Нет, они не стоят изменений в языке

Почему нет? В gcc же сделали.

и проблем, связанных с их особенностями.

Каких проблем? Мне не встречались. Бесит только нагромождение скобок ({ ... }) и что нельзя отключить индивидуально warning при включённом pedantic.

Исправление pr849, :

костыль

Нет, это один из изначально задекларированных способов использования лямбд.

Одно другому не мешает. :-/ Печально, что костыли изначально декларируются там, где можно было сразу сделать нормально. Потому что функционально этот способ экивалентен expression statement, но expression statement – это тривиальная конструкция в духе ФП «всё – выражение», а лямбда – лишняя сущность на ровном месте, причём ещё и временный объект. А что в итоге он optimized out – во-первых пофиг, а во-вторых получается что это уже не одна, а две лишних единицы информации: что это временный объект, и что он optimized out.

Я именно потому считаю это костылями, что подход «всё – выражение» проще, красивее, выразительнее, универсальнее, понятнее с точки зрения знакомых с ФП, и включает эти костыли как частный случай. Вместо частных случаев могли бы и поуниверсальней чего забабахать. Даже такую ерунду и то задизайнили наполовину: вместо if (int a = f(); int b = g(); ...; a == b) надо писать if (auto [a, b, ...] = std::tuple{f(), g(), ...}; a == b). Идиотизм же. Туда-сюда временный тупл на ровном месте.

А могли бы вообще if {expression statement без обвязки} .... Пока ещё своими костылями вообще все возможности впихнуть в этот синтаксис что-то полезное не исчерпали.

Нет, они не стоят изменений в языке

Почему нет? В gcc же сделали.

и проблем, связанных с их особенностями.

Каких проблем? Мне не встречались. Бесит только нагромождение скобок ’({ … })` и что нельзя отключить индивидуально warning при включённом pedantic.

Исправление pr849, :

костыль

Нет, это один из изначально задекларированных способов использования лямбд.

Одно другому не мешает. :-/ Печально, что костыли изначально декларируются там, где можно было сразу сделать нормально. Потому что функционально этот способ экивалентен expression statement, но expression statement – это тривиальная конструкция в духе ФП «всё – выражение», а лямбда – лишняя сущность на ровном месте, причём ещё и временный объект. А что в итоге он optimized out – во-первых пофиг, а во-вторых получается что это уже не одна, а две лишних единицы информации: что это временный объект, и что он optimized out.

Я именно потому считаю это костылями, что подход «всё – выражение» проще, красивее, выразительнее, универсальнее, понятнее с точки зрения знакомых с ФП, и включает эти костыли как частный случай. Вместо частных случаев могли бы и поуниверсальней чего забабахать. Даже такую ерунду и то задизайнили наполовину: вместо if (int a = f(); int b = g(); ...; a == b) надо писать if (auto [a, b, ...] = std::tuple{f(), g(), ...}; a == b). Идиотизм же. Туда-сюда временный тупл на ровном месте.

А могли бы вообще if {expression statement без обвязки} .... Пока ещё своими костылями вообще все возможности впихнуть в этот синтаксис что-то полезное не исчерпали.

Нет, они не стоят изменений в языке

Почему нет? В gcc же сделали.

и проблем, связанных с их особенностями.

Каких проблем? Мне не встречались.

Исправление pr849, :

костыль

Нет, это один из изначально задекларированных способов использования лямбд.

Одно другому не мешает. :-/ Печально, что костыли изначально декларируются там, где без них вполне можно было бы обойтись. Потому что функционально этот способ экивалентен expression statement, но expression statement – это тривиальная конструкция в духе ФП «всё – выражение», а лямбда – лишняя сущность на ровном месте, причём ещё и временный объект. А что в итоге он optimized out – во-первых пофиг, а во-вторых получается что это уже не одна, а две лишних единицы информации: что это временный объект, и что он optimized out.

Я именно потому считаю это костылями, что подход «всё – выражение» проще, красивее, выразительнее, универсальнее, понятнее с точки зрения знакомых с ФП, и включает эти костыли как частный случай. Вместо частных случаев могли бы и поуниверсальней чего забабахать. Даже такую ерунду и то задизайнили наполовину: вместо if (int a = f(); int b = g(); ...; a == b) надо писать if (auto [a, b, ...] = std::tuple{f(), g(), ...}; a == b). Идиотизм же. Туда-сюда временный тупл на ровном месте.

А могли бы вообще if {expression statement без обвязки} .... Пока ещё своими костылями вообще все возможности впихнуть в этот синтаксис что-то полезное не исчерпали.

Нет, они не стоят изменений в языке

Почему нет? В gcc же сделали.

и проблем, связанных с их особенностями.

Каких проблем? Мне не встречались.

Исходная версия pr849, :

костыль

Нет, это один из изначально задекларированных способов использования лямбд.

Одно другому не мешает. :-/ Печально, что костыли изначально декларируются там, где без них вполне можно было бы обойтись. Потому что функционально этот способ экивалентен expression statement, но expression statement – это тривиальная конструкция в духе ФП «всё – выражение», а лямбда – лишняя сущность на ровном месте, причём ещё и временный объект. А что в итоге он optimized out – во-первых пофиг, а во-вторых получается что это уже не одна, а две лишних единицы информации: что это временный объект, и что он optimized out.

Я именно потому считаю это костылями, что подход «всё – выражение» проще, красивее, выразительнее, универсальнее, понятнее с точки зрения знакомых с ФП, и включает эти костыли как частный случай. Вместо частных случаев могли бы и поуниверсальней чего забабахать. Даже такую ерунду и то задизайнили наполовину: вместо if (int a = f(); int b = g(); ...; a == b) надо писать if (auto [a, b, ...] = std::tuple{f(), g(), ...}; a == b). Идиотизм же. Туда-сюда временный тупл на ровном месте.

Нет, они не стоят изменений в языке

Почему нет? В gcc же сделали.

и проблем, связанных с их особенностями.

Каких проблем? Мне не встречались.