std.experimental.checkedint is ready for comments!

tsbockman via Digitalmars-d digitalmars-d at puremagic.com
Tue Jun 14 21:48:02 PDT 2016


On Wednesday, 15 June 2016 at 03:42:52 UTC, Walter Bright wrote:
> On 6/14/2016 8:15 PM, tsbockman wrote:
>> Do I really need to give it some giant multi-word name?
>
> Something better than 'N'.

`Int`? `Base`?

Whatever it is needs to be short; `BaseIntegralType` is *way* too 
long for this and would make many of the signatures painfully 
verbose.

>> Besides which, Phobos uses single-letter names for template 
>> parameter type names
>> all over the place.
>
> Generally 'T' is used for 'any type'. 'N' has no corresponding 
> significance.

I have seen all of `S`, `F`, `G`, `X`, `R`, `C`, `A`, and `B` 
used as template parameter names in Phobos. Often there is no 
particular significance to the letter chosen, but the purpose of 
the parameter is obvious from the context, anyway.

Using short template parameter names helps keep D's 
already-very-long signatures from growing even longer than they 
already are.

> Greppability is inddeed a plus, but 'bscal' is needlessly 
> uninformative. Note that publicly facing names should not be so.

`basic`? `base`?

Again, this needs to be short for readability and usability. 
Normally it's not needed at all, but when it is needed (like in 
the implementation of `SmartInt` and `SafeInt`), it tends to be 
needed *a lot*.

The obvious choices - `value`, `val`, or `raw` - are out because 
of the shadowing problem.

>> I will work on the docs some more.
>
> Thank you.
>
>
>> * SmartInt.toString(sink, fmt)
>> * SafeInt.toString(sink, fmt)
>> * checkedint.to()
>> * IntFlag.toString(sink, fmt)
>> * IntFlags.toString(sink, fmt)
>
> I see no love for output ranges :-(

I will add support. Someone should update this wiki page with 
whatever the current best practice is:
     http://wiki.dlang.org/Defining_custom_print_format_specifiers



More information about the Digitalmars-d mailing list