In something like C++ you could create a scope like so:
{
// Do something neat here
}
I was wondering about having or maybe even requiring a scope keyword, which might look like this:
scope
{
// Do something neat here
}
This seems even more relevant in an indentation sensitive language like python:
scope:
pass
Interested to hear any opinions, TIA.
7 Comments
RonSijm@programming.dev · 7 pts · 2y
A scope is already implied by brackets. For example, a namespace, class, method, if block are also scopes.
So I don't really see why you'd want an explicit scope keyword inside methods, when all other scopes are implied... That just creates an inconsistency with the other implied scopes
xmunk@sh.itjust.works · 3 pts · 2y
I dislike it - every block creating scope is reinforced by the lack of a keyword. Not all languages allow a blank scope block but those that have scope should...
In terms of python, welp, they made their own bed by making white space syntax significant. It was a terrible decision and would require a custom solution... maybe they could let you just arbitrarily indent an extra time?
Kissaki@programming.dev · 2 pts · 2y
What's the intention and use case for this?
Only for empty, unlabeled, untyped scopes? Or would I write
Is it necessary for scope-ending cleanup of resources? If so, I would consider whether there are not better solutions for those.
Is it for code structuring? I would also consider what use a scope keyword has then, and what the alternatives are.
I don't see how adding a scope label helps with anything.
librecat@lemmy.basedcount.com · 1 pts · 2y
To be honest, the only use case I really thought of was something like unlocking a mutex at the end of a scope or maybe a file.
anton@lemmy.blahaj.zone · 2 pts · 2y
In that case managed languages like python and java combine that functionality with
tryblocks. This is generally called try with resources.C# has the
usingkeyword that just uses local scope.The commonality between them is declaring which resource is managed, not just everything is a scope. Imagine you wanted to manage one resource and return another.
librecat@lemmy.basedcount.com · 1 pts · 2y
I was just thinking about Python's
withxigoi@lemmy.sdf.org · 1 pts · 2y
Nim, which is indentation-based, has a
blockkeyword.