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 QAA22445; Sun, 5 Sep 2004 16:31:22 +0200 (MET DST) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id QAA22417 for ; Sun, 5 Sep 2004 16:31:21 +0200 (MET DST) Received: from smtp1.adl2.internode.on.net (smtp1.adl2.internode.on.net [203.16.214.181]) by nez-perce.inria.fr (8.13.0/8.13.0) with ESMTP id i85EVJxI024728 for ; Sun, 5 Sep 2004 16:31:20 +0200 Received: from [192.168.1.200] (ppp210-32.lns2.syd3.internode.on.net [203.122.210.32]) by smtp1.adl2.internode.on.net (8.12.9/8.12.9) with ESMTP id i85EVD4Y096286; Mon, 6 Sep 2004 00:01:14 +0930 (CST) Subject: Re: [Caml-list] Announcing the OMake build system version 0.9.1 From: skaller Reply-To: skaller@users.sourceforge.net To: David Brown Cc: caml-list In-Reply-To: <20040905132006.GA15531@old.davidb.org> 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> Content-Type: text/plain Message-Id: <1094394672.3352.597.camel@pelican.wigram> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.2.2 (1.2.2-4) Date: 06 Sep 2004 00:31:12 +1000 Content-Transfer-Encoding: 7bit X-Miltered: at nez-perce with ID 413B2337.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Loop: caml-list@inria.fr X-Spam: no; 0.00; caml-list:01 sourceforge:01 2004:99 haskell:01 python:01 progname:01 python:01 javac:01 basing:01 ocamldep:01 9660:01 glebe:01 ocaml:01 ocaml:01 lisp:01 Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk On Sun, 2004-09-05 at 23:20, David Brown wrote: > I asked a few years back why nobody had developed a tool similar to > 'ghc --make' for Haskell or 'gnatmake' for Ada. Or just 'flx progname' for Felix, or python progname for Python, javac for java .. :) > 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. That's hard to avoid when you're basing dependency information on the language grammar :) > 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. To remove the 'yuck' requires two things I think: (a) the tool and target language are unified (b) the language is designed to generate itself Such systems do exist -- Forth and I guess Lisp fall into this category. > - 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. I personally think this is, quite simply, a design fault. There is also a simple, clear and standard kind of solution, which Python uses -- mandate explicit specification. Python uses 'import' for this. Resolving the actual order of initialisation is another issue :) > I wrote a tool to do this, but ran into the first problem above. Perhaps I > should investigate adding this capability to something like omake. Well ocamldep already does most of the work -- for Ocaml code. -- John Skaller, mailto:skaller@users.sf.net voice: 061-2-9660-0850, snail: PO BOX 401 Glebe NSW 2037 Australia Checkout the Felix programming language http://felix.sf.net ------------------- 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