»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by sorear on 4 February 2011.
00:20 alester joined 00:28 havenn left 00:32 Vespakoen_ joined 00:34 Vespakoen left 00:35 localhost left
shinobicl___ should i redefine .WHAT for user defined classes? 00:35
i got this message when invoking what in a class i created. : use of uninitialized variable $message of type Workdate in string context 00:36
00:36 localhost joined
sorear You can't redefine WHAT. 00:39
shinobicl___ that's what i imagined... Maybe i broke something when making the derived class. 00:42
00:43 Chillance left
cognominal r: so.WHAT? 00:43
p6eval rakudo 1968b8: OUTPUT«===SORRY!===␤Confused␤at /tmp/hmfk5tfs6a:1␤»
cognominal :) 00:44
00:47 shinobicl___ left 00:48 notevent` left 00:58 shinobicl___ joined, Vespakoen_ left 01:02 kshannon left 01:10 scott_ joined, alester left 01:11 scott_ is now known as Guest2852 01:18 s1n joined 01:37 jferrero joined 02:00 shinobicl___ left, shinobicl___ joined 02:03 flussence left, whiteknight left
shinobicl___ i have a problem with one overloaded operator. i think that the fact that calling WHAT on my custom class reports an error, is the symptom of a deeper problem 02:04
02:08 swarley joined 02:17 flussence joined 02:27 flussence left 02:42 benabik joined 02:46 libertyprime left 02:49 libertyprime joined 02:52 swarley left 02:54 envi_ joined, wolfman2000 joined 02:56 flussence joined 02:58 libertyprime left 03:11 cbk1090 left 03:13 awwaiid left 03:33 abercrombie joined 03:34 odoacre joined 03:58 orafu left 04:00 orafu joined 04:24 FACEFOX left 04:34 am0c joined 04:38 pernatiy left 04:44 dwierenga joined
dalek ecs: 7812d5d | larry++ | S04-control.pod:
small typo
05:02
05:06 cj left 05:13 cj joined 05:18 kaleem joined 05:22 maxiozzi left 05:27 flussence left 05:28 birdwindupbird joined 06:14 NamelessTee joined
moritz shinobicl___: what you described earlier is a warning, not an error 06:32
shinobicl___: and it's expected that you get a warning when you use .WHAT inside a string. If you want to print the type object, do something like $obj.WHAT.gist or $obj.^name
07:01 wtw joined
masak morning, #perl6. 07:04
lists.parrot.org/pipermail/parrot-d...06713.html looks like a "traditional p6l email" that somehow ended up on parrot-dev. 07:06
tadzik good morning #perl6
moritz good am, * 07:07
masak poranek, tadzik.
moritz masak: I jsut read it, and thought the same
masak moritz: never mind that the poster forgot the actual name of junctions, or doesn't actually know what constructs we have in place for immutability.
or thinks that &map will hyper when given the chance. 07:08
sorear o/ masak, tadzik
masak moritz: do you want to craft a reply, or should I? 07:09
sorear 1. yay, another persion who doesn't understand the difference between P and R 07:10
07:10 mdupont left
sorear 2. I unsubscribed to parrot-dev after travis-ci caused a 100x increase in traffic. has that been fixed yet? 07:10
masak think so. 07:11
sorear #parrot has told me I'm a jerk for being bothered by this
masak I still see travis emails sometimes, but they're much less obnoxious.
sorear: they ended up complaining themselves on the list.
07:15 tarch joined
masak sorear: fwiw, they told you that unsubscribing was "pretty curmudgeonly". that's two steps away from telling you you're a jerk... 07:18
sorear Only two. 07:27
I really don't like being told that travis spamming the list is my problem.
moritz masak: I don't really think it deserves a reply 07:28
sorear I'll stop this, I don't think I'm being productive 07:30
masak sorry if I made it worse. I agree that the travis emails didn't fill any useful purpose at all. 08:04
by the way, I've stopped thinking of junctions as a threading primitive. most of the situations I use them in are for making code look simpler, nothing more. 08:09
08:29 mj41_nb joined
masak that doesn't mean that they'll never *be* a threading primitive, of course. but I don't think they will be, or if they are, that it won't do much difference. 08:29
moritz agreed 08:32
it's not a basic building block for building concurrent applications
just some parallel sugar
perl6: 'ab' ~~ /a/|/b/; say ~$/ 08:33
p6eval pugs b927740: OUTPUT«sh: /home/p6eval/Pugs.hs/Pugs: Permission denied␤»
..rakudo 1968b8: OUTPUT«use of uninitialized value of type Any in string context␤␤»
..niecza v15-4-g1f35f89: OUTPUT«Use of uninitialized value in string context␤ at /home/p6eval/niecza/lib/CORE.setting line 1222 (warn @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 230 (Mu.Str @ 10) ␤ at <unknown> line 0 (ExitRunloop @ 0) ␤ at /tmp/nFMb98uKiQ line 1 (mainline @ 3…
08:34 kmp left 08:39 slavik1 left
masak and the "parallel" part of "parallel sugar" is really the smallest part of it. 08:41
it's the Huffman effect that I'm after most of the time. part "forget about sequencing, I'm not using it", part "make the same comparison (against the same variable or whatever) for all these values". 08:42
it's *completely* right that this variant be spelled '|' rather than '||'. 08:43
dalek albot: 22a3f60 | moritz++ | evalbot.pl:
fix pugs path, hopefull
08:44
albot: dff5c8f | moritz++ | evalbot.pl:
install p6 alias for perl6
08:44 shinobicl___ left
moritz evalbot control restart 08:45
08:45 p6eval left 08:46 p6eval joined, ChanServ sets mode: +v p6eval
moritz r: say 'this is going to take a while' 08:46
I have no idea why, but the first execution after a restart always takes ages
p6eval rakudo 1968b8: OUTPUT«this is going to take a while␤» 08:47
moritz p6: say 'new alias'
p6eval pugs, rakudo 1968b8, niecza v15-4-g1f35f89: OUTPUT«new alias␤»
masak woot.
moritz Juerd: ping 08:52
Juerd: the machine on which p6eval runs now is going to be discontinued, so I'd like to move p6eval to feather3, but currently it doesn't have enough memory to handle that load
Juerd: is there some memory available than can be redistributed? 08:53
08:53 y3llow left 08:56 y3llow joined 08:58 y3llow left 08:59 y3llow joined 09:01 y3llow left, y3llow joined 09:07 perlish joined 09:10 Chillance joined 09:12 Bzek joined 09:26 rsimoes left, Bzek left 09:27 rsimoes joined 09:34 dakkar joined 09:40 ab5tract joined 09:55 fglock joined 10:01 perlish left 10:02 Guest2852 left
masak p6: say 10 ** 10 10:10
p6eval pugs, rakudo 1968b8, niecza v15-4-g1f35f89: OUTPUT«10000000000␤»
masak p6: say (10 ** 10).flip.comb(/..?.?/).join('_').flip 10:11
p6eval rakudo 1968b8, niecza v15-4-g1f35f89: OUTPUT«10_000_000_000␤»
..pugs: OUTPUT«*** No such method in class Rat: "&flip"␤ at /tmp/nDY3goR_Tg line 1, column 5 - line 2, column 1␤»
10:13 kaleem left, kaleem joined
masak r: use MONKEY_TYPING; augment class Cool { multi method comb(Int $n) { my $regex = '.' ~ '.?' xx ($n - 1); nextwith(eval "/$regex/") } }; say (10 ** 10).flip.comb(3).join('_').flip 10:14
p6eval rakudo 1968b8: OUTPUT«Cannot call 'comb'; none of these signatures match:␤:(Str:D , Mu %_!)␤:(Str:D , Regex $pat, Any $limit = { ... }, Any :match(:$match), Mu %_!)␤:(Cool , Mu %_!)␤:(Cool , Regex $matcher, Any $limit = { ... }, Mu %_!)␤␤ in method comb at src/gen/CORE.setting:1878␤ i…
masak r: use MONKEY_TYPING; augment class Cool { multi method comb(Int $n) { my $regex = '.' ~ '.?' xx ($n - 1); nextwith(self, eval "/$regex/") } }; say (10 ** 10).flip.comb(3).join('_').flip 10:15
p6eval rakudo 1968b8: OUTPUT«Cannot call 'comb'; none of these signatures match:␤:(Str:D , Mu %_!)␤:(Str:D , Regex $pat, Any $limit = { ... }, Any :match(:$match), Mu %_!)␤:(Cool , Mu %_!)␤:(Cool , Regex $matcher, Any $limit = { ... }, Mu %_!)␤␤ in method comb at src/gen/CORE.setting:1878␤ i…
masak hm. :/
r: use MONKEY_TYPING; augment class Cool { multi method comb(Int $n) { my $regex = '.' ~ '.?' xx ($n - 1); die (eval "/$regex/").WHAT } }; say (10 ** 10).flip.comb(3).join('_').flip 10:16
p6eval rakudo 1968b8: OUTPUT«Cannot call 'comb'; none of these signatures match:␤:(Str:D , Mu %_!)␤:(Str:D , Regex $pat, Any $limit = { ... }, Any :match(:$match), Mu %_!)␤:(Cool , Mu %_!)␤:(Cool , Regex $matcher, Any $limit = { ... }, Mu %_!)␤␤ in method comb at src/gen/CORE.setting:1878␤ i…
masak oh, it's the .comb(3) that doesn't dispatch.
why not? 10:18
colomon Str, Mu versus Cool, Int? 10:21
masak r: use MONKEY_TYPING; augment class Str { multi method comb(Int $n) { my $regex = '.' ~ '.?' xx ($n - 1); die (eval "/$regex/").WHAT } }; say (10 ** 10).flip.comb(3).join('_').flip
p6eval rakudo 1968b8: OUTPUT«use of uninitialized value of type Str in string context␤use of uninitialized variable of type Regex in string context␤use of uninitialized value of type Str in string context␤use of uninitialized variable of type Regex in string context␤␤ in method comb at /tmp…
masak that seemed to be it. colomon++
colomon 'morning. :) 10:22
masak tips hat
r: use MONKEY_TYPING; augment class Str { multi method comb(Int $n) { die $n } }; say (10 ** 10).flip.comb(3).join('_').flip 10:23
p6eval rakudo 1968b8: OUTPUT«3␤ in method comb at /tmp/gvNGpCXsG_:1␤ in block <anon> at /tmp/gvNGpCXsG_:1␤␤»
masak r: use MONKEY_TYPING; augment class Str { multi method comb(Int $n) { nextsame(eval "/{'.' ~ '.?' xx ($n - 1)}/") } }; say (10 ** 10).flip.comb(3).join('_').flip 10:24
p6eval rakudo 1968b8: OUTPUT«===SORRY!===␤Can not get non-existent attribute '$!dispatchees' on class 'Routine'␤»
masak um.
10:24 grondilu joined
masak r: use MONKEY_TYPING; augment class Str { multi method comb(Int $n) { nextwith(eval "/{'.' ~ '.?' xx ($n - 1)}/") } }; say (10 ** 10).flip.comb(3).join('_').flip 10:25
p6eval rakudo 1968b8: OUTPUT«␤»
grondilu perl6: say join ':', $_ for [\,] 1, 2, 3
p6eval rakudo 1968b8, niecza v15-4-g1f35f89: OUTPUT«1␤1␤2␤1␤2␤3␤»
..pugs: OUTPUT«*** No such subroutine: "&prefix:[\\,]"␤ at /tmp/YvJAmDYwgn line 1, column 22 - line 2, column 1␤»
grondilu was expecting 1n1:2n1:2:3n 10:26
masak why?
10:27 flussence joined
grondilu I guess I don't understand the triangular operator well. 10:27
masak Perl has a long tradition of flattening. that's what you're seeing here too.
r: .say for [\R,] "and a partridge in a pear tree", "two turtle doves" 10:28
p6eval rakudo 1968b8: OUTPUT«and a partridge in a pear tree␤two turtle doves␤and a partridge in a pear tree␤»
masak \o/
grondilu Ok but what if I really want a list of lists? I tried "LoL" with no success.
masak LoL is only partially implemented, if that. 10:29
you're experiencing the effects of living in an imperfect reflection of the perfect future. 10:30
grondilu ok. I'll wait then.
masak r: my $s = ''; for 1, 2, 3 { if $s { $s ~= ':' }; $s ~= $_ }; say $s 10:36
p6eval rakudo 1968b8: OUTPUT«1:2:3␤»
masak r: my @a; for 1, 2, 3 { push @a, $_; say @a.join(':') } 10:38
p6eval rakudo 1968b8: OUTPUT«1␤1:2␤1:2:3␤»
masak grondilu: workaround ;)
moritz r: say join ":", @$_ for [\,] 1, 2, 3 10:39
p6eval rakudo 1968b8: OUTPUT«1␤1␤2␤1␤2␤3␤»
masak moritz: it's deeper than that.
moritz r: say join ":", @$_ for ([\,] 1, 2, 3).tree
p6eval rakudo 1968b8: OUTPUT«1␤1:2␤1:2:3␤»
masak woo
moritz++
moritz problem was that 'for' flattens
masak right. 10:41
10:42 fsergot left
grondilu well done, moritz++ 10:46
10:51 kaleem left 10:52 kaleem joined 10:59 grondilu left 11:07 daxim joined
moritz has a new hobby: answering homework questions on perlmonks with Perl 6 :-) 11:24
11:24 xinming left, att joined
arnsholt_ Teehee 11:24
Educated trolling ;)
moritz for example www.perlmonks.org/?node_id=959903 11:25
and hey, it prompted somebody to actually run my example code!
masak moritz: why have you pondered that SVG.pm should handle the 'style' attribute specially? 11:29
moritz masak: because its insides have quite a specific structure 11:30
masak: which could well be expressed as an array of pairs, just like the SVG stuff
masak: and because it's quite common
masak I... I think I agree.
but I'd rather see a whole different approach to it all than my poor ol' XML::Writer :) 11:31
I will ponder this over lunch.
11:40 sftp left 11:41 xinming joined 11:45 snearch joined
gfldex svg is using CSS (of sort) and the latter is moving slowly into the direction of a script language proper 11:49
in the long run a list of pairs wont cut it 11:50
11:50 sftp joined 11:51 mucker joined 12:04 skids left 12:17 tarch left 12:25 am0c left 12:27 att is now known as att_ 12:37 alvis left 12:39 mtk joined 12:43 sporous left, sporous joined 12:50 alvis joined 12:57 alvis left
masak having thought about it some, I realize I would probably want to template my XML. 12:58
expressing all the XML throught arrays and hashes just isn't worth it.
however, the two killer features that would make me use this system and nothing else would be: 12:59
bonsaikitten sorear: so, niecza-bin packaged easily, is there a nice tarball for niecza source? 13:00
moritz bonsaikitten: it's on github in the download section, iirc
bonsaikitten moritz: only the precompiled
masak (1) compile-time correctness checking of the XML template, ranging from just XML correctness to schema compatibility. sufficiently sensible behavior around XML template placeholders.
moritz bonsaikitten: oh, right. But you can get tarballs from github too 13:01
13:01 jerome_ left
moritz there's a "ZIP" button left of the field with the git URLs 13:02
masak (2) the ability to fill placeholders with arbitrary objects, as long as they do some role, say, XML::Str-able
13:02 sisar joined
bonsaikitten right, let's see if I can figure that one out 13:02
masak interestingly, this pie-in-the-sky dream looks very much like the pie-in-the-sky dream for embedding SQL queries in code. 13:05
13:18 jerome_ joined 13:19 awwaiid joined
masak essentially, a macro could be made to handle the compile-time aspect of (1). 13:19
this again gives an indication of the desirability to be able to introspect literal arguments at compile-time, by the way. 13:20
bonsaikitten guh, .net wasn't meant to be run in a managed environment :) 13:27
sisar try.rakudo.org is down ? 13:31
moritz it usually is :(
masak where is it hosted? 13:33
moritz feather2
flussence 3
moritz erm, right
flussence and yeah, "down" seems to be its normal state :( 13:34
moritz feather2 only has perl6.org and hugme
flussence (and I think it's still running pre-nom...)
flussence does some percussive maintenance
oh, the dns isn't there :/ 13:35
moritz 193.200.132.142
bonsaikitten cp boot/obj/Kernel.dll run/ 13:36
cp: cannot stat `boot/obj/Kernel.dll': No such file or directory
heh, nice makefile confusion :)
moritz are you trying parallel make? 13:37
flussence (ok, not pre-nom so it's not *terrible*...)
bonsaikitten moritz: augh.
moritz but pre-bs I think
bonsaikitten: that doesn't work on the first build
bonsaikitten moritz: yes, trying ;) let's see if tuning that down helps
moritz bonsaikitten: once it got the bootstrap thingy downloaded and unpacked, paralell make works again 13:38
13:38 skids joined
bonsaikitten moritz: there will always be only one build in this case (distro packaging) 13:38
moritz so, don't go parallel for now :/
flussence moritz: I'm wondering whether it'd be worth ripping out the POE persistent TTY thing now that rakudo doesn't take forever and a half to start up. If there's no processes running in the background, they can't get stuck all the time :)
moritz bonsaikitten: what distro are you packaging for?
bonsaikitten gentoo
masak r: my $t = now; my @a; @a[ $_ ] = $_ for 1 .. 1e4; print now - $t 13:39
p6eval rakudo 1968b8: OUTPUT«2.55866416794898»
bonsaikitten rakudo is getting boring ;) so I'm playing around with niecza
masak r: my $t = now; my %h; %h{ $_ } = $_ for 1 .. 1e4; print now - $t
p6eval rakudo 1968b8: OUTPUT«1.51738952909994»
flussence bonsaikitten: I've had problems with niecza and -j too, it used to work a few months ago IIRC
masak in Rakudo, hashes are faster than arrays :)
bonsaikitten flussence: oh well, three extra characters
masak in re perlmonks.org/?node_id=960334
moritz flussence: well, you still have to persist the REPL session between several requestis
*requests
bonsaikitten: too boring because it's so little trouble? :-) 13:40
masak: yes, it pays the price of lazyness
(it = Arrays)
bonsaikitten moritz: well, apart from pcre being a bit silly ... and tests in 2012.02 have a few issues I need to track down and file bugs for
masak moritz: even when, as here, I'm not using that laziness at all. 13:42
moritz masak: correct
masak what is the additional cost here, more exactly?
moritz well, for each array access we need to check if the number of reified elements is big enough 13:43
though that should be rather cheap-ish
I kind think we're doing something very wrong when it comes to arrays and lists
nom: my @a = 1, 2, 3; say @a.DUMP 13:44
p6eval rakudo 1968b8: OUTPUT«Array<-4100004978996074906>(:items(Mu), :nextiter(ListIter<-4100004978996073111>(:reified(▶Mu), :rest(RPA<-4100004978996040334>(Array<-4100004978996076959>(:items(RPA<-4100004978996035975>(▶1, ▶2, ▶3)), :nextiter(▶Mu)))), :list(Array<-4100004978996074906>))))␤»…
moritz there you see what's wrong
it's not the outer-most array that holds all the reified elements
masak right.
moritz they are stored in two layers of nextiter 13:45
masak I almost feel tempted to submit a rakudobug about that.
moritz please do
masak submits rakudobug
bonsaikitten ok, bad idea: cp /opt/niecza/run/Kernel.dll boot/obj/ <-- this doesn't fix things *g*
moritz bonsaikitten: does a simple 'make -j1' not succeed? 13:46
13:48 [particle] joined 13:56 [particle] left 13:58 [particle] joined 14:01 leprevost joined
bonsaikitten moritz: nyet 14:02
moritz bonsaikitten: then open an issue in the github issue tracker
bonsaikitten moritz: it's not finding the Kernel.dll ... I'll see if I can narrow it down to a proper bugreport
at the moment it might just be User Error :) 14:03
moritz did you do anything more fancy than unpacking the archive, cd'ing into it and typing 'make'?
ah, I too get an error if I remove the boot/ dir 14:04
make: *** No rule to make target `boot/obj/Run.CORE.ser', needed by `boot/obj/Run.CClass.ser'. Stop.
bonsaikitten yeah, so I cp the precompiled bits in 14:05
mucker Hi guys ... just a doubt. Is something like Devel::Declare(dispatch on a keyword) possible now in rakduo ?
bonsaikitten then it fails to find the Kernel.dll even with a simple make 14:06
14:06 shinobicl__ joined
moritz mucker: we now have basic support for macros 14:06
though not with 'is parsed'
and I think you can declare custom terms and operators
r: sub term:sym<foo>() { 'really foo' }; say foo 14:07
p6eval rakudo 1968b8: OUTPUT«===SORRY!===␤Cannot add tokens of category 'term' with a sub␤»
moritz why ever not? :/
mucker ok ... i know about the macros. masak++ for that :)
what is a term ? 14:08
moritz things that aren't operators or delimiters
like, numbers or strings, function calls, variables, ...
mucker you can overload that ? neat ! 14:09
mucker digs up the perl6 cabal
moritz well, I dearly hope so 14:10
a simple (yet limited) form to do that is to declare a constant
r: constant foo = 'my string'; say foo
p6eval rakudo 1968b8: OUTPUT«my string␤»
moritz that adds foo to the term category
rakudo: my @a = 1, 2; @a[3] = 4; say @a.DUMP 14:12
p6eval rakudo 1968b8: OUTPUT«Array<-8937442109488417235>(:items(RPA<-8937442109493102304>(▶1, ▶2, (null), ▶4)), :nextiter(▶Mu))␤»
14:13 sdo joined
pmichaud good morning, #perl6 14:14
masak pmichaud! \o/
pmichaud bug #111848 is interesting. :-)
moritz good am, pm
sdo hello
shinobicl__ nom: use Test; my Int $i = 1; say $i.WHAT; diag $i.WHAT;
p6eval rakudo 1968b8: OUTPUT«Int()␤use of uninitialized variable $message of type Int in string context␤# ␤»
PerlJam pmichaud: greetings! Good to see you on IRC :) 14:15
fglock pmichaud: o/
shinobicl__ now i see what you meant, masak.... about using WHAT in a string
14:15 sftp_ joined
moritz shinobicl__: you need .gist or .^name for that 14:15
masak pmichaud: I submitted it, but I'm not at all sure the criticism is relevant, because I don't know enough about the list model. 14:16
14:16 sftp left
masak pmichaud: though I do think it's rather insane that arrays are slower than hashes in that benchmark. 14:16
moritz well, I see no pragmatic reason to nest it all that deep, and performance is a good reason against it
pmichaud I'm curious if there's a similar discrepancy in p5, though :)
moritz in p5, arrays are faster than hashes
masak I can guarantee you that arrays are faster in p5.
pmichaud the "nesting" is an artifact of laziness. I haven't found a way around it.
moritz but why two levels deep? 14:17
masak the data indicates that in the short term, we'd be better off using hashes as underlying storage for arrays.
which is just... wrong.
pmichaud masak: well, yes, if everything is eager then it can be faster.
(much faster) 14:18
moritz but list assignment *is* eager (unless the RHS is potentially infinite), no?
masak I was doing item assignment.
pmichaud yes, the benchmark is on item assignment.
masak where the term *eager* doesn't really apply.
moritz though the example where I .DUMP'ed it was list assignment 14:19
r: my @a = 1, 2, 3; say @a.DUMP
p6eval rakudo 1968b8: OUTPUT«Array<-8535248794724126791>(:items(Mu), :nextiter(ListIter<-8535248794732518218>(:reified(▶Mu), :rest(RPA<-8535248794732485459>(Array<-8535248794724132930>(:items(RPA<-8535248794724091994>(▶1, ▶2, ▶3)), :nextiter(▶Mu)))), :list(Array<-8535248794724126791>))))␤»…
moritz even if it is lazy, I see reason for only one level of nesting
pmichaud moritz: I agree with you that something looks wrongish there. 14:20
moritz must leave now
pmichaud like, wrongish enough that I'm motivated to open up the code again and see what's going on :)
masak yay
pmichaud I'm curious if it's always been this way though (in nom) 14:21
the above doesn't jibe well with what I remember of the code, so I'm wondering if a change somewhere else has introduced this behavior
r: my @a; @a[0] = 1; @a[1] = 2; @a[2] = 3; say @a.DUMP; # just curious 14:22
p6eval rakudo 1968b8: OUTPUT«Array<5730301629138936667>(:items(RPA<5730301629130058586>(▶1, ▶2, ▶3)), :nextiter(▶Mu))␤»
pmichaud yes, that's more like what I would expect.
colomon just glanced at his IRC client to discover pmichaud++ is here!
pmichaud I'm thinking something has going wonky with list assignment.
s/going/gone/ 14:23
anyway, I don't think the double-nesting is the source of the speed delay noted by masak++, since that's an item assignment issue.
r: my $t = now; my @a = 0 .. 1e4; print now - $t; 14:24
p6eval rakudo 1968b8: OUTPUT«0.966963239242268»
pmichaud r: my $t = now; my %h; %h{ $_ } = $_ for 1 .. 1e4; print now - $t; 14:25
p6eval rakudo 1968b8: OUTPUT«1.42148155308195»
pmichaud it's also not true that "hashes are faster than arrays" :-)
at least, not as written there. :-)
14:26 mucker left
masak the above comparse one list assignment to an array against 1e4 item assignments to a hash. 14:26
compares*
14:27 shinobicl joined
pmichaud well, for item assignment hashes currently have a few advantages. 14:27
e.g., we don't have to do checks for "infinite hashes" 14:28
there also aren't exceptions tested for or generated for "invalid keys"
r: my %h; %h{-1} = -1; say %h.perl; 14:29
p6eval rakudo 1968b8: OUTPUT«("-1" => -1).hash␤»
pmichaud r: my @a; @a[-1] = -1; say @a.perl;
p6eval rakudo 1968b8: OUTPUT«Cannot use negative index -1 on Array␤ in method <anon> at src/gen/CORE.setting:8083␤ in <anon> at src/gen/Metamodel.pm:2250␤ in any find_method_fallback at src/gen/Metamodel.pm:2248␤ in any find_method at src/gen/Metamodel.pm:822␤ in block <anon> at /tmp/tRrA…
14:30 shinobicl__ left
masak nod. 14:30
pmichaud r: my @a; @a[$_] = $_ for 1 .. 10; print @a.DUMP;
p6eval rakudo 1968b8: OUTPUT«Array<7462650248283522845>(:items(RPA<7462650248282058266>((null), ▶1, ▶2, ▶3, ▶4, ▶5, ▶6, ▶7, ▶8, ▶9, ▶10)), :nextiter(▶Mu))»
pmichaud hmmm. clearly the code has changed a fair bit since I wrote it, since we now have :$BIND! arguments. 14:31
ggoebel masak: regarding embedding SQL in code... I assume you are familiar with LINQ? That is microsoft's answer to that question en.wikipedia.org/wiki/Language_Integrated_Query 14:33
pmichaud I suspect the main difference in the code has to be the use of self.exists($pos) in Array.at_pos versus nqp::existskey(...) in Hash.at_key 14:34
self.exists($pos) is likely to be far more expensive.
flussence ggoebel: we were talking about this a few days/weeks ago... someone suggested we can do most of the fancy DBIx-style stuff with the syntax we already have :)
pmichaud it might be worth rewriting Array.at_pos to avoid the self.exists() 14:35
(i.e., to use an nqp::builtin directly somehow)
colomon: o/ 14:36
colomon \o
sjn pmichaud: hotel arrangements for your trip to the hackathon in Oslo have now been done. :) 14:37
pmichaud anyway, I have to head off to run some errands; I'll take a look at the Array issue a bit more later. Also I'll look into moritz's double-level array bit; I agree that looks really wonky.
sjn: \o/
tadzik pmichaud: hello!
pmichaud I'm very much looking forward to being there
sjn pmichaud: hope you're fine with the same hotel as last time (they've refurbished since then, so it's a bit nicer now)
tadzik double-level arrays, almost like the double bacon bug
14:37 PacoAir joined
pmichaud sjn: it was fine the last time (quite nice, actually) 14:38
bonsaikitten github.com/sorear/niecza/issues/110 let's see how many people yell at me for doing it wrong ;)
pmichaud sjn: so yes, same hotel is very acceptable :)
sjn awesome \o/
pmichaud okay, I must go or I shall be late for my appointments. bbl 14:39
(tadzik: hello :-)
masak ggoebel: I am (somewhat) familiar with LINQ, and I did think about LINQ when I wrote the comment about SQL.
14:43 slavik1 joined
colomon Ack. Just wrote a very simple p6 script for $work. It goes completely wrong instantly in niecza, and blows up with a random error after 4 minutes in rakudo. :( 14:43
masak :( 14:44
masak hopes both those behaviors can be turned into nicely golf'd bug reports
colomon gist.github.com/2114864 14:46
On the principle of "Ask other people if you are doing something stupid you don't see".
tadzik colomon: .= I guess 14:47
that looks like a Perl5ism
colomon Script is supposed to go through a text file, which contains multiple large sections each labelled "Brep Start", and finally just print out the last one.
tadzik: ooo, good call!
masak colomon: $brep .= $_;
colomon: method call? 14:48
14:48 ApHeX3211 left
masak I'm surprised that compiles. 14:48
colomon nope, p5ism
it compiles on both compilers!!!
geekosaur oosp
masak std: my $brep; $brep .= $_;
geekosaur "oops" even.
p6eval std 1ad3292: OUTPUT«Potential difficulties:␤ Unsupported use of .= as append operator; in Perl 6 please use ~= at /tmp/XDvFIK591_ line 1:␤------> my $brep; $brep .=⏏ $_;␤ok 00:01 110m␤»
colomon and (as I said) it ran for 4 minutes on rakudo, going through a text file which looks nothing at all like a series of p6 methods. 14:49
masak ponders whether "oosp" can be considered a very short autopun
colomon: what a wonderful way to crash Rakudo, though.
colomon niecza: my $brep; $brep .= $_;
p6eval niecza v15-4-g1f35f89: OUTPUT«Use of uninitialized value in string context␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1222 (warn @ 3) ␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 230 (Mu.Str @ 10) ␤ at /home/p6eval/niecza/src/STD.pm6 line 3853 (ANON @ 1) ␤ at /home/p6…
masak colomon++
colomon yup, that's the error I was getting locally on niecza. LTA and then some. 14:50
niecza: my $brep = ""; $brep .= "1 Regions In Brep"
p6eval niecza v15-4-g1f35f89: OUTPUT«===SORRY!===␤␤Unsupported use of . to concatenate strings or to call a quoted method; in Perl 6 please use ~ to concatenate, or if you meant to call a quoted method, please supply the required parentheses at /tmp/SYkG47nkbO line 1 (EOF):␤-…
colomon well, that's a fine error 14:51
r: my $brep = ""; $brep .= "1 Regions In Brep"
p6eval rakudo 1968b8: OUTPUT«===SORRY!===␤Quoted method name requires parenthesized arguments at line 1, near ""␤»
colomon as is that.
gfldex does $_ got a type? 14:53
colomon n: my $brep = ""; $brep .= "1.0000000000000000 0.0000000000000000 0.0000000000000000 - Color"
p6eval niecza v15-4-g1f35f89: OUTPUT«===SORRY!===␤␤Unsupported use of . to concatenate strings or to call a quoted method; in Perl 6 please use ~ to concatenate, or if you meant to call a quoted method, please supply the required parentheses at /tmp/t58juqOhgY line 1 (EOF):␤-…
colomon n: my $brep = ""; for "1.0000000000000000 0.0000000000000000 0.0000000000000000 - Color\n".lines { $brep .= $_ } 14:54
p6eval niecza v15-4-g1f35f89: OUTPUT«Use of uninitialized value in string context␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1222 (warn @ 3) ␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 230 (Mu.Str @ 10) ␤ at /home/p6eval/niecza/src/STD.pm6 line 3853 (ANON @ 1) ␤ at /home/p6…
colomon there we are
r: my $brep = ""; for "1.0000000000000000 0.0000000000000000 0.0000000000000000 - Color\n".lines { $brep .= $_ }
p6eval rakudo 1968b8: OUTPUT«Method 'postcircumfix:<( )>' not found for invocant of class 'Str'␤ in <anon> at src/gen/BOOTSTRAP.pm:812␤ in any <anon> at src/gen/BOOTSTRAP.pm:808␤ in method dispatch:<var> at src/gen/CORE.setting:762␤ in method dispatch:<.=> at src/gen/CORE.setting:787␤ in …
colomon and there we are!
r: my $brep = ""; for "1.0\n".lines { $brep .= $_ }
p6eval rakudo 1968b8: OUTPUT«Method 'postcircumfix:<( )>' not found for invocant of class 'Str'␤ in <anon> at src/gen/BOOTSTRAP.pm:812␤ in any <anon> at src/gen/BOOTSTRAP.pm:808␤ in method dispatch:<var> at src/gen/CORE.setting:762␤ in method dispatch:<.=> at src/gen/CORE.setting:787␤ in …
masak o.O
pmichaud back again for a moment
colomon n: my $brep = ""; for "1.0\n".lines { $brep .= $_ } 14:55
p6eval niecza v15-4-g1f35f89: OUTPUT«Use of uninitialized value in string context␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1222 (warn @ 3) ␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 230 (Mu.Str @ 10) ␤ at /home/p6eval/niecza/src/STD.pm6 line 3853 (ANON @ 1) ␤ at /home/p6…
masak r: $_ = "say"; 42 .= $_
p6eval rakudo 1968b8: OUTPUT«Method 'postcircumfix:<( )>' not found for invocant of class 'Str'␤ in <anon> at src/gen/BOOTSTRAP.pm:812␤ in any <anon> at src/gen/BOOTSTRAP.pm:808␤ in method dispatch:<var> at src/gen/CORE.setting:762␤ in method dispatch:<.=> at src/gen/CORE.setting:787␤ in …
colomon masak: ideas for better golfing?
moritz r: $_ .= $_
p6eval rakudo 1968b8: OUTPUT«Method 'Any' not found for invocant of class 'Any'␤ in <anon> at src/gen/BOOTSTRAP.pm:800␤ in any <anon> at src/gen/BOOTSTRAP.pm:797␤ in method dispatch:<var> at src/gen/CORE.setting:762␤ in method dispatch:<.=> at src/gen/CORE.setting:787␤ in block <anon> at …
colomon oh, you're already on it.
masak n: my $brep = ""; $_ = "1.0"; $brep .= $_
p6eval niecza v15-4-g1f35f89: OUTPUT«Use of uninitialized value in string context␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1222 (warn @ 3) ␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 230 (Mu.Str @ 10) ␤ at /home/p6eval/niecza/src/STD.pm6 line 3853 (ANON @ 1) ␤ at /home/p6…
pmichaud as far as the "nesting" within moritz++'s list assignment example -- I suspect that may actually be rakudo being smart enough to not collapse the nesting until it's convenient (or necessary) to do so
masak r: my $brep = ""; $_ = "1.0"; $brep .= $_
p6eval rakudo 1968b8: OUTPUT«Method 'postcircumfix:<( )>' not found for invocant of class 'Str'␤ in <anon> at src/gen/BOOTSTRAP.pm:812␤ in any <anon> at src/gen/BOOTSTRAP.pm:808␤ in method dispatch:<var> at src/gen/CORE.setting:762␤ in method dispatch:<.=> at src/gen/CORE.setting:787␤ in …
pmichaud r: my @a = 1,2,3; say @a.DUMP; # nesting still exists 14:56
p6eval rakudo 1968b8: OUTPUT«Array<9117123632094916941>(:items(Mu), :nextiter(ListIter<9117123632103330891>(:reified(▶Mu), :rest(RPA<9117123632103330897>(Array<9117123632094966091>(:items(RPA<9117123632094921045>(▶1, ▶2, ▶3)), :nextiter(▶Mu)))), :list(Array<9117123632094916941>))))␤»…
moritz r: my @a = 1, 2, 3; @a[0] = 5; say @a.DUMP
p6eval rakudo 1968b8: OUTPUT«Array<210349531758767697>(:items(RPA<210349531759943517>(▶5)), :nextiter(ListIter<210349531772507474>(:reified(▶Mu), :rest(RPA<210349531771335763>(▶2, ▶3)), :list(Array<210349531758767697>))))␤»
pmichaud r: my @a = 1,2,3; say @a[0]; say @a.DUMP;
14:56 abercrombie left
p6eval rakudo 1968b8: OUTPUT«1␤Array<-4576368191250143623>(:items(RPA<-4576368191239098016>(▶1)), :nextiter(ListIter<-4576368190703353748>(:reified(▶Mu), :rest(RPA<-4576368191250124939>(▶2, ▶3)), :list(Array<-4576368191250143623>))))␤» 14:56
moritz we'll still pay the double-nesting penalty for every item that is accessed
pmichaud no, not really. 14:57
how so?
colomon masak: the reason the rakudo failure was so slow was that for wasn't using lines() lazily, I'll bet.
masak moritz: you're still confusing the item assignment example with your list assignment example.
moritz: I did too, for a while, I think.
moritz to get at @a[1], the list still has to descend into two ListIters
masak colomon: sounds reasonable.
pmichaud only the first time it's accessed. 14:58
moritz yes, but still for every item once
masak: no, I'm mixing on purpose
14:58 birdwindupbird left
pmichaud that's true whether you do it as part of the list assignment or postpone it until later. 14:58
14:58 abercrombie joined
pmichaud rakudo is simply saying "don't bother reifying all of the elements until they're really needed" 14:58
where "reify" in this case means "move from the nextIter list into the items list" 14:59
back to masak++'s case, what needs to happen is that we need to hotpath Array.at_pos for the case where the Array doesn't have any lazy (nextiter) part. 15:00
instead of relying on self.exists() to do it, which gets expensive.
(because of the method call overhead)
masak that sounds nice.
pmichaud I suspect that's the primary speed difference between the hash and array example. if so, that would get them closer in line, although Array still has a bit more work to do because it has the overhead of checking for a lazy part. 15:01
(which is just a definedness check)
Hash has the advantage of being able to do all of its element existence checking in a single Parrot op. Array has to do several other boundary and laziness checks in addition to the exists Parrot op 15:02
15:02 fgomez joined 15:03 fgomez left, fgomez joined
pmichaud anyway, I still agree that the double-nesting looks a bit suspicious, but I suspect it's simply Rakudo being (possibly wisely) lazier than we would expect at first glance. 15:03
15:03 tokuhiro_ joined
pmichaud i.e., it's postponing some of the work of moving things into the items attribute, instead of incurring the cost at the point of the assignment 15:04
okay, I have to head off to next appointments now -- bbl. 15:05
colomon masak: you want to submit bug reports for your golfs, or shall I? 15:07
shinobicl In this line of code... multi infix:<->(Date:D $a, Date:D $b) { $a.daycount - $b.daycount; } What does the ':' after 'Date' means? 15:08
masak colomon: please go ahead.
15:08 att_ left
tadzik shinobicl: Date:D means "a Date object, defined" I think 15:08
masak shinobicl: the ':D' means "must be an instance, can't be a type object"
tadzik as in "instantiated, not a type object" 15:09
15:10 leprevost left 15:20 wolfman2000 left 15:22 att_ joined
fgomez hey guys, newbie doubt here 15:22
if i define a sub as sub mysub (*%params) {...}
what is the reason a call like this works 'mysub(a=>1, b=>2, c=>3)' but a call like this doesn't 'my %h = a=>1, b=>2, c=>3; mysub(%h);' 15:23
tadzik in the second one you're passing a single hash object rather than a list of pairs 15:24
fgomez I have to flatten the %h with '|' for it to work
tadzik yes
fgomez ah ok
but why wouldn't it work regardless then?
if it's being passed as an object, why wouldn't params assume key=Object, value=undef 15:25
TimToady named args share syntax with pairs, but they're only named args as a special syntax when used at the top level of a call
the call object itself is called a Capture, and that contains the positional and named parameters 15:26
fgomez I was trying to verify what was going on in the generated capture 15:27
TimToady the | is what moves something over from the positionals to the nameds
fgomez but turns out I can't do 'my $capture = \(|%hash) 15:28
so when I use a slurpy hash in my signature, it's expecting named lists of pairs specifically?
list*
masak fgomez: key=Object, value=undef is p5-think. positional arguments and named arguments mostly move in different spaces.
%h is a positional argument, and as such won't map to a slurpy hash parameter. 15:29
geekosaur maybe the p5think here is that %h is passed as a list in p5, but an object in p6, and the latter cannot be matched against a list of pairs 15:30
fgomez mmm I see 15:31
that's what I understood wrong I think, that *%params implies a a bunch of pairs
oh very nice, so if I do mysub(%h=>'something') it works 15:32
masak I think so. 15:34
though %h is likely to be Str-mangled on the receiving end.
fgomez wait actually no it doesnt
hmm
masak r: my %h; my $pair = %h => 'something'; say $pair.perl 15:35
p6eval rakudo 1968b8: OUTPUT«{} => "something"␤»
fgomez even if I do mysub(%h.Str=>1) it'll complain 15:36
r: my %h = a=>1; my %g = b=>2; sub mysub(*%params) { for %params.kv -> $k, $v { say "$k:$v"; } } mysub(%h.Str=>%b=>Str); 15:37
p6eval rakudo 1968b8: OUTPUT«===SORRY!===␤Confused␤at /tmp/yUy0p5YHFe:1␤»
fgomez oops
r: my %h = a=>1; my %g = b=>2; sub mysub(*%params) { for %params.kv -> $k, $v { say "$k:$v"; } } mysub(%h.Str=>%b.Str); 15:38
p6eval rakudo 1968b8: OUTPUT«===SORRY!===␤Confused␤at /tmp/Zyso6Y1G99:1␤»
masak fgomez: missing ';' after '}' 15:47
well, after the '} }', let's say. 15:48
15:49 Patterner left, kaare_ joined
fgomez r: my %h = a=>1; my %g = b=>2; sub mysub(*%params) { for %params.kv -> $k, $v { say "$k:$v"; } }; mysub(%h.Str=>%b.Str); 15:50
p6eval rakudo 1968b8: OUTPUT«===SORRY!===␤Variable %b is not declared␤at /tmp/2iV53fodDK:1␤»
fgomez hmm, but that's a subroutine definition. does there need to be a ';' there?
masak Perl 6 syntax mandates that you either have a \n after a closing curly brace, or a ';'. 15:51
fgomez I'm still playing around with this in the interactive interpreter, but i still don't understand it exactly
15:51 Psyche^ joined, Psyche^ is now known as Patterner
fgomez oh I see 15:51
awwaiid masak, I wonder if at some point the principle of least surprise will win that one
masak awwaiid: how do you mean? 15:52
colomon masak: bug not filed because I cannot convince myself it actually is a bug... I vacillate back and forth.
awwaiid like if for the next 10 years if I have to tell each person who learns how to do oneliners about that rule, it might get old
masak awwaiid: nowadays, I'm a bit suprised that one-liners in Perl 5 work without the ';' after the '}' :)
awwaiid: seriously. it's highly illogical. 15:53
awwaiid the rule, or anyone who expects it to work? :)
masak the rule.
I admit that it makes one-liners look prettier, but at the expense of consistency and sanity. 15:54
awwaiid yeah. There is a difference between \s+ sensitivity and /\n|;/ sensitivity
masak Perl 6 clearly takes the clean, high road here. 15:55
awwaiid oh I thought you were agreeing with me :)
masak so no, I don't feel tired explaining it to people, even after 5 years :)
awwaiid ok
clearly I've been poking at perl6 for a long time and only noticed it recently, so it isn't a big deal 15:56
doy well, it's only illogical if you've already gotten comfortable with whitespace-sensitivity in general
15:57 alester joined
masak I recently realized that I can't break long expressions of after a closing (usually hash) curly. that bothered me, but not enough to complain about it. I still think it's a net win to have a simple, consistent rule. 15:57
awwaiid doy: I only _barely_ tollerate the idea of \s+ having meaning. Giving /\n|;/ meaning feels icky.
masak off*
doy awwaiid: agreed
(:
masak you're both arguing from a p5 viewpoint, where there simply is no consistency. 15:58
awwaiid well why not take it the other way and allow \n to replace ; in other cases? 15:59
I'll tell you why - because it's sick and wrong :)
fgomez lol
masak in the same vein, I haven't heard any arguments in defense of sigil variance better than "it makes sense for sigils to vary, and I'm used to it".
awwaiid irrelevant
doy masak: i don't understand the consistency argument? 16:00
about whitespace specifically
masak doy: Perl 5's rule seems to be "you can leave off semicolons after block-ending closing curlies, because these sort of terminate a statement anyway. the parser will figure it out for you" 16:01
doy: Perl 6's rule is 'every statement, including sub declarations, needs a semicolon. however, "};\n" is so common that we will infer it from "}\n" for you' 16:02
16:02 MayDaniel joined
awwaiid oh, I thought the rule was "you can leave off semicolons before or after blocks because there is no ambiguity on what you mean" 16:02
masak in Perl 5? yeah, maybe. 16:03
fgomez r: sub mysub(*%params) { say "$_:{%params{$_}}" for %params.keys; }; mysub(a=>1,b=>2);
p6eval rakudo 1968b8: OUTPUT«a:1␤b:2␤»
fgomez r: sub mysub(*%params) { say "$_:{%params{$_}}" for %params.keys; }; mysub(3=>1,4=>2);
p6eval rakudo 1968b8: OUTPUT«Too many positional parameters passed; got 2 but expected 0␤ in sub mysub at /tmp/E6ZMFo7FW6:1␤ in block <anon> at /tmp/E6ZMFo7FW6:1␤␤»
fgomez what is the reason that wouldn't work?
the second call that is
masak awwaiid: the point is, in Perl 6, there *is* ambiguity as to what you mean, because you can use blocks and closures more freely.
awwaiid so the consistency is that sub declarations are statements, just like other statements. makes sense.
ah. because it looks like a block to me, but it could actually be a param? 16:04
16:04 sdo left
masak fgomez: I don't know, actually. 3 and 4 makes the pairs be interpreted as pairs, not as named arguments. 16:05
fgomez: maybe because those are not valid parameter variable names.
awwaiid: yes, or anything really.
awwaiid and why is \s+ not good enough? We should at least write this down to point stupid pedantics like me at 16:06
masak awwaiid: From S04: "Because subroutine declarations are expressions, not statements, this is now invalid: sub f { 3 } sub g { 3 }"
it's two terms in a row, basically. 16:07
std: sub f { 3 } sub g { 3 }
p6eval std 1ad3292: OUTPUT«===SORRY!===␤Strange text after block (missing comma, semicolon, comment marker?) at /tmp/SXasBnbCoX line 1:␤------> sub f { 3 }⏏ sub g { 3 }␤ expecting any of:␤ infix or meta-infix␤ infixed function␤ statement modifier loop␤Pa…
awwaiid I find it disturbing that I almost prefer a forced ';' instead of /;|\n/
fgomez masak: I see, yeah that makes an awful lot of sense actually hehe
masak awwaiid: then I have an easy solution for you. 16:08
awwaiid hehe
masak always use '};'
awwaiid yeah yeah
masak if it helps, *I* can force you. 16:09
awwaiid that's awefully kind of you to offer :)
masak anytime :)
16:10 plobsing left
awwaiid so what can we legitamately put in the blank: sub f { 3 } ________ 16:10
cognominal on the shell, how can I ask if something (say Hash) is a class, and somehting (say Associative) is a role?
awwaiid I guess an operator
16:12 plobsing joined
cognominal r: Associative.^roles 16:13
p6eval rakudo 1968b8: ( no output )
cognominal r: say Associative.^roles
p6eval rakudo 1968b8: OUTPUT«Associative()␤»
cognominal I guess this a good enough answer
masak r: say sub f { 3 } + 42
p6eval rakudo 1968b8: OUTPUT«Cannot call 'Numeric'; none of these signatures match:␤:(Mu:U \$v, Mu %_!)␤␤ in method Numeric at src/gen/CORE.setting:644␤ in sub infix:<+> at src/gen/CORE.setting:2284␤ in block <anon> at /tmp/pJnI10rBAj:1␤␤»
masak r: say sub f { 3 } // 42 16:14
p6eval rakudo 1968b8: OUTPUT«sub f() { ... }␤»
awwaiid yeah
dalek kudo/nom: 69791b0 | masak++ | src/Perl6/Metamodel/BOOTSTRAP.pm:
[BOOTSTRAP.pm] fixed copy-paste-o
16:15
16:15 wtw left 16:16 snearch left
cognominal r: say Associative.^methods 16:16
p6eval rakudo 1968b8: OUTPUT«of␤»
cognominal strange that I can call .^roles that does not appear on .^methods
is .^roles some other kind of entity? 16:17
masak you're confusing levels, I think. 16:18
awwaiid masak, yeah. pretty significant cost and scary road to go down to start making exceptions to treating the blocks I care about different. that don't make it feel less wrong, but shuts me up for now :) 16:19
fgomez sub mysub($a, $b) { say "$a,$b"; }; mysub(a=>'a', b=>'b');
masak .^methods lists the methods on the class. .^roles is a method on the metaclass object.
fgomez r: sub mysub($a, $b) { say "$a,$b"; }; mysub(a=>'a', b=>'b');
p6eval rakudo 1968b8: OUTPUT«Not enough positional parameters passed; got 0 but expected 2␤ in sub mysub at /tmp/PCW0oR55xf:1␤ in block <anon> at /tmp/PCW0oR55xf:1␤␤»
masak awwaiid: happy to have had this discussion.
fgomez is this an outdated construct? I grabbed it from the using Perl6 book
masak awwaiid: it was eye-opening for me as well.
fgomez: yes. 16:20
fgomez but (clearly) it doesn't work right now, but hte book is from july last year
ah ok
so in order to pass an argument by name, the parameter has to be named as well?
masak fgomez: according to the spec, proto subs may declare positional paramteres which can then be bound to named arguments. 16:23
fgomez: but it's definitely not implemented in Rakudo, and I doubt it's implemented in Niecza. 16:24
16:24 tokuhiro_ left
sjn has updated the Perl 6 Hackathon info page: gist.github.com/1711730 16:24
there's a registration link there now \o/
GO FORTH AND REGISTER! \o/ 16:25
masak \o/ 16:27
cognominal r: Associative.HOW.^methods 16:28
p6eval rakudo 1968b8: OUTPUT«Method 'dispatch:<.^>' not found for invocant of class 'Perl6::Metamodel::ParametricRoleGroupHOW'␤ in block <anon> at /tmp/P8KkIYum1t:1␤␤»
16:29 pmurias joined
pmurias fglock: hi 16:29
masak cognominal: the metaclass object has a metaclass object; it just doesn't have the sugar to invoke methods on it that way. :) 16:30
cognominal r: Associative.HOW.HOW.methods 16:31
pmurias fglock: we now pass 3 perl5 tests ;)
p6eval rakudo 1968b8: OUTPUT«too few positional arguments: 1 passed, 2 (or more) expected␤ in methods at src/stage2/gen/nqp-mo.pm:984␤ in block <anon> at /tmp/wHyuJkRYWg:1␤␤»
masak cognominal: and now you see what the sugar does for you (it supplies the object you're interested in) 16:32
r: Associative.HOW.HOW.methods(Associative.HOW)
p6eval rakudo 69791b: OUTPUT«too few named arguments: no argument for required parameter 'local'␤ in methods at src/stage2/gen/nqp-mo.pm:984␤ in block <anon> at /tmp/wsn1zMf7Sr:1␤␤»
16:32 kaleem_ joined
masak r: Associative.HOW.HOW.methods(Associative.HOW, :local(1)) 16:32
p6eval rakudo 69791b: ( no output )
masak r: say Associative.HOW.HOW.methods(Associative.HOW, :local(1))
p6eval rakudo 69791b: OUTPUT«Method 'gist' not found for invocant of class 'NQPRoutine'␤ in method gist at src/gen/CORE.setting:4189␤ in sub say at src/gen/CORE.setting:6216␤ in block <anon> at /tmp/AZqTSPqVNo:1␤␤»
masak anyway, that works :)
16:32 fglock left
masak r: say Associative.HOW.HOW.methods(Associative.HOW, :local(1)).elems 16:33
p6eval rakudo 69791b: OUTPUT«22␤»
16:34 kaleem left 16:40 nwc10 joined 16:42 pmurias left 16:49 havenn joined 16:50 M_o_C joined, fgomez left
PerlJam
.oO( How now brown cow? )
16:50
pmichaud PerlJam: good to see you again also :) 16:51
nwc10 is impressed with how masak stumbled across an incantation that summons pmichaud
pmichaud yes, masak++. It's also a matter of having really good timing on that one. Other tickets have gotten my attention but I've been too busy with other stuff to "respond" :) 16:52
masak nwc10: I was thinking the same.
nwc10: "I should submit more List-internals tickets!" :) 16:53
pmichaud long ago in the early days of my contributions, it was thought that simply mentioning any form of PGE bug was sufficient to summon me to #parrot :)
sjn pmichaud: gist.github.com/1711730 :)
jnthn: same to you
moritz: and you :) 16:54
tadzik: and you :D
pmichaud sjn: excellent!
sjn fsergot isn't there though
here*
how does one leave messages to people? 16:55
tadzik sjn: I did it already :)
phenny: tell sjn this way
phenny tadzik: I'll pass that on when sjn is around.
sjn yay!
phenny sjn: 16:55Z <tadzik> tell sjn this way
sjn phenny: tell fsergot gist.github.com/1711730 for your register-joyment :) 16:56
phenny sjn: I'll pass that on when fsergot is around.
sjn tadzik: have you recieved a host from us yet? :) 16:57
masak decommutes
sjn tadzik: or have you organized something else
tadzik sjn: oh, huh, weren't you to be my host? 16:58
sjn I'm going the find you one :) 17:00
tadzik okay :)
sjn although if you prefer, you can stay at my place
no problems with that
tadzik what suits you best, although I seem to recall you offering me a place :)
17:00 fgomez joined
sjn well, I almost did :) 17:00
we have commitments for 6 beds from 4 hosts 17:01
fgomez lol, vim-perl perl6 syntax plugin for vim brings it down to its knees
sjn but we haven't really matched people with hosts yet :)
tadzik okay :) 17:02
17:02 wolfman2000 joined
sjn masak: so you're planning on staying at a hotel? 17:04
masak: we can probably find you a sofa if you're interested saving money
PerlJam Is someone going to blog on what happened with GSoC + TPF ? 17:05
arnsholt_ fgomez: Yeah, it's a known issue, unfortunately
sjn masak: buf if you want to stay at a hotel anyway, pmichaud will be staying at anker-hotel.no/ :)
cognominal thx, masak. was way from keyboard and will be. 17:13
17:19 fglock joined
pmichaud gist.github.com/2119935 # before and after timings of patch to hotpath Array.at_pos 17:19
spectesting now. 17:20
all tests pass 17:26
shinobicl some time ago, i used to have some overloaded operators with "our multi...." in a .pm file. Now, i understand that this is not possible. Well, i declared those operators in a .pm file as "multi infix..." , and i have a .t that uses that .pm file. Now I can't invoke those overloaded operators. 17:27
tadzik pmichaud: cool! 17:28
17:28 colomon left
moritz shinobicl: you need to 'is export' them 17:28
shinobicl oh, i see. thanks moritz!
pmichaud updating the patch to handle the at_pos(int) case 17:29
PerlJam moritz: it's enough to "is export" the proto isn't it?
17:30 nwc10 left
shinobicl i was using Temporal.pm as an example... i can't find the 'export' word in that file. 17:30
moritz PerlJam: yes, but if you want to add multis to an existing operator, a proto is the wrong thing to export
shinobicl: Temporal.pm isn't "use"ed in the normal way; it's part of the setting 17:31
shinobicl: so things are different
17:31 colomon joined
pmichaud r: say (1.1902-0.8430)/1.1902 17:34
p6eval rakudo 69791b: OUTPUT«0.291715678037305␤»
pmichaud 30% speedup isn't bad :) 17:35
oops
r: say (1.1902-0.8929)/1.1902
p6eval rakudo 69791b: OUTPUT«0.249789951268694␤»
pmichaud 25% speedup isn't bad :)
PerlJam www.slate.com/articles/technology/t...ingle.html
Scroll down to where she asks "But what language to learn?" and look at the 3 reasons cited for choosing ruby 17:36
particularly that third one.
moritz pmichaud: I also suspect that iteration could be optimized for reified lists somehow (unless it already is) 17:37
as well as iteration over integer ranges 17:38
17:38 tyatpi joined
pmichaud moritz: it has some optimizations already but there are more to be explored 17:38
moritz though the real beef is in sink context, where we don't have to keep the return values around
pmichaud it's important to note that reified/not reified isn't the only dimension, there's also flattened/unflattened
daxim PerlJam, conclusion? 17:39
moritz right, that's one that I don't really appreciate yet
pmichaud something can be reified but unflattened, which means that in e.g., list assignment you still have to walk through the list to do flattening.
fgomez Oh gee, just downloaded the updated draft for Using Perl 6, and the wording on the Signatures part is much clearer than the old version I was reading
pmichaud List.reify uses some opcode optimization in place to avoid walking through elements when it can detect (how much of) a simple splice is sufficient
what lists really want is some sort of flag that says "I'm fully reified and all of my elements are flattened." The Seq type held that honor at one point, but its place in the type parentage was always off. 17:41
17:44 mj41_nb left 17:49 kaleem_ left 17:50 havenn left
fgomez are the synopses the best reference to learn perl6 right now? 17:52
17:54 colomon left 17:55 colomon joined
PerlJam fgomez: there's also "Using Perl 6" 17:56
17:56 havenn joined
moritz which fgomez already mentioned :-) 17:56
there are also various blogs about perl 6, for example the Perl 6 advent calendar
PerlJam ah, so he did.
fgomez: I'd say there is currently no "best reference" for learning Perl 6. :) 17:57
or, the best reference is to use everything you can find.
fgomez hmm
moritz the best is to read all the stuff out there, and hang around here and ask questions whenever there's something unclear
PerlJam (but treat the synopses as definitive)
moritz and play with the compilers
fgomez .. 18:01
ops
moritz rakudo: say 'play with me!'
p6eval rakudo 69791b: OUTPUT«play with me!␤»
18:02 NamelessTee left
dalek kudo/nom: c10792f | pmichaud++ | src/core/Array.pm:
Hotpath the check for existing elements in Array.at_pos(), addressing (partially) the Array-versus-Hash initialization speed anomaly described in RT #111848.

