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

F# Continuation Passing Style (int -> int -> int) option

我正在制作一个函数,它接受一个函数,2 个整数值作为输入。 我必须检查函数和值是 None 还是 Some。有些, None 和选项很混乱。 这个概念很简单,但我不知道如何将它应用到 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 ()

这个建筑商。

我试过了!和许多其他疯狂的事情但都失败了。 有些 (fun 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! 可以让你进入 maybe.