Size: a a a

Clojure — русскоговорящее сообщество

2020 November 04

O

Ortofax in Clojure — русскоговорящее сообщество
https://github.com/ajnsit/js-monads вот на эвэйтах эмулируют
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Ну да, на эвэйтах я бы ожидал) Но это конечно тот ещё прикол
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Зачем использовать джс в таком случае?
источник

O

Ortofax in Clojure — русскоговорящее сообщество
более правильный вопрос: зачем вообще его использовать
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Для новичков это проще
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
ETL
Просто зачем они нужны в том же JS? Понятно, что технические реализуемы. Более того, реализованы. Зачем - загадка.
Они много где есть в специализированном виде. Можно например сказать что nil punning в кложе - это монада
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
ETL
Просто зачем они нужны в том же JS? Понятно, что технические реализуемы. Более того, реализованы. Зачем - загадка.
Ну и в целом вычисления в контексте не редкость в разных языка
источник

E

ETL in Clojure — русскоговорящее сообщество
Аналогии - можно много где встретить, а я говорил про буквальное применение.
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
ETL
Аналогии - можно много где встретить, а я говорил про буквальное применение.
Ну буквально применяется какая-то захардкоженая монада
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Как пример работа с nil в кложе в контексте коллекций
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Другое дело что нет обобщенных апи для монад
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Но это не мешает специфические одиночные монады иметь
источник

E

ETL in Clojure — русскоговорящее сообщество
Просто я топлю за то, что каждый язык предоставляет свой набор средств выразительности, конкретная реализация которых обусловлена архитектурой языка. И, логично, что языки обладают какими-то общими паттернами, свойствами, поскольку решают в целом идентичные задачи, более того - нередко количество этих решений ограничено. Собственно, монады в Haskell существуют отчасти  (или во многом) для того, чтобы решить вычислительные проблемы, которые не могут быть решены иным образом. Зачем они нужны в совершенно других языках в том самом виде, в котором они представлены в Haskell? Только если в контексте "я художник - я так вижу", ну ок, чо)
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
С поправкой конечно на то что из классической монады не так просто достать значение
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
ETL
Просто я топлю за то, что каждый язык предоставляет свой набор средств выразительности, конкретная реализация которых обусловлена архитектурой языка. И, логично, что языки обладают какими-то общими паттернами, свойствами, поскольку решают в целом идентичные задачи, более того - нередко количество этих решений ограничено. Собственно, монады в Haskell существуют отчасти  (или во многом) для того, чтобы решить вычислительные проблемы, которые не могут быть решены иным образом. Зачем они нужны в совершенно других языках в том самом виде, в котором они представлены в Haskell? Только если в контексте "я художник - я так вижу", ну ок, чо)
Да никто не говорит что в том же виде
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Скорее как паттерн
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Одно дело сама монада - ее реализация может быть какая угодно. И другое- обобщенное апи для создания монад
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Второе действительно не всем нужно
источник

O

Ortofax in Clojure — русскоговорящее сообщество
Camina Drummer
Кстати, вопрос по монадам: чем они отличаются от пайплайна?
пайплайн это, по сути функция с типом a -> (a -> b) -> b, у монады оператор bind с типом m a -> (a -> m b) -> m b. сигнатуры действительно похожи, можно сказать, что пайплайн это вставка функции a -> b между a и b, а байнд это вставка функции a -> m b между m a и m b. плюс у монад ещё есть способ a превратить в m a, а у пайплайна тривиальное отображение a в a
источник

O

Ortofax in Clojure — русскоговорящее сообщество
если использовать монаду Identity, то получается пайплайн
источник