Realizing I've got two different issues and ideas. Better parameterization for Positional - and maybe even Iterable. To be able to say that for anything that has multiple things, an expected heterogenous mix (not currently possible). "Array" allows saying "everything in it is this type" which is a start.
As for number-of-elements, I'd forgotten that arrays have a `shape` so there is that precedent. But the real issue that started me was Signature's limited return syntax. If the possibilities for the return value were more in line with the possibilities with the argument-possibilities, then we wouldn't be talking about parameterizing Positionals, and Raku could do even more. Like saying "This is a generator that returns a function suitable for sorting, of the 2-element-input kind" sub generate_comparison(MySortSpecifier $how_to_sort --> &(::T, T --> Order:D) ) -y On Sun, Nov 2, 2025 at 2:56 PM yary <[email protected]> wrote: > Or maybe - Raku wants List to be parameterizable, so it can specify the > types of its elements, and those can be either mutable or immutable? > > I also feel like the Array parameterization - and List parameterization - > could add similar features to - specify its ordinality (must be N elements, > or min ... max elements) - and "all elements must be of this type" > existing List[Int] style ... vs "these elements are these types in this > order" which would not have a conflicting syntax of List[Int] meaning "a > single element list with one integer in it" > > -y > > > On Sun, Nov 2, 2025 at 2:47 PM yary <[email protected]> wrote: > >> This got me thinking, "If Raku had a Tuple type, that would be good for >> this- maybe -" >> >> and then I noticed https://raku.land/zef:lizmat/Tuple - a module that >> provides Tuples >> >> "- if we can declare the types of elements of a tuple, in a signature." >> >> - well maybe here we hit the same issue as originally, since we can't >> declare mixed types for an Array, nor any types for a List, perhaps we >> can't do that for a Tuple either? And now I'm half-remembering a discussion >> about this maybe 6+ years ago? >> >> Searching for that got me looking at something related, Signature >> Literals, https://docs.raku.org/language/signatures >> >> etc... I'm not on a machine where I can test this, I imagine it doesn't >> work, and there is already the already-working "MyPair" solution above. >> still here is where I was going- >> >> use Tuple; >> >> sub x(--> Tuple[Bool,Str]) { >> my Str $s = "hello"; >> my Bool $b = True; >> tuple($b, $s); >> } >> >> say x; >> >> -y >> >> >> On Mon, Oct 27, 2025 at 11:57 AM William Michels <[email protected]> >> wrote: >> >>> Wow Tom! >>> >>> I had to correct one line (`my Str $s = "foo";`), >>> >>> then got this return: >>> >>> `MyPair.new(b => Bool::True, s => "foo")` >>> >>> Very cool! >>> >>> Best, Bill. >>> >>> On Oct 27, 2025, at 07:02, Tom Browder <[email protected]> wrote: >>> >>> I don't think you can do what you want exactly. But I certainly may be >>> wrong! >>> >>> Using a pair may do the trick, but my Pair foo outside a Hash is weak. >>> >>> The other way around it is to do something like this I use often: >>> >>> class MyPair { >>> has Bool $.b; >>> has Str $.s; >>> } >>> >>> sub x(--> MyPair) { >>> my Bool $b = True; >>> my Str = "foo"; >>> my $obj = MyPair.new(:$b,:$s); >>> $obj; >>> } >>> >>> say x; # OUTPUT >>> >>> On Mon, Oct 27, 2025 at 05:34 ToddAndMargo via perl6-users < >>> [email protected]> wrote: >>> >>>> On 10/27/25 3:13 AM, Tom Browder wrote: >>>> > On Sun, Oct 26, 2025 at 19:46 ToddAndMargo via perl6-users <perl6- >>>> > [email protected] <mailto:[email protected]>> wrote: >>>> > >>>> > Hi All, >>>> > >>>> > What am I doing wrong here? I want >>>> > two things in my "returns". >>>> > >>>> > >>>> > [2] > sub x() returns Bool,Str {} >>>> > ===SORRY!=== Error while compiling: >>>> > Missing block >>>> > ------> sub x() returns Bool⏏,Str {} >>>> > expecting any of: >>>> > new name to be defined >>>> > >>>> > Yours in confusion, >>>> > -T >>>> > >>>> > >>>> > Return a List of a defined Bool and Str: >>>> > >>>> > sub x(--> List) { >>>> > my Str $s = "hello"; >>>> > my Bool $b = True; >>>> > $b, $s; >>>> > } >>>> > >>>> > say x; >>>> > OUTPUT: (True hello) >>>> > >>>> > -Tom >>>> >>>> Hi Tom, >>>> >>>> Dang. List does not tell me what they are. >>>> >>>> Thank you for the help. >>>> >>>> -T >>>> >>> >>>
