OCaml中的无限递归类型



我正在阅读这个OCaml文件,它包含以下内容:

type z = Z of z

看起来z是无限递归的。它是如何有用的,我如何构造这样一个类型?

我不认为这种类型特别有用,除非可能作为类型理论中的测试用例。

可以构造如下类型的值:

# let rec x = Z x;;
val x : z = Z <cycle>
# let rec q = Z (Z q);;
val q : z = Z (Z <cycle>)

一旦你有了这种类型的值,当然你可以很容易地构造其他值:

# let y = Z (Z x);;
val y : z = Z (Z (Z <cycle>))

相关内容

  • 没有找到相关文章

最新更新