I'd quite the same question one week ago. As we see in the home page of ocaml at INRIA, "/Caml supports functional, imperative, and object-oriented programming styles/". I think that you are interested by the functional one. So, even if Ocaml allows you to make algorithm with the imperative features, it is interesting to make programs without them almost for two reasons : - this is an other way to think your program - for a better quality of your program (less global var => less side-effects) according to my little experience As for designing method, it seems that flow charts are generally convenient but not for all (ex: concept of interface with signature of a module). As for me, I almost need a design language to describe a project that is already developed and data-flow could be extracted from the code (this is doc-generation). At a higher level, if you want to describe organization of you project into modules and libraries, you can use component diagram in UML to have a standard representation. I regret that modeling tools are not used for ocaml development, I think it could be better to share same methods and representation in that domain. Stéphane Duprat Julien Peeters a écrit : > 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? >