»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_log/perl6 | UTF-8 is our friend! 🦋
Set by Zoffix on 25 July 2018.
Xliff guifa: Is this method in a subclass? 00:00
lizmat Xliff: just switching on my machine after coming back from Köln
lizmat goes to bed
guifa Ha, I’ll throw it all up very shortly (this is probably the last thing to squash and I think I’ve got a big new release for BCP47 with langtag filtering available 00:01
Xliff :)
guifa Aha! Nicely golfs 00:02
tio.run/##K0gtyjH7/z85J7G4WMFRoZqL...GSVp/v8PAA
errrr wait 00:03
I didn’t bless the object in the golfed code one sec
timotimo guifa: you actually declared a multi sub inside class A 00:07
you can't call that with A.new syntax
guifa That’s bad golfing on my part 00:08
I’m definitely using “multi method new ( … )”
Xliff Is there a way to check if a Routine is hidden from backtrace?
m: Routine.^methods.say
camelia (The 'ForeignCode' class is a Rakudo-specific
implementation detail and has no serviceable parts inside The 'ForeignCode' class is a Rakudo-specific
implementation detail and has no serviceable parts inside The 'ForeignCode' class is a Rakudo-spec…
timotimo if you omit the "multi", the existing candidates from parent classes no longer exist 00:09
Xliff m: .say for Routine.^methods
camelia The 'ForeignCode' class is a Rakudo-specific
implementation detail and has no serviceable parts inside
The 'ForeignCode' class is a Rakudo-specific
implementation detail and has no serviceable parts inside
The 'ForeignCode' class is a Rakudo-s…
Xliff WTF?
timotimo ha
m: .name.say for Routine.^methods
camelia <anon>
<anon>
<anon>
<anon>
<anon>
<anon>
<anon>
<anon>
<anon>
<anon>
<anon>
<anon>
<anon>
<anon>
<anon>
<anon>
onlystar
candidates
cando
multi
soft
wrap
unwrap
yada
package
leave
gist
perl
BUILD…
timotimo but the "is it hidden from backtrace?" thing is mixed in via a role 00:10
Xliff HA!
timotimo m: sub foo() is hidden-from-backtrace { }; say foo.^methods
camelia (new Numeric Str sink AT-POS AT-KEY BIND-POS BIND-KEY ASSIGN-POS ASSIGN-KEY STORE push append unshift prepend FALLBACK ords chrs chop chomp iterator Set SetHash Bag BagHash Mix MixHash gist)
timotimo hm
ah
m: sub foo() is hidden-from-backtrace { }; say &foo.^methods
camelia (is-hidden-from-backtrace The 'ForeignCode' class is a Rakudo-specific
implementation detail and has no serviceable parts inside yada The 'ForeignCode' class is a Rakudo-specific
implementation detail and has no serviceable parts inside The 'Forei…
timotimo there it is
Xliff m: sub foo() is hidden-from-backtrace {}; say foo.^roles.name.say 00:11
camelia No such method 'name' for invocant of type 'List'. Did you mean any of these?
none
note
race
take

in block <unit> at <tmp> line 1
timotimo btw the warning message about ForeignCode is because it's trying to call .gist or something on the methods that are on Routine
Xliff m: sub foo() is hidden-from-backtrace {}; say foo.^roles».name
camelia ()
Xliff m: sub foo() is hidden-from-backtrace {}; say foo.^roles
camelia ()
Xliff m: sub foo() is hidden-from-backtrace {}; say &foo.^roles
camelia ((is-hidden-from-backtrace) (Callable))
Xliff m: sub foo() is hidden-from-backtrace {}; say &foo.^roles.contains('is-hidden-from-backtrace') 00:12
camelia Use of uninitialized value of type is-hidden-from-backtrace in string context.
Methods .^name, .perl, .gist, or .say can be used to stringify it to something meaningful.
False
in block <unit> at <tmp> line 1
Use of uninitialized value of typ…
Xliff m: sub foo() is hidden-from-backtrace {}; say &foo.^roles.contains(is-hidden-from-backtrace)
camelia 5===SORRY!5=== Error while compiling <tmp>
Undeclared routine:
is-hidden-from-backtrace used at line 1
Xliff m: sub foo() is hidden-from-backtrace {}; say &foo.^roles».^name
camelia List
Xliff m: sub foo() is hidden-from-backtrace {}; say &foo.^roles».name
camelia No such method 'name' for invocant of type 'is-hidden-from-backtrace'
in block <unit> at <tmp> line 1
Xliff m: sub foo() is hidden-from-backtrace {}; say &foo.^roles.map( *.name ) 00:13
camelia No such method 'name' for invocant of type 'is-hidden-from-backtrace'
in block <unit> at <tmp> line 1
Xliff m: sub foo() is hidden-from-backtrace {}; say &foo.^roles.map( *.^name )
camelia (is-hidden-from-backtrace Callable)
Xliff m: sub foo() is hidden-from-backtrace {}; say &foo.^roles.map( *.^name ).contains( 'is-hidden-from-backtrace' ) 00:13
camelia True
Xliff \o/
timotimo bad idea
Xliff :(
timotimo let me show you :)
Xliff Explain, pls
timotimo m: role is-hidden-from-backtrace-haha-just-kidding { }; sub foo() {}; &foo does is-hidden-from-backtrace-haha-just-kidding; say &foo.^roles.map( *.^name ).contains( 00:14
camelia 5===SORRY!5=== Error while compiling <tmp>
Unable to parse expression in argument list; couldn't find final ')' (corresponding starter was at line 1)
at <tmp>:1
------> 3say &foo.^roles.map( *.^name ).contains(7⏏5<EOL>
expecting …
Xliff m: List.STORE.^roles.map( *.^name ).say
camelia Invocant of method 'STORE' must be an object instance of type 'List', not a type object of type 'List'. Did you forget a '.new'?
in block <unit> at <tmp> line 1
timotimo oops
Xliff m: List.STORE.code.^roles.map( *.^name ).say
camelia Invocant of method 'STORE' must be an object instance of type 'List', not a type object of type 'List'. Did you forget a '.new'?
in block <unit> at <tmp> line 1
timotimo m: role is-hidden-from-backtrace-haha-just-kidding { }; sub foo() {}; &foo does is-hidden-from-backtrace-haha-just-kidding; say &foo.^roles.map( *.^name ).contains( 'is-hidden-from-backtrace' )
camelia True
timotimo contains will first stringify the list and then search for the substring in the result 00:15
Xliff Oh. HAHA.
guifa Okay so packaging up all the code is going to be really awkward, but basically here’s what’s the issue
imgur.com/a/j4siKVF
Xliff m: sub foo() is hidden-from-backtrace {}; say 'is-hidden-from-backtrace'∈ &foo.^roles.map( *.^name ) 00:16
camelia True
Xliff :P 00:16
guifa When I added the Str version of new, the named-only one started acting as if it didn’t exist
Xliff m: role is-hidden-from-backtrace-haha-just-kidding { }; sub foo() {}; &foo does is-hidden-from-backtrace-haha-just-kidding; say 'is-hidden-from-backtrace' ∈ &foo.^roles.map( *.^name )
camelia False
guifa And it’ll output the “Found base of “ line no problem, but then never outputs “Called without a string”
(there are no other multi candidates) 00:17
Xliff m: GLOBAL.samewith.^roles.map( *.^name ).say 00:18
camelia No such method 'samewith' for invocant of type 'GLOBAL'
in block <unit> at <tmp> line 1
Xliff BOLLOCKS! I've been fighting that thing in my backtraces all afternoon! 00:19
guifa: First off, all of your arrays in the second multi will need "is copy" at the end. 00:20
Otherwise it will complain about modifying the immutable 00:21
secondly, how are you invoking if you want to trigger the second?
guifa Triggering the second using only named arguments and no Str
timotimo you'll want "proto method new(|) {*}" in your class 00:22
guifa Per the docs, named arguments take precedence over positional
timotimo methods will always take any amount of named arguments, though
Xliff: are you sure push will not succeed there? 00:24
guifa Push definitely works there :-) 00:25
Xliff gist.github.com/Xliff/74a448e07fed...8bd14a41d8
Oh. Nevermind.
^^ See the bane of my existence.
Cannot call method from outside of a GTK:: object (Any::IterateOneWithoutPhasers.pull-one) 00:26
WTF?!?
Why is that appearing in my backtrace!?
timotimo btw the internals try for is-hidden-from-backtrace using if $foo.^can("is-hidden-from-backtrace") && $foo.is-hidden-from-backtrace, iirc 00:27
Xliff So gisted code returns Any::IterateOneWithoutPhasers.pull-one, and I don't want that.
timotimo what do you want to do with the calling method once you have it? 00:28
guifa So I did a $foo = LanguageTagFilter and I think I found the issue 00:29
Xliff timotimo: Insure that it doesn't come from user code that doesn't start with "GTK::"
guifa Can’t resolve caller because I think it wants me to supply all of those to match since they don’t have default values? 00:30
timotimo m: package A { our sub call-into($other-thing) { $other-thing() } }; package B { our sub call-into($other-thing) { $other-thing } }; sub tell-me-caller { say CLIENT::.^keys }; A::call-into({ B::call-into({ tell-me-caller }) }); 00:31
camelia ( no output )
timotimo m: package A { our sub call-into($other-thing) { $other-thing() } }; package B { our sub call-into($other-thing) { $other-thing() } }; sub tell-me-caller { say CLIENT::.^keys }; A::call-into({ B::call-into({ tell-me-caller }) });
camelia Cannot invoke this object (REPR: Null; VMNull)
in sub tell-me-caller at <tmp> line 1
in block at <tmp> line 1
in sub call-into at <tmp> line 1
in block <unit> at <tmp> line 1
timotimo m: package A { our sub call-into($other-thing) { $other-thing() } }; package B { our sub call-into($other-thing) { $other-thing() } }; sub tell-me-caller { say CLIENT::.WHAT }; A::call-into({ B::call-into({ tell-me-caller }) });
camelia Cannot invoke this object (REPR: Null; VMNull)
in sub tell-me-caller at <tmp> line 1
in block at <tmp> line 1
in sub call-into at <tmp> line 1
in block <unit> at <tmp> line 1
timotimo m: package A { our sub call-into($other-thing) { $other-thing() } }; package B { our sub call-into($other-thing) { $other-thing() } }; sub tell-me-caller { say CLIENT::&ROUTINE }; A::call-into({ B::call-into({ tell-me-caller }) });
camelia 5===SORRY!5=== Error while compiling <tmp>
Malformed lookup of ::&ROUTINE; please use ::('&ROUTINE'), ::{'&ROUTINE'}, or ::<&ROUTINE>
at <tmp>:1
------> 3g() } }; sub tell-me-caller { say CLIENT7⏏5::&ROUTINE }; A::call-into({ B::call-in…
timotimo m: package A { our sub call-into($other-thing) { $other-thing() } }; package B { our sub call-into($other-thing) { $other-thing() } }; sub tell-me-caller { say CLIENT::('&ROUTINE') }; A::call-into({ B::call-into({ tell-me-caller }) });
camelia Cannot invoke this object (REPR: Null; VMNull)
in sub tell-me-caller at <tmp> line 1
in block at <tmp> line 1
in sub call-into at <tmp> line 1
in block <unit> at <tmp> line 1
timotimo hm. i wonder. 00:32
guifa Okay no, giving everything default values didn’t work. 00:33
timotimo did you try the "proto method new" one? 00:34
guifa I did
Cannot resolve caller new(Intl::BCP47::LanguageTagFilter: :variants(Array), :language(Language), :region(Region), :script(WildcardScript)); none of these signatures match: 00:35
timotimo named arguments are always optional, so their default value is just their corresponding type object
guifa (Intl::BCP47::LanguageTagFilter $: Language :$language = { ... }, Language :@languages = { ... }, Region :$region = { ... }, Region :@regions = { ... }, Script :$script = { ... }, Script :@scripts = { ... }, Variant :$variant = { ... }, Variant :@variants = { ... }, PrivateUse :@privateuses = { ... }, *%_)
timotimo i think i'd need to see more code for that
guifa OMG 00:36
guifa *hates* the typing system sometimes 00:36
Finally found it
I was passing an array of Variants
timotimo oh 00:37
guifa but not an Array[Variant]
timotimo well, that doesn't match Variant :$variant 00:37
timotimo oh, Variants 00:37
er, variants
yeah, nominal typing system
guifa I wish there were a way to capture that and allow that through 00:38
timotimo with a constraint that says "all elements of this need to be Variant"?
guifa I mean I can do that with a where
But I’ve hit this a few times before 00:39
timotimo if there's no other side effects until then, you can also explode later when one of the entries isn't a Variant
guifa Maybe an autocasting of some sort where Variant() @foo is copy; will attempt to create a Positional[Variant]
timotimo i could kind of see that 00:40
guifa I’m not sure what the best syntax would be, but it would definitely help with the DWIT concept
DWIM*
I’ll do a where restrain for now 00:41
timotimo Xliff: i wonder if putting a dynamic variable into the GTK:: packages would make it accessible through CALLERS:: or just the variable itself 00:43
Xliff timotimo: How would it work with a dynvar? 00:47
I mean, how would the failure case look? 00:48
timotimo m: say $*FOO ~~ Failure
camelia True
Xliff Oh.
LOL!
timotimo: How would that work inside of a class? 00:51
m: class A { my $*A; }
camelia ( no output )
dominix m: say ((A, B, C,D) X=>1); 00:52
camelia 5===SORRY!5=== Error while compiling <tmp>
Undeclared names:
A used at line 1
B used at line 1
C used at line 1
D used at line 1
guifa finally!
Xliff m: class A { my $*A; submethod BUILD { $*A = True; }; method a { $*A.say }; }; A.new
camelia Dynamic variable $*A not found
in submethod BUILD at <tmp> line 1
in block <unit> at <tmp> line 1
guifa does a little dance
dominix m: say <(A, B, C,D) X=>1>;
camelia 5===SORRY!5=== Error while compiling <tmp>
Two terms in a row
at <tmp>:1
------> 3say <(A, B, C,D) X=>7⏏051>;
expecting any of:
infix
infix stopper
postfix
statement end
statement…
Xliff guifa++
m: class A { my $*A = True; method a { $*A.say }; }; A.new
camelia ( no output )
dominix m: say (<A, B, C,D> X=>1);
camelia (A, => 1 B, => 1 C,D => 1)
Xliff m: class A { my $*A = True; method a { $*A.say }; }; A.new.a 00:53
camelia Dynamic variable $*A not found
in method a at <tmp> line 1
in block <unit> at <tmp> line 1
dominix m: say (<A, B, C, D> X=>1);
camelia (A, => 1 B, => 1 C, => 1 D => 1)
Xliff m: class A { my $*A = True; method a { $*A = 1; $*A.say }; }; A.new.a 00:53
camelia Dynamic variable $*A not found
in method a at <tmp> line 1
in block <unit> at <tmp> line 1
dominix can someone explain me this weird X=> thing in this exemple
Xliff dominix: which example?
dominix m: say (<A, B, C, D> X=>1);
camelia (A, => 1 B, => 1 C, => 1 D => 1)
Xliff X is cross operator. 00:54
m: say (<A B C D> X (1, 2, 3))
camelia ((A 1) (A 2) (A 3) (B 1) (B 2) (B 3) (C 1) (C 2) (C 3) (D 1) (D 2) (D 3))
dominix ha ok, at least I got the name of this thing 00:55
m: say (<A, B, C, D> X(1));
camelia ((A, 1) (B, 1) (C, 1) (D 1))
Xliff m: say (<A B C D> X=>1);
camelia (A => 1 B => 1 C => 1 D => 1)
lookatme_q m: say (<A B C D> X=> 1); 00:56
camelia (A => 1 B => 1 C => 1 D => 1)
Xliff dominix: If using <>, you do NOT need commas. 00:56
m: <Todd Tim Timmah!>.say
camelia (Todd Tim Timmah!)
dominix Xliff, OK 00:57
Xliff m: (<A B C D> X 1).say
camelia ((A 1) (B 1) (C 1) (D 1))
dominix m: say (<A B C D> X=>1, <E F G H> X=>2, <I J K> X=>3); 00:58
camelia (A => 1 => 2 => 3 A => 1 => (I J K) => 3 A => (E F G H) => 2 => 3 A => (E F G H) => (I J K) => 3 B => 1 => 2 => 3 B => 1 => (I J K) => 3 B => (E F G H) => 2 => 3 B => (E F G H) => (I J K) => 3 C => 1 => 2 => 3 C => 1 => (I J K) => 3 C => (E F G H) => …
Geth doc: 897388637f | cfa++ | doc/Type/IO/Path.pod6
Formatting.
synopsebot Link: doc.perl6.org/type/IO::Path
Xliff dominix: Now you are trying to cross with a list, which is why that came out so weird. 01:00
W say ( (<A B C D> X=>1), (<E F G H> X=>2), (<I J K> X=>3));
m: say ( (<A B C D> X=>1), (<E F G H> X=>2), (<I J K> X=>3));
camelia ((A => 1 B => 1 C => 1 D => 1) (E => 2 F => 2 G => 2 H => 2) (I => 3 J => 3 K => 3))
dominix m: say (<A B C D> X=>1),(<E F G H> X=>2), (<I J K> X=>3);
camelia (A => 1 B => 1 C => 1 D => 1)(E => 2 F => 2 G => 2 H => 2)(I => 3 J => 3 K => 3)
Xliff m: say ( |(<A B C D> X=>1), |(<E F G H> X=>2), |(<I J K> X=>3));
camelia (A => 1 B => 1 C => 1 D => 1 E => 2 F => 2 G => 2 H => 2 I => 3 J => 3 K => 3)
Xliff ^ Flattened. 01:01
dominix m: say ((<A B C D> X=>1),(<E F G H> X=>2), (<I J K> X=>3)).flat;
camelia (A => 1 B => 1 C => 1 D => 1 E => 2 F => 2 G => 2 H => 2 I => 3 J => 3 K => 3)
dominix haaa OK
Xliff m: say |( (<A B C D> X=>1), (<E F G H> X=>2), (<I J K> X=>3)); # Also flattened
camelia (A => 1 B => 1 C => 1 D => 1)(E => 2 F => 2 G => 2 H => 2)(I => 3 J => 3 K => 3)
Xliff Or now.
not
Yeah. My mistake. That makes 3 lists, not one
dominix m: say ( |(<A B C D> X=>1), |(<E F G H> X=>2), |(<I J K> X=>3)); 01:02
camelia (A => 1 B => 1 C => 1 D => 1 E => 2 F => 2 G => 2 H => 2 I => 3 J => 3 K => 3)
dominix m: say ((<A B C D> X=>1),(<E F G H> X=>2), (<I J K> X=>3)).flat; 01:03
camelia (A => 1 B => 1 C => 1 D => 1 E => 2 F => 2 G => 2 H => 2 I => 3 J => 3 K => 3)
dominix the .flat operator has more meaning to me than this (|()) thing
Xliff Is there a way to detect if the routine is in a role? 01:06
dominix the doc on X "cross metaoperator" is very light 01:07
Xliff m: class A { method a { ?&ROUTINE.HOW.^name.say }; }; A.new.a
camelia 5===SORRY!5=== Error while compiling <tmp>
Undeclared name:
ROUTINE used at line 1. Did you mean 'Routine'?
Xliff m: class A { method a { &?ROUTINE.HOW.^name.say }; }; A.new.a
camelia Perl6::Metamodel::ClassHOW
Xliff m: role B { method b { &?ROUTINE.HOW.^name.say }; }; { class A does B { method a { &?ROUTINE.HOW.^name.say }; }; A.new.a; A.new.b 01:08
camelia 5===SORRY!5=== Error while compiling <tmp>
Missing block
at <tmp>:1
------> 3INE.HOW.^name.say }; }; A.new.a; A.new.b7⏏5<EOL>
expecting any of:
statement end
statement modifier
statement modifier loo…
Xliff m: role B { method b { &?ROUTINE.HOW.^name.say }; }; class A does B { method a { &?ROUTINE.HOW.^name.say }; }; A.new.a; A.new.b
camelia Perl6::Metamodel::ClassHOW
Perl6::Metamodel::ClassHOW
Geth doc: 7350b35230 | cfa++ | 2 files
Spelling.
Xliff m: role B { method b { &?ROUTINE.name.say }; }; class A does B { method a { &?ROUTINE.HOW.^name.say }; }; A.new.a; A.new.b
camelia Perl6::Metamodel::ClassHOW
b
guifa How do you test for die in the testing module? 01:24
(nok [something that dies] kills the testing ha) 01:25
timotimo dies-ok
or lives-ok
manwar Just installed rakudo-star-2018.10.tar.gz using the instruction on perl6.org/downloads/ 01:26
timotimo hi mohammad :) 01:27
manwar Hi TimoTimo :-)
However when I do manwar@ubuntu:~/rakudo-star-2018.10$ perl6 -v This is Rakudo version 2016.04 built on MoarVM version 2016.04 implementing Perl 6.c.
why does it say 2016.04 01:28
timotimo sounds like you may have installed a rakudo via your package manager
manwar most likely...how can I clean up?
timotimo not exactly sure what the package would be called on ubuntu, maybe it's "apt-get uninstall rakudo"? 01:29
manwar good guess...let me try
timotimo other things to try, "perl6" or "rakudo-star"
also, maybe it's apt-get purge rather than uninstall? i haven't been on a debian-like system in ages 01:30
manwar It can't find any package called rakudo 01:48
manwar@ubuntu:~/rakudo-star-2018.10$ sudo apt-get remove rakudo Reading package lists... Done Building dependency tree Reading state information... Done Package 'rakudo' is not installed, so not removed 0 upgraded, 0 newly installed, 0 to remove and 257 not upgraded.
timotimo have you tried "perl6" or "rakudo-star"? 01:52
if there's a separate package "moarvm", it should also remove anything that uses that along with it
Xliff manwar: "dpkg -l rakudo\*" 01:53
Also
manwar: "dpkg -l perl6\*"
manwar dpkg-query: no packages found matching rakudo* 01:55
dpkg-query: no packages found matching perl6* 01:56
Xliff manwar: "cd ~; which perl6" 01:57
timotimo OK, maybe try "which perl6"
yes
Xliff Or maybe "~/rakudo-star-2018.10/site/install/bin/perl6 -v" 01:58
I think that's the path.
Xliff dinner & 01:59
manwar I am rebuilding fresh...having dropped the folder containing 2016.10 02:00
Geth doc: f82ad1eecc | cfa++ | doc/Type/IO/Path.pod6
Sort file test list.

