<div dir="ltr"><div>Yes, #:transparent means "reflective tools like struct? and struct-info can see inside it".  Otherwise, the short answer is they can't.  If you want to be able to tell things like immutability via dynamic tests, you have to use #:transparent for everything.  It also controls how equal? works, among other things -- with #:transparent, equal? descends recursively into fields; without #:transparent, equal? just checks eq?.<br>

<br></div><div>If using #:transparent is a problem for some reason, we can discuss alternatives, of which I can think of two or three, but they're more complicated.  Most likely, #:transparent is the way to go.<br></div>

</div><div class="gmail_extra"><br clear="all"><div>Carl Eastlund</div>
<br><br><div class="gmail_quote">On Sat, Jan 25, 2014 at 6:25 PM, Greg Hendershott <span dir="ltr"><<a href="mailto:greghendershott@gmail.com" target="_blank">greghendershott@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="im">> skipped? = #t can only arise if some struct type in the hierarchy is opaque,<br>
> which would mean struct? returns #f.  If you only care about types that<br>
> satisfy struct?, you should be able to safely ignore skipped?, if I<br>
> understand it correctly.<br>
<br>
</div>Opaque here means, not declared with #:transparent?<br>
<br>
If so, that would explain something else: The units tests I posted<br>
used #:transparent only because copy-pasta. After I posted, I decided<br>
to fix that...but then the immutable tests failed. That didn't make<br>
much sense to me, but I guess now it does.<br>
</blockquote></div><br></div>