Обновить
0
Анатолий Мастюк@anatoly62

Программист

Отправить сообщение
vdudouyt
Не соглашусь. flatMap аналог bind и для других монад. Посмотрите как это сделано в Scala.
Обычно flatMap и return минимально множество, а map можно выразить через flatMap

fun map(f: (T)->R)=flatMap{ return ( f (it) ) } — kotlin
В хаскеле функция такой обработки называется bind (>>=), что имеет корни в Теории Категорий. Ведь bind – это «связывание», т.е. функция bind фактически создает ребро в графе категорий (связывает узлы). В большинстве языков «здорового человека» эта функция называется map() («отобразить», «поставить в соответствие»).


bind — это flatMap, а уж никак не map.
Вступать в религиозную дискуссию динамическая типизация против статической я не буду.
Попробуйте «быстро и хорошо» написать на Clojure приложение для Android. На Scala я пишу клиентские приложения, которые без изменения кода работают на рабочем столе, в браузере и на мобильном устройстве. Серверные приложения спокойно пишу и на Scala и на СL и на Rust. У каждого из этих мультипарадигмальных языков есть свои прелести. Интеграция с JVM иногда плюс иногда минус, зависит от задач.
Я лет 5 использовал Clojure в продакшен. Но сейчас использую Scala или CL и по возможности, перевожу написанное на эти языки.
Нет, в Clojure нет полноценного ООП. Нет, Вы не разобрались с макросами чтения. Нет, это не только оcособенности платформы JVM но и особенности реализации самого Clojure. Напишите helloworld на Java и на Clojure и увидите разницу при загрузке.
CL — мультипарадигмальный язык, CLojure — функциональный. В СL есть CLOS система объектно-ориентированного программирования. В CL есть макросы чтения. Скомпилированная программа на CL загружается мгновенно. в отличии от программы на Clojure.
Во всех моих проектах в качестве нижнего уровня использовался мультипарадигмальный язык. А в качестве встроенного интерпретатора язык на который знают или легко способны выучить большинство программистов. Получилось так Rust+Lua, Scala+(Lua и JavaScript). В случаи с СL он и нижний и верхний уровень.
Проект в императивном стиле, интерпретатор в функциональном. Зачем такое жесткое разграничения парадигм. К тому же СL и как императивному языку есть что сказать.
Если уж хочется Java+Scheme, то есть Сlojure.
Обычные прикладные задачи, особенно, если заказчик не до конца представляет что хочет.
У меня на CL написано что-то типа 1С. И CL — это не функциональный а мультипарадигмальный язык программирования.
Ничего не мешает на нем писать прикладное ПО. У меня уже несколько клиент-серверных приложений, где и сервер и клиент написаны на Rust.
Почему не известна. Использую уже около года для сервера под андроид.

Информация

В рейтинге
Не участвует
Дата рождения
Зарегистрирован
Активность