- From: Per Bothner <per@bothner.com>
- Date: Thu, 26 Aug 2004 23:41:34 -0700
- To: Jonathan Robie <jonathan.robie@datadirect.com>
- CC: David Ezell <David_E3@VERIFONE.com>, XML Query Comments <public-qt-comments@w3.org>
Jonathan Robie wrote: > I'd rather not get into discussing whether the things other vendors have > asked for in their environments are really necessary, because I don't > know all the ins and outs of their architectures. But it sounds like > what I propose above will not be a problem in your environment? Not quite sure "what you propose above". You mean "below", I assume. > I'm confused. Two Java modules that depend on each other can be compiled > independently, linked, and executed. No, they can't: $ cat A.java public class A { public static int foo () { return B.foo(); } } $ cat B.java public class B { public static int foo () { return C.foo(); } } $ javac A.java ./B.java:3: cannot resolve symbol symbol : variable C location: class B public static int foo () { return C.foo(); } ^ 1 error Note javac requires modules that are only indirectly needed. That strictly speaking isn't needed: To compile A, we need B, but it should be possible to compile A without C - but it isn't. > The internal draft that we are exploring calls a module resource a > 'module', and 'import module' imports all the modules with a given > target namespace. > > You call that 'a recipe for trouble'. Can you explain more? Well, it appears to require a database of modules. It appears to preclude a conventional implementation where you can search for a module by mapping the module/package/namespace name to a file name. Instead, we have to search for *all* matching modules. This is awkward. No programming language I know of works this way. (Java does have a "import package.*" statement but all that does is add to a search path.) Of course it is possible to implement a specification of "import all modules with a given namespace", but please don't do this without including a non-normative description of how this would be happed to a filesystem *without* using a database, and *without* using global search: How are people supposed to "deploy" XQuery applications in a file system? You can require that people write a configuration file, but that is inconvenient and definitely needs to be standardized, at least in a non-normative way. (Note that configuration files are a critical part of the servlet standard. You can't wave it away as being "implementation specific.") Alternatively you can allow modules to be imported lazily: When the compiler sees a function call n:f it can look for the definition of f using its expanded-QName. But in that case you don't really inport modules - you just import individual definitions. -- --Per Bothner per@bothner.com http://per.bothner.com/
Received on Friday, 27 August 2004 06:41:49 UTC