Size: a a a

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

2020 November 04

CD

Camina Drummer in Clojure — русскоговорящее сообщество
Кстати, вопрос по монадам: чем они отличаются от пайплайна?
источник

E

ETL in Clojure — русскоговорящее сообщество
Camina Drummer
Кстати, вопрос по монадам: чем они отличаются от пайплайна?
Ничего общего не имеют (ну кроме символа > ).

Что говорит нам пайплайн:
1) берём значение типа "а"
2) берём функцию, которая принимает значение типа "а" (строго говоря, если типизация динамическая - то она принимает по дефолту значения любого типа)
3) даём функции значение типа "а" возвращаем значение - может быть типа "а", а может быть типа "b".

Это не соответствует ни одной из описанных на пикче сигнатур.

Вообще, монады - это специфичный для определённого семейства языков инструмент, обусловленных:
а) строгой статической типизацией
б) иммутабельностью
источник

CD

Camina Drummer in Clojure — русскоговорящее сообщество
ETL
Ничего общего не имеют (ну кроме символа > ).

Что говорит нам пайплайн:
1) берём значение типа "а"
2) берём функцию, которая принимает значение типа "а" (строго говоря, если типизация динамическая - то она принимает по дефолту значения любого типа)
3) даём функции значение типа "а" возвращаем значение - может быть типа "а", а может быть типа "b".

Это не соответствует ни одной из описанных на пикче сигнатур.

Вообще, монады - это специфичный для определённого семейства языков инструмент, обусловленных:
а) строгой статической типизацией
б) иммутабельностью
А какой будет алгоритм у монады? ( хаскель для меня читается плохенько )
источник

E

ETL in Clojure — русскоговорящее сообщество
Оставляя за скобками fail (который есть возвращение сообщения об ошибке), их по сути два:

1.
1.1. берём значение "а" и помещаем его в контекст "м". Взяли число 8, получили Just 8 (читать как 8 в контексте Just)
2.
2.1. берём значение "а" в контексте "м" (Just 8
2.2. берём функцию, которая принимает значение "а" и возвращает значение типа "b" в контексте "м" (т.е. том же самом контексте, в котором находится "а" в п.2.1). Just 8 >>= intToString (это не Haskell, а как говорит Брагилевский - язык H; читать как взять Just 8 и штуку, которая применит функцию intToString к 8
2.3. возвращаем значение типа "б" в контексте "м"  (в данном случае - вернёт Just "8", т.е. вернёт значение другого типа)

P.S. Дэн Абрамов, если что говорил, что он не в курсе монад ) ничего - не помешало карьерному продвижению )
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
ETL
Ничего общего не имеют (ну кроме символа > ).

Что говорит нам пайплайн:
1) берём значение типа "а"
2) берём функцию, которая принимает значение типа "а" (строго говоря, если типизация динамическая - то она принимает по дефолту значения любого типа)
3) даём функции значение типа "а" возвращаем значение - может быть типа "а", а может быть типа "b".

Это не соответствует ни одной из описанных на пикче сигнатур.

Вообще, монады - это специфичный для определённого семейства языков инструмент, обусловленных:
а) строгой статической типизацией
б) иммутабельностью
Не согласен, что это специфичный для конкретных языков инструмент
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Взять те же промисы
источник

E

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

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
В общем, само понимание, что у опшионалов и промисов есть что-то общее это уже прикольно
источник

O

Ortofax in Clojure — русскоговорящее сообщество
ETL
Ничего общего не имеют (ну кроме символа > ).

Что говорит нам пайплайн:
1) берём значение типа "а"
2) берём функцию, которая принимает значение типа "а" (строго говоря, если типизация динамическая - то она принимает по дефолту значения любого типа)
3) даём функции значение типа "а" возвращаем значение - может быть типа "а", а может быть типа "b".

Это не соответствует ни одной из описанных на пикче сигнатур.

Вообще, монады - это специфичный для определённого семейства языков инструмент, обусловленных:
а) строгой статической типизацией
б) иммутабельностью
как не имеют? bind это перегрузка оператора применения функции. точно такая же стрелка, только в другой категории
источник

MB

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

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Про иммутабельность ведь тоже можно сказать, что специфичная вещь, не надо ее тащить в свой язык
источник

E

ETL in Clojure — русскоговорящее сообщество
Mikhail Borisov
Ну, я бы не сказал, что надо их пытаться туда притащить (именно сами монады). Но конструкции вдохновлённые монадами тащить нужно мне кажется :)
Есть библиотеки целые ) собственно я про них от Карины и узнал )
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Я не очень понимаю, что должна делать монадная библиотека в джсе)
источник

O

Ortofax in Clojure — русскоговорящее сообщество
что должна делать монадная библиотека в любом другом языке?
источник

E

ETL in Clojure — русскоговорящее сообщество
Mikhail Borisov
Я не очень понимаю, что должна делать монадная библиотека в джсе)
О чём и спич)
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Ortofax
что должна делать монадная библиотека в любом другом языке?
Во что превращается do notation в джсе?)
источник

O

Ortofax in Clojure — русскоговорящее сообщество
во что превращается do-notation в хаскеле?
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Я имел в виду, как будет выглядеть то, что в хаскеле записывается через do notation
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Подозреваю, что куча скобочек в которых сложно что-то прочитать
источник

O

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