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
