[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: need for macros (was Re: Icon)
No, I don't mean Scheme 48. I mean Indiana's Scheme 84.
3D is UN-related to hygiene. The terminology (invented
by Dan Friedman) refers to the fact that you move a
value from one language-processing pass to another pass.
In Paul's case, you moved it from front-end elaboration
to run-time. It assumes that the system of values in the
two phases is the same. Absolutely the same.
-- Matthias
> From: Michael Vanier <mvanier@bbb.caltech.edu>
> Cc: paulgraham@yahoo.com, ll1-discuss@ai.mit.edu
> Date: Sun, 23 Dec 2001 17:41:01 -0800 (PST)
>
>
>
> > From: Matthias Felleisen <matthias@ccs.neu.edu>
> > Date: Sat, 22 Dec 2001 14:41:43 -0500 (EST)
> >
> > Scheme 84 had this, and I don't see why this isn't in most Lisps.
> >
>
> ? Do you mean Scheme 48?
>
> > Still, I believe that some features should not be in programming languages
> > because neither the designers nor the super programmers nor the average
> > programmers know how to reason about them systematically. I have come to
> > believe that 3D macros are one such thing. They co-mingle two radically
> > different phases: compilation and execution. You cannot possibly deploy a
> > program that is expanded like that on a different machine. The very idea
> > doesn't make sense. I guess in short, I believe in the strict separation of
> > passes. Otherwise I am open to pretty much everything :-)
>
> By "3D macros", do you mean non-hygienic defmacro-style macros?
>
> Also, I don't see why you can't deploy such macros on a different machine,
> as long as certain ground rules are the same (such as, I suppose, order of
> evaluation). Aren't common lisp macros reasonably portable?
>
> Mike
>
>
> >
> > -- Matthias
> >
> > > Date: Fri, 21 Dec 2001 15:38:55 -0800 (PST)
> > > From: Paul Graham <paulgraham@yahoo.com>
> > > Cc: ll1-discuss@ai.mit.edu
> > > Content-Type: text/plain; charset=us-ascii
> > >
> > >
> > > --- Matthias Felleisen <matthias@ccs.neu.edu> wrote:
> > > >
> > > > Yes, Dan used to assign this as a puzzle in 1983/84 and I posed it to
> > > > Guy
> > > > at my first POPL: it's called ONCE. You are creating a 3-dimensional
> > > > value
> > > > that tunnels its way from expansion to run-time. Is this a good
> > > > thing?
> > >
> > > Sure, why not? It solves my problem in this case, and solving
> > > problems is what language are for.
> > >
> > > In Arc it is explicitly part of the language that you can insert
> > > objects (not just expressions) into macroexpansions. Also
> > > that anything that isn't a list or a symbol evaluates to itself.
> > >
> > > I'm not sure if/which other Lisps have done this before, but
> > > it gives you a small but significant boost in expressive power.
> > > It may also help make programs faster, because it means you
> > > can build things at compile time that would otherwise have to
> > > be built at runtime.
> > >
> > > Of course if people don't want to do this they don't have to.
> > > Arc's philosophy is, let the programmer decide.
> > >
> > > --p "Arc: It's not just free, it's libertarian!" g
> > >
> > >
> > > __________________________________________________
> > > Do You Yahoo!?
> > > Send your FREE holiday greetings online!
> > > http://greetings.yahoo.com
> > >
> >
> >
>