SA
Size: a a a
SA
λ
𝛈µ
𝛈µ
𝛈µ
SA
SK
interface Monad<A> {
// монада является функтором, но map реализовывать отдельно не нужно -
// он выражается через flatMap и lift
fun <B> map(f: (A) -> B): Monad<B> = flatMap { a -> lift(f(a)) }
fun <B> flatMap(f: (A) -> Monad<B>): Monad<B>
}
fun <A> lift(value: A): Monad<A> = TODO()
𝛈µ
𝛈µ
SA
λ
𝛈µ
ΛВ
λ
SA
AD
Functor
триггерится "тайпкласс неправильно объявлен" и т.п.ΛВ
AD
λ
AD