On Wed, Mar 30, 2005 at 12:05:12PM +0200, Thomas Sandlaß wrote:
: If I understand you correctly the use statement is more like a
: linker/loader directive than a compile time interface include?

That is up to the module being used.  "use" is a linker, but it's
only required to link enough information into the caller such that
the caller can see the interface.  Loading can happen later--though
it typically happens on first "use" rather than first use.  The
point is there's no separate linker step.  Everything is demand
driven, and what gets linked in at compile time depends on what gets
demanded at compile time.  If something isn't demanded till run
time, the compiler can't know it, unless you tell it in advance
somehow, which presumes that *you* know it.   And maybe you don't.
And that is when late binding is ever so much handier than early.

: BTW, is it foreseen to have a clear conceptual split between the
: compiler and the loader? Or is that all blurred?

Clear conceptual splits often hide false dichotomies.  The split is
rather blurry for Perl 5, and Perl 6 will only continue the trend.
There are good uses for both early binding and late binding, and
for various forms of binding in between--it's a continuum, and each
module is allowed to draw the boundary wherever and however it likes.
Birds naturally prefer early binding to late binding; worms will
naturally disagree.  Rolling stones gather no type constraints.

Larry

Reply via email to