implicit-context v0.0.1
Guillaume Piolat
first.name at gmail.com
Fri Sep 29 15:30:30 UTC 2023
On Friday, 29 September 2023 at 15:00:33 UTC, Imperatorn wrote:
>
> I think for this to be truly valuable, it would require being
> part of the language.
Only if proven on DUB.
> I admit I haven't really thought about implicit parameters
> before your post, so I might be missing something.
Think of it like envvars for threads. When you launch a process,
the launcher knows to copy the environment variables. With
scattered TLS variables, no new thread can get a copy of all the
"context" it may have. But with a centralized place for context,
you will be able to do that (not implemented yet), which kinda
improves encapsulation.
**Example 1: Context variables are scoped**
In a UI library, every new widget typically get a "UI context"
(that, or factory functions only) polluting all the constructors
there is.
Solution: Just append "uiContext" variable in the context => less
parameters.
But it could be a TLS variable, right? Yes indeed, but then you
may want to scope that, to remove the global from being accessed
outside a particular scope. Globals can be accessed at any time,
which doesn't improve a public API.
**Example 2**
When my "gfm" package was forked to "gfm7", the first thing that
was done is:
- remove all the _gl members that would only there to confirm a
particular shared library was used => it is part of the context
- and removed all logger interface passing => also ugly and kinda
never changes
More information about the Digitalmars-d-announce
mailing list