Wanted: Format character for source code literal

Berni44 someone at somemail.com
Fri Apr 30 07:10:38 UTC 2021


I plan to add an extension to `std.format`, namely a new format 
character with the meaning of producing a source code literal. Or 
more formally, the following snippet should work for every type 
this extension will support:

```
enum a = <something>;
enum b = mixin(format!"%S"(a));

static assert(a == b && is(typeof(a) == typeof(b)));

```
(Please note, that even for floats `a == b` should hold for all 
values, but NaNs; I plan to use RYU for this.)

The big question is now, which character to use. I thought of 
`%S` like source code literal. Andrei suggested `%D` like D 
literal. Both ideas have the disadvantage of using uppercase 
letters, which would break the of uppercase letters meaning that 
the output uses uppercase instead of lowercase (i.e. 1E10 instead 
of 1e10).

A first idea of a lowercase literal might be `%l` but this might 
easily be confused with `%I` and `%1` (both don't exist); and 
also `l` is used in C's `printf` for `long` which we luckily 
don't need here. Anyway I fear confusion.

What do you think? Which letter would be best?


More information about the Digitalmars-d mailing list