Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

comment on

( [id://3333]=superdoc: print w/replies, xml ) Need Help??
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":



  • Are you posting in the right place? Check out Where do I post X? to know for sure.
  • Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
    <code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>
  • Snippets of code should be wrapped in <code> tags not <pre> tags. In fact, <pre> tags should generally be avoided. If they must be used, extreme care should be taken to ensure that their contents do not have long lines (<70 chars), in order to prevent horizontal scrolling (and possible janitor intervention).
  • Want more info? How to link or How to display code and escape characters are good places to start.
Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others perusing the Monastery: (5)
As of 2024-04-25 23:47 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found