[perl #132780] Issue with one and none Junctins when passed as parameter

[email protected] ("shinobi.cl .")
Newsgroups perl.perl6.compiler
Message-ID <[email protected]>
# New Ticket Created by  "shinobi.cl ." 
# Please include the string:  [perl #132780]
# in the subject line of all future correspondence about this issue. 
# <URL: https://rt.perl.org/Ticket/Display.html?id=132780 >


I need the junction to be applied inside the regex, not at time of
parameter binding, so i use the type Mu.


`
> my Regex @rxs = (rx/3/, rx/2/); my @L = (1 .. 23); sub search(Mu $r where
Regex) { grep $r, :v, @L }; say search( any(@rxs) );
(2 3 12 13 20 21 22 23)

> my Regex @rxs = (rx/3/, rx/2/); my @L = (1 .. 23); sub search(Mu $r where
Regex) { grep $r, :v, @L }; say search( all(@rxs) );
(23)

> my Regex @rxs = (rx/3/, rx/2/); my @L = (1 .. 23); sub search(Mu $r where
Regex) { grep $r, :v, @L }; say search( one(@rxs) );
Constraint type check failed in binding to parameter '$r'; expected
anonymous constraint to be met but got Junction (one(rx/3/, rx/2/))
  in sub search at <unknown file> line 1
  in block <unit> at <unknown file> line 1

> my Regex @rxs = (rx/3/, rx/2/); my @L = (1 .. 23); sub search(Mu $r where
Regex) { grep $r, :v, @L }; say search( none(@rxs) );
Died with X::TypeCheck::Binding::Parameter
  in sub search at <unknown file> line 1
  in block <unit> at <unknown file> line 1

>

`

Now, removing Mu, just because :). When used with none, a strange warning
message appears

> my Regex @rxs = (rx/3/, rx/2/); my @L = (1 .. 23); sub search($r where
Regex) { grep $r, :v, @L }; say search( any(@rxs) );
(3 13 23)
(2 12 20 21 22 23)
> my Regex @rxs = (rx/3/, rx/2/); my @L = (1 .. 23); sub search($r where
Regex) { grep $r, :v, @L }; say search( all(@rxs) );
(3 13 23)
(2 12 20 21 22 23)
> my Regex @rxs = (rx/3/, rx/2/); my @L = (1 .. 23); sub search($r where
Regex) { grep $r, :v, @L }; say search( one(@rxs) );
(3 13 23)
(2 12 20 21 22 23)
> my Regex @rxs = (rx/3/, rx/2/); my @L = (1 .. 23); sub search($r where
Regex) { grep $r, :v, @L }; say search( none(@rxs) );
(3 13 23)
(2 12 20 21 22 23)
No such method 'handled' for invocant of type 'Bool'

>

-- 
-shinobi.cl-
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.