On Fri, Oct 12, 2018 at 11:23 PM ToddAndMargo via perl6-users
<perl6-us...@perl.org <mailto:perl6-us...@perl.org>> wrote:
On 10/12/18 2:35 PM, Curt Tilmes wrote:
>
>
> On Fri, Oct 12, 2018 at 5:08 PM ToddAndMargo via perl6-users
> <perl6-us...@perl.org <mailto:perl6-us...@perl.org>
<mailto:perl6-us...@perl.org <mailto:perl6-us...@perl.org>>> wrote:
>
> >> On 10/12/18 12:52 PM, Curt Tilmes wrote:
> >> > You could make a subset for the List your're trying to
> return:
> >> >
> >> > subset liststrint of List where .[0] ~~ Str &&
.[1] ~~ Int;
> >> > sub RtnOrd( Str $Char --> liststrint) ...
> >>
> >> I am confused.
> >>
> >> I want to get the --> syntax correct for `return $Char,
> ord($Char)`
>
> On 10/12/18 1:49 PM, Brad Gilbert wrote:
> > That would be `List`
> >
> > sub RtnOrd( Str $Char --> List ){ $Char, ord($Char) }
> > say RtnOrd "A"
> > # (A 65)
>
> $ p6 'sub RtnOrd( Str $Char --> List ){return $Char,
ord($Char)}; say
> RtnOrd "A";'
> (A 65)
>
> But "List" does not tell my what is in the list.
>
>
> You can create a brand new type, a subset of Lists where the
first element
> (we refer to with [0]) is of type Str (~~ Str) and the second
element of
> the List
> (we refer to with [1]) is of type Int (~~ Int).
>
> Define it like this:
> subset list-str-int of List where .[0] ~~ Str && .[1] ~~ Int;
>
> then you can say that your routine returns a list that looks like
that:
>
> sub RtnOrd( Str $Char --> list-str-int)
>
Is there any way to say I am return two things: a string and an integer?
On 10/12/18 3:43 PM, Ralph Mellor wrote:
I imagine P6 may one day be changed to do as you suggest.
But for now I think something like this is the closest you'll get:
subset Str_Int of List where Str, Int;
sub foo (--> Str_Int) { return 'a', 42 }
--
raiph
Hi Raiph,
That will have to do. At least it is understandable at a glance.
$ p6 'subset Str_Int of List where Str, Int; sub RtnOrd( Str $Char -->
Str_Int ){return $Char, ord($Char)}; say RtnOrd "A";'
(A 65)
Thank you!
-T