June 15, 2016
On Wednesday, 15 June 2016 at 00:16:12 UTC, Walter Bright wrote:
> Remove all use of 'you' and 'your' from the documentation.

Done.

> "debuggin" => "debugging"

Done.
June 15, 2016
On Wednesday, 15 June 2016 at 04:48:02 UTC, tsbockman wrote:
> On Wednesday, 15 June 2016 at 03:42:52 UTC, Walter Bright wrote:
>>> * 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.

Done. (It turns out that they were actually already supported, but I updated the docs to make this clearer.)
June 15, 2016
On Wednesday, 15 June 2016 at 00:16:12 UTC, Walter Bright wrote:
> -O (DMD) should be a link to the -O flag instructions http://dlang.org/dmd-windows.html#switch-O

Done.

> '--inline' is not a DMD switch

Fixed and linked, like -O.
June 15, 2016
On 2016-06-15 05:15, tsbockman wrote:

> Originally I wanted to have the policies just be `throws` and `nothrow`
> - but of course `nothrow` is a keyword, so I chose `noex` (short for "no
> exceptions") instead. I agree it looks kind of odd though, especially
> since I later added the `asserts` policy.

nothrow is actually two words, "no" and "throw". Therefore the symbol should be noThrow. Solving both the conflict with the keyword and using correct grammar :)

-- 
/Jacob Carlborg
June 15, 2016
On 6/14/2016 9:57 PM, tsbockman wrote:
> The intent is just as clear this way, and it's less verbose.

Ok. I'd just change the constraint to:

    if (isIntegral!N || isCheckedint!N)

You can do the qualification machinations using a static if inside the template.
June 15, 2016
On 6/14/2016 9:48 PM, tsbockman wrote:
> 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`?

'Integer' would work fine.


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

Since they aren't recursive, that shouldn't be a problem. Besides, the signature will be the actual type name, not the alias for it.


>>> 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.

1. Each one should be evaluated on its own merits.
2. Style is not something cast in stone, we try to constant evolve better ways.
3. Bad practice in one case is not a rationale to use bad practice elsewhere :-)
4. You mentioned greppability - 'N' is as ungreppable as it gets!


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

The parameter names don't appear in the signature.


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

'integer'? (to go with 'Integer' for the type)


> 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*.

Internal to the implementation does not require it to be short.


>> I see no love for output ranges :-(
> I will add support.

Thank you.

June 15, 2016
On 6/14/2016 11:17 PM, tsbockman wrote:
> Done.

Pretty dazz!


> (It turns out that they were actually already supported, but I updated the
> docs to make this clearer.)

Ain't it cool when that happens?
June 15, 2016
On 6/14/2016 11:16 PM, tsbockman wrote:
> On Wednesday, 15 June 2016 at 00:16:12 UTC, Walter Bright wrote:
>> Remove all use of 'you' and 'your' from the documentation.
>
> Done.

I hope you like the results, and are not doing it just because I asked.

June 15, 2016
On 6/14/2016 11:32 PM, tsbockman wrote:
> On Wednesday, 15 June 2016 at 00:16:12 UTC, Walter Bright wrote:
>> -O (DMD) should be a link to the -O flag instructions
>> http://dlang.org/dmd-windows.html#switch-O
>
> Done.
>
>> '--inline' is not a DMD switch
>
> Fixed and linked, like -O.

Tip 'o the hat.
June 15, 2016
On Wednesday, 15 June 2016 at 07:08:22 UTC, Walter Bright wrote:
> On 6/14/2016 9:57 PM, tsbockman wrote:
>> The intent is just as clear this way, and it's less verbose.
>
> Ok. I'd just change the constraint to:
>
>     if (isIntegral!N || isCheckedint!N)
>
> You can do the qualification machinations using a static if inside the template.

This was a deliberate design decision, which I do not think should be changed (although I will if you insist):

    * With your signature, the user may wrongly expect SmartInt to
      support qualified `N`. My scheme encodes the fact that only unqualified
      types are *really* supported in the public signatures.

      (I should add an explanatory note about this in the docs, too.)

    * Your scheme will make uglier and more verbose error messages and fully
      qualified type signatures, as `SmartInt` will become `SmartInt.SmartInt`
      or `SmartIntImpl`. This is confusing for users who are not familiar with
      the details of D's template system, and still annoying for the rest of us.

    * Your scheme will also complicate the docs, as it will replace the top-level
      entry for `struct SmartInt` with a nested
      `template SmartInt` => `struct SmartInt` entry.