http://pfpmd7dd5ijt4add2sfi4djsaij4u3ebvnwvyvuj6aeipe2f5llptkid.onion/ui3/pr/023a8623a27042228f6b721cd7892454
Хотелось бы минимального количества изменений. let y: Option<int> = f(Some(1), 2); - вот так было бы удобно. Можно ввести правило, что если F - функтор и f: a => b , то если x: F<a> , то f(x) автоматически преобразуется в x.map(f) . Если у f больше одного параметра, то мап делается последовательно по всем аргументам: f: (a, b) => c , x: F1<a> , y: F2<b> , то f(x, y) станет x.map(v1 => y.map(v2 => f(v1, v2))) .