Beefy Boxes and Bandwidth Generously Provided by pair Networks
Come for the quick hacks, stay for the epiphanies.

Re: Make sure Perl 6 is introspective enough

by Schemer (Scribe)
on Dec 03, 2002 at 05:48 UTC ( [id://217132] : note . print w/replies, xml ) Need Help??

in reply to Make sure Perl 6 is introspective enough

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?

  • Comment on Re: Make sure Perl 6 is introspective enough