The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Релиз компилятора Rakudo 2022.02 для языка программирования Raku (бывший Perl 6)"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Подсказка: Ссылки "<<" и ">>" открывают первые и последние 10 сообщений.
. "Релиз компилятора Rakudo 2022.02 для языка программирования ..." +/
Сообщение от Аноним (61), 16-Фев-22, 23:00 
> Я постоянно пользовался тем же Option.bind, и он очень
> похож на flatmap, описанный тобой

Да, flatMap это и есть bind.


> Но если ты правду говоришь, и flatmap действительно трактуется так широко, то
> мне всё же не понятно, почему оно называется flatmap.

Даже с Option и Either flatMap можно разбить на map и flatten. Лучше конечно не надо, но можно.

То есть сначала map делает

    Option[ A ] -> Option[ Option [ B ] ]

а потом flatten делает

    Option[ Option[ B ] ] -> Option[ B ]


> В общем, мне сдаётся, что называть эту функцию банальным bind-ом разумнее, нежели flatmap-ом.

Может, разумнее а может и нет. Споры про именование - вообще неблагодарное занятие. По мне так слово bind может означать очень много чего, в том числе и то, что делает flatMap.


> Насколько распространено использование flatmap-а в обозначенном тобой контексте? В смысле,
> когда flatmap и flatten суть синонимы bind и join. Я хотел
> бы увидеть, что flatmap действительно рассматривается так широко, как ты это
> сейчас описал. Может быть, у тебя найдётся ссылка на соответствущую литературу?

Для Окамла твоего не знаю литературы. Для Скалы можешь попробовать "Functional Programming in Scala" или "Get Programming with Scala", вот статья по мотивам текста оттуда:
https://freecontent.manning.com/using-option-in-scala-part-2.../

Вот ещё про то же самое, очень коротко:
https://alvinalexander.com/scala/handling-nested-options-wit.../

Вот наоборот подлиннее, в том числе явно упоминается, что flatMap это bind:
https://medium.com/free-code-camp/demystifying-the-monad-in-...

Вот про Яву:
https://stackabuse.com/java-8-streams-definitive-guide-to-fl.../

Везде даются примеры с Option/Optional вместо Either, наверное для простоты понимания. Но я и Option/Optional, и Either совместно с flatMap видел в коде реальных проектов. Уж сам решай, верить или нет.

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Релиз компилятора Rakudo 2022.02 для языка программирования Raku (бывший Perl 6), opennews, 13-Фев-22, 10:34  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру