axiom-developer
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Axiom-developer] Re: Boot, Virtual Machine


From: Bill Page
Subject: Re: [Axiom-developer] Re: Boot, Virtual Machine
Date: Wed, 23 May 2007 18:23:08 -0400
User-agent: Webmail 4.0

Gabriel Dos Reis wrote:
| ... | > What would make you believe that you don't have the
| > same  equivalence in Boot?

| > On Tue, 23 May 2007, Stephen Wilson wrote:
| >
| > As I said, Im not interested in pursuing this point. So you did not have a factual basis for your statement. That is OK. Thanks for your time.

It is a pity that Stephen is not willing to engage on this
subject. I think it is quite important for people like me,
who are skeptical of some claims made for Lisp and who are
sometimes inclined to be excessively vocal, to understand
these issues in enough detail in order to make statements
more resembling facts. :~)

Personally, I have found the following pages by Marty Hall
especially useful:

http://www.apl.jhu.edu/~hall/lisp.html

On this occassion Marty Hall has a brief tutorial on macros in
Lisp that I think is clearly written and easy to understand but
which seems to me to cover the major issues related to Lisp
macros in comparison to macros in some other languages
and to functions in Lisp:

http://www.apl.jhu.edu/~hall/Lisp-Notes/Macros.html

Most of the points made by Hall have to do with the sometimes
counter-intuitive but extremely useful properties of evaluation
in macros relative to functions in Lisp. The need for and
importance of delaying evaluation (which can be achieved by
macros in Lisp) is something that should be quite familiar to
most computer algebra developers. One of the most common
mistakes made by beginning programmers in Maple is sometimes
known by the suggestive title of "premature evaluation".
In fact an issue of exactly this type was raised by Alasdair
McAndrew in an email earlier today in "Summing over a list".
One of the distinquishing features of Lisp is that it allows one
to freely mix both macro and function modes evaluation in
the same program. As Hall explains, this is possible in Lisp
because in contrast to most other languages (which do macro
processing strictly during the "compilation" phase, one has
potentially the full power of the language available to you
during the compilation of Lisp macros.
Perhaps this is also to what Steven Wilson was referring
when it talked about Lisp macros operation on "data" or
rather emphasising again that there is not clear distinction
between code and data in Lisp.
Hall also explains why there are good reasons to avoid
using Lisp macros when a Lisp function will do the same
job. To obtain the same effects and control over the evaluation
time of expressions in other languages it is often necessary
to resort to considerably more complex manipulations. Arguably perhaps, this makes these languages "safer" but at the same time somewhat less "expressive".
Gaby, does this point of view make sense to you? Can
you give some simple examples in Boot that are similar
to those given by Marty Hall in his tutorial that would
illustrate how to achieve similar effects (or to avoid some
of the negative effects) in these cases?

(Yes, I am impatient for the Boot documentation that you
hinted at earlier ... :-) but of course I understand if you have
other priorities than responding to emails like this right
now. Thanks.
Regards,
Bill Page.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]