Well, this isn't code being written for any purpose other than to experiment 
with some algorithms and data structures. The fact that it is in Perlis just 
for fun. That said, I believe that there is a good use case for linked lists 
when you want to strictly control memory allocation.Last I heard, Perl arrays 
grew in large chunks (I forget the details) whereas with a LL the memory 
allocated by perl will growmore slowly. This is from a talk I heard back in 
2009 at YAPC (http://www.slideshare.net/lembark/perly-linked-lists) so some of 
these advantagesmay no longer be applicable. I'd be interested in knowing of 
this was the case.
As to your question, well, I have no strong reason (again, just playing around 
here). My thinking is along the lines of that I would rather have a "book" have 
"pages"than just have "pages". Perhaps too subtle a point that isn't worth 
trying to capturing. Anyway, my analogy isn't exact since my "book" is really 
just a reference to the title page. :)

> Date: Sat, 1 Nov 2014 22:44:50 -0700
> Subject: Re: [Boston.pm] object composition (has-a) with built-in OO system
> From: [email protected]
> To: [email protected]
> CC: [email protected]
> 
> Just so that you know, it is very hard to find a use case for linked
> lists in Perl where a native array is not a better option.  That said,
> why draw a distinction between a node in a linked list and a linked
> list?  I would just have one class, that is a reference to a node.
> (That itself might have children.)  The one exception is if you wanted
> a doubly linked linked list, and wanted to avoid having a memory leak.
> 
> For inheritance, usually you just set up @ISA in some way.  Either by
> explicit assignment, or with 'use parent'.  (The modern replacement
> for 'use base'.  Though I don't know why that needed replacing...)
> 
> On Sat, Nov 1, 2014 at 10:36 PM, Adam Russell <[email protected]> wrote:
> > I was experimenting with some code, jogging my memory of linked lists.
> >
> > The approach I took was to define a package LinkedListNode and then a
> > package LinkedList.
> > My idea is that my LinkedList package is a wrapper around the head node
> > which would also define
> > some useful methods such as print_list(), remove_node(), and so forth.
> >
> > I did this by having the constructor for LinkedList create and bless()
> > the head node.
> > But then I ran into a problem having this object call LinkedListNode
> > methods. This was solved
> > by making LinkedList a subclass of LinkedListNode with the line
> > unshift @ISA, 'LinkedListNode';
> >
> > Ok, so I am doing what seems to me to be "composition" in OO speak. That
> > was my design intention anyway.
> > The only way I've found that it works is to use a parent class
> > relationship. Does Perl have some
> > other way of doing this, using the built in OO system?
> > I've read
> > http://search.cpan.org/~rjbs/perl-5.18.4/pod/perlootut.pod#Composition
> > and it seems that the answer is "No, what I've done is the way to do
> > it." but I thought I'd ask in case
> > I'm just not getting something?
> >
> > I only want to use the Perl built in OO system. I am aware Moose (and
> > others) have facilities for this.
> >
> > My code is at http://pastebin.com/8fnxY0Xy if you'd like to take a look.
> > Any other questions or comments on this code would be appreciated as
> > well. I've been brushing up on a few things
> > and am open to comments.
> >
> > Thanks!
> > Adam
> >
> > _______________________________________________
> > Boston-pm mailing list
> > [email protected]
> > http://mail.pm.org/mailman/listinfo/boston-pm
                                          

_______________________________________________
Boston-pm mailing list
[email protected]
http://mail.pm.org/mailman/listinfo/boston-pm

Reply via email to