Thread overview
new DIP48: Interface specifications for aggregate types
Sep 08, 2013
Simen Kjaeraas
Sep 08, 2013
Tove
Sep 08, 2013
Jesse Phillips
Sep 08, 2013
Simen Kjaeraas
Sep 08, 2013
w0rp
Sep 09, 2013
Jacob Carlborg
Sep 09, 2013
Simen Kjaeraas
September 08, 2013
In response to Walter's DIP47 I have created my own take on what I see as the main problem:

http://wiki.dlang.org/DIP48

Destroy!

-- 
  Simen
September 08, 2013
On Sunday, 8 September 2013 at 18:13:52 UTC, Simen Kjaeraas wrote:
> In response to Walter's DIP47 I have created my own take on what I see as the main problem:
>
> http://wiki.dlang.org/DIP48
>
> Destroy!

I like it but would prefer
@interface instead of interface

Since using interface in this way, reminds me too much of nameless struct:s/union:s.

September 08, 2013
On Sunday, 8 September 2013 at 18:13:52 UTC, Simen Kjaeraas wrote:
> In response to Walter's DIP47 I have created my own take on what I see as the main problem:
>
> http://wiki.dlang.org/DIP48
>
> Destroy!

Personally I find this practice of creating a competing DIP to be very annoying. This was specifically outlined in the first DIP:

http://prowiki.org/wiki4d/wiki.cgi?LanguageDevel/DIPs/DIP1
"A DIP should represent a problem the community wants to resolve and not just a specific resolution to a problem. This allows the DIP to be a central hub for any given problem. If a resolution is radically different from the current state of the DIP, an alternative DIP could be created as a sub page, e.g. under /DIPs/DIP1/Alternatives/Alt1?. The DIP should be created in its entirety such that it could replace the current DIP through simple copy and past."

By creating separate DIPs and new forum posts, the discussion is segregated instead of being a progression to a solution. How is one to know that these two DIPs are to address the same problem:

"Outline Member Functions of Aggregates"
"Interface specifications for aggregate types"
September 08, 2013
I don't like DIP47, but I think I like this less. The original DIP this is competing against at least has some sense of familiarity. This is some weird new thing, and neither DIP really does anything meaningful.
September 08, 2013
On 2013-09-08, 20:28, Jesse Phillips wrote:

> On Sunday, 8 September 2013 at 18:13:52 UTC, Simen Kjaeraas wrote:
>> In response to Walter's DIP47 I have created my own take on what I see as the main problem:
>>
>> http://wiki.dlang.org/DIP48
>>
>> Destroy!
>
> Personally I find this practice of creating a competing DIP to be very annoying. This was specifically outlined in the first DIP:
>
> http://prowiki.org/wiki4d/wiki.cgi?LanguageDevel/DIPs/DIP1
> "A DIP should represent a problem the community wants to resolve and not just a specific resolution to a problem. This allows the DIP to be a central hub for any given problem. If a resolution is radically different from the current state of the DIP, an alternative DIP could be created as a sub page, e.g. under /DIPs/DIP1/Alternatives/Alt1?. The DIP should be created in its entirety such that it could replace the current DIP through simple copy and past."
>
> By creating separate DIPs and new forum posts, the discussion is segregated instead of being a progression to a solution. How is one to know that these two DIPs are to address the same problem:
>
> "Outline Member Functions of Aggregates"
> "Interface specifications for aggregate types"

Very good point, and perhaps we should be doing DIPs differently. Or
perhaps the whole system is a bit wrong, in that the problem and the
solution are presented alongside one another. If instead the problem was
explained on the top, and suggested solutions discussed independently below
(or even on separate pages). The way it is now, I for one feel that the DIP
is the creator's property and should not be edited.

-- 
  Simen
September 09, 2013
On 2013-09-08 20:13, Simen Kjaeraas wrote:
> In response to Walter's DIP47 I have created my own take on what I see
> as the main problem:
>
> http://wiki.dlang.org/DIP48

As I wrote in the DIP47 thread:

What's wrong with this currently working code:

class Foo
{
    void foo ();

    void foo ()
    {
        writeln("Foo.foo");
    }
}

void main ()
{
    auto foo = new Foo;
    foo.foo();
}

-- 
/Jacob Carlborg
September 09, 2013
On Mon, 09 Sep 2013 09:13:55 +0200, Jacob Carlborg <doob@me.com> wrote:

> On 2013-09-08 20:13, Simen Kjaeraas wrote:
>> In response to Walter's DIP47 I have created my own take on what I see
>> as the main problem:
>>
>> http://wiki.dlang.org/DIP48
>
> As I wrote in the DIP47 thread:
>
> What's wrong with this currently working code:
>
> class Foo
> {
>      void foo ();
>
>      void foo ()
>      {
>          writeln("Foo.foo");
>      }
> }
>
> void main ()
> {
>      auto foo = new Foo;
>      foo.foo();
> }
>

The fact that I can easily write this:

class Foo {
    // Declarations:
    void foo();

    // Definitions:
    void foo() {
        writeln("Foo.foo");
    }

    void bar(int n) {
        writeln("Foo.bar(",n,")");
    }
}

And the compiler will keep completely quiet about bar not being
mentioned in the declarations section.

-- 
Simen