»ö« 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. |
|||
00:00
telex left
00:02
telex joined
00:03
p9s``` joined
00:08
p9s``` left
00:33
wildtrees left
00:42
p9s``` joined
00:48
p9s``` left
|
|||
vrurg | Who remembers in which section of docs.perl6.org FQN method call is described? /me is stuck... | 01:04 | |
01:13
reach_satori_ joined
01:14
molaf left
01:15
p9s``` joined,
satori__ left
|
|||
softmoth | vrurg, maybe docs.perl6.org/language/modules#require ? | 01:17 | |
vrurg | softmoth: No. I need the section about self.Parent::method() | 01:18 | |
timotimo | i see two matches in the source | 01:19 | |
language/objects.pod6 has Steerable::steer and language/operators.pod6 has Foo.Bar::baz | |||
01:20
p9s``` left
|
|||
timotimo | also, X::Method::InvalidQualifier has an example of it, and the Metamodel/MROBasedMethodDispatch doc also mentions that syntax | 01:20 | |
01:21
sftp left,
sftp joined
01:26
snarkyboojum_ left,
molaf joined,
snarkyboojum_ joined,
ufobat_ left
01:27
ufobat_ joined,
llfourn_ left
01:28
llfourn joined
01:30
sftp left,
cpan-p6 left
|
|||
Xliff | Hmmm... I don't like that write-up with role Bull-Like and role Steerable. | 01:30 | |
It's missing a step. | |||
01:30
agentzh left,
abraxxa left
01:31
jjatria left,
agentzh joined,
agentzh left,
agentzh joined,
TimToady joined,
sftp joined,
jjatria joined
01:32
cibs joined
01:39
snarkyboojum_ left
|
|||
vrurg | timotimo: thanks! | 01:40 | |
Ok, I wanted to make sure I miss nothing. | 01:42 | ||
m: role R[::T] { method foo { } }; class C does R[Int] { method foo { self.R[Int]::foo } }; C.new.foo | |||
camelia | 5===SORRY!5=== Error while compiling <tmp> Confused at <tmp>:1 ------> 3 does R[Int] { method foo { self.R[Int]:7⏏5:foo } }; C.new.foo expecting any of: colon pair |
||
Xliff | m: role R[::T] { method foo { } }; class C does R[Int] { method foo { self.R::foo } }; C.new.foo | 01:43 | |
camelia | No concretization found for R in method foo at <tmp> line 1 in block <unit> at <tmp> line 1 |
||
Xliff | m: role R[] { method foo { } }; class C does R[Int] { method foo { self.R::foo } }; C.new.foo | ||
camelia | 5===SORRY!5=== Error while compiling <tmp> No appropriate parametric role variant available for 'R' at <tmp>:1 |
||
Xliff | m: role R { method foo { } }; class C does R[Int] { method foo { self.R::foo } }; C.new.foo | 01:44 | |
camelia | 5===SORRY!5=== Error while compiling <tmp> No appropriate parametric role variant available for 'R' at <tmp>:1 |
||
Xliff | m: role R { method foo { } }; class C does R { method foo { self.R::foo } }; C.new.foo | ||
camelia | ( no output ) | ||
Xliff | m: role R[::T] { method foo { } }; class C does R[Int] { method foo { self.R::foo } }; C.new.foo | ||
camelia | No concretization found for R in method foo at <tmp> line 1 in block <unit> at <tmp> line 1 |
||
Xliff | vrurg: That looks like a parsing misstep. | ||
m: role R[::T] { method foo { } }; class C does R[Int] { method foo { self.R[Int]::foo } }; C.new.foo | |||
camelia | 5===SORRY!5=== Error while compiling <tmp> Confused at <tmp>:1 ------> 3 does R[Int] { method foo { self.R[Int]:7⏏5:foo } }; C.new.foo expecting any of: colon pair |
||
vrurg | Xliff: no way. Besides, self.R::foo is totally incorrect. Imagine class C does R[Int] does R[Str] { }. | 01:45 | |
Xliff: you're right. I was just checking if it worth a ticket and nothing is missed. | |||
Xliff | vrurg: In that situation you WILL have conflicting roles. | ||
vrurg | Xliff: no, I won't. | 01:46 | |
Xliff | Yes. You will. | ||
vrurg | role R[::T] { method foo { } }; class C does R[Int] does R[Str] { method foo { } }; C.new.foo | ||
m: role R[::T] { method foo { } }; class C does R[Int] does R[Str] { method foo { } }; C.new.foo | |||
camelia | ( no output ) | ||
vrurg | ^ Xliff | ||
The point is that R[Int] and R[Str] are different type objects. | 01:47 | ||
Xliff | O I C | ||
Still, the parser will balk if you try to specify a role-with-parameter in the self.Parent::method format. | 01:48 | ||
You should probably send that to problem-solving. | |||
vrurg is not sure wether it's a bug or a new feature. ;) | 01:50 | ||
But you're probably right. I was is doubt about this, but now I'm pushed toward problem-solving... | 01:51 | ||
01:53
p9s``` joined
|
|||
Xliff | vrurg: I think what you are trying is something no one thought of. | 01:54 | |
Which is why the parser doesn't handle it. | |||
Geth_ | ¦ problem-solving: vrurg assigned to jnthn Issue FQN method call needs support for parameterized roles. github.com/perl6/problem-solving/issues/110 | 01:55 | |
Xliff | Still.... expect questions asking: "Why?" | ||
vrurg | Simple. Because parameterized roles can have methods of the same name we one would need to specify which one he is interested in. | 01:56 | |
Xliff | Actually, the write-up you did does the job quite well! :) | ||
Actually, I stand corrected. | 01:57 | ||
In that example, don't you duplicate $!a? | |||
vrurg | Xliff: actually, yes, I do. | ||
Xliff | I don't think Perl6 will like that... ;) | ||
vrurg is too tired after one of the craziest days of the last weeks... | 01:58 | ||
Xliff: though I have fixed today `role R { has $.a; }; role R1 does R { }; role R2 does R2 { }; class C does R1 does R2 { }` – this one is valid. | |||
I have simplified the example. Common role was redundant in first place. | 02:00 | ||
02:00
p9s``` left
|
|||
Xliff | OK. I see. | 02:02 | |
My problem with such examples (and I just submitted a bug to docs about this). | 02:03 | ||
Why do you have R1 and R2, but do NOTHING with R2? | |||
It might help if you show how they are to be used together. | |||
vrurg: Sorry you had a crazy day. Good crazy or bad crazy.... | 02:05 | ||
... or just crazy? | |||
vrurg | Xliff: I think anyone can find a scenario where both are needed. | ||
A bit of everything. So, just crazy maybe? ;) | |||
Xliff | vrurg: OK, if you say so. However, I suspect it's one of the first questions that will be asked. | 02:06 | |
Hopefully tomorrow will be more sane. | |||
vrurg | In either case I'm a step close to complete R#3199 and this is good for sure. | ||
synopsebot | R#3199 [open]: github.com/rakudo/rakudo/pull/3199 [WIP][roles] [WIP] Implement perl6/problem-solving#103 | ||
Xliff | Ah! That's good. | 02:07 | |
Maybe you could check something for me. | |||
vrurg: Do you think this is a Method::Also issue or a rakudo one? | |||
github.com/lizmat/Method-Also/issues/1 | 02:08 | ||
02:08
p9s``` joined
|
|||
vrurg | Xliff: at the first glance I suspect Method::Also. Did you try it without the trait? | 02:10 | |
Xliff | Yesh. The first two examples basically ignore the trait. | ||
vrurg | Ah, right.. Sure, 90% for Method::Also, 10% for rakudo. | 02:11 | |
Xliff | Uh. Hold on thar, pardnah | 02:12 | |
vrurg | Looks like the trait doesn't install proto for multi methods. Let me see if add_method is supposed to do it implicitly. But I'd rather say it should not. | ||
02:14
softmoth left
|
|||
Xliff | vrurg: See update. | 02:15 | |
vrurg | Xliff: Nah, wrong. You alias the proto. Try introspecting my-method and see if candidates are there. | ||
Xliff | Not for roles, but they are for class. | ||
See updated bug | |||
According to lizmat, aliasing the proto is the expected mechanism. | 02:16 | ||
vrurg | Right. Role makes things different. When it's applied to a class you get two new protos on the class. But then I don't remember the details of the order in which things happen. Looks like candidates are not installed on my-method. | 02:18 | |
Xliff | Right, but if it works for class, then wouldn't it NOT working for roles make it internal? | ||
vrurg | As I said, try to introspect my-method on the class. | 02:19 | |
Xliff | OK. One sec. | ||
02:22
Actualeyes joined
|
|||
Xliff | .say for D.^find_method('my-method').candidates --> (my_method, my_method) | 02:22 | |
vrurg | I don't currently see what could go wrong because same proto-method object is just getting installed under a different name. All candidates are installed on that object and thus should be available. This is how it works with class. But for the role it looks like protos are cloned early, before candidates are installed. But this must not happen as role is already composed by the time it is applied to the class. | ||
Xliff | .say for B.^find_method('my-method').candidates --> () | 02:24 | |
^^ Role | |||
02:24
Cabanossi left
|
|||
Xliff | .say for B.^find_method('my_method').candidates --> (my_method, my_method) | 02:26 | |
^^ Role, non-alias | |||
So maybe Method::Also isn't doing enough? | |||
vrurg | Looks like it's Method::Also, after all. It's using add_method on proto, but for multis things are a bit more complicated. | 02:27 | |
Xliff | Aha! | ||
vrurg | Xliff: I think you're right. | ||
Xliff | Thanks! | ||
Yeah. I'm doing that all over GTK, so I kinda want this to work. | |||
What extra would need to be done for a role? | |||
If I can figure that out, I can submit a PR. | |||
I think the big difference is that it's ClassHOW vs ParametricRoleHOW. | 02:28 | ||
Adding the alias to the proto will work for ClassHOW. | 02:29 | ||
vrurg | Maybe it would be enough to use add_multi_method but I'm not sure if this would work if only applied to the proto. Needs testing. | ||
Xliff | OK. Well this is stuff that I can share with lizmat. | 02:30 | |
vrurg | Xliff: if you want to find out more, look in Perl6/Metamodel/MultiMethodContainer.nqp and Perl6/Metamodel/RoleToRoleApplier.nqp | ||
Xliff | Ooh. I missed MultiMethodContainer | ||
vrurg++: Thanks! | |||
vrurg | my pleasure! | 02:31 | |
It was good timing because this is exactly the area where I currently wandering. ;) | 02:32 | ||
Xliff | Weirdly enough... I was too. | ||
02:32
Doc_Holliwood joined
02:37
Cabanossi joined
02:46
p9s``` left,
p9s``` joined
03:08
p9s``` left
03:21
p9s``` joined
04:02
Doc_Holliwood left
04:07
p9s``` left,
p9s``` joined
04:19
p9s``` left
04:20
p9s``` joined,
wamba joined
04:34
jmerelo joined
04:36
wamba left
04:49
ponbiki joined
04:52
wamba joined
|
|||
Xliff | m: use NativeCall; class MockOperation is repr<CStruct> { has uint32 $.requested; has uint32 $.done }; my $m = MockOperation.new; say nativecast(Pointer, $m) | 04:58 | |
camelia | NativeCall::Types::Pointer<0x4281660> | ||
05:15
robertle left
05:34
sauvin joined
05:35
sauvin left
05:39
discoD left
05:41
domidumont joined
05:53
domidumont left
06:04
kini is now known as fs,
fs left,
fs joined
06:07
fs is now known as kini,
kini left,
kini joined
06:25
ravenousmoose joined
06:30
xinming left,
kensanata joined,
xinming joined
06:39
jmerelo left
06:44
wamba left
06:45
wamba joined
06:54
domidumont joined
06:55
ravenousmoose left
06:56
ravenousmoose joined
07:09
sena_kun joined,
HarmtH joined
07:14
Kaffe left
07:17
wamba left
07:22
kensanata left
07:26
p9s``` left
07:36
abraxxa joined
07:39
ravenous_ joined
07:41
ravenousmoose left
07:45
agentzh left
07:47
agentzh joined
07:58
p9s``` joined
08:02
wamba joined
08:04
p9s``` left
08:17
Cabanossi left
08:21
Cabanossi joined
08:28
Doc_Holliwood joined
08:36
p9s``` joined,
Sgeo_ joined
|
|||
Xliff | m: say $?*A | 08:38 | |
camelia | 5===SORRY!5=== Error while compiling <tmp> Unsupported use of $? variable; in Perl 6 please use $! for handling child errors also at <tmp>:1 ------> 3say $?7⏏5*A |
||
Xliff | m: say ?$*A | ||
camelia | False | ||
Xliff | m: sub bb { say $*A; }; sub aa { my $*A = 4; bb; }; say ?$*A; aa; | 08:39 | |
camelia | False 4 |
||
Xliff | m: sub bb { say ?$*A; }; sub aa { my $*A = 4; bb; }; say ?$*A; aa; | ||
camelia | False True |
||
Xliff | m: sub bb { say $*A if ?$*A; }; sub aa { my $*A = 4; bb; }; say ?$*A; aa; | 08:40 | |
camelia | False 4 |
||
08:40
Sgeo left
|
|||
Xliff | m: say "aaa" ~~ / (.) {} ($0)+ /; | 08:50 | |
camelia | Nil | ||
Xliff | m: say "aaa" ~~ / (.) {} :my $c = $0; ($c)+ /; | 08:51 | |
camelia | 「aaa」 0 => 「a」 1 => 「a」 1 => 「a」 |
||
Xliff | m: say "aba" ~~ / (.) {} :my $c = $0; ($c)+ /; | ||
camelia | Nil | ||
Xliff | m: say "bbbbbb" ~~ / (.) {} :my $c = $0; ($c)+ /; | ||
camelia | 「bbbbbb」 0 => 「b」 1 => 「b」 1 => 「b」 1 => 「b」 1 => 「b」 1 => 「b」 |
||
Xliff | m: say "aaa" ~~ / (.) {} ($0)+ /; | 08:54 | |
camelia | Nil | ||
08:54
ufobat__ joined
|
|||
Xliff | m: say "aaa" ~~ / (.) {} $0+ /; | 08:54 | |
camelia | 「aaa」 0 => 「a」 |
||
Xliff | m: say "aaa" ~~ / (.) {} $0 /; | ||
camelia | 「aa」 0 => 「a」 |
||
Xliff | m: say "aaa" ~~ / (.) {} ($0)+ /; | ||
camelia | Nil | ||
Xliff | m: say "bbbbbb" ~~ / (.) {} :my $c = $0; ($c)+ /; | ||
camelia | 「bbbbbb」 0 => 「b」 1 => 「b」 1 => 「b」 1 => 「b」 1 => 「b」 1 => 「b」 |
||
Xliff | m: "bbbbbb" ~~ / (.) {} :my $c = $0; ($c)+ /; $c.say | 08:55 | |
camelia | 「b」 | ||
Xliff | m: "bbbbbb" ~~ / (.) {} :my $c = $0; ($c)+ /; $c.perl.say | ||
camelia | Match.new(hash => Map.new(()), from => 0, list => (), orig => "bbbbbb", pos => 1, made => Any) | 08:56 | |
08:57
ufobat_ left
09:01
ravenous_ left
09:04
ravenousmoose joined,
xinming_ joined
09:06
Black_Ribbon left
09:07
xinming left
09:08
pecastro joined
09:11
p9s``` left,
Doc_Holliwood left
|
|||
Xliff | m: "_transfer_full_" ~~ / '_' <[\w _]>+ '_'/; say $0 | 09:19 | |
camelia | Nil | ||
Xliff | m: "_transfer_full_" ~~ / '_' <[\w _]>+? '_'/; say $0 | ||
camelia | Nil | ||
Xliff | m: "_transfer_full_" ~~ / '_' <[a..z _]>+? '_'/; say $0 | ||
camelia | Nil | ||
Xliff | m: "_transfer_full_" ~~ / '_' ~ '_' (\w+) /; say $0 | 09:20 | |
camelia | 「transfer_full」 | ||
Xliff | m: "_transfer_full_" ~~ / '_' ~ '_' (\w+) /; say $/.perl | ||
camelia | Match.new(from => 0, orig => "_transfer_full_", pos => 15, list => (Match.new(list => (), hash => Map.new(()), made => Any, from => 1, pos => 14, orig => "_transfer_full_"),), made => Any, hash => Map.new(())) | ||
Xliff | m: "_transfer_full_" ~~ / '_' ~ '_' (\w+) /; say $0.perl | ||
camelia | Match.new(list => (), orig => "_transfer_full_", pos => 14, from => 1, hash => Map.new(()), made => Any) | ||
Xliff | m: "_transfer_full_" ~~ / '_' ~ '_' (\w+) /; say $0.gist | ||
camelia | 「transfer_full」 | ||
Xliff | m: "_transfer_full_" ~~ / '_' (\w+) '_' /; say $0 | 09:21 | |
camelia | 「transfer_full」 | ||
Xliff | m: "_transfer_full_" ~~ / '_' (\w+) /; say $0 | ||
camelia | 「transfer_full_」 | ||
09:32
ravenousmoose left
09:34
ravenousmoose joined
09:35
Doc_Holliwood joined
09:37
pat_js joined
09:38
p9s``` joined
09:44
p9s``` left
09:59
reach_satori_ left
10:06
aborazmeh joined,
aborazmeh left,
aborazmeh joined
10:15
p9s``` joined
10:18
softmoth joined
10:21
p9s``` left
10:27
domidumont left
10:38
Voldenet left
10:41
Voldenet joined,
Voldenet left,
Voldenet joined
10:49
reach_satori_ joined
10:50
p9s``` joined
10:51
isBEKaml joined
10:56
p9s``` left
10:58
Sgeo__ joined
11:01
Sgeo_ left
11:04
dogbert17 joined
11:11
cpan-p6 joined,
cpan-p6 left,
cpan-p6 joined
|
|||
Xliff | m: 0x4488.Str.say | 11:16 | |
camelia | 17544 | ||
Xliff | m: 17544.fmt('%x').say | ||
camelia | 4488 | ||
Xliff | m: use experimental; my $x = 17544.fmt('%x'); my $b = Blob.new($x.comb(2).map( *.Int )); $b.say | 11:18 | |
camelia | Blob:0x<2C 58> | ||
11:18
aborazmeh left
|
|||
Xliff | m: use experimental; my $x = 17544.fmt('%x'); my $b = Blob.new($x.comb(2)); $b.say | 11:18 | |
camelia | Type check failed in initializing element #0 to Blob; expected uint8 but got Str ("44") in block <unit> at <tmp> line 1 |
||
Xliff | m: use experimental; my $x = 17544.fmt('%x'); $x.comb(2).say | ||
camelia | (44 88) | ||
Xliff | m: use experimental; my $x = 17544.fmt('%x'); my $b = Blob.new( $x.comb(2).map( "0x{$_}".Int ) ); $b.say | 11:19 | |
camelia | Use of uninitialized value $_ of type Any in string context. Methods .^name, .perl, .gist, or .say can be used to stringify it to something meaningful. in block <unit> at <tmp> line 1 Cannot map a Seq using 'Failure.new(exception => X::Str::Nu… |
||
Xliff | m: use experimental; my $x = 17544.fmt('%x'); my $b = Blob.new( $x.comb(2).map({ "0x{$_}".Int }) ); $b.say | ||
camelia | Blob:0x<44 88> | ||
Xliff | m: use experimental; my $x = 17544.fmt('%x'); my $b = Blob.new( $x.comb(2).reverse.map({ "0x{$_}".Int }) ); $b.say | 11:20 | |
camelia | Blob:0x<88 44> | ||
Xliff | m: use experimental; my $x = 17544.fmt('%x'); my $b = Blob.new( $x.comb(2).reverse.map({ "0x{$_}".Int }) ); $b.say; $b.read-int32.say | ||
camelia | Blob:0x<88 44> Too few positionals passed; expected 2 or 3 arguments but got 1 in block <unit> at <tmp> line 1 |
||
Xliff | m: use experimental; my $x = 17544.fmt('%x'); my $b = Blob.new( $x.comb(2).reverse.map({ "0x{$_}".Int }) ); $b.say; $b.read-int32(0).say | 11:21 | |
camelia | Blob:0x<88 44> MVMArray: read_buf out of bounds offset 0 start 0 elems 2 count 4 in block <unit> at <tmp> line 1 |
||
Xliff | m: use experimental; my $x = 17544.fmt('%x'); my $b = Blob.new( $x.comb(2).reverse.map({ "0x{$_}".Int }) ); $b.say; $b.read-int16(0).say | ||
camelia | Blob:0x<88 44> 17544 |
||
Xliff | m: use experimental; my $x = 17544.fmt('%x'); my $b = Blob.new( $x.comb(2).reverse.map({ "0x{$_}".Int }) ); $b.say; $b.read-int16(0, BigEndian).say | 11:22 | |
camelia | Blob:0x<88 44> -30652 |
||
Xliff | m: use experimental; my $x = 17544.fmt('%x'); my $b = Blob.new( $x.comb(2).reverse.map({ "0x{$_}".Int }) ); $b.say; $b.read-uint16(0, BigEndian).say | ||
camelia | Blob:0x<88 44> 34884 |
||
11:22
MilkmanDan left
11:23
p9s``` joined
11:24
MilkmanDan joined
|
|||
Xliff | Does perl6 provide an easier way to swap endian-ness of an Integer? | 11:24 | |
timotimo | why would you use read-int but not write-int? | 11:26 | |
Xliff | Is there a write-int?! | ||
timotimo | of course | ||
Xliff | docs.perl6.org/type/Blob#method_read-uint32 ?!?? | ||
timotimo | i'm still wishing for write-* on Buf:U | ||
well, yeah, blobs are immutable | 11:27 | ||
lizmat | on Buf:U ?? | ||
timotimo | yes | ||
lizmat | that should auto-vivify ? | ||
timotimo | it'd allocate a new buf, write to it, then return the object | ||
docs.perl6.org/type/Buf#method_write-uint8 - xliff | |||
Xliff | m: my $b = Blob.new.write-int(0x88884444).read-int(0, LittleEndian).say | ||
camelia | No such method 'write-int' for invocant of type 'Blob' in block <unit> at <tmp> line 1 |
||
Xliff | m: my $b = Blob.new.write-int(0x88884444).read-uint32(0, LittleEndian).say | 11:28 | |
camelia | No such method 'write-int' for invocant of type 'Blob' in block <unit> at <tmp> line 1 |
||
timotimo | Buf! | ||
Xliff | m: my $b = Bug.new.write-uint32(0x88884444).read-uint32(0, LittleEndian).say | ||
camelia | 5===SORRY!5=== Error while compiling <tmp> Undeclared name: Bug used at line 1. Did you mean 'Bag', 'Buf'? |
||
lizmat | it could work for Blob:U as well | ||
Xliff | m: my $b = Buf.new.write-uint32(0x88884444).read-uint32(0, LittleEndian).say | ||
11:28
p9s``` left
|
|||
camelia | Too few positionals passed; expected 3 or 4 arguments but got 2 in block <unit> at <tmp> line 1 |
11:28 | |
timotimo | that's true! | ||
lizmat | as long as its :U | ||
Xliff | m: my $b = Buf.new.write-uint32(0, 0x88884444).read-uint32(0, LittleEndian).say | ||
camelia | Nil | ||
timotimo | Xliff: write-uint32 doesn't return self | ||
Xliff | m: my $b = Buf.new.write-uint32(0, 0x88884444); $b.read-uint32(0, LittleEndian).say | ||
camelia | No such method 'read-uint32' for invocant of type 'Any' in block <unit> at <tmp> line 1 |
||
timotimo | m: (my $b = Buf.new).write-uint32(0, 0x88884444); $b.read-uint32(0, LittleEndian).say | ||
camelia | 2290631748 | ||
Xliff | m: my $b = Buf.new; $b.write-uint32(0, 0x88884444); $b.read-uint32(0, LittleEndian).say | ||
camelia | 2290631748 | ||
Xliff | !sleep... wheee! | 11:29 | |
m: 0x44448888.say | |||
camelia | 1145342088 | ||
Xliff | m: my $b = Buf.new; $b.write-uint32(0, 0x88884444); $b.read-uint32(0, BigEndian).say | ||
camelia | 1145342088 | ||
timotimo | m: my $b = Buf.new; $b.write-uint32(0, 0x88884444); $b.read-uint32(0, BigEndian).base(16).say | ||
camelia | 44448888 | ||
Xliff | OK. So now I have my answer. timotimo++ | 11:30 | |
Trying to simplify this: github.com/GNOME/glib/blob/master/...t-stream.c | |||
11:31
wamba left
|
|||
lizmat | so I wonder, why don't the write-* methods return self ? | 11:31 | |
Xliff | lizmat++ | ||
lizmat | looking at them now, it seems that having both -> Nil *and* "is raw" feel weiird | ||
.oO( what was I thinking ) |
|||
timotimo | :) | 11:32 | |
Xliff | lizmat: I'm looking at github.com/lizmat/Method-Also/issues/1. If you have some time, could you comment on it? Thanks. | ||
lizmat commented, but not with anything useful | 11:33 | ||
Xliff | heh | 11:34 | |
lizmat: Weekend is good! Thanks! | |||
11:35
p9s``` joined
|
|||
Kaiepi | i thought there weren't write-* methods as well, did they get added after the read-* ones or st? | 11:35 | |
timotimo | no, at the same time | ||
i think? | 11:36 | ||
not more than a week or two apart in any case | |||
Kaiepi | " Introducing buf8/blob8.read-(u)bits/write-(u)bits" | ||
ig not | 11:37 | ||
11:43
domidumont joined
|
|||
Xliff | m: my $b; say ?$b | 11:44 | |
camelia | False | ||
Xliff | m: my $b; say ?$b; $b = 2; say ?$b | ||
camelia | False True |
||
AlexDaniel | squashable6: status | 11:46 | |
squashable6 | AlexDaniel, 🍕🍕 SQUASHathon is in progress! The end of the event in 2 days and ≈0 hours. See github.com/rakudo/rakudo/wiki/Mont...Squash-Day | ||
AlexDaniel | hold on | ||
squashable6: status | 11:47 | ||
squashable6 | AlexDaniel, ⚠🍕 Next SQUASHathon in 6 days and ≈16 hours (2019-10-12 UTC-12⌁UTC+20). See github.com/rakudo/rakudo/wiki/Mont...Squash-Day | ||
AlexDaniel | ok that's better | ||
still looking for ideas for this squashathon! | |||
and also for someone to take care of it :) | |||
11:51
isBEKaml left
11:59
abraxxa left
12:01
pat_js left
12:04
pat_js joined
12:17
Cabanossi left
12:18
Cabanossi joined
12:22
gabiruh_ joined
12:25
gabiruh left,
Xliff left
12:26
scimon joined
12:31
lucasb joined
|
|||
lizmat | timotimo Kaiepi looks like massive test breakage if write-int* methods return self | 12:37 | |
timotimo | huh, that's interesting, i wouldn't expect that | 12:38 | |
lizmat | so either we let only the :U versions return the Buf/Blob | ||
or we change the spectest | |||
12:39
Guest93 left,
Guest93 joined,
Guest93 left
12:41
softmoth left
|
|||
Kaiepi | which tests break lizmat? | 12:45 | |
timotimo | i hope no tests will ever break lizmat | ||
12:45
softmoth joined
|
|||
lizmat | Kaiepi: all the tests that check for Nil :-) | 12:49 | |
12:50
Guest93 joined
12:53
camelCaser left
12:55
camelCaser joined
12:56
pat_js left,
pat_js joined
|
|||
timotimo | whyyy :) | 12:56 | |
12:59
camelCaser left
13:04
Sgeo_ joined
13:07
Sgeo__ left
13:08
gabiruh_ left,
gabiruh joined
13:09
ravenousmoose left
13:10
ravenousmoose joined
13:17
ufobat__ left
13:21
ravenousmoose left
13:28
scimon_ joined
13:31
scimon left
13:32
ravenousmoose joined
13:34
AlexDaniel left,
AlexDaniel joined,
AlexDaniel left,
AlexDaniel joined
13:35
Kaiepi left
|
|||
lizmat | weekly: news.perlfoundation.org/post/grants...2019_votes | 13:37 | |
notable6 | lizmat, Noted! (weekly) | ||
lizmat | timotimo: because I wrote thorough tests :-) | ||
timotimo | i wonder if there's something to be said for having a bit less rigid tests every now and then | 13:38 | |
13:43
camelCaser joined
13:44
Sgeo joined
13:47
Sgeo_ left
|
|||
lizmat | timotimo: I don't agree: it just means more potential fallout when code is depending on untested behaviour, should we change that behaviour | 13:48 | |
timotimo | mhh | 13:49 | |
lizmat | s/code/code out there/ | ||
13:52
ravenous_ joined
13:53
ravenousmoose left
14:01
stux|RC left
14:02
agentzh left
14:04
agentzh joined,
wamba joined
14:05
ravenous_ left
14:08
ravenousmoose joined
14:11
p9s``` left
14:15
stux|RC joined
14:44
ravenous_ joined,
ravenousmoose left
14:48
p9s``` joined
14:53
p9s``` left
14:56
ravenous_ left
14:57
ravenousmoose joined
14:58
softmoth left
15:01
softmoth joined
15:04
silug joined,
domidumont left
|
|||
lizmat | timotimo: otoh, write-int* is post 6.d, so I guess it's ok to change the tests | 15:21 | |
15:23
p9s``` joined
15:29
p9s``` left
15:35
Kaiepi joined
15:41
Doc_Holliwood left
15:44
Doc_Holliwood joined
15:45
reach_satori_ left
15:51
sno left,
pat_js left
15:52
sno joined
15:54
aindilis left
15:55
aindilis` joined
15:56
p9s``` joined
15:58
aindilis` left
15:59
aindilis joined
|
|||
timotimo | <3 | 15:59 | |
15:59
scimon_ left
16:00
ravenousmoose left
|
|||
timotimo | there's this thing going around on twitter with "first language, had difficulties, most used, totally hate, most loved, for beginners", each one with a number, 1 through 6 | 16:01 | |
since "most loved" comes before "6. for beginners", i get all the tweets with "most loved: perl" in my "perl 6" search column | |||
16:02
p9s``` left,
ravenousmoose joined
16:12
aindilis left
16:15
ravenousmoose left
16:16
ravenousmoose joined
16:23
Xliff joined,
MilkmanDan left
16:25
MilkmanDan joined
16:27
p9s``` joined
|
|||
lizmat | timotimo: yeah :-) | 16:28 | |
16:33
p9s``` left
16:44
jmerelo joined
17:01
Sgeo_ joined
17:02
p9s``` joined
17:04
Sgeo left,
robertle joined
17:09
p9s``` left
|
|||
uzl[m] | AlexDaniel: I think providing a P6 version for opendatastructures.org/ would be a great idea for | 17:19 | |
a squashathon (or possible multiple of them). It could help putting P6 out there, especially given | |||
that this textbook might be used in college courses. | |||
17:21
p9s``` joined
17:26
p9s``` left
17:27
ravenousmoose left,
ravenousmoose joined
17:31
wamba left
|
|||
AlexDaniel | uzl[m]: interesting! | 17:32 | |
uzl[m]: someone needs to organize that though | |||
jmerelo | uzl[m]: Um, not another book, please. We need a lot of help in the documentation. Let's try and get a good documentation first. | 17:37 | |
uzl[m] | jmerelo: Totally. All efforts should go to improve the documentation first. It's less of "do this now" and more of a "possible squashaton in the no-so distant future as long as it doesn't conflict with more important issues". ;-) | 17:41 | |
So was there a book-related squashaton before? | |||
AlexDaniel | no, but there were grants | 17:45 | |
jmerelo | uzl[m]: Some time ago. I would really wish some to happen again. | 17:48 | |
uzl[m]: ah, OK, not book-related. More documentation related. | |||
17:49
domidumont joined
17:56
aborazmeh joined,
aborazmeh left,
aborazmeh joined
|
|||
jmerelo | BTW, does anyone know how Andrew Shitov's book is doing? | 18:00 | |
Sorry, course. | |||
18:00
aindilis joined
18:01
p9s``` joined
18:07
p9s``` left
|
|||
AlexDaniel | jmerelo: no clue, but I guess we'll hear about it in grant progress reports | 18:10 | |
jmerelo | I just saw finanalyst's request was rejected. | 18:20 | |
AlexDaniel: I don't think the PR in the documentation is the way to go. I will open an issue to discuss that, although my plans have been exposed in several places already. | 18:33 | ||
AlexDaniel | jmerelo: it's a fine PR, I think it makes sense to do that first and then do more dramatic changes later | 18:39 | |
18:41
p9s``` joined
|
|||
jmerelo | AlexDaniel: it's not in the big picture, it's not in the details. "Rakudo Raku" does not make sense, for instance. Using raku fencing in markdown (like ```raku) does not either. Also just changing stuff in master will not cut it. | 18:46 | |
AlexDaniel | jmerelo: yeah, just Rakudo is fine | 18:47 | |
jmerelo | AlexDaniel: preparing an issue right now to discuss that. Anyway, the general idea can be used... But once we get the details hammered out in an issue. | ||
AlexDaniel | Rakudo Raku, hahahaha | ||
18:48
p9s``` left
|
|||
jmerelo | AlexDaniel: OK, here goes the issue github.com/perl6/doc/issues/3046 | 18:51 | |
18:53
aborazmeh left
18:54
wokurka joined
18:56
domidumont left
|
|||
tbrowder | raku raku sounds like a phrase out of a limbo song | 19:00 | |
jmerelo: progress bogged down on Documentable, but at least my Build.pm6 is doing what i want it to do. | 19:01 | ||
19:02
aborazmeh joined,
aborazmeh left,
aborazmeh joined,
aborazmeh left
|
|||
jmerelo | tbrowder: we're working down there in the basement, trying to iron out problems with Pod::to::Cached and what might be eventually called Document::Cache | 19:03 | |
tbrowder: I don't know if you have seen this github.com/perl6/Pod-To-Cached/issues/11 | |||
tbrowder: also, Antonio is minus his computer now. And I have started classes, so I get bogged now preparing them, tutoring students... | 19:04 | ||
19:04
Black_Ribbon joined
|
|||
lizmat | twitter.com/melezhik2/status/11801...8736169987 #rakulang | 19:09 | |
AlexDaniel | it's not early btw | 19:10 | |
we haven't renamed to raku but we have raku alias | |||
I mean, yet | |||
lizmat | from the PR: "When using social media that use hash-tags, users are suggested to use the `#rakulang` hash-tag" | 19:11 | |
lizmat is not on Twitter | |||
19:13
aborazmeh joined,
aborazmeh left,
aborazmeh joined
19:16
p9s``` joined
19:19
sena_kun left
19:22
aborazmeh left,
p9s``` left
19:26
aborazmeh joined,
aborazmeh left,
aborazmeh joined,
aborazmeh left
19:29
aborazmeh joined,
aborazmeh left,
aborazmeh joined
19:30
aborazmeh left
19:33
aborazmeh joined,
aborazmeh left,
aborazmeh joined
19:36
cpan-p6 left,
jmerelo left,
cpan-p6 joined,
cpan-p6 left,
cpan-p6 joined
19:43
Sgeo_ left
19:47
Actualeyes left
|
|||
guifa | Okay, here comes another “What’s the best practice for something no one has really done yet” question from guifa :-) | 19:48 | |
I’m going to make an Intl::Date class, subclassing regular Date | |||
19:49
p9s``` joined
|
|||
guifa | Idea being I’d like it to be compatible with anything else that takes a Date. | 19:49 | |
19:50
aborazmeh left
|
|||
guifa | If someone passes a Intl::Date::Hebrew, for instance, though, should .day .month .year, etc, pass the Gregorian or the Hebrew number? | 19:51 | |
19:51
cinch__ is now known as cinch
|
|||
lizmat | guifa: I think you've answered your own question with: "I’d like it to be compatible with anything else that takes a Date" | 19:52 | |
guifa | lizmat: I was secretly hoping there was a “If in a Date container, use X method, if in an Intl::Date container, use Y method” :-) | ||
lizmat | well, if you're subclassing Date, you *can* supply your own .day, .month, .year etc methods | 19:53 | |
guifa meant more like, my Date $d = Intl::Date.new(…); $d.day = 23; BUT my Intl::Date $d = Intl::Date.new(…); $d.day = 4 | 19:54 | ||
But I’m guessing variablse have no way of knowing anything about their container (plus I can see this causing no end of confusion) | 19:55 | ||
lizmat | then you're misunderstanding what "my Foo $a" means | ||
19:55
p9s``` left
|
|||
lizmat | that just means that a type check will be done when assigning | 19:55 | |
and if Intl::Date is a subclass of Date, then my Date $d = Intl::Date.new(...) will just work without any additional semantics | 19:56 | ||
guifa | So suppose the next question is … is compatibility with Date something folks would see as important? (Beyond simple coercion, which is a given) | 19:58 | |
MasterDuke | well, i guess you could try using greppable6 and seeing if a lot of current modules use Dates. if so, transparent compatibility with them might be desired | 19:59 | |
lizmat | guifa: also: modules.perl6.org/dist/Date::Calen...an:JFORGET | 20:01 | |
and: modules.perl6.org/dist/Date::Calen...an:JFORGET | |||
perhaps coordination with Jean Forget would be helpful :-) | 20:02 | ||
El_Che | One of the nicest thing about the (mini) web frameworks in Go is that their interfaces are compatible with the http interface in core. Everything you do is familiar and the structs/datatypes are compatible, so you can pass request, responses around and so on. I think that people would appreciate a similar mindset in p6 as well | ||
lizmat | El_Che: have you looked at Cro? | 20:03 | |
El_Che | lizmat: I don't mean the web frameworks as such (Cro is nice), it's about the Date transparency | ||
20:03
mensvaga left
|
|||
El_Che | an "add-on" instead of different thing altogther to be learnt | 20:04 | |
lizmat: agreeing with you, actually | |||
guifa | lizmat: I saw those. The Hebrew one has been helpful for doing some of the coding. I’m just really want the Intl:: stuff to work as intuitively as possible so people actually use them. But what’s intuitive for me may not be for others so I wanted to check (in particular in this case, where I see very valid reasons to subclass Date, or to keep Intl::Date its own thing). I might toss the question on the FB page too and see what people | 20:11 | |
there before deciding | |||
lizmat | sounds like a plan :-) | 20:12 | |
20:18
agentzh left
20:20
ravenousmoose left,
agentzh joined
20:21
p9s``` joined
20:24
leah2 left
20:27
p9s``` left
20:37
wamba joined
|
|||
Kaiepi | none of the equality operators that exist currently allow you to type check stuff more strictly than ~~ by using the generic checks HOWs use while ignoring the ACCEPTS method, right? | 20:38 | |
if it doesn't exist i wanna make a library for it, but i'd rather not add another equality operator unless there isn't a way to do it already | 20:39 | ||
20:39
softmoth left
|
|||
lizmat | Kaiepi: not sure what you're getting at ? | 20:39 | |
20:39
leah2 joined
20:40
softmoth joined
|
|||
Kaiepi | m: 1.^type_check: 1 | 2 | 3 | 20:44 | |
camelia | ( no output ) | ||
Kaiepi | m: say 1.^type_check: 1 | 2 | 3 | ||
camelia | 0 | ||
Kaiepi | m: say 1.ACCEPTS: 1 | 2 | 3 | ||
camelia | any(True, False, False) | ||
Kaiepi | basically i want something that type checks using the literal type | ||
but works with parents and roles | |||
Any.ACCEPTS was the closest i could find to what i want in rakudo but that's not an operator | 20:46 | ||
lizmat | so "say 1.ACCEPTS: 1 | 2 | 3" should be any(True,True,True) ? | ||
Kaiepi | it shouldn't say 1 and 1 | 2 | 3 are equal because Int is not Junction | 20:47 | |
lizmat | I'm not following, sorry | 20:50 | |
Kaiepi | Int and Junction are unrelated at the type level, so in this case they shouldn't be considered equal | 20:54 | |
but Int and Int should, and Int and UInt should since UInt is a subset of Int | 20:55 | ||
lizmat | but they aren't considered equal? | 20:57 | |
Int and Junction? | |||
1.ACCEPTS: 1 | 2 | 3 returns a Junction | |||
20:58
p9s``` joined
|
|||
Kaiepi | ik, but Int does not inherit or do Junction | 20:59 | |
lizmat | indeed... | 21:00 | |
Junctions aren't even Any | |||
which is what makes them work, btw | |||
21:04
p9s``` left
|
|||
Kaiepi | lemme think of a better example, junction isn't a very good type to use to show what i mean | 21:09 | |
21:26
krychu joined
|
|||
AlexDaniel | yes, it's a raku bus stop :P github.com/AlexDaniel | 21:29 | |
21:32
softmoth left
|
|||
lucasb | AlexDaniel is a ninja! :D | 21:32 | |
AlexDaniel | there's also a lake | ||
tadzik | hahah, nice :D | 21:33 | |
21:35
llfourn left
|
|||
SmokeMachine | m: class C { method a(\SELF:) { say SELF.VAR.of } }; class D is C {}; my C $c = D.new; $c.a; my D $d = D.new; $d.a # <--guifa, lizmat | 21:36 | |
camelia | (C) (D) |
||
SmokeMachine | but I think that must be a bug... | 21:37 | |
21:38
p9s``` joined
21:39
llfourn joined
21:40
llfourn left
|
|||
SmokeMachine | m: class NotDate is Date { method year(\SELF:) { do if SELF.VAR.of === ::?CLASS { "do something else" } else { SELF.Date::year } } }; my Date $d = NotDate.today; say $d.year; my NotDate $n = NotDate.today; say $n.year | 21:42 | |
camelia | 2019 do something else |
||
21:42
softmoth joined
|
|||
SmokeMachine | .tell guifa maybe this could help you: `class NotDate is Date { method year(\SELF:) { do if SELF.VAR.of === ::?CLASS { "do something else" } else { SELF.Date::year } } }; my Date $d = NotDate.today; say $d.year; my NotDate $n = NotDate.today; say $n.year` | 21:42 | |
tellable6 | SmokeMachine, I'll pass your message to guifa | ||
21:42
cpan-p6 left
21:43
cpan-p6 joined,
cpan-p6 left,
cpan-p6 joined
21:44
p9s``` left
|
|||
Kaiepi | lizmat, say you have a subclass of Int you're using for a slang or something. you want to compare the types of a definite values of your subclass and another of int to see if they would type check as both being int or not | 21:46 | |
m: class IntPlusPlus is Int { }; say IntPlusPlus.new(1) ~~ Int.new(2) | |||
camelia | False | ||
Kaiepi | ~~ would only work if they're equal, it doesn't type check in this case | ||
m: class IntPlusPlus is Int { }; say IntPlusPlus.new(1).WHAT =:= Int.new(2).WHAT | |||
camelia | False | ||
Kaiepi | this doesn't work because they're not identical | 21:47 | |
m: class IntPlusPlus is Int { }; say IntPlusPlus.new(1).^does: Int.new(2) | |||
camelia | False | ||
Kaiepi | oh wrong metamethod lol | ||
ok nvm, isa does what i was looking for | 21:48 | ||
m: class IntPlusPlus is Int { }; say IntPlusPlus.new(1).isa: Int.new(2) | 21:49 | ||
camelia | True | ||
SmokeMachine | m: class IntPlusPlus is Int { }; say IntPlusPlus.new(1) ~~ Int.new(2).WHAT | ||
camelia | True | ||
SmokeMachine | m: class IntPlusPlus is Int { }; say IntPlusPlus.new(1).^isa: Int.new(2).WHAT | 21:50 | |
camelia | 1 | ||
Kaiepi | m: 1.isa: 1 | 2 | 3 | 21:52 | |
camelia | ( no output ) | ||
Kaiepi | m: say 1.isa: 1 | 2 | 3 | ||
camelia | False | ||
SmokeMachine | m: say 1.isa: (1 | 2 | 3).WHAT | ||
camelia | False | ||
SmokeMachine | m: say 1 ~~ (1 | 2 | 3).WHAT | ||
camelia | False | ||
21:53
wokurka left
22:09
p9s``` joined
|
|||
Doc_Holliwood | Man, the last time i used Mi6 it wasn't that opinionated | 22:09 | |
22:14
p9s``` left
|
|||
lizmat | Kaiepi: glad I could rubberduck for you | 22:14 | |
Kaiepi | not exactly proud i completely forgot isa existed and thought there wasn't anything already in the language for this | 22:22 | |
a way that didn't involve using the MOP at least, ik that has stuff for this | 22:25 | ||
guifa | SmokeMachine: hmmm… interesting, but, that might end up being a source for confusion for end users | 22:26 | |
tellable6 | gist.github.com/8bb07673e933cd2fab...07488a27f0 | ||
SmokeMachine | guifa: I agree... but Have I misunderstood what you wanted? | 22:27 | |
guifa | not at all! You definitely nailed it haha | ||
guifa may have been thinking outloud a bit | |||
SmokeMachine | guifa: but I like it being possible... | 22:28 | |
Doc_Holliwood | you know, i wanted to type "you mean, like .isa?" but then I thought, "nah, don't be silly" | 22:30 | |
22:32
kst left
|
|||
guifa | SmokeMachine I almost want to have all three ways be possible (sub class that acts always like a Date, class unto itself that requires coercion, and one that goes based on the var type, but … that seems almost overkill) | 22:34 | |
SmokeMachine | guifa: have you thought about a role that you could apply to a Date and make it behave as you want? | 22:35 | |
m: role NotDate { method year { "do something else" } }; my $d = Date.today; say $d.year; $d does NotDate; say $d.year | 22:36 | ||
camelia | 2019 do something else |
||
SmokeMachine | does anyone know when LPW will decide what talks will be accepted? I'm preparing my slides not knowing if my talk was accepted... | 22:38 | |
22:40
Sgeo joined
22:41
p9s``` joined
|
|||
MasterDuke | reminds me, i need to buy my bus tickets... | 22:41 | |
guifa | SmokeMachine: I had thought about that | 22:44 | |
But can a role take an implicit conversion on sigs? | |||
sub (Role() ) ? | |||
oh wait, I couldn’t do that anyways, because I can’t access Date’s coercion methods | 22:45 | ||
SmokeMachine | m: role NotDate { method year { "do something else" } }; my $d = Date.today; say $d.year; $d does NotDate; sub bla(NotDate $a) { say $a }; bla $d | 22:46 | |
camelia | 2019 2019-10-05 |
||
SmokeMachine | guifa: what do you mean? | 22:47 | |
22:47
p9s``` left
|
|||
SmokeMachine | guifa: what do you mean by Date’s coercion methods? | 22:49 | |
guifa | Actually, what I was thinking wouldn’t work for regular subclassing anwayys | ||
22:53
kst joined
22:56
pecastro left
22:59
krychu left
23:09
Sgeo_ joined
|
|||
Doc_Holliwood | dmmit i accidentally forked my fork of mi6 into perl6 | 23:10 | |
why can i even do that? and how do i revert it? | |||
23:11
Sgeo left
|
|||
Doc_Holliwood | ok, i found the delete button | 23:13 | |
23:21
p9s``` joined
23:26
p9s``` left
23:31
Sgeo joined
23:35
Sgeo_ left
23:37
Sgeo left,
Sgeo joined
|
|||
Xliff | tbrowder: "raku raku"? Did someone let The Hamburgler out of jail? | 23:42 | |
tbrowder | i forgot about that old character! | 23:45 | |
no, i was thinking of when limboing was popular and there was a song that went something like... | 23:46 | ||
chubby checker: limbo rock, but not quite | 23:47 | ||
maybe not even the limbo...mind is losing it | 23:51 | ||
23:51
softmoth left
23:53
p9s``` joined
23:54
Velvet joined
23:55
Velvet left
23:57
softmoth joined
23:59
p9s``` left
|