I\'m studying OCaml these days and came across this:
OCaml has limits on what it can put on the righthand side of a let rec. Like this one
let memo_rec f
The kind of expressions that are allowed to be bound by let rec
are described in section 7.3 of the manual. Specifically, function applications involving the let rec
defined names are not allowed.
A rough summary (taken from that very link):
Informally, the class of accepted definitions consists of those definitions where the defined names occur only inside function bodies or as argument to a data constructor.