duck!

Denis Koroskin 2korden at gmail.com
Sat Oct 16 09:19:02 PDT 2010


On Sat, 16 Oct 2010 00:37:10 +0400, Andrei Alexandrescu  
<SeeWebsiteForEmail at erdani.org> wrote:

> I was talking to Walter about Kenji's adaptTo. We both think it's a very  
> powerful enabler, but adaptTo is a bland name. After discussing a few  
> marketing strategies, I proposed "duck". It's short, simple, and evokes  
> "duck typing".
>
> class C
> {
>      int draw(){ return 10; }
> }
> interface Drawable
> {
>      long draw();
> }
> ...
> auto c = new C;
> auto d = duck!Drawable(c); // awes
>
> Kenji, I'll be looking forward to your submission :o). Would be great to  
> allow structs to duck, too!
>
>
> Andrei

There is a lot in common between to and adaptTo (even the original names  
are similar). 'to' converts one type to another (unless the two are  
implicitly castable) and 'adaptTo' does the same. 'adaptTo' can transform  
some types that 'to' can't, and vice versa.

In my opinion, they don't compete but supplement each other. As such I  
would prefer merging the two together:

auto c = to!(Drawable)(c); // try casting to Drawable first, return  
adaptTo(Drawable) if it fails.

The difference between 'as' and 'to' is subtle yet both names are short  
and might be confusing for many people, not only novices. Yet 'as' is  
better than 'duck' imo.


More information about the Digitalmars-d mailing list