dud: A dub replacement

Paolo Invernizzi paolo.invernizzi at gmail.com
Thu Nov 21 08:44:11 UTC 2019


On Wednesday, 20 November 2019 at 16:29:20 UTC, Rumbu wrote:
>
> When a function signature looks like this
>
> ElementEncodingType!(ElementType!RoR)[] join(RoR, R)(RoR ror, 
> scope R sep)
> if (isInputRange!RoR && isInputRange!(Unqual!(ElementType!RoR)) 
> && isInputRange!R && is(Unqual!(ElementType!(ElementType!RoR)) 
> == Unqual!(ElementType!R)))
>
> or like this:
>
> E[] replaceFirst(E, R1, R2)(E[] subject, R1 from, R2 to)
> if (isDynamicArray!(E[]) && isForwardRange!R1 && 
> is(typeof(appender!(E[])().put(from[0..1]))) && 
> isForwardRange!R2 && 
> is(typeof(appender!(E[])().put(to[0..1]))));
>
> it's understandable why documentation is mandatory.

That's true, Rumbu!

And despite that, it's always marvel me the fact that I can 
simply read the above and actually "understand it"!

It's some kind of magic, but maybe it's simply why I'm forced to 
read too much C++ recently...  :-P

PS ... the most difficult part for a beginner maybe is the 
historical "is(typeof( ... bla bla ...)"


More information about the Digitalmars-d-announce mailing list