2

由于我在我的程序中使用了很多Printf.fprintf stdout ...,我想用一个更短的函数来重命名它。所以我写:

let p = Printf.fprintf stdout

我希望p "%s" "string"有效。但是,编译给出了错误:

File "lib/utility.ml", line 27, characters 8-29:
Error: The type of this expression, ('_a, out_channel, unit) format -> '_a,
       contains type variables that cannot be generalized

有没有人想重命名它,以便应用程序尽可能简单?

4

1 回答 1

1

我认为如果你 eta-expand 你的定义它会起作用:

let p fmt = Printf.fprintf stdout fmt
于 2013-09-09T22:09:35.190 回答