Recursion 类型检查递归单参数和单输出函数[Ocaml]

Recursion 类型检查递归单参数和单输出函数[Ocaml],recursion,ocaml,Recursion,Ocaml,是否有任何类型的产品可以替换?这将允许该函数循环进行类型检查?如果您向解释器提供-矩形,它将告诉您函数的类型: let rec loop (x:?) : ? = loop loop 您可以为参数和返回类型使用单独的类型变量来声明此函数,但在我看来,这与不指定类型是一样的 $ ocaml -rectypes OCaml version 4.02.1 # let rec loop x = loop loop;; val loop : 'a -> 'b as 'a = &

是否有任何类型的产品可以替换?这将允许该函数循环进行类型检查?

如果您向解释器提供-矩形,它将告诉您函数的类型:

let rec loop (x:?) : ? =
  loop loop
您可以为参数和返回类型使用单独的类型变量来声明此函数,但在我看来,这与不指定类型是一样的

$ ocaml -rectypes
        OCaml version 4.02.1

# let rec loop x = loop loop;;
val loop : 'a -> 'b as 'a = <fun>
如果不允许使用-rectypes的递归类型,则无法使函数进行类型检查,因为它的类型是递归的。

如果向解释器提供-rectypes,它将告诉您函数的类型:

let rec loop (x:?) : ? =
  loop loop
您可以为参数和返回类型使用单独的类型变量来声明此函数,但在我看来,这与不指定类型是一样的

$ ocaml -rectypes
        OCaml version 4.02.1

# let rec loop x = loop loop;;
val loop : 'a -> 'b as 'a = <fun>
如果不允许使用-rectypes的递归类型,则无法使函数进行类型检查,因为它的类型是递归的