gpt4 book ai didi

使用 CPS/部分应用程序的 F# 执行顺序

转载 作者:行者123 更新时间:2023-12-02 09:20:50 24 4
gpt4 key购买 nike

为什么首先打印“DIV/0”,然后打印“2”?

let printZero = printfn "DIV/0"
let printSuccess x = printfn "%d" x

let div ifZero success x y =
if y = 0
then ifZero
else x / y |> success

let printDiv = div printZero printSuccess
printDiv 8 4
printDiv 10 0

最佳答案

printfn "DIV/0" 将立即写入控制台,返回unit。所以这一行:

let printZero = printfn "DIV/0"

...将立即写入 DIV/0 并将 unit 绑定(bind)到值 printZero。稍后,当您使用 y = 0 调用 div 函数时,您只需返回该值即可。

您想要的是 printZero 成为一个函数。由于该函数不需要任何值作为输入,因此您也可以在此处使用 unit (表示为 ()) - 这样您就有一个 unit 类型的函数->单位:

let printZero() = printfn "DIV/0"
let printSuccess x = printfn "%d" x

let div ifZero success x y =
if y = 0
then ifZero()
else x / y |> success

关于使用 CPS/部分应用程序的 F# 执行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42738085/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com