[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
  > >   > 
  > > 
  > > 
  >