- *haskell *c++Вообще говоря, если у нас есть N функторов, например, для поиска подходящего элемента в контейнере, и возникает задача последовательного ослабления критериев (количества функторов, которые должны одновременно возвращать true), если на предыдущем этапе ничего не найдено, и необходимо пройтись по всем возможным комбинациям функторов, то можно сделать как-то так. Ввести некий фиктивный функтор, всегда возвращающий true, неплохо ебануться на отличненько с шаблонами и, в частности, variadic templates для реализации list comprehension из этих функторов, дабы сформировать соответствующий массив N-мерных векторов из функторов, где N — количество функторов, во всевозможных комбинациях, и затем в цикле тупо применять последовательно (а-ля некий такой find_first двухуровневый).
Я упоролся.
Replies (48)
- @Drino:@0xd34df00d Потому что они начинают писать функциональный подход на языках, которые не предполагают функционального подхода.from boxroomCC3F3A3E, 9 months ago, in reply to /4
- @0xd34df00d:@Drino C++ templates вполне себе функциональны, чо.from idead, 9 months ago, in reply to /7
- @Drino:@0xd34df00d Да, а рассчёт условий в циклах/ифах вполне себе ленив. Тем не менее C++ это не функциональный язык.from boxroomCC3F3A3E, 9 months ago, in reply to /8
- @borman:@0xd34df00d Эта функциональность не приводит к лавинообразной кодогенерации?from web, 9 months ago, in reply to /8
- @0xd34df00d:@borman Приводит. Мне страшно думать о том, сколько это будет собираться для количества функторов больше 2-3, скажем. Там же 2^n.from idead, 9 months ago, in reply to /10
- @0xd34df00d:@Drino Не функциональный. Но иногда так хочется!from idead, 9 months ago, in reply to /9
- @borman:@0xd34df00d Тогда перестань заниматься херней, поищи статьи на тему того, что ты делаешь и напиши это в годном c++-style.from codeee/Vacuum IM, 9 months ago, in reply to /11
- @Drino:@0xd34df00d Это следствие сломанности твоего мозга, не? :3from boxroomCC3F3A3E, 9 months ago, in reply to /12
- @0xd34df00d:@borman В моем случае всего 2 функтора, и в C++-style будет легче написать все варианты руками.from idead, 9 months ago, in reply to /13
- @Drino:@0xd34df00d Прекрасное познаёт тебя, анально. Не? :3from boxroomCC3F3A3E, 9 months ago, in reply to /16
- @borman:@0xd34df00d А, ну просто ты расписал условие так, как будто у тебя серьезная задача.from codeee/Vacuum IM, 9 months ago, in reply to /15
- @Drino:@0xd34df00d Дидфуде познаёт позу наездницы над прекрасным? :3from boxroomCC3F3A3E, 9 months ago, in reply to /21
- @borman:@0xd34df00d Нет, ты собрался писать list comprehension для двух элементов. Или страничка про факториал на хаскеле настолько запала тебе в мозг?from codeee/Vacuum IM, 9 months ago, in reply to /20
- @Drino:@0xd34df00d Ок-ок, ты не даёшь прекрасному двигаться и мешаешь ему проявлять инициативу! Нехарашо! :3from boxroomCC3F3A3E, 9 months ago, in reply to /23
- @0xd34df00d:@borman Я собрался писать list comprehension для N элементов, 2 — частный случай N для N = 2. Я болен оверинжинирингом, да, known bug.from idead, 9 months ago, in reply to /24
- @Drino:@0xd34df00d Напиши лучше код и вбрось в жуек. С комментами.from boxroomCC3F3A3E, 9 months ago, in reply to /26
- @borman:@0xd34df00d Я это и сказал. У меня тоже сильный бугурт вызывают программы типа "реализация такого-то алгоритма на си в n<100 строчек".from codeee/Vacuum IM, 9 months ago, in reply to /26
- @0xd34df00d:@borman Я только не очень понял связи бугурта такого рода с ориджинал постом.from idead, 9 months ago, in reply to /30
- @part1zano:А щачло карпа, меж тем, всенепременно замыкается на Кольский полуостров через гастроном №5 на улице Герцена. И вот если мы возьмём Кольский полуостров, возьмём экономику, и замкнём, то получим Te-le-fun-ken!!from web, 9 months ago
- @0xd34df00d:@part1zano Что ты меня тут шизофазией тrавишь, а? )from idead, 9 months ago, in reply to /35
- @kaberc:@0xd34df00d Он — Илья Муромец, ему можно.from 28242520601288434503349587, 9 months ago, in reply to /36
- @part1zano:@0xd34df00d Это простейший ментальный блок, я его раза IRL применял, когда мне один знакомый библиотекарь начал пургу в моск загонять %)from che-netboo979E95DF, 9 months ago, in reply to /36
- @jtootf:во всех нормальных языках это называется не функторами, а предикатами; ну и зачем тут городить массив комбинаций я откровенно не понимаю — достаточно ввести отношение Ord на этих предикатахfrom galois, 9 months ago
- @0xd34df00d:@jtootf А как тебе поможет отношение Ord на предикатах?from idead, 9 months ago, in reply to /39
- @jtootf:@0xd34df00d я трижды перечитал постановку, и понял, что я тебя всё-таки не понимаю. когда твой функтор возвращает true?from galois, 9 months ago, in reply to /40
- @0xd34df00d:@jtootf Когда данное^W структура, которую он мапит в Bool, удовлетворяет соответствующему предикату условию.from idead, 9 months ago, in reply to /42
- @jtootf:@0xd34df00d в общем, я радости и ликования не понимаю :)from galois, 9 months ago, in reply to /43
- @0xd34df00d:@jtootf Можно упарываться и городить пиздецы из шаблонов же!from idead, 9 months ago, in reply to /44
- @jtootf:@0xd34df00d цель должна оправдывать средства. иезуиты были неглупыми людьмиfrom galois, 9 months ago, in reply to /45