gpt4 book ai didi

f# - F#中两种偏应用方式的区别

转载 作者:行者123 更新时间:2023-12-01 13:48:52 28 4
gpt4 key购买 nike

<分区>

假设我们有以下函数(body 不是很重要):

let writelogf greeting x = 
Printf.printf "%A" greeting
Printf.printf "%A" x

这个函数的类型是'a -> 'b -> unit,这是我想要的。

现在我定义了一个部分应用的函数:

let logf x = writelogf "Hello!" x

这个函数的类型是'a -> unit,这是我所期望的。我可以将它与任何类型的参数一起使用:

logf "Test"
logf 1

但是如果我尝试简化声明并重复调用:

let logf2 = writelogf "Hello!"
logf2 "Test"
logf2 1

它不会再编译了,因为 logf2 不是一般化的,它的类型是 string -> unit(从第一次使用推断)。

这是为什么呢?如果我有一个带有 5 个参数的函数并且我需要部分应用一个,我是否必须重复其他 4 个?

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