Aziz already addressed this, but I think some of the things I said last
week are worth repeating in response.  I apologize for my previous
grumpiness and joking.  It probably didn't help you absorb what I said.

On Tue, 2009-05-12 at 12:23 +0200, Michele Simionato wrote: 
> I have always wanted to extend the meaning of "implicit phasing" and be able 
> to
> say
> 
> ikarus = implicit phasing + lazy instantiation
> ypsilon = implicit phasing + eager instantiation
> 
> However, if you want to include the concept of lazy instantiation into the one
> of implicit phasing, then we need a new term to denote the opposite
> of explicit phasing :-/

"Implicit phasing" is the correct term, and Ypsilon should not be
considered to be doing implicit phasing, because:

On Wed, 2009-05-06 at 21:29 -0700, Derick Eddington wrote: 
> In R6RS, "phase" means when libraries are instantiated in
> order to accomplish a phase of expansion or execution.  In implicit
> phasing, the phases are implied by where identifiers occur.  

These implications are not acted upon lazily / on-demand.

> In
> explicit phasing, the phases are explicitly specified.  Implicit phasing
> does not mean only that the (for --- (meta ---)) import syntax is not
> required, it means that the phases when libraries are instantiated is
> implied.  If libraries are always instantiated regardless of the phase
> of identifiers, it is not implicit phasing because what is implied is
> ignored, therefore the term "implicit" is inappropriate.  I should never
> have used the term "on-demand" because what it actually is is the
> essence of implicit phasing: instantiation phases happening when
> identifiers imply they must.

Contrasted with explicit phasing in which the phases happen when the
explicit (for --- (meta ---)) says they do.  The phasing is the same
(but not the number of times of instantiation), but implicit phasing is
able to determine it without needing it to be explicitly specified.
With explicit phasing, if you attempt to reference an identifier outside
of its explicitly specified phase, you get an error; but with implicit
phasing, it figures you want to reference at that phase, so it
instantiates at that phase for you.

On Wed, 2009-05-06 at 23:50 -0700, Derick Eddington wrote: 
> "Implicit" is only appropriate if there is something implicit.  For
> implicit phasing, phasing is what is implicit.  Explicit phasing means
> phasing is explicit, and implicit is the opposite of explicit, and both
> explicit phasing and implicit phasing are about phasing, therefore what
> explicit phasing makes explicit is what implicit phasing makes implicit.
> It is not phasing to instantiate imports when they're not needed for a
> phase.  

Which is what Ypsilon is doing.

> Therefore, it's neither implicit nor explicit phasing, it should
> be called always instantiating every import regardless of its phase.

-- 
: Derick
----------------------------------------------------------------

Reply via email to