the death of lecter

Michal Wallace sabren at manifestation.com
Mon Sep 11 11:56:11 EDT 2000


Hey all,

When I fisrt started reading this newsgroup, I listened to a lot of
newbie complaints about python, and I started thinking about
implementing an "evil" version of python, implemented as a
preprocessor calld Lecter that included things that real python didn't
(and shouldn't!), like curly braces to delimit blocks..

I pretty much lost interest in the project, and today, for other
reasons, decided to turn lecter into a literate programming tool
for python.

More on that soon, BUT FIRST! I took another look at the old source,
which contains comments of some of the other oft-requested things. I
thought I'd post them here in case anyone wanted to turn them into
PEPs. Some of these really are great ideas (most of them aren't mine
though):


   * easy class access:
         class.x = 1  # translates to: self.__class__.x = 1

     # this adds no keywords, but it makes a really common OOP
     # concept much more accessible to python programmers!
     # I really think this is a good idea and worth doing.


   * immediate if:
         print 'x is', x > 0 ? 'positive' : 'negative'

     # I still wish we had a ?: operator..
     # It would be great for lambdas!


   * design by contract (require/ensure/implies)
     # I still think this would be a good idea!
     # maybe instead of keywords, they ought to be in
     # a contract module? 
     #
     # part of the idea is that the contract could be
     # inherited though.
     #
     # I was going to implement these as blocks that
     # would be converted to assert statements, eg:
     #
     # def f(x):
     #     require:
     #        x = 1


   * assignment operators ( +=, -=, /=, *= )
     # looks like the python team beat me to this one! :)


   * foreach someSequence: print this
     # where "this" is a keyword... I think this is dumb now,
     # but the idea was to have a perl-like anonymous variable


   * switch statement:
         switch x:
         case 1:
             pass
         case 2:
             pass
         case in (3,5):
             pass

     # no comment on this one. might be nice, probably not be worth it.



   * extended 'try' syntax:
         try:
             print 'do something'
         except:
             print 'catch errors'
         finally:
             print 'clean up' # not allowed in real Python

      # not sure why you'd want to do this, but the fact that you
      # can't seems kind of sad.. :)


   maybe someday:
   * /regexp/  and  x =~ /regexp/

     # ick! :)


Cheers,

- Michal
------------------------------------------------------------------------
www.manifestation.com  www.sabren.com  www.linkwatcher.com  www.zike.net
------------------------------------------------------------------------





More information about the Python-list mailing list