[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
- To: firstname.lastname@example.org
- Subject: contractual programming
- From: email@example.com
- Date: Tue, 20 Oct 92 22:53:10 BST
- Cc: Scott_Fahlman@sef1.slisp.cs.cmu.edu, firstname.lastname@example.org
- In-reply-to: Scot Dyer's message of Tue, 20 Oct 92 12:45:58 PDT <9210201945.AA01551@eagle.sharebase.com>
- Sender: email@example.com
- Source-info: From (or Sender) name not authenticated.
Date: Tue, 20 Oct 92 12:45:58 PDT
From: Scot Dyer <firstname.lastname@example.org>
P.S. Yes, what about macros? This is the third (and final for those of you
getting sick of discussing things outside the Dylan spec) thing that
disappointed me in the spec. I trust that it, if nothing else, will be fixed.
It will be fixed...at least I've heard that hope expressed by people
in Cambridge. The truth is it is a non-trivial problem to fix
One solution would be to add packages and then it would be simple to
adopt something like Common Lisp's macro model. I would not be in
favour of this, but it does have the advantage of tying down which
binding you are referring to because it is symbol based.
What I would prefer is a macro model that works harmoniously with the
module mechanism...and that's the difficulty. Unfortunately the
"macros that work" model doesn't seem to hold up in this context.
Also, I and others that I have talked to don't want to be restricted
to syntax-rules style definitions, but rather want to be able to write
arbitrary expander functions. The difficulty is in making the use of
the macro transparent to the client...which is why the principle of
the syntactic closure offers promise. The EuLisp group have been
working on this issue for a couple of years (but only part-time) and
although we hve come near to a reasonable solution, it breaks down
with macro generating macros.
Fortunately, one of the group (Keith Playford) has now got the time to
look at the problem closely for a while and we are hopeful that we
might have a viable solution is a little while.