【问题标题】:F# function, how it really worksF# 函数,它是如何工作的
【发布时间】:2018-12-31 12:07:04
【问题描述】:

我有这样的功能。

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#


    【解决方案1】:

    in 在这里用作verbose syntax 的一部分。您可以用 轻量级语法 重写它,使其更具可读性。应该是这样的:

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

    a10 作为参数调用,结果分配给d。稍后d - 4 * b 被计算并从函数返回。

    例如,您的afun c -> c + c,因此使用10 调用它会返回20

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

    【讨论】:

    • 我没有考虑“a”可能是一个函数并将“10”作为参数的可能性。谢谢,这对我很有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多