据我所知,F#不会像处理其他函数一样处理printfn,因为它依赖于字符串参数。有人可以向我解释为什么这会阻止我做
let printn = printfn "%A"
错误表示该类型是('a -> unit)
,我需要添加显式参数或类型注释。为什么?它推断它的类型我完全没问题。此外,如果我添加一个显式点,它仍然具有相同的类型。
答案 0 :(得分:2)
因为printn
将是您定义它的简单值。并且值在.NET运行时中不是通用的。
使参数显式,因此它是一个函数:
let printn value = printfn "%A" value
有关详细信息,请参阅MSDN上的Value Restriction主题。