在OCaml的顶层,我有以下类型定义:OCaml的类型系统无意嵌套
type 'a lazy_list =
| Nil
| Cons of 'a * 'a lazy_list
| LazyCons of 'a * 'a lazy_list
(简化本示例)
而这个函数定义:
let head = function
| Nil -> Nil
| Cons(x,_) | LazyCons(x,_) -> x
OCaml的顶级告诉我head
的类型是'a lazy_list lazy_list -> 'a lazylist
为什么类型不是'a lazy_list -> 'a
,这是我所期望的?
为什么downvote? – Bladt