implicit-context v0.0.1
drug007
drug2004 at bk.ru
Fri Sep 29 16:33:22 UTC 2023
On 29.09.2023 18:30, Guillaume Piolat wrote:
> 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
>
>
But later I understand that the removing of gl has also disadvantages.
In general implicit context is really the great idea
More information about the Digitalmars-d-announce
mailing list