Undefined behaviour in C [was Re: The Cost of Dynamism]

BartC bc at freeuk.com
Sun Mar 27 10:43:33 EDT 2016


On 27/03/2016 14:47, Dennis Lee Bieber wrote:
> On Sun, 27 Mar 2016 12:31:26 +0100, BartC <bc at freeuk.com> declaimed the
> following:
>
>> On 27/03/2016 07:34, Paul Rubin wrote:
>>> BartC <bc at freeuk.com> writes:
>>>>    But my suggestion was to have required a keyword in front of
>>>> such expressions.
>>>
>>> Should there be a keyword in front of a line containing "sqrt(x)" ?
>>> What about "launch(missiles)" ?
>>
>> They both look like function calls. Function calls are *very* commonly
>> used as standalone expressions.
>>
>> You /could/ stipulate that they be written:
>>
>>    call launch(missiles)    # like Fortran iirc
>>
> 	Except that FORTRAN also explicitly defines them as
>
> 		subroutine xxx()
> vs
> 		return-type function yyy()
>
> and will generate a compile error if you "call" the latter, or put the
> former in-line of an expression
>
> 	This would be the equivalent of removing "def" from Python, and adding
> two new keywords: "sub" and "fun"; modifying the behavior so that "fun"s
> must have an explicit return statement (preferably with an explicit return
> value), whereas "sub"s have no return and just ... end...

Well, that could be done in Python (not so usefully because you can't 
take account of such info until a call is attempted), but that's not 
what I'm talking about, which is simply allowing:

   fn(...)

whether fn has an explicit return or not, and not allowing:

   fn         # and other kinds of expression

unless some keyword is used. (I've no idea what that might be; all the 
best ones are taken. But I've already said a keyword can be emulated via 
a dummy function call.)

-- 
Bartc



More information about the Python-list mailing list