Complexity nomenclature
Jonathan M Davis via Digitalmars-d
digitalmars-d at puremagic.com
Fri Dec 4 14:17:21 PST 2015
On Friday, 4 December 2015 at 18:21:41 UTC, Walter Bright wrote:
> On 12/4/2015 7:11 AM, Jonathan M Davis wrote:
>> std.container puts linear and/or stable in some of its names
>> and then creates an
>> alias to whichever one makes sense as the default where the
>> alias doesn't have
>> linear or stable in the name. e.g. linearRemove becomes remove
>> via an alias.
>
> Excessive use of aliases is a problem in and of itself - for
> example, trying to use a debugger with it, or examining the
> object code.
Oh, I agree. But if we end up with stuff like stableLinearRemove
all over the place, it's better to have the aliases than not.
However, it's far better IMHO to avoid having all of those long
names in the first place.
> I suggested in the pseudo namespaces thread using template
> parameters to express characteristics, as in:
>
> remove!(stable, linear)
>
> with sensible defaults so most of the time the user would just
> use:
>
> remove
>
> Generic code could use the parameters. Another alternative is
> to have attributes for the algorithm:
>
> @stable @linear remove() { ... }
>
> and then generic code could test for those attributes.
Either of those would be better than stableLinearRemove or
stable.linear.remove. The UDAs would be more documentation
friendly, though being able to pass around template arguments
could be valuable for the cases where you're trying to enforce
specific complexity requirements.
- Jonathan M Davis
More information about the Digitalmars-d
mailing list