1. C++ / Говнокод #16140

    +5

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    template <class ResultBinaryFunc, class BinaryFunc1, class BinaryFunc2>
    class complex_binary_compose: public std::binary_function<BinaryFunc1::first_argument_type,
    														  BinaryFunc1::second_argument_type,
    														  ResultBinaryFunc::result_type>
    {
    public:
    	complex_binary_compose(const ResultBinaryFunc & BF, const BinaryFunc1 & UF1, const BinaryFunc2 & UF2) :
    	  _bf(BF), _f1(UF1), _f2(UF2) {}
    	result_type operator()(first_argument_type arg1, second_argument_type arg2)
    	{
    		return _bf(_f1(arg1, arg2), _f2(arg1, arg2));
    	}
    private:
    	ResultBinaryFunc _bf;
    	BinaryFunc1 _f1;
    	BinaryFunc2 _f2;
    };
    
    template <class ResultBinaryFunc, class BinaryFunc1, class BinaryFunc2>
    complex_binary_compose<ResultBinaryFunc, BinaryFunc1, BinaryFunc2>
    	complex_compose2(const ResultBinaryFunc & BF, const BinaryFunc1 & UF1, const BinaryFunc2 & UF2)
    {
    	return complex_binary_compose<ResultBinaryFunc, BinaryFunc1, BinaryFunc2>(BF, UF1, UF2);
    }

    Чтобы было удобно применять stl алгоритмы.

    Запостил: laMer007, 10 Июня 2014

    Комментарии (93) RSS

    • Интересно, это правда может кому-то нравится?
      Ответить
      • любую проблему можно решить, добавив ещё один уровень абстракции
        Ответить
        • но это не решит проблему добавления ещё одного уровня абстракции
          Ответить
          • Мы решили проблему добавлением ещё одного уровня абстракции,
            Теперь у нас много проблем.
            Ответить
            • Мы решили проблему добавлением ещё одного уровня абстракции, теперь у нас целый уровень новых проблем.
              Ответить
    • complex_binary_compose f1 f2 r = curry (uncurry r . (uncurry f1 &&& uncurry f2))
      Ответить
      • code ucuren
        Ответить
      • Блин. Кресты когда-нибудь таки превратятся в заново написанную, неспецифицированную, глючную и кривую реализацию половины хацкеля. (ц)
        Вот реально всё туда идёт - в сотый раз вижу как крестобляди хотят писать так, а получается многословное дерьмо из шаблонов, макросов, лямбд и ооп.
        Ответить
        • Да, бро, плюсы тлен. Я вот nemerle изучаю. Оффтоп - есть норм книга по хаскелю? можно на буржуйском
          Ответить
          • Проблема ведь не в плюсах, почему именно среди крестовиков множество желающих писать "как в хаскеле" и просто неистово фапающих на него?
            По идее равномерно должны быть представлены любители всех языков, а на практике наблюдаю иное - человек учит хаскел, вау да, а через некоторое время хопа - выяснется что основная профессия у него: быть крестоблядью.
            PS>Это сугубо субъективное наблюдение.
            Есть догадка: возможно корни этого явления кроются в страшной ачитабельности обоих языков?
            Ответить
            • Мне кажется он ищет функциональной чистоты, как в его шаблонах в крестах (притом что в шаблонах, что в хаскеле она почти строго навязана со стороны языка).
              А также у него есть комплекс неполноценности из-за того что в крестах ему нужно управлять памятью, писать громоздкие шаблоны. И тут он приходит в хаскель и у него прорыв всего того, что накопилось за годы писания на крестах. Он пишет сверх кратко и при этом сообщество его поддерживает в его начинаниях типа: x:xs _ и тд, вместо complex_binary_compose ::boost::container::range::ResultBinaryF unc.
              Ответить
              • Ты пойми: Есть крестовики - зубрилки. Им нравилось в детстве зубрить матан. Им нравилось зубрить стандарт крестов со всеми его уб и несчастными случаями. И тут под руку попадается язык, в котором нужно зубрить очередной матан: моноиды, монады, эндофункторы и прочий теоркат, ну а крестушки (только те, что зубрилки конечно) - и сами рады чего-нибудь позубрить.
                Ответить
                • А зубрят то они теоркат как псалтырь и библию. А дальше начинают вербовать новых учеников лезть со своим уставом в чужой монастырь. Ну конечно, где же ещё крестушкам применять знание хаскелевой молитвы - только в крестах.
                  Ответить
                  • > как псалтырь и библию
                    > зубрить стандарт крестов
                    Плюс конечно, но истинно верующий в Страуструпа никогда бы не написал Стандарт с маленькой буквы.
                    http://alenacpp.blogspot.com/2005/11/sequence-points.html#comment-113206650425006050
                    Ответить
                    • > Крест конечно
                      fixed

                      > никогда бы не написал Стандарт с маленькой буквы.
                      ISO/IEC 14882 2011
                      Да я вот посреди ночи только что проснулся и по памяти написал аббревиатуру выше, отвечая на твой комент! Как ты мог упрекнуть мою веру в крест животворящий и библию, которою часто приходится в зависимости от форума истолковывать богохульникам по разному?
                      Ответить
                • Зубрить монады? лол. Их понять нужно один раз. Я вообще зубрить не люблю (и кресты) но хаскеллом овладевать желаю
                  Ответить
                  • их надо по сути каждую заново изучать.
                    Отпишись, когда поймёшь ContT
                    Ответить
            • > почему именно среди крестовиков множество желающих писать "как в хаскеле"

              Не увидел закономерности, если честно. У нас в компании полно "крестовиков", хаскель мало кого интересует.

              Я лично haskell начал изучать за пару лет до крестов (после него крестошаблоны усваиваются особенно хорошо).
              Ответить
              • > Не увидел закономерности, если честно. У нас в компании полно "крестовиков", хаскель мало кого интересует.
                Наверное, имелся ввиду забугор:
                http://bartoszmilewski.com/2014/06/09/the-functional-revolution-in-c/
                Не смог найти, где закладки в могильном огнелисе, чтобы оставить эту ссылку. Нахер этим людям функциональщина в крестах?
                Ответить
                • Кстати, в заголовке написано in c, а на самом деле - in c++.
                  Ответить
                  • чистый С почти не юзается. кресты, кресты, кругом кресты
                    Ответить
                    • кладбище, лол
                      причем если вокруг бродят зомби и витают демоны - мы в *никсовом окружении, а если стоят иконы на столе и проводятся службы - в виндовом petrosyan.jpg
                      Ответить
                    • Си кресты кресты кладбище пидор

                      А цитатка гуглится
                      Ответить
                • Да это тот ещё тролль. Хаскелиные функциональные петушения прямо в крестах пишет в своём блоге. Он там недавно дерево настрогал. Полностью чистое на стд::шаредпоинтерах и везде передавал значения не по ссылки, а по копии, притом даже когда устраивал рекурсивные вызовы
                  Ответить
                  • > и везде передавал значения не по ссылки, а по копии, притом даже когда устраивал рекурсивные вызовы
                    Царь бы сразу повесился, если б увидел это
                    Ответить
                    • Да мне самому захотелось повесить автора, когда я это увидел.
                      Убивать людей не хорошо.
                      Убивать людей не хорошо.
                      Убивать людей не хорошо.
                      Ответить
                    • > передавал значения не по ссылки, а по копии
                      Ну если std::shared_ptr по значению передает - то терпеть можно. Хотя бы не полная копия поддерева на каждый вызов ;)
                      Ответить
                    • На самом деле жесть, он там рассказывает об этом, как о божественном проведении. Как-будто он изобретатель революции, пророк господа и несёт чушь во имя луны. В то время как любой идиот, прочитавший книгу "хаскель во имя бобра" и слегка знающий кресты - может написать такой же тормозной говнокод. Я аж воспылал.

                      ps: Он ко мне сам добавился в круги
                      Ответить
                      • [оффтоп]Кстати, а люди видят, в какие круги их добавили, и какие круги у меня вообще есть? Если нет - может быть и заведу себе g+...[/оффтоп]
                        Ответить
                        • Я не отвечу на этот вопрос. Может он не добавил, а позвал меня в свои круги, рассылая спам по списку подписанных на маиллисты буста.
                          Ответить
                        • > Если нет - может быть и заведу себе g+
                          А сам небось зарегистрирован вконтакте и тебя не беспокоит то, что все видят, что ты уже состоишь в группах "секс для девственников" и "лучшее порно втентакле"
                          Ответить
                          • > А сам небось зарегистрирован вконтакте и тебя не беспокоит то, что все видят, что ты уже состоишь в группах "секс для девственников" и "лучшее порно втентакле"
                            Вот поэтому я до сих пор не вступил в эти прекрасные сообщества :( А в контакте у меня только 7 лучших друзей, нет фотки и фейковое имя.
                            Ответить
                            • Ну делай как я - входи только в группы по программированию. Ни один из моих знакомых втентакля не поймет что это за группы и насколько стыдно в них состоять.
                              Ответить
                              • а как свежее порно тогда смотреть? или создать группу программирование на lisp под dos и туда заливать порно.
                                Ответить
                                • > а как свежее порно тогда смотреть?
                                  На специализированных ресурсах. Не будем показывать пальцем.
                                  Ответить
                                  • Ну и группы по программированию тоже надо на спец ресурсах.
                                    Ответить
                                • гугли "свежее порно вконтакте"
                                  Ответить
                            • нагибатор_10000?
                              Ответить
                              • > нагибатор_10000
                                Иван Иванов. Удачного деанона ;)
                                Ответить
                                • Иванов иван иваныч не заполняет бланки - он тупо крадет образцы)
                                  Ответить
                        • Что происходит, когда вы добавляете в круги пользователей и +страницы?

                          Им может прийти оповещение о том, что вы добавили их в круги. При этом название круга указано не будет.
                          Добавленные вами в круги пользователи и +страницы могут отображаться в вашем профиле. Вы сами решаете, кому они будут видны. Кроме того, в зависимости от выбранных вами настроек вы можете видеть, например, отзывы и +1 участников ваших кругов в рекомендациях друзей.
                          Им будут доступны все материалы, которыми вы делились с кругом. Если вы будете добавлены в круги того или иного пользователя или +страницы, записи, которыми вы с ними делитесь, могут отображаться в их лентах.
                          Участники ваших кругов смогут общаться с вами в Hangouts.


                          https://support.google.com/plus/answer/1047805?hl=ru
                          Ответить
                          • Всегда когда ко мне приходило сообщение об обновлении в каких-то там кругах - я нажимал кнопку "это спам". Не знаю как к другим, но ко мне больше не приходит.
                            Ответить
                          • > Если вы будете добавлены в круги того или иного пользователя или +страницы, записи, которыми вы с ними делитесь, могут отображаться в их лентах.
                            Но видеть их будут только те, кто добавлен в круги, для которых я публиковал эту запись? Или всем подряд?
                            Ответить
                            • По идее, запись должны видеть либо все, если опубликована для всех, либо люди из кругов, для которых она опубликована.

                              P.S.
                              >> Вы сами решаете, кому они будут видны.
                              Надо ещё настройки посмотреть, чтоб убедиться, что по умолчанию кто-то что-то лишнего не увидел.
                              Ответить
                        • G+ мертв.
                          Ответить
                          • А жаль, это единственная социалка, идеи которой пришлись мне по душе.
                            Ответить
                            • Ну ты можешь зарегиться и добавить меня в друзья и мы будем вдвоем в центре мертвого мира... как в фалауте
                              Ответить
                            • Когда она появилась, гугел требовал требовал телефон для реги, так что она для меня и не рождалась. Если бы гугел ее не так форсил - может быть и взлетела бы.
                              Ответить
                              • > гугел требовал требовал телефон для реги
                                У меня один хер двухфакторка на учетке...

                                P.S. Все социалки номер сотика, кстати, не от хорошей жизни просят. Это единственный мало-мальски эффективный и удобный антиспам для таких масштабов ;( Ну и это всяко лучше, чем скан паспорта, номер кредитки или еще какая-нибудь приватная инфа.
                                Ответить
                            • > > G+ мертв
                              > А жаль
                              И только Торвальдс продолжает упорно насиловать труп, постя... Поща... Запощивая... Тьфу. Отправляя посты про котят и пингвинов и собирая тысячи плюсиков. Зомби плюсуют, не иначе. гы, и тут зомби
                              Ответить
                          • > G+ мертв

                            Да прям. Какие есть алтернативы? ШколоВконтактик? ЛицоКнига? Одноглазники? Пастбища овец.

                            В G+ хотя бы можно найти интересные фиды от сообществ. Одна только лента сообщества Emacs в тыщу раз интересней всей хабры вместе взятой.
                            Ответить
                            • а зачем тебе альтернативы?
                              Ответить
                            • >Пастбища овец.
                              Что за зверь?
                              А твиттерок, линкедин?
                              Ответить
                              • > Что за зверь?
                                Не зверь, вердикт.

                                Линкедин - соц сеть? Это вроде место, где HR еженедельно спаммит тебя вакансиями Luxoft и ДойчеБанка, а нубы задают типичные нубские вопросы.

                                > А твиттерок
                                Не прочувствовал я его что-то. Может, там и есть ссылки на интересный контент, но мне не хочется с ним связываться.
                                Ответить
                                • >Линкедин - соц сеть?
                                  LinkedIn is a business-oriented social networking service.
                                  >Может, там и есть ссылки на интересный контент
                                  Кратко о главном. Есть много полезных аккаунтов. По плюсам например оттуда обновления получаю @isocpp. Даже Страуструп есть :) с двумя твиттами:
                                  https://twitter.com/stroustrup
                                  Ответить
                                  • Полистал немного емаксо-фиды на птиччере, вроде полезно.

                                    G+ удобнее тем, что он частично встраивает контент по ссылкам в фид.
                                    Ответить
                              • > твиттерок
                                Ну как замена RSS свитер вполне юзабелен. Но не более того.
                                Ответить
                                • >Ну как замена RSS
                                  но тут можно и самому поднасрать в ленту
                                  Ответить
                              • а ты часом, мил человек, не твитерок ли юзаешь^W?
                                Ответить
                        • Не видят.
                          Ответить
                  • Персистентные структуры данных - вещь полезная, особенно в контексте интерактивных программ.
                    При каждом модифицирующем действии пользователя мы делаем полный слепок его данных. Но, поскольку изменения обычно небольшие, можно шарить внутри структуры не изменившиеся данные.
                    Я много раз видел код do-undo, он всегда нетривиален и полон граничных случаев.
                    Снятие легковесных копий с copy-on-write делает код do-undo гораздо прозрачней и надёжней.
                    Ответить
                • >функциональщина в крестах

                  мульти-мать ее-парадигменность.
                  Ответить
                  • > мульти-мать ее-парадигменность.
                    Звучит. Причем слово достаточно длинное для того, чтобы вставить в него ещё парочку ругательств.
                    вспомнились i18n и L10n
                    Ответить
              • >У нас в компании полно "крестовиков", хаскель мало кого интересует.
                Не надо перекручивать. Я написал немного в другой последовательности:
                >человек учит хаскел, вау да, а через некоторое время хопа - выяснется что основная профессия у него: быть крестоблядью.
                То есть причинно-следственная связь не крестоблядь => хачкелист, но наоборот хачкелист зачастую вскоре принимает крестоблядство.

                >Я лично haskell начал изучать за пару лет до крестов (после него крестошаблоны усваиваются особенно хорошо
                Во-во-во.
                Ответить
          • > Я вот nemerle изучаю.
            > есть норм книга по хаскелю?
            Оно и видно как ты изучаешь.
            книга, хотя не норм: Хаскель во имя бобра
            Ответить
            • Где, где видно?
              Ответить
              • Всевидящий я толкует предсказания по Библии от Страуструпа
                Сосредоточься на чем-нибудь одном. Не рассеивай внимание.
                Я не боюсь того, кто изучает 10 000 различных ударов. Я боюсь того, кто изучает один удар 10 000 раз.
                (Тот, у кого следует учится всем программистам и не только)(с)
                Ответить
          • > Оффтоп - есть норм книга по хаскелю?

            Этот вопрос даже здесь уже завали несколько раз.
            1. http://learnyouahaskell.com/ - детская, но зипперы и state описаны очень понятно
            2. http://book.realworldhaskell.org/ - интересная и практическим уклоном, но тяжеловата
            3. http://chimera.labs.oreilly.com/books/1230000000929 - отличная книга с уклоном в параллелизм, но не для начинающих
            Ответить
            • спс, летом займусь. Все - таки надеюсь я не совсем дурачек и овладею.
              Ответить
          • Real World Haskell
            Денис Шевченко О Haskell по-человечески для обыкновенных программистов
            Учебник по Haskell Антон Холомьёв
            The Haskell Road to Logic, Math and Programming Kees Doets and Jan van Eijck March 4, 2004
            Душкин Р. В. Справочник по языку Haskell

            Вот, может что подойдет.
            Ответить
            • мне лично душкин не доставил, ни о чём справочник для тех, кто не осилил haddoc
              Ответить
    • Я вот решил опрос создать:
      Знаете ли вы хоть одного фанта функциональщины, который не был бы крестовиком?

      Я нет. Зато знаю со своей работы одного крестовика - фаната функциональщины. И это не считая меня (впрочем я надеюсь что я не фанат крестов и не фанат функциональщины).
      Ответить
    • Посоны, че за адок творится на sourceforge в колонке Латест Тех Йобс?
      Последний раз когда туда смотрел, там был DBA в Northrop Grumman, а сейчас в маленький бишкек требуются курьеры, шоферы, няни
      Ответить
      • > а сейчас в маленький бишкек требуются курьеры, шоферы, няни
        Персонализированная реклама.
        Ответить
        • >> числа сложить jquery, даты пхп учебник
          Возможно, Вы искали курьер вакансии. Показаны результаты по запросу "курьер вакансии".
          Ответить

    Добавить комментарий