On Sun, Apr 26, 2009 at 9:49 AM, Derick Eddington <[email protected]> wrote: > > Explaining implementation-specific subtleties is not at all necessary > for explaining *portable* macros, no mater how advanced. What I meant > was: they can learn about implementation-specific differences if/when > they care to know and are able to understand in relation to what they > really need to know: portability. Explaining the differences isn't > going to help them understand what I think they want to understand: how > to make portable macros.
But in order to explain how to write portable macros I have to talk about the differences! For instance, I must say why (import (only (my-module some-helper-function-to-be-used-in-a-macro))) works in Ikarus but does not work on PLT/Larceny, and I have to explain phase separation. > I would be angry at you if I learned you wasted my time with > explanations of implementation differences which I don't need to know to > make portable macros so that you could advance your understanding and > practice your writing. I'd just want to know: there is not consensus > about the entirety of library semantics and implementations have > different extended semantics, but the portable semantics is enough to > make many useful real-world things and that semantics is this and that. Do you think episode 20 is wasting time explaining non-significant differences between implementations? I do not think so, it is explaining *conceptual* differences between different models of execution, by keeping concrete implementations as practical examples. This is the attitude I want to keep even for future episodes: explain the *conceptual* differences in the world the of possible design choices for a module system (with phases, without phases, with single instantiation, with multiple instantiation, etc); moreover, to show how the different choices are realized in concrete implementations. I do want to make an exhaustive summary of the details of the implementations: but I would like to give a sense of how large is the spectrum of the possibilities. Everybody who wants to write portable code involving macros has to be aware that the way his implementation of choice works is not the only possible way.
