Subject: Re: Common Lips vs Scheme
From: rpw3@rigden.engr.sgi.com (Rob Warnock)
Date: 14 Jul 2002 03:40:26 GMT
Newsgroups: comp.lang.scheme
Message-ID: <agqrra$8evdr$1@fido.engr.sgi.com>
Kaz Kylheku  <kaz@ashi.footprints.net> wrote:
+---------------
| Some things that are in Lisp, but not in Scheme:
+---------------

A couple more:

- A very clear separation betwen various "times" in the life
  of a program: read time, compile time, macro expansion time,
  evaluation time (also called execution or run time), and
  considerable user control over making things happen differently
  at compile, load, or execute times with the EVAL-WHEN form.
  Very important when using complex macros.

- Compiler macros [CLHS 3.2.2.1]: A macro, that can have the same name
  as an ordinary function, that optionally expands to something other
  than a call to that function. This gives the user the ability to do
  certain compile-time optimizations for themselves.

  For example, a compiler macro may look at the arguments provided to
  a function call, see that one of them is a certain frequently-used
  constant value, and decide to replace that call with a call to a
  version of the function specialized for that argument value. Or it
  could even recognize some argument as being a call to *another*
  function, and choose to evaluate that other function at compile
  time and replace the argument with the evaluated result. Etc.


-Rob

-----
Rob Warnock, 30-3-510		<rpw3@sgi.com>
SGI Network Engineering		<http://www.rpw3.org/>
1600 Amphitheatre Pkwy.		Phone: 650-933-1673
Mountain View, CA  94043	PP-ASEL-IA

[Note: aaanalyst@sgi.com and zedwatch@sgi.com aren't for humans ]