On Wednesday, 2 May 2018 at 14:05:49 UTC, H. S. Teoh wrote:
How else would you do DoI, though? With Concepts? The advantage of using structural typing over concepts for DoI is that you would need an exponential number of concepts to catch up with a linear number of optional fields in a structural typing model. Sure, structural typing has its warts, but it's at least more scalable in this respect.

UDAs to the rescue!

class JackInTheBox
{
  // Which way is it facing?
  Direction front();
// Pop the box open and have the doll spring out toward the front side
  void popFront();
// Remove everything from the box. Return true if stuff was removed.
  bool empty();
}

We're in for a bad time.


@Range
class JackInTheBox
{
  ...
}

Here I just shot myself in the foot.


// A document is a range of pages, maybe.
@Range
struct Document
{
  // saves to disk
  SaveResults save();
}

This is a subtler problem.


struct Document
{
  @Range
  SaveResults save();
}

I shot myself in the foot again.


It's analogous to explicit interface inheritance in C#. Thanks to D's options for applying annotations to a block or in label style, it wouldn't be terribly onerous.

Reply via email to