<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Mon, May 15, 2017 at 8:29 AM, Hal Finkel <span dir="ltr"><<a href="mailto:hfinkel@anl.gov" target="_blank">hfinkel@anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF"><span class="gmail-">
    <p><br>
    </p>
    <div class="gmail-m_8197014797676221049moz-cite-prefix">On 05/14/2017 09:00 PM, Daniel Berlin
      wrote:<br>
    </div>
    <blockquote type="cite">
      
      <div dir="ltr">
        <div class="gmail_extra">
          <div class="gmail_quote">
            <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
              <div bgcolor="#FFFFFF">
                <div>
                  <div class="gmail-m_8197014797676221049gmail-h5"><br>
                  </div>
                </div>
                I don't agree, but this is because I fail to see how the
                two representations (the GCC-like one you've outlined
                and the current one with the proposed extension) aren't
                completely isomorphic. Your proposal is:<span class="gmail-m_8197014797676221049gmail-"><br>
                  <br>
                </span></div>
            </blockquote>
            <div><br>
            </div>
            <div>Lots of data structures are completely isomorphic in
              the same way,  and in plenty of those cases, one is
              completely unusable, and the other functions quite well.</div>
          </div>
        </div>
      </div>
    </blockquote>
    <br></span>
    Fair point. I suppose I was saying something stronger...<span class="gmail-"><br>
    <br>
    <blockquote type="cite">
      <div dir="ltr">
        <div class="gmail_extra">
          <div class="gmail_quote">
            <div> </div>
            <div>Your below is basically "one is drawn in one direction,
              and the other is drawn the other".</div>
            <div>This is entirely true.</div>
            <div><br>
            </div>
            <div>You want to argue that this means they will be exactly
              as efficient or easy to understand as each other.</div>
            <div>This is where you and I disagree.</div>
            <div>I disagree because i rarely see parent-linked graph
              structures (outside of union-find ) that are implemented
              or used well</div>
          </div>
        </div>
      </div>
    </blockquote>
    <br></span>
    I don't think that we're on the same page here. AFAIKT, in both
    schemes, the links go in the same direction:</div></blockquote><div> <br></div><div><br></div><div><blockquote type="cite"><br></blockquote></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div bgcolor="#FFFFFF"> from struct nodes to member-type nodes. We call these parent links in our scheme and you
    call them child links in your scheme, but the sense in the DAG is
    the same.</div></blockquote><div><br></div><div>Except not because of what you've chosen explicitly as the root :)</div><div> </div><div>we have </div><div><br></div><div> root (char)</div><div> /   \ </div><div>int  short </div><div>|      /</div><div>struct A</div><div> </div><div><br></div><div>gcc has</div><div><br></div><div><br></div><div><forest><br>struct A   </div><div> /       \         </div><div>int    short </div><div><br></div><div>(note the lack of char here too)</div><div><br></div><div>So you would be right if it wasn't rooted.</div><div>But we've explicitly chosen to make it rooted in what GCC would consider a leaf:)</div><div><br></div><div>It is true you can rewrite one into the other, but ...</div><div><br></div><div><br></div><div><br></div></div></div></div>