An observation and a thought experiment for Doug Alan [was: do/until and lots of flames and argument...]

Steven D. Majewski sdm7g at Virginia.EDU
Thu May 3 20:20:00 EDT 2001


[ I know this is an old thread, but I didn't have time to follow
  it at the time, and I'm just catching up. ] 

Doug, 

 As I often find myself defending Python on comp.lang.lisp and
defending Lisp on comp.lang.python, I sympathize. But I've 
thought about this long before  Steele's paper about growing
a language: I coined the term "Jes' Grew Languages" for Python,
Perl and others, and was interested in 'how much design is 
enough' and organic growth ever since reading Gabriel's 
"Good News, Bad News" paper.  

  And while I'm not sure I'ld go so far as to call the quest
futile, I do think that what you want is a pretty tough fit
for Python. ( I think that was the point to Tim's suggestion
to write a PEP -- I don't think he was trying to blow you off --
I think he knew that trying to make a concrete proposal would
make some of the problems more obvious than any lenght of
talking about it in the abstract would. ) 

  I think the power and utility of Lisp macros is deeply tied to
Lisp's minimal syntax. ( And I've argued that the downside of 
this is that control structures don't look any different that 
any other function call or Lisp form. ) The easy transformation
between lisp programs and data is based on that simple syntax --
and the macro system is built on top of that. 


 An observation and a thought experiment for you to consider:


 Any discussion about a new feature for Python always generates 
a VERY LONG and contentious debate about what the right SYNTAX 
to express the new feature should be, while this is rarely and
issue in Lisp -- the one possible exception was concerning the
LOOP macro syntax -- and the primary complaint was that it wasn't
sufficiently 'lisp-ish' . 

 The thought experiment is even easier than writing a PEP: 
Imagine that your wish is granted and you have a macro facility
in Python -- now you can implement any sort of looping structure
you like. 

 That sill leads you back to the question that Macro's were 
supposed to solve: What is the syntax for do/until going to be? 


-- Steve Majewski






More information about the Python-list mailing list