Method order should probably follow suit.
02:29
synopsebot Link: doc.perl6.org/type/IO::Path
Geth doc: 7c43c864a6 | cfa++ | doc/Type/IO/Path.pod6
Expand file test list.
04:04
synopsebot Link: doc.perl6.org/type/IO::Path
guifa Okay I thought I tried resubmitting the PR to add BCP47 I think I messed up 04:22
(not in the file names just not seeing it as a pending PR) 04:25
Xliff m: $*PERL.compiler.version.say 05:18
camelia v2018.12.311.gd.6563816.e
dominix_ is there in perl6 something like perl5 B::Deparse ? 06:04
dominix_ trying to understand obscure code like : { given .comb(/<[A..Z0..9]>+/) { %map{.[0..*-2]} = .[*-1] xx (.elems - 1) } } for @B; 06:06
@B contains text lines, like "A, E, I, O, U, L, N, R, S, T 1","B, C, M, P 3" 06:07
%map is an empty hash, my %map
jmerelo releasable6: status 06:08
releasable6 jmerelo, Next release will happen when it's ready. 4 blockers. 175 out of 311 commits logged (⚠ 1 warnings)
jmerelo, Details: gist.github.com/13fdfeb64080dafcbb...3c2a0ccdf1
dominix_ my @B=("Letter Value","A, E, I, O, U, L, N, R, S, T 1","D, G 2","B, C, M, P 3","F, H, V, W, Y 4","K 5","J, X 8","Q, Z 10",);
guifa dominix_: I’m working up a little thing to show you 06:17
Xliff { .say } for <A B C> 06:18
evalable6 A
B
C
Xliff Well shit.
m: -> $a, $b { .say } for <A B C> X <D E F>
camelia (Any)
Too few positionals passed; expected 2 arguments but got 1
in block <unit> at <tmp> line 1

