quasiquote

Alexis Read ucapare@ucl.ac.uk
Wed Jul 17 04:29:02 2002


I see I've been rumbled... points taken!
One quick question though, is it better to have strong type checking in a
reflective system? Most articles I've seen seem to agree.
The emphasis here is on how safe LISP is with its weak typing.
Alexis

On Fri, 12 Jul 2002, Francois-Rene Rideau wrote:

> On Mon, Jun 24, 2002 at 04:45:20PM +0100, Alexis Read wrote:
> > It seems to me that quasiquote and unquote superseed quote in a
> > partially-evaluated environment ie. eval and kwote are 'eager', and
> > quasiquote and unquote are lazy, with quote having no use.
> 1) It's not about being lazy or not - it's about manipulating
>  either the value denoted by an expression, or a structure representing
>  its syntax. lazy is about manipulating a shared on-going computation
>  denoted by the expression.
> 2) quote is still verily useful in combination with quasiquote.
>  If you've never used `',a then you've never defined defining macros.
>
> > On the subject of module systems, macros seem to make little sense in a
> > partially evaluated system - everything should be defined for runtime
> > execution with a set of 'caching' or state attributes (for late binding=
).
> I disagree, macros (and more generally, compile-time reflection),
> can always and will always be able to do more things
> than whatever base language without macros there is below.
> Note that partial evaluation is semantically equivalent to currying.
>
> See my reply to Matthias Blume's challenge about
> the utility of macros in a higher-order functional language:
> =09http://groups.google.com/groups?lr=3D&ie=3DUTF-8&selm=3D87lmcwlbnh.fsf=
%40Samaris.tunes.org&rnum=3D1
>
> Note: as eihrul is rediscovering, once bootstrapped, a compiler can be do=
ne
> completely with macros and special forms that amount to compile-time
> reflection.
>
> [ Fran=E7ois-Ren=E9 =D0VB Rideau | Reflection&Cybernethics | http://fare.=
tunes.org ]
> [  TUNES project for a Free Reflective Computing System  | http://tunes.o=
rg  ]
> Ceci n'est pas une th=E8se -- c'est seulement une impression d'une th=E8s=
e.
> =09-- Ren=E9 Magritte
>