Size: a a a

2020 April 01

AZ

Alex Zhukovsky in rust_offtopic
red75prime
Я не понимаю монады. Понимание в функциональном смысле, как эффективное использование этой концепции, не ограниченное её конкретными реализациями.
монада это
trait AndThen { 
 fn and_then<A, B, F>(self: Self<A>, f: F) -> Self<B>
   where F : Fn(A) -> Self<B>
}
источник

AZ

Alex Zhukovsky in rust_offtopic
это сложно?
источник

p

polunin.ai in rust_offtopic
Alex Zhukovsky
монада это
trait AndThen { 
 fn and_then<A, B, F>(self: Self<A>, f: F) -> Self<B>
   where F : Fn(A) -> Self<B>
}
тогда как это работает для Result, там два генерика?
источник

AZ

Alex Zhukovsky in rust_offtopic
polunin.ai
тогда как это работает для Result, там два генерика?
фиксируешь тип ошибки каким-то конкретным. Остаётся один свободный - тип результата - он дальеш и участвует в мапах
источник

PL

Paul Loyd in rust_offtopic
Alex Zhukovsky
просто рассуждения на тему "смотрите как ОНИ быстро сделали"
Я спросил у inv-а напрямую. Не отвечает напрямую, жалуется на критическое мышление itшников =)
источник

p

polunin.ai in rust_offtopic
то есть уже твой трейт неправильный, так как не учитывает все возможные варианты
источник

AZ

Alex Zhukovsky in rust_offtopic
polunin.ai
то есть уже твой трейт неправильный, так как не учитывает все возможные варианты
учитывает
источник

DS

Doge Shibu in rust_offtopic
Alex Zhukovsky
фиксируешь тип ошибки каким-то конкретным. Остаётся один свободный - тип результата - он дальеш и участвует в мапах
Ну не так, конечно. Ты просто пишешь реализацию трейта для любого E
источник

p

polunin.ai in rust_offtopic
Alex Zhukovsky
учитывает
Self<A> подразумевает один генерик
источник

DS

Doge Shibu in rust_offtopic
polunin.ai
Self<A> подразумевает один генерик
Не обязательно
источник

p

polunin.ai in rust_offtopic
Doge Shibu
Не обязательно
а куда второй девается?
источник

AZ

Alex Zhukovsky in rust_offtopic
polunin.ai
Self<A> подразумевает один генерик
impl<T, E> AndThen<T> for Result<T, E> { .. }
источник

DS

Doge Shibu in rust_offtopic
Alex Zhukovsky
impl<T, E> AndThen<T> for Result<T, E> { .. }
Не так
источник

DS

Doge Shibu in rust_offtopic
Alex Zhukovsky
impl<T, E> AndThen<T> for Result<T, E> { .. }
`
impl <E> AndThen for Result<_, E> { ... }
источник

r

red75prime in rust_offtopic
Alex Zhukovsky
монада это
trait AndThen { 
 fn and_then<A, B, F>(self: Self<A>, f: F) -> Self<B>
   where F : Fn(A) -> Self<B>
}
Определение - не сложно. Выучить, что делают конкретные реализации не сложно. Сделать все реализации синтаксически одинаковыми и сказать - для нетривиальных случаев используйте лифтинг и комбинации монад... Уже напрягает
источник

DS

Doge Shibu in rust_offtopic
Result<_, E> - это тип с одной дыркой, т.к. Е мы зафиксировали
источник

D

Dika in rust_offtopic
Alex Zhukovsky
монада это
trait AndThen { 
 fn and_then<A, B, F>(self: Self<A>, f: F) -> Self<B>
   where F : Fn(A) -> Self<B>
}
где return?
источник

AZ

Alex Zhukovsky in rust_offtopic
red75prime
Определение - не сложно. Выучить, что делают конкретные реализации не сложно. Сделать все реализации синтаксически одинаковыми и сказать - для нетривиальных случаев используйте лифтинг и комбинации монад... Уже напрягает
Чтобы "понимать монады" достаточно первых двух шагов. А третьего в мейнстрим языках все равно нет, поэтому это уже опционально
источник

AZ

Alex Zhukovsky in rust_offtopic
Dika
где return?
в аппликативе
источник

p

polunin.ai in rust_offtopic
крч не стоит делать из раста фп язык
всем бобра
источник