我有这样的功能。
let c = (fun a b ‐> let d = a 10 in d ‐ 4*b) (fun c ‐> c + c) 5
let x = c‐6
到目前为止,这就是我所理解的:"fun ->c+ c“是"fun b”的第一个参数,"5“是第二个参数。"let d“是一个函数,它接受"a”和"b“并返回结果。但如果有人能解释到底发生了什么:
let d = a 10 in d ‐ 4*b
发布于 2018-12-31 04:16:37
这里使用in
作为https://learn.microsoft.com/en-us/dotnet/fsharp/language-reference/verbose-syntax的一部分。您可以重写它的轻量级语法,以使它更加可读性。会是这样的:
fun a b =
let d = a 10
d - 4 * b
a
以10
作为参数进行调用,并将结果分配给d
。稍后,将计算d - 4 * b
并从该函数返回。
例如,a
是fun c -> c + c
,所以使用10
调用它会返回20
。
20 - 4 * 5 = 0
因此c
设置为0
,x
将是0 - 6 = -6
。
来自F#互动:
> let c = (fun a b -> let d = a 10 in d - 4*b) (fun c -> c + c) 5;;
val c : int = 0
https://stackoverflow.com/questions/53987329
复制