有没有办法解除一个简单的功能,像这样
fn add(a:i32, b:i32) -> i32 {a+b}
操作Option
(或任何其他单子类型),类似于Applicative
在Haskell
我知道这个解决方案:
pub fn add(a: Option<i32>, b: Option<i32>) -> Option<i32> {
Some(a? + b?)
}
但这需要我实际编写一个单独的函数,该Option
函数与一元类型的参数和返回值
// something like this
let func = Option::lift2(add) //example, not working code
我显然在想Haskell
,也许有更惯用的方式来做到这一点Rust