raulraja
05/21/2020, 10:06 AMfun <F, A, B: A> Functor<F>.mapRestricted(fa: Kind<F, A>, f: (A) -> B): Kind<F, B> =
fa.map(f)
fun <A, B: A> Option<A>.mapRestricted(f: (A) -> B): Option<B> =
map(f)
val x: Option<Int> = 1.some().mapRestricted { it + 1 } //compiles
val y: Option<String> = 1.some().mapRestricted { it.toString() } // does not compile; required Int found String