gpt4 book ai didi

f# - 如何以紧凑的方式避免意外的部分应用?

转载 作者:行者123 更新时间:2023-12-04 18:36:21 24 4
gpt4 key购买 nike

我有一个副作用函数,f : int -> string -> unit,我使用 f 1 "hi" 调用它。

如果函数更改为需要更多参数,为确保在调用站点中出现错误,我使用 () = f 1 "hi"|> ignore 调用该函数。如果函数被部分应用并且不会执行任何副作用,这将确保类型错误。

是否有更优雅的方法来避免意外的部分应用?

最佳答案

在最后添加一个“guard”参数:

let f a b c () = ...

并在调用点传递它:

f 42 "foo" 3.14 ()

如果你添加另一个参数,它的类型将不匹配 unit(除非你添加一个 unit 参数,但你为什么要这样做?),和编译器会在调用点提示。

额外的 unit 参数是表示仅具有副作用的函数的常用方法。

另一方面,对于纯函数,不需要这个技巧,因为您会对它们的返回值感兴趣,而意外的部分应用会改变它的类型,导致编译器报错。

关于f# - 如何以紧凑的方式避免意外的部分应用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59958523/

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