(Any)
(Any)
(Any)
Xliff m: { .say } for <A B C> X <D E F>
camelia (A D)
(A E)
(A F)
(B D)
(B E)
(B F)
(C D)
(C E)
(C F)
Xliff dominix: { given .comb(/<[A..Z0..9]>+/) { %map{.[0..*-2]} = .[*-1] xx (.elems - 1) } } for @B; is better written as 06:20
for @B { my @a = $_.comb(/<[A..Z0..9+/); %map { $_.[0 .. *-2] = $_.[*-1] xx (@a.elems - 1) } 06:22
m: @a = <A B C>; (%map { .[0..*-2] } = @a[*-1] xx 3).say 06:23
camelia 5===SORRY!5=== Error while compiling <tmp>
Variable '@a' is not declared
at <tmp>:1
------> 3<BOL>7⏏5@a = <A B C>; (%map { .[0..*-2] } = @a[*
Xliff m: my @a = <A B C>; (%map { .[0..*-2] } = @a[*-1] xx 3).say
camelia 5===SORRY!5=== Error while compiling <tmp>
Variable '%map' is not declared. Did you mean any of these?
&map
Map

at <tmp>:1
------> 3my @a = <A B C>; (7⏏5%map { .[0..*-2] } = @a[*-1] xx 3).say
Xliff m: my @a = <A B C>; (map { .[0..*-2] } = @a[*-1] xx 3).say
camelia 5===SORRY!5=== Error while compiling <tmp>
Missing comma after block argument to map
at <tmp>:1
------> 3 B C>; (map { .[0..*-2] } = @a[*-1] xx 37⏏5).say
Xliff m: my @a = <A B C>; (map { .[0..*-2] }, @a[*-1] xx 3).say
camelia (() () ())
Xliff m: my @a = <A B C>; {% map { .[0..*-2] } = @a[*-1] xx 3) 06:24
camelia 5===SORRY!5=== Error while compiling <tmp>
Two terms in a row
at <tmp>:1
------> 3my @a = <A B C>; {%7⏏5 map { .[0..*-2] } = @a[*-1] xx 3)
expecting any of:
infix
infix stopper
statement end
Xliff m: my @a = <A B C>; {map { .[0..*-2] } = @a[*-1] xx 3)
camelia 5===SORRY!5=== Error while compiling <tmp>
Missing comma after block argument to map
at <tmp>:1
------> 3B C>; {map { .[0..*-2] } = @a[*-1] xx 37⏏5)
Xliff m: my @a = <A B C>; {map { .[0..*-2] } = @a[*-1] xx 3;
camelia 5===SORRY!5=== Error while compiling <tmp>
Missing comma after block argument to map
at <tmp>:1
------> 3B C>; {map { .[0..*-2] } = @a[*-1] xx 37⏏5;
Xliff Yeah. That's a sign it's time for bed. 06:25
That %map is doing me in.
m: "Now is the time for all good men to come to the aid of their country"..comb(/<[A..Z0..9]>+/) 06:26
camelia WARNINGS for <tmp>:
Useless use of ".." in expression "\"Now is the time for all good men to come to the aid of their country\"..comb(/<[A..Z0..9]>+/)" in sink context (line 1)
Too few positionals passed; expected 2 or 3 arguments but got 1
in…
Xliff m: "Now is the time for all good men to come to the aid of their country".comb(/<[A..Z0..9]>+/)
camelia ( no output )
Xliff m: "Now is the time for all good men to come to the aid of their country".comb(/<[A..Z0..9]>+/).say
camelia (N)
Xliff m: "Now is the Time for all Good men to come to the aid of their country".comb(/<[A..Z0..9]>+/).say
camelia (N T G)
Xliff So.... 06:27
m: .comb(/<[A..Z0..9]>+/).say == Search invocant for all capital letters and numbers and put them in an array in the order they were found.
camelia 5===SORRY!5=== Error while compiling <tmp>
Two terms in a row
at <tmp>:1
------> 3ers and numbers and put them in an array7⏏5 in the order they were found.
expecting any of:
infix
infix stopper
postf…
guifa tio.run/##hVTZUhsxEHxef8UUkMIQecHk...WkbT2k9BJ7
czfLmNRhSFURpirBYx6YCIyZ1n3VXQu24tXdbOi2ZUgSgN3ZWRSsjUFGYV@7pKHGKOf9WcpxxqyVqlIyAUJSNRda1HinxlgkgYZEBS5yNIz3uIaw8Xfdq/sUBXvTrjHNXrsrSGu7dJXaHAZz2UtMaJTdK4ef1wkOrSeG3JyqNx4kjX9CBDyR4b08sLGE084OqGBVvHt3WEExJBH2AadgRi84ygbwamW@N8NMsZonmdJRiA9jYFc0wuvMMQROFNj@MzuL3Z2jmfoA/x2WarfU5DOBmz5cxRi9piHjq1Fk6g3wG4P7yNd@Zxj57LZIe4ZOoE0thQxjp3lPNQmiaktQs95CzcluEezpnIkF/xiMaiXGiG78BwVgQE/7KR8pMgaNKIJnhOTs/@rjrT6R8
Eek, didn’t realize that URL was going to be so big 06:28
sorry
Xliff :)
You can always pastebin the URL! :D
Still can't get that link to work. 06:29
guifa pastebin.com/XNPVCNnC
Although for some reason I am not QUITE getting the same result 06:30
Xliff guifa++
guifa err duh I see it 06:31
dominix_ amazing 06:32
Xliff slaps forhead.
%map is a freaking hash
dominix_ thanks guys for the explaination
Xliff np
guifa pastebin.com/zA3ymSQZ 06:35
That’s a better one
And gets the correct result
guifa Xliff: I was trying to figure that one out too for a second lol 06:35
Xliff :)
dominix_ %map should look like this {A => 1, B => 3, C => 3, D => 2, E => 1, F => 4, G => 2, H => 4, I => 1, J => 8, K => 5, L => 1, M => 3, N => 1, O => 1, P => 3, Q => 10, R => 1, S => 1, T => 1, U => 1, V => 4, W => 4, X => 8, Y => 4, Z => 10} 06:36
guifa dominix if you look at the last link you sent you should get that result
dominix_ it put weight to some letter (it is use to score words at scrabble) 06:37
dominix_ I guess the use of %map has confused me with map{} 06:39
guifa So I tried to make my language tag module automagically use the latest and greatest language subtag registry direct from IANA. They provide a super easy to process text file that I could have used a phaser to compile-time download and parse 06:41
Make a raw HTTP request and everything to keep dependencies down 06:42
And what do I end up downloading? A file telling me that the file has moved and is now at an HTTPS page =\
Geth doc: 07a56a2457 | (JJ Merelo)++ | doc/Type/Any.pod6
Adds tail refs |1494
06:44
synopsebot Link: doc.perl6.org/type/Any
doc: 39140e37f4 | (JJ Merelo)++ | doc/Type/Any.pod6
Adds iterator refs #1494
SmokeMachine m: sub bla is hidden-from-backtrace {}; say &bla ~~ is-hidden-from-backtrace 06:45
camelia 5===SORRY!5=== Error while compiling <tmp>
Undeclared routine:
is-hidden-from-backtrace used at line 1
dominix_ thanks guifa: 06:46
guifa SmokeMachine: I’m about to upload Fluent if you want to play around with it although the big feature (the number selection) isn’t available 06:52
ufobat_ cfa tadzik wondering if this line needs a 'is rw' github.com/Bailador/Bailador/blob/...text.pm#L7 06:53
SmokeMachine guifa: sure! I’ll take a look when I go back from work! :)
Xliff ufobat_: No, it's this line that needs the "is rw" github.com/Bailador/Bailador/blob/...ext.pm#L12 06:55
ufobat_ ah 06:56
Xliff And definitely want a "FETCH => ->" here github.com/Bailador/Bailador/blob/...ext.pm#L12
ufobat_ those lines are still your code, tadzik :p
thanks Xliff 06:57
Xliff :)
ufobat_ i cant fix it in the next 3 days i am afraid 06:58
Xliff m: class A { has $!a; method a is rw { Proxy.new: FETCH => { $!a }, STORE => -> $, $v { $!a = $v }; }; }; my $a = A.new; $a.a = 4; $a.a.say; $a.a = 2; $a.a.say 07:00
camelia 4
2
Xliff OK, So the FETCH is fine. 07:01
But the method definitely needs the "is rw"
m: class A { has $!a; method a { Proxy.new: FETCH => { $!a }, STORE => -> $, $v { $!a = $v }; }; }; my $a = A.new; $a.a = 4; $a.a.say; $a.a = 2; $a.a.say
camelia Cannot modify an immutable 'Any' type object
in block <unit> at <tmp> line 1
Xliff m: class A { has $!a = 2; method a { Proxy.new: FETCH => { $!a }, STORE => -> $, $v { $!a = $v }; }; }; my $a = A.new; $a.a = 4; $a.a.say; $a.a = 2; $a.a.say 07:02
camelia Cannot modify an immutable Int (2)
in block <unit> at <tmp> line 1
Xliff m: class A { has $!a = 2; method a { Proxy.new: FETCH => { $!a }, STORE => -> $, $v { $!a = $v }; }; }; my $a = A.new; $a.a.say; $a.a = 2; $a.a.say
camelia 2
Cannot modify an immutable Int (2)
in block <unit> at <tmp> line 1
Xliff bed &
guifa SmokeMachine: what’s your username on GH? 07:28
SmokeMachine guifa: FCO 07:36
ufobat_ bisectable6_, help 07:52
bisectable6_ ufobat_, Like this: bisectable6_: old=2015.12 new=HEAD exit 1 if (^∞).grep({ last })[5] // 0 == 4 # See wiki for more examples: github.com/perl6/whateverable/wiki/Bisectable
ufobat_ m: class A { has $!a; method a { Proxy.new: FETCH => { $!a }, STORE => -> $, $v { $!a = $v }; }; }; my $a = A.new; $a.a = 4 07:53
camelia Cannot modify an immutable 'Any' type object
in block <unit> at <tmp> line 1
ufobat_ bisectable6_: old=2017.01 new=HEAD class A { has $!a; method a { Proxy.new: FETCH => { $!a }, STORE => -> $, $v { $!a = $v }; }; }; my $a = A.new; $a.a = 4 07:54
bisectable6_ ufobat_, Bisecting by exit code (old=2017.01 new=d656381). Old exit code: 0
ufobat_, bisect log: gist.github.com/6514fab899ffc19f16...5f991933c3
ufobat_, (2018-11-19) github.com/rakudo/rakudo/commit/7d...6110c43506
Xliff m: my %a = (a => 1, b => 2, c => 3); my %b = ( d => 4, e => 5, f => 6) %a.append(%b); %a.gist.say 08:43
camelia 5===SORRY!5=== Error while compiling <tmp>
Cannot use variable %b in declaration to initialize itself
at <tmp>:1
------> 3 = ( d => 4, e => 5, f => 6) %a.append(%7⏏5b); %a.gist.say
expecting any of:
argument list
Xliff m: my %a = (a => 1, b => 2, c => 3); my %b = ( d => 4, e => 5, f => 6); %a.append(%b); %a.gist.say
camelia {a => 1, b => 2, c => 3, d => 4, e => 5, f => 6}
Xliff m: my %a = (a => 1, b => 2, c => 3); my %b = ( c => 4, e => 5, f => 6); %a.append(%b); %a.gist.say
camelia {a => 1, b => 2, c => [3 4], e => 5, f => 6}
Xliff m: my @a = ('A', 'B', 0, "C"); @a.grep( Int ).say 08:47
camelia (0)
Xliff m: my @a = ('A', 'B', 42, "C"); @a.grep( Int ).say
camelia (42)
Xliff m: my @a = ('A', 'B', 42, "C"); @a.grep( Str ).say
camelia (A B C)
masak Xliff: did you know you can also privmsg with camelia? 08:57
Xliff Yes
tbrowder has anyone seen notice of my version 2 of Date::Names uploaded to cpan? loaded it near mid day (UTC-5) yesterday. 12:59
jkramer m: sub foo { 'lol' }; (foo() xx 3).join.say
camelia lollollol
jkramer Shouldn't this work without the ()?
m: sub foo { 'lol' }; (foo xx 3).join.say
camelia 5===SORRY!5=== Error while compiling <tmp>
Undeclared routine:
xx used at line 1
timotimo jkramer: after a sub, a term is expected, not an infix :)
however
m: sub term:<foo> { 'lol' }; (foo xx 3).join.say 13:00
camelia lollollol
jkramer Ah right, that's kinda :D
timotimo ^- in SDL2::Raw i made SDL_GetTicks a term, not only because it's a no-arguments sub, but also because it tends to be used as a term all over in maths calculations
jkramer *obvious
lizmat twitter.com/perl6_cpan_new/status/...3989143552 # tbrowder 13:02
tbrowder lizmat: thnx. i'm used to seeing msg here but i never saw one. 13:03
lizmat the tweet is done by a different bot 13:04
so it could well be that you didn't see it here
tbrowder lizmat: ref holapi, i found my pr is not merged, pinged josh, hopefully he is ok and will answer. 13:05
lizmat hopes so as well
masak en.wikipedia.org/wiki/Safe_navigat...tor#Perl_6 -- it's odd to see `.?` being mentioned in an article which is otherwise about `?.` 13:41
it almost feels like a mistake that Perl 6's operator is mentioned there at all
jnthn Huh, it's just a spelling difference, no? 13:42
masak (to be painfully clear: the article is about a syntax `$obj?.meth` which returns null (instead of dying) when $obj is null. Perl 6's `$obj.?meth` is about not dying when `.meth` is absent.) 13:43
jnthn Oh
masak jnthn: so, no :)
timotimo the ? is on the side that is allowed to be missing, clearly
masak I know moritz++ is aware of this difference. he's explained it to me more than once ;)
(and I keep forgetting)
timotimo: just as clearly, `?.?` would be for the case when *both* the object and the method are allowed to be missing :P 13:44
timotimo :)
more operators that look like emoji 13:45
jkramer m: my regex lol { 'lol' }; say lol.WHAT 13:54
camelia Too few positionals passed; expected 1 argument but got 0
in regex lol at <tmp> line 1
in block <unit> at <tmp> line 1
jkramer m: my regex lol { 'lol' }; 13:54
camelia ( no output )
jkramer m: my regex lol { 'lol' }; say lol.^name 13:55
camelia Too few positionals passed; expected 1 argument but got 0
in regex lol at <tmp> line 1
in block <unit> at <tmp> line 1
jkramer What? :D
jnthn It's a routine, so you're calling it
jkramer Oh
jnthn &lol
jkramer Well locally I'm getting this: Cannot find method 'match': no method cache and no .^find_method
jnthn m: my regex lol { 'lol' }; say &lol.^name 13:56
camelia Regex
jkramer m: my regex lol { 'lol' }; say lol('lol') 14:00
camelia No such method '!cursor_start' for invocant of type 'Str'
in regex lol at <tmp> line 1
in block <unit> at <tmp> line 1
jkramer m: my regex lol { 'lol' }; say 'lol' ~~ lol
camelia Too few positionals passed; expected 1 argument but got 0
in regex lol at <tmp> line 1
in block <unit> at <tmp> line 1
jkramer m: my regex lol { 'lol' }; say 'lol'.match(lol)
camelia Too few positionals passed; expected 1 argument but got 0
in regex lol at <tmp> line 1
in block <unit> at <tmp> line 1
jkramer m: my regex lol { 'lol' }; say 'lol' ~~ /<lol>/ 14:01
camelia 「lol」
lol => 「lol」
jkramer Is this the only way I can use it?
sena_kun ACCEPTS? 14:02
m: my regex lol { 'lol' }; say 'lol'.ACCEPTS(lol);
camelia Too few positionals passed; expected 1 argument but got 0
in regex lol at <tmp> line 1
in block <unit> at <tmp> line 1
sena_kun m: my regex lol { 'lol' }; say lol.ACCEPTS('lol');
camelia Too few positionals passed; expected 1 argument but got 0
in regex lol at <tmp> line 1
in block <unit> at <tmp> line 1
sena_kun hmm
jkramer Ah wait, it's the same mistake as before :) 14:03
lucasb m: my regex lol { 'lol' }; say 'lol' ~~ &lol
camelia 「lol」
jkramer m: my regex lol { 'lol' }; say 'lol'.match(&lol)
camelia 「lol」
jkramer m: my regex lol { 'lol' }; say 'lol' ~~ &lol
camelia 「lol」
sena_kun yup, and ACCEPTS wants `&` too.
jkramer m: my regex lol { 'lol' }; say &lol.signature 14:05
camelia (Mu: *%_)
mack[m] /join #freenode_#smartos:matrix.org 14:29
woolfy We have hundreds of t-shirts, jackets and hoodies, Perl- and otherwise related. See this album on Flickr: www.flickr.com/photos/wendyga/albu...7043555354 and my blog about it: wendyga.wordpress.com/2019/02/22/t...-t-shirts/ 14:54
El_Che so many tshirts 14:59
Geth doc: fba25f87d7 | cfa++ | doc/Type/IO/Path.pod6
IO::Path: restructure the file test operator section.

