In Common Lisp I have often wanted to iterate through the fields of a struct-- to comb out references to a deleted object, for example, or find fields that are uninitialized. I know the structs are just vectors underneath. And yet I can't write a general purpose function that I can call on any struct. I can only access the fields by name, because that's what a struct is supposed to mean.

Just to be sure you understand the quote correctly, you have to know that a 'struct' in Common Lisp is akin to a 'struct' in C. It allows you to access it fields by name.

When Paul says that he can't iterate over it, that's because Common Lisp wont let you close to the internal representation, for diverse reasons, mainly efficiency. But you can implement your own struct which allow iteration if you wish so, but it might not be as fast.

Now, you say that: "in Perl 5 the contents of anything can be inspected and iterated".

First, I have to admit that I don't know if it's true or not (can you iterate through the fields of an object in Perl?). But I can assure you that if you are talking about inspecting a structure in the sense of 'Data::Dumper', then Lisp sure can do that.

So, I have a question: what is the general function in Perl that you can call on any object to make sure all his fields are initialized?

Thanks!

In reply to Re: Make sure Perl 6 is introspective enough by Schemer
in thread Make sure Perl 6 is introspective enough by John M. Dlugosz

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.