This is the mail archive of the guile@sources.redhat.com mailing list for the Guile project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: pssyntax.ss and module system


Mikael Djurfeldt <mdj@mdj.nada.kth.se> writes:

> Jost Boekemeier <jostobfe@mango2.zrz.tu-berlin.de> writes:
> 
> > Mikael Djurfeldt <mdj@mdj.nada.kth.se> writes:
> > 
> > > Well, then you should read it again, because separate compilation is
> > > one of the features which this module system is designed to support.
> > > It's even mentioned explicitly in the abstract.
> > 
> > Yes, I know that.  But I don't think this is what ML' people mean
> > when they talk about separate compilation:
> 
> OK, instead of writing "this module system has the problem that it
> doesn't support separate compilation", could you then please write "I
> think ML people mean something different with separate compilation"
> and explain the difference?

When I hear "separate compilation", it makes me think that individual
modules can be compiled, modified, and recompiled in any order.
Skimming through the paper, it appears to require that later modules
are recompiled whenever any earlier module is recompiled (in the
module dependency DAG).

> > I think this is necessary because all module connections are rewritten
> > into a low-level import primitive and their import primitive refers to
> > the module itself, not to an abstract interface as in MZ Scheme for
> > example.
> 
> But the module in itself is an abstract interface.  Everything about
> modules can be resolved at compilation time.

In my opinion, to call something an abstract interface, it must be
possible to change the underlying implementation without changing the
interface; saying "the module in itself is an abstract interface"
makes no sense.  (The module may be an interface, but it is certainly
not abstract.)

> > In "C" the compiler examines interfaces, not object files, no?
> 
> Some C compilers precompile the headers.  I think we should compare to
> that situation.

The difference is that in C, you can change the implementation without
changing the header file, and compilation of subsequent modules
depends only on the header file, not on the implementation.

Carl Witty

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]