type 'a lst = NIL | C of 'a * 'a lst;; C (3.3, C (2.3, NIL));;The above works. I think that it once required ocaml -rectypes. This, this and this says that it is still required. The manual and 4.00.1 OCaml are out of sync. I suppose that the option should remain for compatibility but the manual should say that it is a vestigial no-op.
Non Bug ID = 0005881
Garriques replies:
There is a misunderstanding here.
The term "recursive type" stands for a structural recursive type,
such as ((int * 'a) as 'a). Such type requires the -rectypes flag.
This is not to be confused with recursive datatypes, which are
part of the original language specification, and of course require
no specific flag.
Yes