<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>