http://qs321.pair.com?node_id=872026


in reply to Does perl6 have a native linked-list data type?

Perl 6 has a Pair type, which holds a key and a value. I think that's rather close to a cons type, which has car and cdr. You can built data structures out of them.

That said, arrays and lists are primitives, and trees can be built out of arrays, pairs or custom classes.

  • Comment on Re: Does perl6 have a native linked-list data type?

Replies are listed 'Best First'.
Re^2: Does perl6 have a native linked-list data type?
by LanX (Saint) on Nov 18, 2010 at 00:14 UTC
    And since Perl6 is supposed to have a very flexible syntax, it shouldn't be too difficult to adapt map, grep and other similar functions in an efficient way without hardcoding linked lists in C.

    Cheers Rolf

      And since Perl6 i supposed to have a very flexible syntax, it shouldn't be too difficult to adapt map, grep and other similar functions in an efficient way without hardcoding linked lists in C.

      That's correct, but I honestly don't understand the point. If you want lists, you just use the built-in lists. In Perl you'd use CONS/Pair only to build more complex data structures, like trees. And if you use that kind of flexibility, a generally overloaded map or grep isn't of much use anymore.

      I've heard there are applications where you need to often insert or remove items from the middle of a list, but somehow I've never needed it in my own code. If I did, the proper perlish way would be o provide an alternative to the Array type, which also implements the Positional role. It would be usable just like an Array, except with different performance charateristics.

        ... That's correct, but I honestly don't understand the point. If you want lists, you just use the built-in lists. ...
        The polymorphism would be useful. Sometime you don't care about the implementation - you just need an object which has some of the properties of an array (like the ability to perform map and grep on it.) In that case you can return a real array or a chain of CONS cells whichever is most convenient.