Size: a a a

2020 September 29

Oℕ

Oleg ℕizhnik in Scala Jobs
Обсуждаем вкатывание джунов, вопросы на собесах
источник

S

Simon in Scala Jobs
Oleg ℕizhnik
Т.е. где-то когда-то у меня щёлкнуло именно насчёт моноидов и монад.
Типа моноид берёт пару элементов и склеивает в один, либо предоставляет какой-то тривиальный элемент.
И вот посмотрев на этот инстанс монады для (->) R, у меня тоже щёлкнуло.
>>= берёт пару использований R и склеивает в одно, а return берёт просто элемент и добавляет к нему какое-то тривиальное использование R
И всё остальное сложилось после этого щелчка
На эффекты это ложится идеально, а вот на Monad[List] - уже с трудом натягивается и получается довольно искусственно.
источник

SA

Sergey Alaev in Scala Jobs
Oleg ℕizhnik
Т.е. где-то когда-то у меня щёлкнуло именно насчёт моноидов и монад.
Типа моноид берёт пару элементов и склеивает в один, либо предоставляет какой-то тривиальный элемент.
И вот посмотрев на этот инстанс монады для (->) R, у меня тоже щёлкнуло.
>>= берёт пару использований R и склеивает в одно, а return берёт просто элемент и добавляет к нему какое-то тривиальное использование R
И всё остальное сложилось после этого щелчка
Monad[A -> *] - это же ридер?
источник

Oℕ

Oleg ℕizhnik in Scala Jobs
Sergey Alaev
Monad[A -> *] - это же ридер?
да
источник

Oℕ

Oleg ℕizhnik in Scala Jobs
Simon
На эффекты это ложится идеально, а вот на Monad[List] - уже с трудом натягивается и получается довольно искусственно.
у меня как раз идеально легло
источник

Oℕ

Oleg ℕizhnik in Scala Jobs
Я представил "список - это "(упорядоченное) множество элементов x", return - создаёт тривиальное множество (из одного элемента), а байнд склеивает "множество множеств" в просто "множество"
источник

AS

Artem Sokolov in Scala Jobs
у кого-то и бурито ложится
источник

Oℕ

Oleg ℕizhnik in Scala Jobs
Я согласен, поэтому никогда туториал на этой базе не писал
источник

Oℕ

Oleg ℕizhnik in Scala Jobs
И не навязывал
источник

Oℕ

Oleg ℕizhnik in Scala Jobs
Simon
На эффекты это ложится идеально, а вот на Monad[List] - уже с трудом натягивается и получается довольно искусственно.
Ну хорошо, я точно не помню, идеально ли и сразу ли, но легло
источник

Oℕ

Oleg ℕizhnik in Scala Jobs
Наверное. не сразу
источник

SA

Sergey Alaev in Scala Jobs
Oleg ℕizhnik
Я представил "список - это "(упорядоченное) множество элементов x", return - создаёт тривиальное множество (из одного элемента), а байнд склеивает "множество множеств" в просто "множество"
Выглядит как аппликатив + reduce, монада все-таки немного не то?
источник

S

Simon in Scala Jobs
Oleg ℕizhnik
Я представил "список - это "(упорядоченное) множество элементов x", return - создаёт тривиальное множество (из одного элемента), а байнд склеивает "множество множеств" в просто "множество"
Я про "склеивает использования". Оно на List ложится сложнее. Приходится давать 2 разных объяснения для List-like и для Effect-like монад. А ведть этим оно не исчерпывается.
источник

Oℕ

Oleg ℕizhnik in Scala Jobs
Simon
Я про "склеивает использования". Оно на List ложится сложнее. Приходится давать 2 разных объяснения для List-like и для Effect-like монад. А ведть этим оно не исчерпывается.
Почему сложнее
источник

SA

Sergey Alaev in Scala Jobs
т.е.
(F[A], F[B], (A, B) => C) => F[C]
источник

Oℕ

Oleg ℕizhnik in Scala Jobs
Sergey Alaev
Выглядит как аппликатив + reduce, монада все-таки немного не то?
Ну так вот вы и получили прямо из этого определения, что именно для списка, флатмап можно определить через фолд
источник

Oℕ

Oleg ℕizhnik in Scala Jobs
Sergey Alaev
т.е.
(F[A], F[B], (A, B) => C) => F[C]
Аппликатив - тоже моноид, только склеивает чуть иначе
источник

Oℕ

Oleg ℕizhnik in Scala Jobs
Это немного позже пришло
источник

S

Simon in Scala Jobs
Oleg ℕizhnik
Почему сложнее
Меня люди лучше понимают когда я объясняю монаду для листа как композицию flatten и map. А вот когда дело доходит до эффектов - можно уже начать рассказывать напрямую про композицию эффектов.
источник

Oℕ

Oleg ℕizhnik in Scala Jobs
Челы я не предлагаю методички писать. Просто вспоминаю
источник