|
|
|
Нужны ли монады в C++?03.08.2015, 21:50. Показов 5822. Ответов 63
Всем привет.
Наверняка всем вам известен такой ресурс как Habrahabr. Так вот. Не так давно я случайно наткнулся на одну интересную тему под названием "Монады и do-нотация в C++" (link). Честно говоря, до этого я не знал что такое монады, но после прочтения темы у меня сложилось впечатление что лучше бы я их и не знал. Дело не в том что это что-то страшное и сложное, просто мне кажется что использование монад в C++ лишь усложняет код. Люди же в некоторых комментариях считают иначе. А что считаете вы? В каких ситуациях монады могут облегчить чтение кода или повысить его производительность?
0
|
|
| 03.08.2015, 21:50 | |
|
Ответы с готовыми решениями:
63
Монады Стейты, Монады Палиндромы и монады |
| 06.08.2015, 19:18 [ТС] | |
|
0
|
|
| 06.08.2015, 19:42 | |
|
0
|
|
| 06.08.2015, 19:50 | |
|
0
|
|
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|||||||
| 10.08.2015, 08:26 | |||||||
|
Попробуй кратно и просто сначала объяснить, что это такое и зачем нужно. Не можешь? Значит они и тебе то не нужны. Ну хотябы найди готовое описание. Простое, понятноное и не требующее рассуждений ни о всяких там кривонациях, хоть до, хоть я, хоть ре, хоть вообще ми, ни о загадочных тайп-классах. И при этом не сводящееся к мухлежу другими языками и не требующее их полного освоения для понимания сути конкретной языковой конструкции. Нет такого? Значит они не нужны, а то, для чего они якобы предназначены, проще сделать по-другому, чем изучать сами монады.
Добавлено через 13 минут
1. Подпрограммой и её вызовом. В c++ функцией и её вызовом. 2. Процедурным типом, или его аналогом. В c++ указателем на функцию.
0
|
|||||||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 10.08.2015, 08:35 | |
|
0
|
|
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 10.08.2015, 08:38 | |
|
Значит показалось.
0
|
|
|
204 / 26 / 5
Регистрация: 22.05.2015
Сообщений: 357
|
|
| 17.08.2015, 00:37 | |
|
0
|
|
|
Модератор
|
|
| 17.08.2015, 23:48 | |
|
Попробую объяснить, зачем нужны монады в Haskell без примеров кода.
В ФП часто используются цепочки из функций – результат одной функции подставляется как аргумент другой. Синтаксис позволяет записывать такие цепочки компактно, без обилия скобок. Но, часто, просто передавать один аргумент по цепочке недостаточно. Простейший пример – передавать два значения. Можно ручками – разворачивать то, что возвратила функция и передавать в два аргумента. Но, сразу потеряется компактность. Монада State позволяет передавать ещё один аргумент «незаметно», и, таким образом, решать эту проблемку. В общем случае, монады предоставляют возможность устроить цепочку функций с «наворотами» - ведение лога, операции ввода-вывода, чтение конфигурации, парсинг выражений … много чего. Монады могут быть вложены друг в друга образуя монадный стек. Сами монады не встроены в Haskell, но компилятор предоставляет для них сахар. С сахарком можно записывать код, похожий на императивный, хотя, на самом деле, он разворачивается всё в ту же цепочку функций. castaway привёл пример библиотеки реализации монад на плюсах. Я её, честно говоря, не смотрел пока. Исходя из вышесказанного, в императивном языке, монады, как минимум, не так важны.
0
|
|
|
72 / 72 / 5
Регистрация: 10.02.2013
Сообщений: 434
|
|
| 23.08.2015, 18:13 | |
|
Я видел этот паттерн. Его облюбовал один из создателей boost::spirit (Hartmut Kaiser). Его асинхронная библиотека(hpx) работает подобным образом.
Суть его не в том, что это монада, а в том, что это позволяет писать быстрый читаемый асинхронный код. Добавлено через 23 секунды "Избавиться от спагетти-кода" - один из их лозунгов))
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 28.08.2015, 19:33 | |||
|
даже для тех, кто очень плотно имел дело с спиритом.
0
|
|||
|
72 / 72 / 5
Регистрация: 10.02.2013
Сообщений: 434
|
||||||
| 29.08.2015, 14:17 | ||||||
|
hoggy, говори честно - какие наркотики употребляешь. Может у тебя еще есть шанс на спасение. То код с исключениями не сопровождаем, то годные DSL нужно обязательно выкинуть на помойку. Тогда уж лучше совсем забыть о крестах, и взять сишку.
Вот как предлагается писать асинхронный код
spirit же очень читаемый. Нужно только уметь правильно ориентироваться в ошибках.
0
|
||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 29.08.2015, 14:40 | ||
|
чего я никогда не утверждал, этот вопрос вы можете задать самому себе.
0
|
||
|
72 / 72 / 5
Регистрация: 10.02.2013
Сообщений: 434
|
|
| 29.08.2015, 15:01 | |
|
hoggy, видишь у тебя уже склероз от зависимости.
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 29.08.2015, 15:04 | |
|
0
|
|
| 29.08.2015, 15:49 | |
|
0
|
|
|
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
|
|
| 05.09.2015, 20:33 | |
|
Монады в c++ не нужны. C++ тоже не нужен.
0
|
|
|
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
|
|
| 05.09.2015, 21:11 | |
|
0
|
|
| 05.09.2015, 21:11 | |
|
Монады, чистые/грязные функции Как реализованы операции монады над списками? Какие значения нужны нужны циклу while? нужны отзывы Нужны советы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek
ВВЕДЕНИЕ
Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
|
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
|
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2.
Задача:
Обеспечить запись документа в регистр сведений независимо от. . .
|