F# 延续传递样式 (int -> int -> int) 选项



我正在制作一个函数,它接受一个函数,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!可以到达可能的内部。

相关内容

  • 没有找到相关文章

最新更新