--
http://www.ironpythoninaction.com

On 7 Aug 2009, at 12:06, ilya <ilya.nikokos...@gmail.com> wrote:

I believe people now discuss this both on python-dev and python-ideas,
though since I'm new to both lists, I can't really tell where this
belongs.


It definitely belongs on the ideas list...

Michael




I played a little with this syntax, my try_ function and @catch
decorator (which are at http://mit.edu/~unknot/www/try_cond.py):

   #   x = float(string) except float('nan') if ValueError
   x = try_(float, string, except_ = float('nan'), if_ = ValueError)

   @catch(ValueError = float('nan'))
   def x1(): return float(string)

   #   y = float(string) except ValueError: float('nan')
   y = try_(float, string, { ValueError: float('nan') })

   @catch({ValueError: float('nan')})
   def y1(): return float(string)

   #   try:
   #       z = open(string, 'r')
   #   except IOError as e:
   #       if e.errno == 2:
   #               z = 'not_exist'
   #       else:
   #               raise
   #
   z = try_(open, string, 'r', iocatcher({2: 'no file!'}))

   @catch(iocatcher({2: 'nothing!'}))
   def z1(): return open(string, 'r')

Here are my overall feelings:

(1) it would be interesting to come up with syntax for except/if
clause, but it's not obvious how to make one and this fact itself may
kill the idea.
(2) the more reasonable approach to things like this is by defining a
separate block and then performing a "catch" operation with it.
Unfortunately, this looks very clumsy as currently this can only be
done by defining a separate function. I think code blocks are a good
direction to explore.

2009/8/7 Kristján Valur Jónsson <krist...@ccpgames.com>:
Unless I am very much mistaken, this is the approach Ruby takes.
Everything is an expression. For example, the value of a block is the value of
The last expression in the block.

I've never understood the need to have a distinction betwen statements and expressions, not when expressions can have side effects. It's like that differentce between procedures and functions in pascal that only serves to confuse

K
-----Original Message-----
From: python-dev-bounces+kristjan=ccpgames....@python.org
[mailto:python-dev-bounces+kristjan=ccpgames....@python.org] On Behalf
Of Xavier Morel
Sent: 6. ágúst 2009 10:25
To: python-dev@python.org
Subject: Re: [Python-Dev] (try-except) conditional expression similar
to (if-else) conditional (PEP 308)


Wouldn't it be smarter to fix the issue once and for all by looking
into making Python's compound statements (or even all statements
without restrictions) expressions that can return values in the first
place? Now I don't know if it's actually possible, but if it is the
problem becomes solved not just for try:except: (and twice so for
if:else:) but also for while:, for: (though that one's already served
pretty well by comprehensions) and with:.


_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/ilya.nikokoshev%40gmail.com

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/fuzzyman%40voidspace.org.uk
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to