Ok, Thanks all ones for answers... I imagine that designing applications with functional languages is much different than with imperative ones. I was wondering on which points the difference is significant? Does common oriented object design patterns can be used with OCaml? And what, for a developer, is the work to do to change his way of thinking? I envisage to learn OCaml deeply and than I want to set the basis to do the change from imperative languages to functional ones. P.S. : somebody have reference books which goes over this subject?