On Sun, Dec 31, 2017 at 9:43 AM, bartc <b...@freeuk.com> wrote: > On 30/12/2017 20:36, Ben Bacarisse wrote: >> >> bartc <b...@freeuk.com> writes: >> >>> On 30/12/2017 16:53, mm0fmf wrote: >>>> >>>> On 30/12/2017 14:41, bartc wrote: >>>>> >>>>> it looks a bit naff >>>> >>>> >>>> Understatement of 2017. >>> >>> >>> I'm honest about my own ideas, but my remarks were about the use of >>> special symbols such as "::" and "@". >>> >>> Before completely dismissing it however, you should look at how >>> another language such as Python can achieve the same thing. >>> >>> Namely, take any block of code within a function, and allow it to be >>> executed or shared from anywhere else in the function, with the >>> minimum of disruption. >> >> >> That's what a local function does and it does it with the clean >> semantics of a function call. >> >> When this idea came up in comp.lang.c you could not see the point, yet >> you appear to have a use-case common enough that you have a solution >> worked out using gotos. > > > C doesn't in general have local functions. My own languages don't implement > them properly. So I tend not to use them. > >>> If it looks better than what I'd come up with, then I'll use that >>> instead. >> >> >> What looks better is always going to be an unreliable and subjective >> measure, but calling a named function almost certainly scales better and >> will allow for better structuring (such as when one block needs to use >> another one). > > > Using a local (or even non-local) function is what I'm trying to avoid, as I > prefer to keep the code inline, and not disrupt it too much. > > You may also want to execute a block only temporarily, or as part of a short > test. So you don't want to go to the trouble of hoisting a block of code > into a local function. > > (And in C, which has local block scopes, there would be trouble with > visibility of all the variables the block uses, unless the local function is > untidily placed right where the original block was.) >
Okay, so a low level language lacks certain facilities. Great. What has this to do with Python and goto? You *can* use nested functions. And they can do everything you need of these sub-blocks (albeit with some overhead). ChrisA -- https://mail.python.org/mailman/listinfo/python-list