Size: a a a

2020 February 08

AZ

Alex Zhukovsky in rust_offtopic
monad laws говорят про опредлеенное поведенеи функций bind и pure
источник

AZ

Alex Zhukovsky in rust_offtopic
я ни одной из них тут не вижу
источник

AZ

Alex Zhukovsky in rust_offtopic
в хаскелле например есть функция lefts :: [Either a b] -> [a]
источник

AZ

Alex Zhukovsky in rust_offtopic
при том что e вообще не участвует в монадических функциях над Either
источник

r

red75prime in rust_offtopic
Как я понял, логика была такая Option::and_then - это bind, поэтому Iterator::and_then должно быть == Iterator::flat_map. Но есть операции, которые не влезают в монаду. А имена им давать надо.
источник

AZ

Alex Zhukovsky in rust_offtopic
да, но не надо им отдавать имена зарезервированные под местный bind
источник

AZ

Alex Zhukovsky in rust_offtopic
если в расте на всех распростаренных структурах (Option/Result/Future/...) бинд называется and_then, то называть им какую-то иную операцию - не стоит
источник

r

red75prime in rust_offtopic
Ммм. Кем зарезервированные?
источник

AZ

Alex Zhukovsky in rust_offtopic
red75prime
Ммм. Кем зарезервированные?
кортима
источник

AZ

Alex Zhukovsky in rust_offtopic
использовала это название
источник

r

red75prime in rust_offtopic
...там, где оно отражало суть операции. То, что and_then в монаде List - это Iterator::flat_map не такое уж и распространённое знание
источник

AZ

Alex Zhukovsky in rust_offtopic
Стоит сделать его более распространенным
источник

AZ

Alex Zhukovsky in rust_offtopic
потому что map().flatten() и на опшне/резалте
источник

r

red75prime in rust_offtopic
Как я уже и говорил, абстрактные операции на монадах в применении к конкретным монадам дают совершенно различные знакомые программистам операции: (используя примеры торта) ;, await, ?, and_then, flat_map, и т.п.
источник

AZ

Alex Zhukovsky in rust_offtopic
только это плюс, а не минус
источник

AZ

Alex Zhukovsky in rust_offtopic
собсна я в статье и планирую поругать накостыленный синтаксис для конкретных монад
источник

AZ

Alex Zhukovsky in rust_offtopic
ортогональный однообразный синтаксис? Не, не слышал
источник

AZ

Alex Zhukovsky in rust_offtopic
что до разного поведения - то две виртуальные функции от одного общего предка тоже могут делать разные вещи. никого это не удивляет
источник

r

red75prime in rust_offtopic
Лисп со скобочками
источник

AZ

Alex Zhukovsky in rust_offtopic
ни одной скобочки не написал в процессе демонстрации
источник