On Wednesday, 20 November 2013 at 23:27:38 UTC, Shammah
Chancellor wrote:
I just watched this talk from the goto conference by Walter
Bright (https://www.youtube.com/watch?v=cQkBOCo8UrE) and he
makes reference to "concepts." However, they look almost
identical to Protocols in Smalltalk -- something which I would
very much like to see in D.
It basically works much like an interface, but instead of
declaring it, you check the type to see if it defines the
appropriate methods.
In fact -- I believe this could be implemented today with
__traits and static foreach to simply check to see if a type
conforms to a protocol at compile time.
implementsProtocol!( R, InputRange!(int) );
where InputRange!() could just be a templated interface.
Having this in phobos would be really helpful! If there is
interest in this, I'll write a template up and submit it to
phobos.
-Shammah
Something that's almost exactly what you're looking for:
http://dlang.org/phobos/std_typecons.html#.wrap
http://dlang.org/phobos/std_typecons.html#.unwrap
Also, note that this is pretty much how D templates work. The
difference between concepts and protocols is that concepts work
at compile time, while protocols work at runtime. Interfaces, a
la Java are a hybrid. That's really just an implementation
detail, though. None of these terms are all that well defined
across all or even most programming languages.