我正在试验 Core 的List.fold_left.
# List.fold_left;;
- : 'a Core.Std.List.t -> init:'b -> f:('b -> 'a -> 'b) -> 'b = <fun>
Run Code Online (Sandbox Code Playgroud)
当我指定标签时它工作正常:
# List.fold_left [1;2;3] ~init:0 ~f:(+);;
- : int = 6
Run Code Online (Sandbox Code Playgroud)
但是当我不指定标签时,我得到了不同的结果:
# List.fold_left [1;2;3] 0 (+);;
- : init:(int -> (int -> int -> int) -> '_a) ->
f:((int -> (int -> int -> int) -> '_a) ->
int -> int -> (int -> int -> int) -> '_a) ->
'_a
= <fun>
Run Code Online (Sandbox Code Playgroud)
其他部分应用程序也会产生非直观类型。为什么我可以在列表参数后添加任意数量的 0?
# …Run Code Online (Sandbox Code Playgroud)