这几天我正在研究OCaml,并且遇到了这个:
OCaml限制了它可以放在let rec的右侧.像这个
let memo_rec f_norec =
let rec f = memoize (fun x -> f_norec f x) in
f;;
Error: This kind of expression is not allowed as right-hand side of `let rec'
Run Code Online (Sandbox Code Playgroud)
其中,memoize是一个函数,它接受一个函数并将其转换为带有Hashtable的记忆版本.很显然,OCaml在'let rec'的右侧对构造的使用有一些限制,但我真的不明白,有人能解释一下吗?