>> Я постоянно пользовался тем же Option.bind, и он очень
>> похож на flatmap, описанный тобой
> Да, flatMap это и есть bind.Да, я уже и сам нашёл. Причём именно на примере OCaml / Haskell: https://web.archive.org/web/20190918044550/https://typeslogi...
(увы только web archive, ребята удалили страницу, но оно того стоит)
> По мне так слово bind может означать очень много чего, в том числе и то, что делает flatMap.
Я соглашусь, что bind штука перегруженная, но и flatmap тут этимологию имеет только ту, что он образован генерализацией классических списковых map и flatten. Всё-таки более корректно тут говорить про monadic bind, насколько я понимаю, это исходное название. А вот flatmap -- уже производное название. Ну да ладно. В любом случае придётся говорить на том языке, на котором говорят все.
> Для Окамла твоего не знаю литературы. Для Скалы можешь попробовать "Functional Programming
> in Scala" или "Get Programming with Scala", вот статья по мотивам
> текста оттуда
Спасибо, конечно, но я всё-таки про литературу ж спрашивал, а не про статьи на медиуме и ему подобным ресурсам. Хочется чего-нибудь более академического, чтобы понять, откуда у терминологии ноги растут. Ну а так-то я вижу, что люди походу пользуются данной терминологией весьма активно.
PS: Я внезапно осознал, что монада -- это просто тип, для которого определен monadic bind с условиями ассоциативности и тождественности. Ну вот почему никто не даёт монаде простого определения? Сразу бы определяли нормально, глядишь, в ФП было бы больше народу. А то развели, мол, монада есть эндофунктор с парой естественных преобразований... Оно-то может и то же самое, но должна же быть золотая середина между академиками и практиками...
PPS: ну в общем, этот небольшой разговор привёл меня внезапно к пониманию, что такое монада, чего я избегал последние несколько лет, так что -- спасибо. =)