Each Array element access via .at_pos($pos) resulted in an expensive call to self.exists($pos) for each access, whereas Hash element accesses via .at_key($key) were able to use nqp::existskey() directly. This patch uses nqp::existspos() to hotpath the detection of existing elements and avoids calls to self.exists($pos) when the Array is already fully reified. For the benchmark given in RT #111848, this results in a ~25% speedup for array element accesses, and brings it to within 5% of Hash element access times. (At present Array element accesses still have more overhead at the PIR level than Hash element accesses due to laziness considerations and boundary checks.)
18:06
18:07 dakkar left 18:11 plobsing left 18:18 havenn left 18:26 tyatpi left 18:34 sisar left
fgomez Oh I didn't know you could specify a return type in sub definitions.. 18:37
TimToady yup 18:38
in any of three different places, in fact 18:39
18:40 havenn joined
fgomez r: sub bar ($x, $y --> Int()) { return 3.5 }; bar(); 18:40
p6eval rakudo c10792: OUTPUT«===SORRY!===␤Missing block␤at /tmp/92lqv2sp41:1␤»
18:40 jaldhar left
fgomez :< 18:41
18:41 NamelessTee joined
pmichaud r: sub bar ($x, $y --> Int) { return 3.5 }; bar() 18:41
p6eval rakudo c10792: OUTPUT«===SORRY!===␤CHECK FAILED:␤Calling 'bar' will never work with no arguments (line 1)␤ Expected: :(Any $x, Any $y)␤»
pmichaud r: sub bar ($x, $y --> Int) { return 3.5 }; bar(3,4) 18:42
p6eval rakudo c10792: ( no output )
pmichaud r: sub bar ($x, $y --> Int) { return 3.5 }; say bar(3,4)
p6eval rakudo c10792: OUTPUT«3.5␤»
pmichaud nyi, I guess.
afk 18:44
jnthn afternoon, #perl6 18:48
ooh, pmichaud! \o/
Pro tip: in Argentina, the price for wine in the menu that would seem to get you a glass of it in Sweden does actually get you a whole bottle here in Argentina. Lunch was very liquid. :) 18:49
colomon o/
jnthn Given arrays are lazy in Perl 6 and hashes need not do that, somehow I don't actually feel that surprised that arrays aren't crazy faster than hashes. 18:51
18:51 ksi joined
jnthn Natively typed arrays, otoh, apparently won't have to do any laziness. 18:52
So should be decidedly faster.
pmichaud do natively typed arrays have to deal with undefined elements? 18:53
or non-existent elements?
jnthn pmichaud: There's no "undefined" as far as natives go since everything is unboxed
pmichaud (jnthn: o/ !)
jnthn Non-existent - yeah, if you index past the end. And then it depends if it's an explicitly sized array or not. :) 18:54
pmichaud jnthn: right. Much of the overhead for Array is dealing with vivification and laziness issues
jnthn *nod* 18:55
There's still a few oddnesses with arrays/lists, fwiw.
I put in a patch that helped with list assignment at some point a while back.
pmichaud anyway, my patch got Array to within 5% of Hash, so I suspect that's about as good as to be expected until we stop optimizing for constant lists or lists that we know certain characteristics of (e.g., constant lists)
jnthn "until we stop" - start? :)
pmichaud *start, yes. 18:56
jnthn :)
TimToady well, you can't stop until you've started either...
jnthn Anyway, the patch I did was likely imperfect.
pmichaud I'm likely to look a little more at List issues as I start finding tuits :)
especially since there are some good list-y tickets :)
jnthn Nice. They're still the bit of Rakudo that I find hardest to hack on.
pmichaud I still want to try to refactor List.munch to improve iteration speed, too. 18:57
jnthn I'm relatively comfortable on the regex engine by now, but the lists are still a place I don't feel I've wrapped my head around the model.
TimToady perl6: constant @foo = 1, @foo; say @foo[5]
jnthn Well, parts of it I have...but when I go to hack on it I always feel I'm missing something. 18:58
p6eval rakudo c10792: OUTPUT«===SORRY!===␤Variable @foo is not declared␤at /tmp/5ZXhMWKSIe:1␤»
..pugs: OUTPUT«pugs: *** Undeclared variable: ("@foo",MkPad (padToList []),[PCompiling {pc_pad = MkMPad {mp_id = 140653128351729, mp_pad = <ref:0x7fec5b5ccb21>}}])␤ at /tmp/BhLhXlKgdw line 1, column 20-24␤»
..niecza v15-4-g1f35f89: OUTPUT«Any()␤»
TimToady be nice when that works too
jnthn TimToady: In Rakudo, that *may* just be an error in symbol handling.
TimToady is probably missing some "I'm not defined yet" backpressure somewhere or other 18:59
jnthn TimToady: Oh, I think it's deeper than that.
TimToady: How is it meant to work? 19:00
TimToady: Constant delcarations are kind binding as far as I understand them. And there's nothing to say that @foo should be lazily read.
s/ind//
s/ind/kind/ # clearly, the wine worked...
pmichaud is not crying for jnthn++ in Argentina. 19:01
jnthn :)
TimToady if .ar wines are like .uy wines, then only about 10%, but that just makes it easier to have too much :)
jnthn pmichaud: Happy you're going to make it over to Oslo :)
pmichaud jnthn: me too!
jnthn TimToady: I think I'm still suffering from expecting Swedish prices to apply to alcohol here. :) 19:02
pmichaud afk
TimToady @foo is in a list, and lists are supposed to be lazy unless forced not to be
and the = is not really an assignment, which would be eager
jnthn TimToady: OK, so...what is it? :)
TimToady it's an initializer
jnthn To elaborate, my problem with the construct is this (more)
"1, @foo" to me is making a Parcel from 1 and a lookup up @foo 19:03
19:03 havenn left
jnthn In that constant declaration, @foo is not yet bound to anything. 19:03
s/up/of/
TimToady which is why it's an initializer, not just a binding
19:03 fgomez left
jnthn TimToady: I'm happy enough that they're different, I just don't grok what the "it's an initializer" bit actually boils down to here. 19:04
19:04 sporous left, fgomez joined, sporous joined 19:05 cogno joined
jnthn TimToady: If the answer is "@foo has an Array installed in the symbol, *then* we evaluate the RHS and assign it" then I can go with that. 19:06
(In that case, it's just like a "my" declaration)
TimToady no
that's not what is wanted here, since my's initializer is like assignment in being eager 19:07
this needs to be a recursive definition that returns 1,1,1,1,1...*
useless in this case, but there are more useful recursive definitions 19:08
jnthn I understand the desired result. I'm missing how we get to it.
TimToady reify can never reify more than one value at each level with that definition, and has to recurse through the laziness to get another 1
19:09 tyatpi joined
TimToady well, maybe it can reify twice as many each time 19:09
so each recursion level is like 1,@foo 1,1,@foo 1,1,1,1,@foo 1,1,1,1,1,1,1,1,@foo 19:10
but a more interesting example (required to work by the Python test suite!) is hamming numbers 19:11
constant @hamming = 1, dedup (@hamming X* 2) M (@hamming X* 3) M (@hamming X* 5);
where M is a merge infix 19:12
well, different syntax in Python, of course
jnthn If we have "1, @foo" then we don't want to change the semantics of parcels, which means @foo has to be *something* at the time we evaluate the RHS of the constant declaration. I'm just missing 1) what @foo is at that point, and 2) what we do with @foo once we've BEGIN-time evaluation of the RHS.
TimToady it's the promise to return whatever is in @foo 19:13
interpolating @foo into a list should be lazy
so it represents an iterator of some sort
jnthn I guess what I'm really asking is, does what you want desugar to something we already have, or is it something different?
19:13 libertyprime joined
jnthn Because I'm looking at this expecting it to desugar into something we already have. Which may be wrong... 19:14
TimToady is not sure if it desugars, having failed so far to get any hamming implementation to work
19:15 cogno_ joined
TimToady but that may be the lack of ability to merge lists lazily, which is why I simplified to 1,@foo 19:16
something in there seems to be snapshotting the current reification of @foo, not the abstraction of a lazy array 19:17
or maybe it's copying over the current plan and not allowing that to be extended somehow with lazy plans that we don't know yet 19:19
19:20 M_o_C left
masak home 19:26
19:26 cogno left
TimToady here's some discussion of hamming in Python: paddy3118.blogspot.com/2009/11/hamm...-just.html 19:27
defer_output is their way of talking about lazy iterators, I think 19:28
19:28 wolfman2000 left, cogno_ left
TimToady another: mail.python.org/pipermail/python-li...16102.html 19:29
pmichaud (just here for a second) ... also, are we clearly making the distinction that constant @foo = 1, @foo; is lazy while my @foo = 1, @foo; is eager? 19:31
TimToady yes
pmichaud okay
TimToady each declarator can treat = however it likes
that's one of the reasons we changed the parser to slurp the = with the declarator
pmichaud wfm 19:32
afk again, kid school pickup
TimToady it can also decide what :=, ::=, or .= mean
masak sjn: ah. I didn't want to impose unnecessarily. but if you have spare sofas in circulation, I'd be happy to fill one. :)
19:32 aindilis left
masak sjn: 'd probably be more of an adventure than hotel anyway. 19:33
19:33 aindilis joined
masak fwiw, jnthn and I are les slow, and haven't made definite trav plans yet. 19:33
TimToady lunch & 19:34
jnthn True :)
masak pmichaud++ # 30% speedup
jnthn was guessing hotel, or short-term appartment, or something :) 19:35
19:37 cogno joined 19:38 birdwindupbird joined
masak PerlJam: (re Ruby and hugging) I knew it! Perl 6 is the new Ruby! :P 19:40
PerlJam masak: yep :-) 19:41
19:41 cogno left 19:55 cogno joined 19:57 daxim left 20:03 cogno left, havenn joined
shinobicl nom: class A { has Int @.val is rw = <100>; method perl{ return "A.new($.val)"; }; method cloneadd3(){ my $aclone = self.clone; $aclone.val.push(3); return $aclone; } }; my A $a = A.new(); say $a.perl; my $b = $a.cloneadd3; say $a.perl; say $b.perl; 20:12
p6eval rakudo c10792: OUTPUT«A.new(100)␤A.new(100 3)␤A.new(100 3)␤»
shinobicl i think the second "say" is wrong.... why $a has another element added being that i add the element to the clone?
tadzik possibly it doesn't deepcopy 20:13
moritz there's no possible one-size-fits-them-all solution for clone
shinobicl nom: class A { has Int $.val is rw = 100; method perl{ return "A.new($.val)"; }; method cloneplus3(){ my $aclone = self.clone; $aclone.val += 3; return $aclone; } }; my A $a = A.new(); say $a.perl; my $b = $a.cloneplus3; say $a.perl; $a.cloneplus3(); say $a.perl; say $b.perl; 20:14
p6eval rakudo c10792: OUTPUT«A.new(100)␤A.new(100)␤A.new(100)␤A.new(103)␤»
shinobicl for scalars it seems to work
moritz well, only for value types 20:15
masak more specifically, no language provides a general deepcopy method, and no language ever will. 20:17
the world is too gnarly for that. it contains spoilsport types like database handles and other perishable-resource things. 20:18
shinobicl but even then, isn't much safer to make clone send a warning when trying to clone complex structures? or maybe i'm just using the wrong function (clone) 20:19
moritz you should make your own method for deep cloning 20:22
shinobicl i will... thanks again :)
20:22 fglock left
masak making your own method for deep cloning is the only solution I know of, from a language design perspective. 20:24
well, the far extreme of that is a serialization framework :) 20:25
shinobicl my own clone method sounds much saner 20:26
20:31 birdwindupbird left 20:35 snearch joined 20:37 MayDaniel left 20:44 pernatiy joined 20:49 fgomez left 20:59 perimosocordiae left 21:00 fgomez joined 21:07 libertyprime left 21:09 libertyprime joined
shinobicl nom: use Test; ok(1==2, "fails"); dies_ok( { my $x = (1/0); }, 'division by zero'); dies_ok( { my $x = (1/1); }, 'division'); 21:11
p6eval rakudo c10792: OUTPUT«not ok 1 - fails␤not ok 2 - division by zero␤not ok 3 - division␤»
21:12 kaare_ left
benabik r: try { my $x = (1/0); }; say $! 21:12
p6eval rakudo c10792: OUTPUT«Mu()␤»
benabik r: my $x = (1/0)
p6eval rakudo c10792: ( no output )
shinobicl i think that the 2nd test should report success 21:13
benabik r: say (1/0)
p6eval rakudo c10792: OUTPUT«Inf␤»
21:13 havenn left
benabik shinobicl: 1/0 doesn't die, it returns Inf. 21:13
shinobicl ok.. i see , 1/0 is not an exception:S
benabik I'm not sure why it does. That's not the right answer.
21:15 skids left, mj41_nb joined 21:29 tokuhiro_ joined 21:30 snearch left
flussence shouldn't that only happen for Num, not Int? 21:33
perl6: say 1e0 / 0e0; say 1/0;
p6eval niecza v15-4-g1f35f89: OUTPUT«Inf␤Inf␤»
..rakudo c10792: OUTPUT«Divide by zero␤ in block <anon> at /tmp/hNLuyrwdB7:1␤␤»
..pugs: OUTPUT«*** Illegal division by zero␤ at /tmp/4UUG04Skbi line 1, column 5-14␤»
flussence perl6: say 1/0; say 1e0/0e0; 21:34
p6eval niecza v15-4-g1f35f89: OUTPUT«Inf␤Inf␤»
..rakudo c10792: OUTPUT«Inf␤Divide by zero␤ in block <anon> at /tmp/cVnBBXkWEU:1␤␤»
..pugs: OUTPUT«*** Illegal division by zero␤ at /tmp/qi8QECl0_M line 1, column 5-8␤»
dalek ast: eb002d6 | jonathan++ | S04-phasers/pre-post.t:
Correct and unfudge a test; POST runs LIFO.
21:35
21:37 shinobicl left 21:47 NamelessTee left, NamelessTee joined 21:57 havenn joined
Juerd moritz: Possibly. Can you be more specific about the requirements? 21:58
22:01 pernatiy left 22:02 havenn left 22:03 havenn joined
dalek kudo/nom: eff8364 | jonathan++ | src/ (3 files):
Aborted PRE does not run POST or LEAVE phasers of the block.
22:05
ast: 70ba2f8 | jonathan++ | S04-phasers/pre-post.t:
Untodo another PRE/POST test.
22:06
atures: 96c433a | jonathan++ | features.json:
Update for PRE/POST phasers; Rakudo gets +, and since the submethod form is gone from spec then Niecza no longer needs +- on this.
22:07
flussence the alt+f4 ending
whoops, ww
masak sounds like an abrupt endind. 22:12
ending*
I'm in xmonad, and I still haven't really gotten used to alt+f4 not being bound to anything.
22:13 ksi left
flussence I've used e17 a few times, its default shortcuts really threw me off. I think "close window" is alt+X 22:14
tadzik I'm in KDE and I can't imagine it any other way than shift-windows-c ;) 22:15
huf i've been using win-e for ages
masak you're all freaks, the lot of you :P 22:17
flussence
.oO( close windows manually? just let the OOM-killer clean them up for you! :)
22:18
masak clearly Ctrl+Alt+Bksp is the only way to end applications. 22:19
tadzik window garbage collector
masak flussence: actually, that's the way it seems to work on my phone.
I never close stuff, I just shift over to some other app.
tadzik you never close tabs, too ;)
well, g'night #perl6 22:20
sjn nn o/
jnthn 'night, tadzik
flussence I remember (a long time ago now) reading about "crash-safe app design" where things should be built around the expectation that the process can be killed at any time. Sounds like that idea got put to use :)
masak dobranoc, drodzy tadzik. 22:21
flussence: fwiw, in Android there are hooks for various levels of inactivity. 22:22
flussence: apps are expected to preemptively save away everything already at the first level, which is just "unfocus" or something like that.
dalek kudo/nom: 169bc80 | jonathan++ | docs/ChangeLog:
Couple more ChangeLog notes.
22:23
jnthn Hmm. Rakudo has a release manager for the April release, but not one for the March release on this Thursday. If you fancy releasing the release with a bunch of phasers implemented and a nice startup time reduction, do sign up in docs/release_guide.pod. :) 22:26
masak: If you get a moment, something in the ChangeLog about macros landing would be le nice. :) 22:27
[Coke] pugs: say 3.Rat 22:34
p6eval pugs: OUTPUT«*** No such method in class Int: "&Rat"␤ at /tmp/KL6AvTuNvr line 1, column 5 - line 2, column 1␤»
22:34 plobsing joined
masak jnthn: gotcha. 22:35
masak looks into it
I can do this months release, but I would *prefer* to see some enthusiastic semi-newcomer sign up. I did last month. 22:36
22:38 skids joined
dalek kudo/nom: b2505be | masak++ | docs/ChangeLog:
[docs/ChangeLog] added macros and quasis

Oh right! Almost forgot. :-)
22:38
masak 'night, #perl6 22:39
felher o/ masak
colomon \o 22:41
22:46 cognominal left
[Coke] when is the release this month? 22:53
22:53 NamelessTee left 22:56 whiteknight joined
[Coke] ah, nevermind. I'm not going to move up my volunteer month. ;) 22:57
pmichaud: o/
23:05 tyatpi left 23:07 tokuhiro_ left
jnthn [Coke]: Yes, I noticed you were up for next month. Thanks. :) 23:07
jnthn => finding dinner in a thunderstorm :) 23:08
23:12 mj41_nb left 23:23 havenn left
[Coke] I figured this month was too close to the week of meetings in the UK for me to pay attentions. 23:27
[Coke] has now had some great Thai and Indian, and wonders if they will hit an ``English'' place some night this week. 23:28
23:29 cognominal joined
[Coke] gah. again I've been charging my laptop for hours except I didn't flip the little switch next to the power outlet. 23:29
23:31 BooK left, BooK joined 23:32 doy left 23:33 att_ left 23:36 att_ joined 23:40 y3llow left, y3llow joined, doy joined 23:45 PacoAir left
sorear good * #perl6 23:59