小编sin*_*.14的帖子

OCaml函数超过多态变体不够多态?

OCaml给出function `A -> 1 | _ -> 0了类型[> `A] -> int,但为什么不是这样[> ] -> int

这是我的理由:

  • function `B -> 0有类型[<`B] -> int.添加`A -> 0分支以使其function `A -> 1 | `B -> 0松散[<`A|`B] -> int.该函数在它可以接受的参数类型中变得更加宽松.这是有道理的.
  • function _ -> 0有类型'a -> int.这种类型是统一的[> ] -> int,并且[> ]是一种已经开放的类型(非常宽松).添加`A -> 0分支以使其将类型function `A -> 1 | _ -> 0 限制[>`A] -> …

polymorphism ocaml type-inference variant

6
推荐指数
2
解决办法
665
查看次数

标签 统计

ocaml ×1

polymorphism ×1

type-inference ×1

variant ×1