DIP1027 + Design by Introspection
12345swordy
alexanderheistermann at gmail.com
Tue Feb 2 18:36:30 UTC 2021
On Tuesday, 2 February 2021 at 15:55:23 UTC, Daniel N wrote:
> DIP1027 + Design by Introspection
>
> Since DIP1027 is simpler than DIP1036 I wanted to take a step
> back and see what could be done to fix DIP1027 to be even
> better than DIP1036.
>
> 1) q{} is designed for code generation it needs to be supported
> with Interpolation.
> 2) DbI
>
> IMHO both DIP1027 and DIP1036 suffers when trying to support
> custom formatting...
> which makes the syntax as hard to read as the original manual
> writefln format string.
>
> My DIP1027+ proposal is based on UDA and can support any
> function with trivial syntax.
> printf(i"I ate $apples and $bananas totalling $(apples +
> bananas) fruit.");
> writefln(i"I ate $apples and $bananas totalling $(apples +
> bananas) fruit.");
>
> Key insight, the function specifies what format it expects.
> printf(...) @formatting!printf_style
> writefln(...) @formatting!writefln_style
> This way it doesn't have to be repeated in user-facing code
> over and over.
>
> Basically the compiler will invoke "printf_style!int" and the
> function will return "%d",
> the compiler doesn't know anything about printf, it will just
> introspect/ask the function.
We don't need more built in attributes to an attribute filled
language.
-Alex
More information about the Digitalmars-d
mailing list