我正在制作一个函数,它接受一个函数,2个整数值作为输入。我必须检查函数和值是None还是Some。有些,没有和选项是相当混乱的。这个概念很简单,但我不知道如何将它应用到f#代码中。
在这个问题中,输入将是
第一个问题
let f = Some (fun x y -> x + y)
let fst = Some 42
let snd = Some 42
expectation = Some 84
第二个问题
let f = Some (fun x y -> x + y)
let fst = None
let snd = Some 42
expectation = None
我还必须使用
type MaybeBuilder () =
member __.Bind (m, f) = Option.bind f m
member __.Return (m) = Some m
let maybe = MaybeBuilder ()
这建设者。
我试过了!还有很多其他疯狂的事情都失败了。一些(有趣的)x y>X +y) = (int ->int→int)选项,我不知道如何操作这个函数。它一直说这不是一个函数,它不能被应用。
可以这样做:
let expectation =
maybe {
let! func = f
let! a = fst
let! b = snd
return func a b
}
因为函数在Maybe中,所以不能直接使用它。使用let!
可以到达可能的内部。