首页 > 解决方案 > F# 函数,它是如何工作的

问题描述

我有这样的功能。

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 + c”是“fun a b”的第一个参数,“5”是第二个参数。"let d" 是一种接受 "a" 和 "b" 并返回结果的函数。但是,如果有人可以解释到底发生了什么:

let d = a 10 in d ‐ 4*b

标签: f#

解决方案


in在这里用作详细语法的一部分。您可以用轻量级语法重写它以使其更具可读性。它会是这样的:

fun a b =
    let d = a 10
    d - 4 * b

a使用 as 参数调用,10并将结果分配给d. 稍后d - 4 * b计算并从函数返回。

对于您的示例,您可以使用returnafun c -> c + c调用它。1020

20 - 4 * 5 = 0所以c设置为0并将x0 - 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

推荐阅读