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.
我正在制作一个函数,它接受一个函数,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.