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.

Reply via email to