[e-lang] Thought: DeepFrozen too restrictive for guards?
Mark S. Miller
markm at cs.jhu.edu
Thu Apr 27 23:11:54 EDT 2006
Chip Morningstar wrote:
> I think syntax is the least of your problems here. What you are talking about
> is adding language support for YET ANOTHER subtle distinction that will require
> explanation (frequently to an audience that is not yet prepared to even be
> aware of the questions that motivate this feature, let alone the answers). And
> E is already overflowing with these.
> It's a death of a thousand cuts kind of thing. Each of these little details is
> perfectly justifiable, indeed, compelling, on its own. But the total package
> seems to me to be getting wildly complicated, unwieldy, and difficult to
> absorb; I know I certainly lost track a long time ago.
I think I have to agree. But we have some genuine dilemmas we need to solve.
I believe we have compelling reasons to require normal guards and auditors to
be DeepFrozen. If the price of being able to express patterns like Kevin's
deopt example is that we need to introduce a new concept into the language,
especially one similar but different from an existing one, then I could live
The problem is what to do about the various patterns which, in 0.8.35,
expanded into uses of the such-that ("?") pattern. (See the thread starting at
<http://www.eros-os.org/pipermail/e-lang/2005-August/010929.html>.) When we
rewrote these using guards, the results were much cleaner, and we would then
have been able to remove such-that from E and Kernel-E. Unfortunately, these
expansions depend on the guard not being DeepFrozen. If guards must be
DeepFrozen, then we still need something else to which to expand these other
patterns. Of the two choices we currently know, via and such-that, the
* The expansion into via is cleaner than the expansion into such-that, so we
should keep via and kill such-that.
* As Alan Kay says:
"Similar things should be made either the same or very different."
Such-that is clearly different from guards, and so is less confusing. Via is
similar to guards, and so is more confusing. Therefore we should keep
such-that and kill via.
Text by me above is hereby placed in the public domain
More information about the e-lang