On 25/01/2014 19:39, Matej Kosik wrote: > Hi, > > I am using ocaml 4.01.0. > > I have noticed the following strange behavior: > [...] > > I would like to ask: is this is a known phenomenon? > ------------------------------------------------------------------- > The context: > > I have started to apply the advice given here: > https://sympa.inria.fr/sympa/arc/caml-list/2013-11/msg00207.html > That way I've got terms with which ocaml{c,opt} struggles. Hi, It is a well-known problem that type inference is exponential-type[0] This worst-case behaviour is triggered when you have deeply nested -> in the types. For an example, consider : let f x y = y x x in let g x = f (f x) in let h x = g (g x) in let h x = h (h x) in let h x = h (h x) in h;; (* This actually causes a stack overflow *) Unfortunately, there isn't (as far as I know) a silver bullet. Avoiding deep nesting of combinators mights be a solution, though. I usually also helps with readability. Regards, Nicolas [0] under ETH, probably, but I don't currently remember.