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

Re: need for macros (was Re: Icon)



Hmm.  It's understandable in the sense that I can write
an eval that does it, and it doesn't require anything
tricky or convoluted.  What better test of understandable?
That's what eval was designed for.

Looking at it from the other direction, I really don't
think you have to be a super-programmer to understand
perfectly what with-unique-id does.  (On the other hand,
it would be cool if you did, because then I'd be a 
super-programmer-- woohoo!)

Just shows how hard it is to define a language that lets 
the programmer decide; everyone has something they don't
want programmers to be able to do ;-)

Merry Xmas,

--pg

--- Matthias Felleisen <matthias@ccs.neu.edu> wrote:
> 
> Scheme 84 had this, and I don't see why this isn't in most Lisps. 
> 
> 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 :-) 
> 
> -- 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
>   > 
> 


__________________________________________________
Do You Yahoo!?
Send your FREE holiday greetings online!
http://greetings.yahoo.com