```fun <F, A, B: A> Functor<F>.mapRest...
# functional
r
Copy code
fun <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