Функциональное программирование на C++, на странице 214, со ссылкой на ожидаемую монаду, которая совпадает с Haskell's Does, читает
[...] как только какая-либо из функций, к которым вы привязываетесь, вернет ошибку, выполнение остановится и вернуть эту ошибку вызывающему объекту.
Затем в заголовке чуть ниже будет написано
< blockquote>
Если вы вызываете mbind [эквивалентно Haskell >>=] для ожидаемого, содержащего ошибку, mbind даже не будет вызвать функцию преобразования; он просто перенаправит эту ошибку в результат.
что, похоже, "корректирует" то, что было написано раньше. (Я почти уверен, что либо ЛЯХ, либо RWH где-то подчеркивает, что короткого замыкания нет; если помните где, пожалуйста, напомните мне об этом.)
Действительно, насколько я понимаю, от Haskell, заключается в том, что в цепочке монадических привязок все привязки происходят реально; тогда то, что они делают с функцией, переданной им в качестве второго аргумента, зависит от конкретной монады.
В случае «Может быть» и «Либо», когда привязкам передается аргумент Nothing или Left x, затем второй аргумент игнорируется.
Тем не менее, в этих конкретных двух случаях мне интересно, есть ли снижение производительности при выполнении подобных действий
justPlus1 = Just . (+1)
turnToNothing = const Nothing
Just 3 >>= turnToNothing >>= justPlus1
>>= justPlus1
>>= justPlus1
>>= justPlus1
>>= justPlus1
поскольку в этих случаях цепочка на самом деле не может делать ничего, кроме того, что она делает, учитывая, что
Nothing >>= _ = Nothing
Left l >>= _ = Left l
Подробнее здесь: https://stackoverflow.com/questions/639 ... erformance
Монады Maybe и Либо, короткое замыкание и производительность ⇐ C++
Программы на C++. Форум разработчиков
-
Anonymous
1712998187
Anonymous
Функциональное программирование на C++, на странице 214, со ссылкой на ожидаемую монаду, которая совпадает с Haskell's Does, читает
[...] как только какая-либо из функций, к которым вы привязываетесь, вернет ошибку, [b]выполнение остановится [/b] и вернуть эту ошибку вызывающему объекту.
Затем в заголовке чуть ниже будет написано
< blockquote>
Если вы вызываете mbind [эквивалентно Haskell >>=] для ожидаемого, содержащего ошибку, mbind даже не будет вызвать функцию преобразования; [b]он просто перенаправит эту ошибку в результат[/b].
что, похоже, "корректирует" то, что было написано раньше. (Я почти уверен, что либо ЛЯХ, либо RWH где-то подчеркивает, что короткого замыкания нет; если помните где, пожалуйста, напомните мне об этом.)
Действительно, насколько я понимаю, от Haskell, заключается в том, что в цепочке монадических привязок все привязки происходят реально; тогда то, что они делают с функцией, переданной им в качестве второго аргумента, зависит от конкретной монады.
В случае «Может быть» и «Либо», когда привязкам передается аргумент Nothing или Left x, затем второй аргумент игнорируется.
Тем не менее, в этих конкретных двух случаях мне интересно, есть ли снижение производительности при выполнении подобных действий
justPlus1 = Just . (+1)
turnToNothing = const Nothing
Just 3 >>= turnToNothing >>= justPlus1
>>= justPlus1
>>= justPlus1
>>= justPlus1
>>= justPlus1
поскольку в этих случаях цепочка на самом деле не может делать ничего, кроме того, что она делает, учитывая, что
Nothing >>= _ = Nothing
Left l >>= _ = Left l
Подробнее здесь: [url]https://stackoverflow.com/questions/63943706/maybe-and-either-monads-short-circuiting-and-performance[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия