in reply to Re: Nodes count in Linked List
in thread Perl linked list

Thanks for your kindly help!

The thing confuses me is what exact data type $L is in the given question?

The test data set would be something like

[ 3,2,2,3,3,3,1 ].

I don't understand how the data set get passed into @_ and assigned to $L. [ 3,2,2,3,3,3,1 ] seems like an anonymous array to me if assigned to a $scalar . Could you tell me how it assigned to @_ and $L ?

Replies are listed 'Best First'.
Re^3: Nodes count in Linked List
by AnomalousMonk (Archbishop) on Mar 31, 2015 at 13:39 UTC

    In common with others, I'm not sure how this question relates to your OP ([ 3,2,2,3,3,3,1 ] doesn't look like a linked list to me, either), but I can answer your specific questions.

    ... what exact data type [is] $L ...

    $L is a scalar. This is determined by the $ sigil before the symbol.

    ... how [does] the data set get passed into @_ and assigned to $L.

    The expression  [ 3,2,2,3,3,3,1 ] returns a reference (to an array). A reference is always a scalar value even though the referent, e.g., an array or hash, is not. A scalar is passed to a subroutine in the usual way:

    c:\@Work\Perl>perl -wMstrict -le "my $arrayref = [ 3,2,2,3,3,3,1 ]; ;; sub func { my ($msg, $ar) = @_; ;; printf qq{$msg: scalar ref: $ar }; printf qq{'$_' } for @$ar; printf qq{(%d elements) \n}, scalar @$ar; } ;; func('A', [ 9, 8, 7 ]); func('B', $arrayref); " A: scalar ref: ARRAY(0x1cb226c) '9' '8' '7' (3 elements) B: scalar ref: ARRAY(0x6fd05c) '3' '2' '2' '3' '3' '3' '1' (7 elements +)

    Update: Changed code example: added element count. Slight wording change.


    Give a man a fish:  <%-(-(-(-<

Re^3: Nodes count in Linked List
by Corion (Patriarch) on Mar 31, 2015 at 13:22 UTC

    What you show as test data seems to contradict what your assignment says what the test data would be.

    Maybe you can review the assignment description and visualize the data as it is described. Note that a "dictionary" is not an "anonymous array".

Re^3: Nodes count in Linked List
by LanX (Saint) on Mar 31, 2015 at 13:23 UTC

    [ 3,[2,[2,[3,[3,[3,[1, undef ]]]]]]]].

    But I fear the author if this assignment just lazily copied a task from Lisp and has no big idea what Perl is.

    Cheers Rolf
    (addicted to the Perl Programming Language and ☆☆☆☆ :)

    PS: Je suis Charlie!

      This seems to somewhat run counter to my interpretation of this part of the homework:

      IntList is a dictionary with keys

      I wouldn't interpret anonymous arrays as "dictionary with keys", especially if the keys have the names value and next.

        > I wouldn't interpret anonymous arrays as "dictionary with keys", especially if the keys have the names value and next.

        Depends how you implement "dictionaries".

        The arrays here are homogenous 2-tuples with constant indices value=0 and next=1

        So $aref->[VALUE] is just another implementation (just far more efficient than hashes are) (updated)

        not sure what the generic and neutral definition of "dictionary" is, but imho it's not necessarily a hashmap like in perl

        Lisp for instance has name=>value pairs implemented as association list.

        But I have to admit that you as a non-emacs user might be handicapped in this respect ;-p

        xD

        Cheers Rolf
        (addicted to the Perl Programming Language and ☆☆☆☆ :)

        PS: Je suis Charlie!

        update

        Added WP links