From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from majordomo@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id RAA24052; Sun, 5 Sep 2004 17:07:56 +0200 (MET DST) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id RAA23704 for ; Sun, 5 Sep 2004 17:07:55 +0200 (MET DST) Received: from mta04-svc.ntlworld.com (mta04-svc.ntlworld.com [62.253.162.44]) by concorde.inria.fr (8.13.0/8.13.0) with ESMTP id i85F7tdf010084 for ; Sun, 5 Sep 2004 17:07:55 +0200 Received: from [80.4.70.84] by mta04-svc.ntlworld.com (InterMail vM.4.01.03.37 201-229-121-137-20020806) with ESMTP id <20040905150624.JULT17972.mta04-svc.ntlworld.com@[80.4.70.84]>; Sun, 5 Sep 2004 16:06:24 +0100 Message-ID: <413B2BCB.3030000@ntlworld.com> Date: Sun, 05 Sep 2004 16:07:55 +0100 From: "chris.danx" User-Agent: Mozilla Thunderbird 0.7.3 (X11/20040803) X-Accept-Language: en-us, en MIME-Version: 1.0 To: David Brown CC: skaller , caml-list Subject: Re: [Caml-list] Announcing the OMake build system version 0.9.1 References: <4139ECD3.1050708@cs.caltech.edu> <001e01c492a6$872c7280$19b0e152@warp> <413A0921.7030607@ntlworld.com> <413A1E89.10806@libertysurf.fr> <1094361655.3352.476.camel@pelican.wigram> <20040905132006.GA15531@old.davidb.org> In-Reply-To: <20040905132006.GA15531@old.davidb.org> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-Miltered: at concorde with ID 413B2BCB.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Loop: caml-list@inria.fr X-Spam: no; 0.00; ntlworld:99 caml-list:01 haskell:01 resorting:01 someway:01 chris:01 chris:01 ocaml:01 ocaml:01 lib:01 makefile:02 modules:02 modules:02 encoded:02 arbitrary:02 Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk David Brown wrote: > Amen. > > I asked a few years back why nobody had developed a tool similar to > 'ghc --make' for Haskell or 'gnatmake' for Ada. The idea is that you give > it the main module, and the tool works out all of the rules in advance. > > There are a couple of problems with these systems, especially in regards to > ocaml. But, I think there are things to learn from them. > > - They tend to be very tied to their specific language. When source > files in this language are themselves generated, this either has to be > encoded in the make tool (yuck), or the make tool wrapped in a > makefile, which kind of defeats the purpose. I don't understand what you mean by this, but surely having a tool for the most common purposes is better than no tool at all. I also don't see how resorting to make defeats the purpose. I have had to do this with gnatmake when making and using libraries. Gnatmake builds the library but the library needs to exist before you can build the rest of the program so you need someway to tell it to biuld the lib first. Gnatmake doesn't handle that case. > - Ocaml allows arbitrary code to be executed during module elaboration > (to borrow an Ada term). This causes two issues: 1. elaboration order > can be significant, and 2. modules can be required for the system, but > not be dependent (in a module sense) on the "main" module. This also > means that the notion of a main module is less meaningful on ocaml. Ada has the elaboration problem and it is up to the programmer to solve. :) The programmer needs to know the elaboration order they want in order to get the program to work. If there are elaboration issues the programmer must solve them themselves unless the tool can sort them out for them. I see no problem with this. Perhaps I'm missing something, but I don't see the 2nd problem either. The main module depends on modules which depend on modules. When module X depended on by module Y depended on by main changes, X is recompiled, then Y then main. All other modules not dependant on X, Y and main are unchanged. "main" depends on modules, but to me those modules do not depend on main. Chris ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners