[Python-Dev] Can Python implementations reject semantically invalid expressions?

Maciej Fijalkowski fijall at gmail.com
Fri Jul 2 08:38:11 CEST 2010


On Fri, Jul 2, 2010 at 12:31 AM, Stefan Behnel <stefan_ml at behnel.de> wrote:
> Glyph Lefkowitz, 02.07.2010 06:43:
>>
>> On Jul 2, 2010, at 12:28 AM, Steven D'Aprano wrote:
>>
>>> This question was inspired by something asked on #python today. Consider
>>> it a hypothetical, not a serious proposal.
>>>
>>> We know that many semantic errors in Python lead to runtime errors, e.g.
>>> 1 + "1". If an implementation rejected them at compile time, would it
>>> still be Python? E.g. if the keyhole optimizer raised SyntaxError (or
>>> some other exception) on seeing this:
>>>
>>> def f():
>>>    return 1 + "1"
>>>
>>> instead of compiling something which can't fail to raise an exception,
>>> would that still be a legal Python implementation?
>>
>> I'd say "no".  Python has defined semantics in this situation: a TypeError
>> is raised.
>
> So, would it still be Python if it folded
>
>    1 + "1"
>
> into
>
>    raise TypeError()
>
> at compile time?
>
> Stefan
>

This question has an easy answer - can you possibly tell the difference?

Cheers,
fijal


More information about the Python-Dev mailing list