tfb*_*boy 1 recursion ocaml functional-programming type-inference
我正在摸索着想出这个功能的签名
let make_rec f_norec =
let rec f x = f_norec f x in
f
Run Code Online (Sandbox Code Playgroud)
应该是
val make_rec : (('a -> 'b) -> 'a -> 'b) -> 'a -> 'b = <fun>.
注意有一个奇怪的递归定义.当然,我在那里缺少一些知识.谁能告诉我如何计算函数的类型(如类型推理系统那样)?
十分感谢.
从内部开始,向外工作:
x af有类型a -> b,其中b是结果类型ff_norec采取f和x它必须返回相同的类型f,因此(a->b) -> a -> bmake_rec采取f_norec,并返回f.因此((a->b)->a->b) -> (a->b).出于语法原因,可以省略最后一对括号.