Thank you, yary.

I'm not that familiar with PDL data structures, although they look
interesting. Arrays in R are pretty straight-forward.

https://cran.r-project.org/doc/manuals/r-release/R-intro.html#Arrays-and-matrices



On Sun, Apr 14, 2019 at 10:37 AM yary <not....@gmail.com> wrote:
>
> I don't know much about PDL (the Perl Data Lanuage) but I do remember that 
> the semicolon as a "higher-level" array separator in P6 is a nod to PDL. It 
> is a bit of stub feature until someone needs it and specs out, prototypes 
> more of that data-slicing style. It's likely under-documented due to that 
> history.
>
> -y
>
>
> On Sun, Apr 14, 2019 at 10:29 AM Joseph Brenner <doom...@gmail.com> wrote:
>>
>> Richard Hainsworth <rnhainswo...@gmail.com> wrote:
>> > A semicolon is the syntax used for multidimensional arrays.
>> >
>> > See https://docs.perl6.org/language/subscripts#Multiple_dimensions
>>
>> Thanks.  I was trying to help Bill with that question, and I couldn't
>> quite see what was going on there.   You can't really do a web search
>> on "<computer language>" and ";"  and expect to learn anything.
>>
>> And reading through that section on multidimensional arrays, it
>> doesn't immediately leap out why Bill would be seeing this behavior.
>> It's mostly a discussion of dereferencing complex data structures, not
>> creating them.   Where it does create multiple levels it uses the
>> comma.
>>
>>
>> Richard Hainsworth <rnhainswo...@gmail.com> wrote:
>> > A semicolon is the syntax used for multidimensional arrays.
>> >
>> > See https://docs.perl6.org/language/subscripts#Multiple_dimensions
>> >
>> >
>> > On 14/04/2019 15:07, William Michels via perl6-users wrote:
>> >> Hello,
>> >>
>> >> I've been working through Patrick Michaud's excellent videos from the
>> >> The Perl Conference 2016. At about 35:45 of the following 2016 video
>> >> (Part 1 of 2), Patrick discusses arrays:
>> >>
>> >> https://www[dot]youtub[dot]com/watch?v=ySch4xpoPA0
>> >>
>> >> At this point in the video, Patrick also discusses push() and pop()
>> >> calls on arrays. For practice I tried pushing and popping strings in
>> >> the REPL. However, I discovered an unusual property when I misplaced a
>> >> semicolon during call to push(). See what happens below when a
>> >> semicolon is included within the parentheses of push():
>> >>
>> >> "This is Rakudo version 2018.12 built on MoarVM version 2018.12
>> >> implementing Perl 6.d."
>> >>
>> >>> my @countries = "UK", "Spain", "Slovakia", "Sweden";
>> >> [UK Spain Slovakia Sweden]
>> >>> @countries.push("Finland");
>> >> [UK Spain Slovakia Sweden Finland]
>> >>> my @countries = "UK", "Spain", "Slovakia", "Sweden";
>> >> [UK Spain Slovakia Sweden]
>> >>> @countries.push("Finland";)
>> >> [UK Spain Slovakia Sweden (Finland) ()]
>> >>> my @countries = "UK", "Spain", "Slovakia", "Sweden";
>> >> [UK Spain Slovakia Sweden]
>> >>> @countries.push("Finland";);
>> >> [UK Spain Slovakia Sweden (Finland) ()]
>> >>
>> >> Misplacing a semicolon within the push() call adds two elements to the
>> >> array. When I examine these two elements, I see that they are both
>> >> "List" elements:
>> >>
>> >>> @countries[3].WHAT
>> >> (Str)
>> >>> @countries[4].WHAT
>> >> (List)
>> >>> @countries[5].WHAT
>> >> (List)
>> >>
>> >> Apparently, multiple semicolons within push() will add multiple list
>> >> elements to the end of the intended array:
>> >>
>> >>> my @countries = "UK", "Spain", "Slovakia", "Sweden";
>> >> [UK Spain Slovakia Sweden]
>> >>> @countries.push("Finland";;);
>> >> [UK Spain Slovakia Sweden (Finland) () ()]
>> >>> my @countries = "UK", "Spain", "Slovakia", "Sweden";
>> >> [UK Spain Slovakia Sweden]
>> >>> @countries.push(;;;;;;;);
>> >> [UK Spain Slovakia Sweden () () () () () () () ()]
>> >>
>> >> It is surprising to me that "List" elements are appended to the array
>> >> with push() as described above. If one tries to add one or more
>> >> elements via indexing and there 'aren't enough elements' so to speak
>> >> (by accident or design), the array grows by inserting "Any" elements,
>> >> not "List" elements:
>> >>
>> >>> my @countries = "UK", "Spain", "Slovakia", "Sweden";
>> >> [UK Spain Slovakia Sweden]
>> >>> @countries[5] = "Finland";
>> >> Finland
>> >>> say @countries
>> >> [UK Spain Slovakia Sweden (Any) Finland]
>> >>> my @countries = "UK", "Spain", "Slovakia", "Sweden";
>> >> [UK Spain Slovakia Sweden]
>> >>> @countries[6..7] = "Finland", "Norway";
>> >> (Finland Norway)
>> >>> say @countries
>> >> [UK Spain Slovakia Sweden (Any) (Any) Finland Norway]
>> >>
>> >> I've briefly checked pop() to see if there are similar issues, but 1)
>> >> placing a string within the parentheses of pop() will throw an error,
>> >> and 2) placing a semicolon within the parentheses of pop() will throw
>> >> an error. However, these error message are slightly different. A
>> >> string argument to pop() will result in an error that says "Too many
>> >> positionals passed; expected 1 argument but got 2" while a semicolon
>> >> argument to pop() will result in an error that says "Too many
>> >> positionals passed; expected 1 argument but got 3".
>> >>
>> >>> my @countries = "UK", "Spain", "Slovakia", "Sweden";
>> >> [UK Spain Slovakia Sweden]
>> >>> @countries.pop("Finland")
>> >> Too many positionals passed; expected 1 argument but got 2
>> >>    in block <unit> at <unknown file> line 1
>> >>
>> >>> @countries.pop(;)
>> >> Too many positionals passed; expected 1 argument but got 3
>> >>    in block <unit> at <unknown file> line 1
>> >>
>> >>
>> >> Any help appreciated,
>> >>
>> >> Bill.
>> >>
>> >> William Michels, Ph.D.
>> >>
>> >> PS Thanks to Joe Brenner for talking over this Perl6 code with me.
>> >

Reply via email to