Update examples, reference .path.
15:01
synopsebot Link: doc.perl6.org/type/IO::Path
woolfy Claudio Ramirez: sometimes they make me crazy. Crazy shirt. 15:28
choiboi I just implemented all the heart emoji in xikuuky/Avolution-Emoji 15:36
^_^
lizmat choiboi++ # any place we can see progress / try things out ? 15:42
SmokeMachine now Im on Europe, Im sure it will be easier... how can I buy a Camelia? 15:45
lizmat SmokeMachine: visiting any Perl event / PM meeting anytime soon ? 15:46
like GPW / Amsterdam.pm meeting / Niederrhein.pm meeting ? 15:47
SmokeMachine lizmat: Im going to the next London tech meeting...
lizmat when is that ?
SmokeMachine next week, I think...
lizmat sorry, won't be able to give someone a Camelia for you before that :-( 15:48
SmokeMachine yes, next week: www.meetup.com/London-Perl-Mongers...258358558/
lizmat: no problem... Ill find a way... :) when will be that meetings you sad? 15:49
choiboi lizmat: the repos is github.com/XiKuuKy/Avolution-Emoji , if people want to try it out, I'll start up the bot again
lizmat SmokeMachine: GPW act.yapc.eu/gpw2019/ 15:50
Amsterdam.pm every first Tue of the month, except next month due to GPW
(second Tue)
Niederrhein.pm every 3rd Thursday of the month (in Cologne)
SmokeMachine lizmat: I think Ill have to wait to rent a property before getting it... :( but thank you! 15:53
choiboi How long does it take zef/p6 to notice a package has upgraded? (I just released a new version so I could update, but it is still only finding version 0.1.0)
lizmat choiboi: up to 4 hours I seem to recall 15:54
choiboi lizmat: alright, I'll try to install from the local repo so that I can speed this up (for the emojibot)
lizmat :-) 15:55
choiboi lizmat: If you want to try the emojibot, go to #perl6bottest or /msg emojibot , I recommend before using that you read the docs so you know what codes don't work 15:57
Geth doc: a0048653aa | cfa++ | doc/Language/numerics.pod6
Rat degradation example.
16:13
synopsebot Link: doc.perl6.org/language/numerics
choiboi is there anyway to find all lines with a comment on them and print them without writing a regex pattern? 16:19
moritz depends on which language you are parsing, and how precise you want to do that 16:24
$string.contains('#') might be enough, or it might not
lizmat my $a = "#" 16:26
^^ not a comment
choiboi thanks 16:28
moritz in general, you need to parse all quote-like constructs to reliably determine comments 16:46
choiboi moritz: yeah, I'm writing a program to find comments in my code right now. 16:55
lucasb m: dd ((1,2),(3,4)).Set 17:19
camelia Set.new(4,1,3,2)
lucasb m: dd [(1,2),(3,4)].Set
camelia Set.new((1, 2),(3, 4))
lucasb can't get why the different behavior 17:20
with regard lists vs. arrays
jmerelo lucasb: main difference is that Arrays are not immutable. Every element of the array is an item. But I don't think that's got anything to do with it. It's probably just using different constructors. 17:23
jnthn m: dd ((1,2),$(3,4)).Set
camelia Set.new(1,2,(3, 4))
jnthn m: dd ($(1,2),$(3,4)).Set
camelia Set.new((1, 2),(3, 4))
jmerelo jnthn: so I got this right. It's the item thing. 17:24
jmerelo hi-fives himself.
jnthn Yes
lucasb ok, I think I get: array elements are implicty itemized while list elements aren't. right? :) thanks 17:26
*implicit(ly)
jnthn Yes
Xliff \o 18:47
Geth doc: 1fda10edd7 | cfa++ | doc/Language/numerics.pod6
Extend Rat degradation example.
19:03
synopsebot Link: doc.perl6.org/language/numerics
manwar I found this in office perl6 doc, has $.destination = self.origin eq 'Orlando' ?? 'Kampala' !! 'Orlando';, can I force it die if condition is false? 19:12
jmerelo hi, manwar 19:14
El_Che manwar: make it 'is required'
manwar Hi
El_Che docs.perl6.org/type/Attribute.html...s_required 19:15
manwar But I want to add constraint if self.origin is not 'Orlando' then die
jmerelo manwar: you can simply use || die "Need this thing"
manwar: it's better to catch that at the signature level
sena_kun m: class A { has $.a; has $.destination = $.a eq 'Orlando' ?? 'Kampala' !! die 'Too bad'; } say A.new(a => 'Orlando'); say A.new(a => 'Orlandoe');
camelia 5===SORRY!5=== Error while compiling <tmp>
Virtual method call $.a may not be used on partially constructed object (maybe you mean $!a for direct attribute access here?)
at <tmp>:1
------> 3ass A { has $.a; has $.destination = $.a7⏏5 eq…
sena_kun m: class A { has $.a; has $.destination = $!a eq 'Orlando' ?? 'Kampala' !! die 'Too bad'; } say A.new(a => 'Orlando'); say A.new(a => 'Orlandoe'); 19:16
camelia 5===SORRY!5=== Error while compiling <tmp>
Strange text after block (missing semicolon or comma?)
at <tmp>:1
------> 3rlando' ?? 'Kampala' !! die 'Too bad'; }7⏏5 say A.new(a => 'Orlando'); say A.new(a
expecting any of:
sena_kun m: class A { has $.a; has $.destination = $!a eq 'Orlando' ?? 'Kampala' !! die 'Too bad'; }; say A.new(a => 'Orlando'); say A.new(a => 'Orlandoe');
camelia A.new(a => "Orlando", destination => "Kampala")
Too bad
in method at <tmp> line 1
in block <unit> at <tmp> line 1
sena_kun manwar, ^?
manwar Thanks sena_hun, let me try that 19:17
jmerelo m: class A { has $.a; has $.destination where * eq "Orlando" }; my $a = A.new(destination => "Orlando); say $a
camelia 5===SORRY!5=== Error while compiling <tmp>
Cannot use variable $a in declaration to initialize itself
at <tmp>:1
------> 3 = A.new(destination => "Orlando); say $7⏏5a
expecting any of:
double quotes
term
jmerelo m: class A { has $.destination where * eq "Orlando"; }; my $a = A.new(destination => "Orlando); say $a 19:18
camelia 5===SORRY!5=== Error while compiling <tmp>
Cannot use variable $a in declaration to initialize itself
at <tmp>:1
------> 3 = A.new(destination => "Orlando); say $7⏏5a
expecting any of:
double quotes
term
jmerelo m: class A { has $.destination where * eq "Orlando"; }; my $a = A.new(destination => "Orlando"); say $a
camelia A.new(destination => "Orlando")
jmerelo m: class A { has $.destination where * eq "Orlando"; }; my $a = A.new(destination => "Someplace else"); say $a
camelia Type check failed in assignment to $!destination; expected <anon> but got Str ("Someplace else")
in block <unit> at <tmp> line 1
jmerelo manwar: ^^^that's another way 19:19
manwar: you can use "where" to qualify attributes, and also arguments in functions.
manwar Excellent, jmerelo.
Can I also say "is required" with the constraint? 19:20
sena_kun jmerelo, I don't think it is.
manwar, sure.
jmerelo, see:
m: class A { has $.destination where "Orlando" }; say A.new; 19:21
camelia A.new(destination => <anon>)
sena_kun so destination has type of a lambda, but it doesn't work as a guard.
jmerelo manwar: "is required" will say that you need to assign a value; since that balue needs to be "Orlando", that should be taken care of. 19:22
manwar Perfect, sena_kun. 19:22
jmerelo m: class A { has $.destination where * eq "Orlando" is required; }; my $a = A.new(destination => "Someplace else"); say $a
camelia 5===SORRY!5=== Error while compiling <tmp>
Two terms in a row
at <tmp>:1
------> 3{ has $.destination where * eq "Orlando"7⏏5 is required; }; my $a = A.new(destinati
expecting any of:
constraint
infix
jmerelo m: class A { has $.destination is required where * eq "Orlando"; }; my $a = A.new(destination => "Someplace else"); say $a 19:23
camelia Type check failed in assignment to $!destination; expected <anon> but got Str ("Someplace else")
in block <unit> at <tmp> line 1
jmerelo m: class A { has $.destination is required where * eq "Orlando"; }; my $a = A.new; say $a
camelia The attribute '$!destination' is required, but you did not provide a value for it.
in block <unit> at <tmp> line 1
sena_kun m: class A { has $.destination where * eq "Orlando"; }; my $a = A.new(destination => "Orlando"); say $a
camelia A.new(destination => "Orlando")
jmerelo sena_kun: ^^^ now?
sena_kun oops, nevermind me, I am too dumb, sorry. :|
jmerelo m: class A { has $.destination is required where * eq "Orlando"; }; my $a = A.new( destination => "Orlando" ); say $a 19:24
camelia A.new(destination => "Orlando")
jmerelo m: class A { has $.destination where * eq "Orlando" = ''; }; my $a = A.new( destination => "Orlando" ); say $a 19:25
camelia A.new(destination => "Orlando")
jmerelo m: class A { has $.destination where * eq "Orlando" = ''; }; my $a = A.new; say $a
camelia Type check failed in assignment to $!destination; expected <anon> but got Str ("")
in block <unit> at <tmp> line 1
cfa r
er, or*
m: subset OnlyOrlando of Str where * eq "Orlando"; class A { has OnlyOrlando $.destination }; say A.new(destination => "Orlando")
camelia A.new(destination => "Orlando")
cfa vs.
jmerelo m: class A { has $.destination where * eq "Orlando" = ''; }; my $a = A.new( destination => "Someplaceelse" ); say $a
camelia Type check failed in assignment to $!destination; expected <anon> but got Str ("Someplaceelse")
in block <unit> at <tmp> line 1
cfa m: subset OnlyOrlando of Str where * eq "Orlando"; class A { has OnlyOrlando $.destination }; say A.new(destination => "Miami")
camelia Type check failed in assignment to $!destination; expected OnlyOrlando but got Str ("Miami")
in block <unit> at <tmp> line 1
cfa which might be more descriptive
er, add is required as before if necessary
jmerelo TMWTDI 19:26
cfa m: subset OnlyOrlando of Str where * eq "Orlando"; { .say } given class { has OnlyOrlando $.destination }.new: destination => "Orlando" # for jmerelo 19:27
camelia <anon|1>.new(destination => "Orlando")
cfa er, .say needn't be braced there 19:27
rindolf Hi all 19:28
manwar: hi
manwar hi rindolf 19:29
Harzilein gnu time hat ein merkwuerdiges default-ausgabeformat
jmerelo cfa: great!
Harzilein ewin
rindolf manwar: what's new?
rindolf what? 19:30
jmerelo rindolf: manwar has made a pull request to every single CPAN module and now needs another language ;-)
rindolf jmerelo: heh
manwar rindolf, I am simply fighting at the moment 19:31
rindolf manwar: ah, fighting what?
manwar may be one day, I will know enough Perl6 to contribute
I am trying to create a class with 2 attrbutes, where I want add constraint the second attribute should always be smaller than the first attribute 19:33
and both attributes are required
manwar I am new to IRC. I find it hard to share codes here 19:35
irced i don't know perl6 from adam but that sounds a lot like a constructor definition 19:36
discord6 <Rogue> manwar: you can send pastebin/github gist links if it's a long segment of code 19:36
hahainternet i recommend gists, as they can be edited and commented upon
manwar github gist would do, good idea 19:37
irced maybe sub f($n1 $n2 where $n2 < $n1) { } as a constructor function
discord6 <Rogue> alternatively, I run a Discord guild if you'd like to join. Discord supports multi-line messages
<Rogue> Though remember to be courteous, because the channel is bridged and it will come out as one big blob on the IRC side
hahainternet also then you have to support a closed source product 19:38
manwar irced, I am not familiar with that syntax
irced hmm
hahainternet that is attempting to obsolete open source communication platforms
(don't use Slack either ;p)
sena_kun m: class A { has $.a; has $.b; method TWEAK(:$!a!, :$!b!) { die "Too bad" unless $!a.chars > $!b.chars } }; say A.new(a => "abc", b => "ab");
camelia A.new(a => "abc", b => "ab")
discord6 <Rogue> I greatly dislike Discord, but it's part of my initiative to get some new blood involved 19:39
sena_kun m: class A { has $.a; has $.b; method TWEAK(:$!a!, :$!b!) { die "Too bad" unless $!a.chars > $!b.chars } }; say A.new(a => "abc", b => "abab");
camelia Too bad
in method TWEAK at <tmp> line 1
in block <unit> at <tmp> line 1
discord6 <Rogue> Ideally I would be running a Matrix server
irced scratches his chin, his skins peels exposing patches of red subepithelial tissue.
hahainternet irced needs some steroids
manwar sena_kun, you are too fast for me ;-)
hahainternet and Rogue: we need mandatory federation for chat services :(
irced i would settle for a bandaid
sena_kun manwar, well, I was just thinking out loud. :)
hahainternet irced: i've got one in my car :) 19:40
irced m: sub f ($n1 $2 where $n2 < $n1) { put $n2 $n1 }
camelia 5===SORRY!5=== Error while compiling <tmp>
Malformed parameter
at <tmp>:1
------> 3sub f ($n17⏏5 $2 where $n2 < $n1) { put $n2 $n1 }
expecting any of:
constraint
discord6 <Rogue> I've been considering making my own chat platform with p6
irced m: sub f ($n1, $2 where $n2 < $n1) { put $n2 $n1 }
camelia 5===SORRY!5=== Error while compiling <tmp>
Cannot declare a numeric parameter
at <tmp>:1
------> 3sub f ($n1, $27⏏5 where $n2 < $n1) { put $n2 $n1 }
irced m: sub f ($n1, $n2 where $n2 < $n1) { put $n2 $n1 }
camelia 5===SORRY!5=== Error while compiling <tmp>
Two terms in a row
at <tmp>:1
------> 3b f ($n1, $n2 where $n2 < $n1) { put $n27⏏5 $n1 }
expecting any of:
infix
infix stopper
postfix
statement e…
hahainternet irced: you'll need to wrap the where block in a {} 19:41
i think it's normally done using a whatever, right?
Rogue: would be a good project, i'm most interested in what sort of standard would be needed
discord6 <Rogue> you need a comma between $n1 and $n2
irced draws his garrote from his coat pockets, tightens it between two fists, and eyes camelia with unusual interest.
irced nods to hahainternet. 19:41
irced puts the wire back in his coat pocket. 19:42
maybe sub f($n1, $n2 where $n2 < $n1) { } as a constructor function
oops 19:43
discord6 <Rogue> hahainternet: it would be akin to IRC in the sense that you host your own server rather than relying on a centralized service, but I would want to support some of the attractive features Discord has as well
irced checks the wiring in his speech chip.
irced proclaims he is not an andy, and swears on a bible.
manwar sena_kun, how about if the attributes are Int?
irced proceeds to open his skull.
hahainternet Rogue: yeah, a federated service, the problem comes in that there's so many different variations, but none interoperate
i'd like to force them to interoperate by law :) 19:44
discord6 <Rogue> I'm not a GUI guy whatsoever, so I would only make the infrastructure
irced m: sub f($n1 where $n1 >=0) { put $n1 }
camelia ( no output )
sena_kun manwar, you need other method then. `.chars` is for getting a string length in chars. I think, for Int it'll be just your old `>` operator, no?
irced m: sub f($n1 where $n1 >=0) { put $n1 }; f(-1); f(1);
camelia Constraint type check failed in binding to parameter '$n1'; expected anonymous constraint to be met but got Int (-1)
in sub f at <tmp> line 1
in block <unit> at <tmp> line 1
irced m: sub f($n1 where $n1 >=0) { put $n1 }; f(1);
camelia 1
irced m: sub f($n1, $n2 where $n2 >=0) { put $n1 $n2 }; f(1); 19:45
camelia 5===SORRY!5=== Error while compiling <tmp>
Two terms in a row
at <tmp>:1
------> 3sub f($n1, $n2 where $n2 >=0) { put $n17⏏5 $n2 }; f(1);
expecting any of:
infix
infix stopper
postfix
state…
sena_kun class A { has Int $.a; has Int $.b; method TWEAK(Int :$!a!, Int :$!b!) { die "Too bad" unless $!a > $!b } }; say A.new(a => 5, b => 10);
m: class A { has Int $.a; has Int $.b; method TWEAK(Int :$!a!, Int :$!b!) { die "Too bad" unless $!a > $!b } }; say A.new(a => 5, b => 10);
camelia Too bad
in method TWEAK at <tmp> line 1
in block <unit> at <tmp> line 1
sena_kun m: class A { has Int $.a; has Int $.b; method TWEAK(Int :$!a!, Int :$!b!) { die "Too bad" unless $!a > $!b } }; say A.new(a => 5, b => 3);
camelia A.new(a => 5, b => 3)
irced ignores sena_kun's solution and continues to work. 19:46
manwar sena_kun, thanks TWEAK did the job
discord6 <kawaii> Are we not reinventing the wheel for the eighth time? XMPP is all of the things you want. (OSS, federated...)
<Rogue> I have a particular dislike for XML, personally 19:47
<Rogue> Plus it's just something I want to do from the ground up, because that's how I am
hahainternet XMPP is... substantial 19:48
there are improvements that can be made, but few users will be willing to adopt
irced m: sub f($n1, $n2 where $n2 >=0) { put $n1 }; f(1); 19:49
camelia Too few positionals passed; expected 2 arguments but got 1
in sub f at <tmp> line 1
in block <unit> at <tmp> line 1
irced m: sub f($n1, $n2 where $n2 >=0) { put $n1 }; f(1, 2);
camelia 1
hahainternet there needs to be an encryption safe way to ephemerally map phone numbers to an ident too
irced m: sub f($n1, $n2 where $n2 >=$n1) { put $n1 }; f(1, 2);
camelia 1
irced m: sub f($n1, $n2 where $n2 >=$n1) { put $n1 }; f(1, 0);
camelia Constraint type check failed in binding to parameter '$n2'; expected anonymous constraint to be met but got Int (0)
in sub f at <tmp> line 1
in block <unit> at <tmp> line 1
irced exclaims, Eureka!
manwar you see that?
irced 's arm recedes into his back. 19:50
did you all see that?
hahainternet didn't see anything 19:51
you must be hallucinating
irced what's that you say? quiet, i'm trying to listen to hahainternet.
manwar irced, I am confused, is "f" class?
irced no, and I'm not a PERL6 programmer! but if you could just manage to make sub f a constructor function you'll be golden 19:52
any1?
manwar Unfortunately I don't know how to
irced help
bots!
discord6 <Rogue> Chill 19:53
irced pays particular notice to discord6.
irced fumbles with something in his pocket. 19:54
irced looks around for affirmation. 19:55
sena_kun m: class A { has $.a is required; has $.b is required; method new($n1, $n2 where $n2 >=$n1) { self.bless(a => $n1, b => $n2); } }; say A.new(1, 5); A.new(1, 0);
camelia A.new(a => 1, b => 5)
Constraint type check failed in binding to parameter '$n2'; expected anonymous constraint to be met but got Int (0)
in method new at <tmp> line 1
in block <unit> at <tmp> line 1
irced ignores sena_kun's brilliant solution.
manwar irced, I can follow your code now, thanks. Let me try. 19:56
irced grins evilly as sena_kun's work is dismissed by manwar. 19:57
m: class B { method new($n1, $n2 where $n2 >= $n1) { A.new(1,5) }; 19:59
camelia 5===SORRY!5=== Error while compiling <tmp>
Missing block
at <tmp>:1
------> 031, $n2 where $n2 >= $n1) { A.new(1,5) };7⏏5<EOL>
irced m: class B { method new($n1, $n2 where $n2 >= $n1) { A.new(1,5) }};
camelia 5===SORRY!5=== Error while compiling <tmp>
Undeclared name:
A used at line 1
irced m: class B { method new($n1, $n2 where $n2 >= $n1) { B.new(1,5) }};
camelia ( no output )
irced m: class B { method new($n1, $n2 where $n2 >= $n1) { say 'good to go' } }; B.new(1,5); 20:00
camelia good to go
irced m: class B { method new($n1, $n2 where $n2 >= $n1) { say 'good to go' } }; B.new(5,1);
camelia Constraint type check failed in binding to parameter '$n2'; expected anonymous constraint to be met but got Int (1)
in method new at <tmp> line 1
in block <unit> at <tmp> line 1
irced manwar, you catch that?
irced fishes out his pet man-o-war from his aquarium to throw on sena_kun's head. 20:01
did you all see that? 20:02
manwar irced: Too few positionals passed; expected 3 arguments but got 1 20:03
irced m: class B { method new($n1, $n2 where $n2 >= $n1) { say 'good to go' } }; B.new(5,1);
camelia Constraint type check failed in binding to parameter '$n2'; expected anonymous constraint to be met but got Int (1)
in method new at <tmp> line 1
in block <unit> at <tmp> line 1
irced m: class B { method new($n1, $n2 where $n2 >= $n1) { say 'good to go' } }; B.new(1,5);
camelia good to go
irced are you challenging camelia? 20:04
that's good, she's a strumpet anyway
irced leers at camelia.
manwar I dare not 20:05
irced i dunno, i thought i made a class and a constructor there.. but you say no. maybe sena_kun can help.
sena_kun, can you give us something like a page long this time
irced i think he's working on it 20:07
s/he's
sena_kun you likely want to read docs.perl6.org/language/classtut
irced feels schooled.
right
manwar I am exactly reading the same page 20:08
irced m: class dumbCamelia { has $n1; has $n2; method new($n1, $n2 where $n2 > $n1) { return self.bless(:$n1, :$n2); } submethod BUILD(:$n1, :$n2) {} } 20:19
camelia 5===SORRY!5=== Error while compiling <tmp>
Strange text after block (missing semicolon or comma?)
at <tmp>:1
------> 3 $n1) { return self.bless(:$n1, :$n2); }7⏏5 submethod BUILD(:$n1, :$n2) {} }
expecting any of:
infix…
irced m: class dumbCamelia { has $n1; has $n2; method new($n1, $n2 where $n2 >= $n1) { return self.bless(:$n1, :$n2); }; submethod BUILD(:$n1, :$n2) {} } 20:21
camelia ( no output )
irced m: class dumbCamelia { has $n1; has $n2; method new($n1, $n2 where $n2 >= $n1) { return self.bless(:$n1, :$n2); }; submethod BUILD(:$n1, :$n2) {} }; my cammie = dumbCamelia.new(1,5); 20:22
camelia 5===SORRY!5=== Error while compiling <tmp>
Malformed my (did you mean to declare a sigilless \cammie or $cammie?)
at <tmp>:1
------> 3method BUILD(:$n1, :$n2) {} }; my cammie7⏏5 = dumbCamelia.new(1,5);
irced m: class dumbCamelia { has $n1; has $n2; method new($n1, $n2 where $n2 >= $n1) { return self.bless(:$n1, :$n2); }; submethod BUILD(:$n1, :$n2) {} }; my $cammie = dumbCamelia.new(1,5);
camelia ( no output )
irced m: class dumbCamelia { has $n1; has $n2; method new($n1, $n2 where $n2 >= $n1) { return self.bless(:$n1, :$n2); }; submethod BUILD(:$n1, :$n2) {} }; my $cammie = dumbCamelia.new(5,1); 20:22
camelia Constraint type check failed in binding to parameter '$n2'; expected anonymous constraint to be met but got Int (1)
in method new at <tmp> line 1
in block <unit> at <tmp> line 1
irced does his own special hero dance and manages to keep his pants up.
manwar, you see that?
did you all see that? 20:23
irced explains to camelia that andy's don't have rights. 20:24
vrurg irced: are your attributes lack dot in the declaration on purpose?
irced camelia: what do I look like, the Abe Lincoln for andys????? tell it on the mountain.
yeah, what's the dot for anyway? 20:25
vrurg irced: basically, it has to be 'has $.n1'
discord6 <Rogue> the dot twigil generates a method to access that field
<Rogue> if you want it to be private, you'd use an ! 20:26
irced m: class dumbCamelia { has $n1; has $n2; method new($n1, $n2 where $n2 >= $n1) { return self.bless(:$n1, :$n2); }; submethod BUILD(:$n1, :$n2) {} }; my $cammie = dumbCamelia.new(1,5); put "$cammie.n1"
camelia dumbCamelia<78828560>.n1
irced m: class dumbCamelia { has $n1; has $n2; method new($n1, $n2 where $n2 >= $n1) { return self.bless(:$.n1, :$.n2); }; submethod BUILD(:$.n1, :$.n2) {} }; my $cammie = dumbCamelia.new(1,5); put "$cammie.n1" 20:27
camelia 5===SORRY!5=== Error while compiling <tmp>
Virtual method call $.n1 may not be used on partially constructed object (maybe you mean $!n1 for direct attribute access here?)
at <tmp>:1
------> 3(:$.n1, :$.n2); }; submethod BUILD(:$.n17⏏5,…
irced m: class dumbCamelia { has Int $n1; has Int $n2; method new($n1, $n2 where $n2 >= $n1) { return self.bless(:$.n1, :$.n2); }; submethod BUILD(:$.n1, :$.n2) {} }; my $cammie = dumbCamelia.new(1,5); put "$cammie.n1"
camelia 5===SORRY!5=== Error while compiling <tmp>
Virtual method call $.n1 may not be used on partially constructed object (maybe you mean $!n1 for direct attribute access here?)
at <tmp>:1
------> 3(:$.n1, :$.n2); }; submethod BUILD(:$.n17⏏5,…
irced m: class dumbCamelia { has $n1; has $n2; method new($n1, $n2 where $n2 >= $n1) { return self.bless(:$.n1, :$.n2); }; submethod BUILD(:$.n1, :$.n2) {} }; my $cammie = dumbCamelia.new(1,5); 20:28
camelia 5===SORRY!5=== Error while compiling <tmp>
Virtual method call $.n1 may not be used on partially constructed object (maybe you mean $!n1 for direct attribute access here?)
at <tmp>:1
------> 3(:$.n1, :$.n2); }; submethod BUILD(:$.n17⏏5,…
vrurg irced: because accessors are not yet available to construction submethods. use direct attribute access with $!
irced m: class dumbCamelia { has $.n1; has $.n2; method new($n1, $n2 where $n2 >= $n1) { return self.bless(:$.n1, :$.n2); }; submethod BUILD(:$.n1, :$.n2) {} }; my $cammie = dumbCamelia.new(1,5);
camelia 5===SORRY!5=== Error while compiling <tmp>
Virtual method call $.n1 may not be used on partially constructed object (maybe you mean $!n1 for direct attribute access here?)
at <tmp>:1
------> 3(:$.n1, :$.n2); }; submethod BUILD(:$.n17⏏5,…
lucasb almost there :) 20:29
irced m: class dumbCamelia { has $.n1; has $.n2; method new($.n1, $.n2 where $.n2 >= $.n1) { return self.bless(:$.n1, :$.n2); }; submethod BUILD(:$.n1, :$.n2) {} }; my $cammie = dumbCamelia.new(1,5);
camelia 5===SORRY!5=== Error while compiling <tmp>
Virtual method call $.n1 may not be used on partially constructed object (maybe you mean $!n1 for direct attribute access here?)
at <tmp>:1
------> 3(:$.n1, :$.n2); }; submethod BUILD(:$.n17⏏5,…
irced m: class dumbCamelia { has $.n1; has $.n2; method new($.n1, $.n2 where $.n2 >= $.n1) { return self.bless(:$.n1, :$.n2); }; submethod BUILD(:$!.n1, :$!.n2) {} }; my $cammie = dumbCamelia.new(1,5);
camelia 5===SORRY!5=== Error while compiling <tmp>
Malformed parameter
at <tmp>:1
------> 3ss(:$.n1, :$.n2); }; submethod BUILD(:$!7⏏5.n1, :$!.n2) {} }; my $cammie = dumbCame
expecting any of:
constraint
lucasb P6 doesn't has thrigils 20:30
irced m: class dumbCamelia { has $.n1; has $.n2; method new($n1, $n2 where $n2 >= $n1) { return self.bless(:$.n1, :$.n2); }; submethod BUILD(:$!.n1, :$!.n2) {} }; my $cammie = dumbCamelia.new(1,5); 20:31
camelia 5===SORRY!5=== Error while compiling <tmp>
Malformed parameter
at <tmp>:1
------> 3ss(:$.n1, :$.n2); }; submethod BUILD(:$!7⏏5.n1, :$!.n2) {} }; my $cammie = dumbCame
expecting any of:
constraint
irced m: class dumbCamelia { has $.n1; has $.n2; method new($n1, $n2 where $n2 >= $n1) { return self.bless(:$n1, :$n2); }; submethod BUILD(:$!.n1, :$!.n2) {} }; my $cammie = dumbCamelia.new(1,5);
camelia 5===SORRY!5=== Error while compiling <tmp>
Malformed parameter
at <tmp>:1
------> 3less(:$n1, :$n2); }; submethod BUILD(:$!7⏏5.n1, :$!.n2) {} }; my $cammie = dumbCame
expecting any of:
constraint
irced m: class dumbCamelia { has $.n1; has $.n2; method new($n1, $n2 where $n2 >= $n1) { return self.bless(:$.n1, :$.n2); }; submethod BUILD(:$!n1, :$!n2) {} }; my $cammie = dumbCamelia.new(1,5); 20:32
camelia Cannot look up attributes in a dumbCamelia type object
in method n1 at <tmp> line 1
in method new at <tmp> line 1
in block <unit> at <tmp> line 1
irced m: class dumbCamelia { has $.n1; has $.n2; method new($n1, $n2 where $n2 >= $n1) { return self.bless(:$!n1, :$!n2); }; submethod BUILD(:$!n1, :$!n2) {} }; my $cammie = dumbCamelia.new(1,5); 20:33
camelia Cannot look up attributes in a dumbCamelia type object
in method new at <tmp> line 1
in block <unit> at <tmp> line 1
irced m: class dumbCamelia { has $.n1; has $.n2; method new($n1, $n2 where $n2 >= $n1) { return self.bless(:$!n1, :$!n2); }; submethod BUILD(:$.n1, :$.n2) {} }; my $cammie = dumbCamelia.new(1,5);
camelia 5===SORRY!5=== Error while compiling <tmp>
Virtual method call $.n1 may not be used on partially constructed object (maybe you mean $!n1 for direct attribute access here?)
at <tmp>:1
------> 3(:$!n1, :$!n2); }; submethod BUILD(:$.n17⏏5,…
irced m: class dumbCamelia { has $.n1; has $.n2; method new($n1, $n2 where $n2 >= $n1) { return self.bless(:$!n1, :$!n2); }; submethod BUILD(:$!n1, :$!n2) {} }; my $cammie = dumbCamelia.new(1,5); 20:34
camelia Cannot look up attributes in a dumbCamelia type object
in method new at <tmp> line 1
in block <unit> at <tmp> line 1
irced m: class dumbCamelia { has $.n1; has $.n2; method new($.n1, $.n2 where $.n2 >= $.n1) { return self.bless(:$!n1, :$!n2); }; submethod BUILD(:$!n1, :$!n2) {} }; my $cammie = dumbCamelia.new(1,5);
camelia Cannot look up attributes in a dumbCamelia type object
in method n1 at <tmp> line 1
in method new at <tmp> line 1
in block <unit> at <tmp> line 1
irced m: class dumbCamelia { has $.n1; has $.n2; method new($!n1, $!n2 where $!n2 >= $!n1) { return self.bless(:$!n1, :$!n2); }; submethod BUILD(:$!n1, :$!n2) {} }; my $cammie = dumbCamelia.new(1,5); 20:35
camelia Cannot look up attributes in a dumbCamelia type object
in method new at <tmp> line 1
in block <unit> at <tmp> line 1
irced m: class dumbCamelia { has $n1; has $n2; method new($n1, $n2 where $n2 >= $n1) { return self.bless(:$n1, :$n2); }; submethod BUILD(:$n1, :$n2) {} }; my $cammie = dumbCamelia.new(1,5);
camelia ( no output )
irced scratches his head.
irced has decided dot notation is a bug.
irced puts his hand in his coat from which a fly swatter emerges. 20:36
dant '"a \"b\" \"c\""' ~~ regex { ^ \" (.*) <!before \\> \" $ } 20:37
p6: '"a \"b\" \"c\""' ~~ regex { ^ \" (.*) <!before \\> \" $ }
camelia ( no output )
dant p6: say 3;
camelia 3
irced begins swatting camelia repeatedly. 20:39
irced unremittingly swats camelia, despite her plaintive protests. 20:41
you've got bugs! i'm trying to help you! stay still!
dant Is there a canonical regex for matching quoted strings with escapes? The best I can come up with is rx { \" (.*) <!before \\> \" } . 20:43
sena_kun dant, I don't think there is a "canonical" one. 21:27
but you can look at modules.perl6.org/dist/JSON::Tiny:...mar.pm#L25 21:28
dant sena_kun: thanks for the suggestion ... very helpful 21:29
irced p6: '"a \"b\" \"c\""' ~~ regex { ^ <quoted> (.*) <!before \\> <quoted> $ } 21:30
camelia No such method 'quoted' for invocant of type 'Match'
in regex at <tmp> line 1
in block <unit> at <tmp> line 1
irced p6: '"a \"b\" \"c\""' ~~ regex { ^ <"(.*) <!before \\>"> $ } 21:31
camelia 5===SORRY!5===
Unrecognized regex metacharacter < (must be quoted to match literally)
at <tmp>:1
------> 3'"a \"b\" \"c\""' ~~ regex { ^ <7⏏5"(.*) <!before \\>"> $ }
Malformed regex
at <tmp>:1
------> 3'"a \"b\" \"c\""' ~~ regex…
irced p6: '"a \"b\" \"c\""' ~~ regex { <^ "(.*) <!before \\>"> $ } 21:32
camelia 5===SORRY!5===
Unrecognized regex metacharacter < (must be quoted to match literally)
at <tmp>:1
------> 3'"a \"b\" \"c\""' ~~ regex { <7⏏5^ "(.*) <!before \\>"> $ }
Unrecognized regex metacharacter ^ (must be quoted to match literal…
moritz dant: the common approach is to parse the insides of a quote string as ``neither \ nor "`` or either \\ or \" 22:09
in code, \" ~ \" [[ <-["\\]>+ | \\ <["\\]> ]*] 22:10
(untested)
dant moritz: The "~" feature is perfect. Very clever, but required RTFM. Thanks 23:31