小编Mil*_*sph的帖子

使用没有标签的 Core.Std.List.fold_left

我正在试验 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)

polymorphism ocaml types type-inference labels

3
推荐指数
1
解决办法
435
查看次数

标签 统计

labels ×1

ocaml ×1

polymorphism ×1

type-inference ×1

types ×1