【发布时间】:2014-06-28 10:40:09
【问题描述】:
据我所知,F# 不像处理其他函数那样处理 printfn,因为它依赖于字符串参数的类型。有人可以向我解释为什么这会阻止我这样做
let printn = printfn "%A"
错误表明类型被推断为('a -> unit),并且我需要添加显式参数或类型注释。为什么?我对它推断的类型非常满意。另外,如果我添加一个显式点,它仍然具有相同的类型。
【问题讨论】:
标签: f#
据我所知,F# 不像处理其他函数那样处理 printfn,因为它依赖于字符串参数的类型。有人可以向我解释为什么这会阻止我这样做
let printn = printfn "%A"
错误表明类型被推断为('a -> unit),并且我需要添加显式参数或类型注释。为什么?我对它推断的类型非常满意。另外,如果我添加一个显式点,它仍然具有相同的类型。
【问题讨论】:
标签: f#
因为printn 将是您定义它的简单值。并且值在 .NET 运行时中不能是通用的。
使参数显式,使其成为函数:
let printn value = printfn "%A" value
有关详细信息,请参阅 MSDN 上的主题 Value Restriction。
【讨论】:
printfn 是如何工作的呢?如果第二个参数只需要一个并返回一个值,我该如何传入?