On Thu, 17 Sep 2009, Abdulaziz Ghuloum wrote:

>
> On Sep 17, 2009, at 3:55 AM, Derick Eddington wrote:
>
>> I recently said this to someone else:
>>
>>       I'm willing to continue using "explicit phasing" to keep my code
>>       portable and to gain more experience with it.  So far (2 years),
>>       I've become more convinced I like "implicit phasing" better.  I
>>       think a better compromise would be that imports without level
>>       declarations are always "implicit phasing" and imports with
>>       level declarations are always verified (which I suppose would
>>       always require declarations for level 0 to verify that only
>>       level 0 is used, and I see that as more consistent with the
>>       purpose of "explicit phasing"), instead of the current
>>       compromise where "implicit phasing" style is not portable and
>>       "explicit phasing" style is ignored by some systems and so not
>>       portable according to the authors' intent  -- this way both
>>       sides can do it their way *and* be portable.
>
> From my part, I believe this idea is worth pursuing.  I have thought
> about it from time to time (so, it's always stewing in my back burner)
> and I have not yet found a way to make them work.  By work I mean
> 1. By declaring phases, you always get the same behavior as you would
>    in current explicit-phasing systems.
> 2. By not declaring phases, you always get the same behavior as you
>    would in current implicit-phasing systems.
> 3. Make sense of what happens when you mix and match.
>
> I think there's hope.  I'd like to know what the experts of explicit
> phasing think.  Would this be workable?

I would prefer one or the other.

I used to prefer explicit phasing.  I'm not sure about that any longer.
In practice, explicit phasing systems already do phase inference to
print phase error messages (at least Larceny does).  One way I have
found myself using this is to just let the expander find the phases for
me via the error messages, and then add them to the import clauses.
This process is silly - it might as well be automated as in Ikarus.

That is for me a good argument for implicit phasing, /as long as
the system can be set to print warnings making very clear at what phases
libraries are instantiated, so users don't get surprised
when separate instantiations happen during compilation and
execution, and so on/.

But I am still not quite ready to give up explicit phasing.

One problem with implicit phases is that one loses some control
over definable languages.  For example, one loses the ability to
specify that in an r5rs-like language, lambda, car, cdr, etc,
may not be used in expand-time code.  I don't see how to address
this using implicit phasing /or in the mixed model/.

This last point is important for PLT folks.  I don't see
them giving this up.

At least in WG1 one might sidestep phases altogether if only
syntax-rules is in it.

Andre

_______________________________________________
r6rs-discuss mailing list
[email protected]
http://lists.r6rs.org/cgi-bin/mailman/listinfo/r6rs-discuss

Reply via email to