perl6-projects.org/ | nopaste: sial.org/pbot/perl6 | evalbot: 'perl6: say 3;' | irclog: irc.pugscode.org/ | ~280 days 'til Xmas
Set by mncharity on 18 March 2009.
00:11 nihiliad joined 00:18 lichtkind_ joined, ludan left 00:20 fridim_ left 00:36 lichtkind left 00:50 ZuLuuuuuu left 01:01 eternaleye joined 01:10 Whiteknight left 01:13 DemoFreak left 01:32 awwaiid left 01:33 awwaiid_ joined 01:42 awwaiid_ left, awwaiid joined
frioux rakudo: 5.sign 01:44
p6eval rakudo 748771: OUTPUT«Method 'sign' not found for invocant of class 'Int'␤current instr.: 'parrot;P6metaclass;dispatch' pc 637 (src/classes/ClassHOW.pir:161)␤»
01:49 cspencer joined 01:50 Sepheebear left 02:01 firelord joined
firelord hey everyone 02:01
frioux hi 02:03
rakudo: (1,2,3) >> + << (4,5,6)
p6eval rakudo 748771: OUTPUT«Statement not terminated properly at line 1, near ">> + << (4"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
frioux rakudo: (1,2,3) >>+<< (4,5,6)
p6eval rakudo 748771: RESULT«[5, 7, 9]»
frioux rakudo: (1,2,3).map: { ~$_ } 02:04
p6eval rakudo 748771: RESULT«["1", "2", "3"]»
frioux rakudo: (1,2,3)>>.map: { ~$_ }
p6eval rakudo 748771: OUTPUT«Statement not terminated properly at line 1, near ">>.map: { "␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
firelord anyone got time for a question on perl6?
frioux I could try, but I might not know the answer :-)
firelord You know an easy way to count the number of occurrences of letters in a string? Such as how many 'U' and 'T' they are in a string 02:06
thinking of a map command with a junction
frioux rakudo: "frew".@ 02:07
p6eval rakudo 748771: OUTPUT«Statement not terminated properly at line 1, near ".@"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
frioux "frew".split('')
rakudo: "frew".split('')
p6eval rakudo 748771: RESULT«["f", "r", "e", "w"]» 02:08
frioux firelord: I'd split it like that
and then iterate over each character
and add to a hash with the char as the index
so the final hash is the number of each letter
do you follow that?
02:08 frioux_Away left
firelord well I do not need to know how many of every char, just the grand total between them 02:08
and yes I do follow :) 02:09
frioux rakudo: my %hist; for "frew".split('') { if %hist{$_} { %hist{$_} += 1 } else { %hist{$_} = 1; } } %hist.perl 02:10
p6eval rakudo 748771: OUTPUT«Statement not terminated properly at line 1, near "%hist.perl"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
frioux rakudo: my %hist; for "frew".split('') { if %hist{$_} { %hist{$_} += 1 } else { %hist{$_} = 1; } }; %hist.perl;
p6eval rakudo 748771: RESULT«"\{\"f\" => 1, \"r\" => 1, \"e\" => 1, \"w\" => 1}"»
frioux rakudo: my %hist; for "freeeeeeeeeeeeeeeew".split('') { if %hist{$_} { %hist{$_} += 1 } else { %hist{$_} = 1; } }; %hist.perl;
p6eval rakudo 748771: RESULT«"\{\"f\" => 1, \"r\" => 1, \"e\" => 16, \"w\" => 1}"»
frioux that seems to do what you want... 02:11
firelord It does and more
frioux too much?
firelord Indeed, just want to know how many 'e' and 'w' in total and not their individual totals 02:12
frioux well you could do this...:
firelord hence do not need a hash but a junction i think
an 'any' junction
frioux rakudo: my $total; for "freeeeeeeeeeeeeeeew".split('') { $total++ if $_ ~~ 'e'|'w'; }; $total.perl; 02:13
p6eval rakudo 748771: RESULT«"17"»
frioux rakudo: my $total; for "freeeeeeeeeeeeeeeew".split('') { $total++ if $_ ~~ 'e'|'w'; }; $total;
hah!
p6eval rakudo 748771: RESULT«17»
frioux there you go 02:14
rakudo: my $total; $total++ if $_ ~~ 'e'|'w' for 'frew'.split(''); $total;
p6eval rakudo 748771: RESULT«2»
frioux rakudo: my $total; $total++ if $_ ~~ 'e'|'w' for 'freeweweww'.split ''; $total;
p6eval rakudo 748771: OUTPUT«Statement not terminated properly at line 1, near "''; $total"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
frioux rakudo: my $total; $total++ if $_ ~~ 'e'|'w' for 'freeweweww'.split(''); $total;
p6eval rakudo 748771: RESULT«8»
frioux there you go
it works and it's overly short :-) 02:15
firelord thank you frioux
frioux although there may be a way to do it with a regex...
there probably is
firelord for sure
frioux but that should get the job done
oh dear
my computer is about to crash
brb!
02:15 frioux left
cspencer rakudo: "freeeeeeeeeeeeeeeew".split('').grep(/e|w/).elems.say 02:18
02:18 frioux joined
p6eval rakudo 748771: OUTPUT«17␤» 02:18
frioux firelord: did you get a better solution?
firelord lol
cspencer frioux: i don't know that it's better, just different :)
firelord cspencer: rakudo: "freeeeeeeeeeeeeeeew".split('').grep(/e|w/).elems.say
frioux hahaha
maybe 02:19
it's more functional
firelord well the string in this case will be..... large
frioux and in my book, that's a good thing :-)
well...they both do a split
firelord from a few hundred to...... a few million
frioux they are probably equally good (or bad) for that
firelord ya
02:20 cspencer left
frioux you said this was gene stuff? 02:20
skids Lazyness would take care of that.
Though mostly things aren't lazy yet in rakudo.
firelord Not tonight no but other nights ya 02:21
frioux phone& 02:22
TimToady rakudo: +("freeeeeeeeeeeeeeeew" ~~ /(<[ew]>)/)[0] 02:23
p6eval rakudo 748771: RESULT«0»
TimToady rakudo: +("freeeeeeeeeeeeeeeew" ~~ /('e'|'w')/)[0] 02:24
p6eval rakudo 748771: RESULT«0»
TimToady rakudo: +("freeeeeeeeeeeeeeeew" ~~ /(<[ew]>)*/)[0]
p6eval rakudo 748771: OUTPUT«Use of uninitialized value␤»
firelord Look what I started...
TimToady rakudo: +("freeeeeeeeeeeeeeeew" ~~ /('e'|'w')*/)[0]
p6eval rakudo 748771: OUTPUT«Use of uninitialized value␤»
02:24 nacho_ joined
TimToady that oughta work... 02:24
rakudo: +("freeeeeeeeeeeeeeeew" ~~ /$<stuff>=('e'|'w')*/)<stuff> 02:25
p6eval rakudo 748771: OUTPUT«Use of uninitialized value␤»
TimToady rakudo: "freeeeeeeeeeeeeeeew" ~~ /[(<[ew]>)||.]*/; 02:26
p6eval rakudo 748771: RESULT«Match.new(␤ # WARNING: this is not working perl code␤ # and for debugging purposes only␤ ast => "freeeeeeeeeeeeeeeew",␤ text => "freeeeeeeeeeeeeeeew",␤ from => 0,␤ to => 19,␤ positional => [␤ Match.new(␤ ast => "e",␤ text => "e",␤ from => 2,␤ to => 3,␤
.. )...
TimToady rakudo: "freeeeeeeeeeeeeeeew" ~~ /[(<[ew]>)||.]*/; +$0
p6eval rakudo 748771: RESULT«17»
TimToady there you go
firelord wow
Thank you TimToady. 02:27
02:28 frioux left, skids left, aindilis left, jan_ left, Eevee left, pugs_svn left, c1sung left, simcop2387 left, simcop2387 joined, frioux joined, skids joined, aindilis joined, jan_ joined, Eevee joined, c1sung joined, pugs_svn joined
frioux so I need all of your advice 02:30
my boss implied that me and all of my co-workers could go to yapc
so I invited them all
and then he said I have to pick 1
what do I do?!
skids Well, first make a pity play, then some will drop out because others want to go more. 02:32
Then I guess, the best man wins. Nerf dart duel! 02:33
frioux I mentioned something about a cage match...
SamB point out to your boss how much it will cost to replace the losers 02:35
02:35 grwi joined, grwi left
frioux hahaha 02:35
Fight to the DEATH!
firelord brb 02:36
This nick is registered so going to need to change....
02:37 firelord left 02:39 raveon joined, raveon left 02:45 takadonet joined
takadonet finally a registered nick.... 02:45
skids rakudo: say "can i haz cheezbirrgrr?".comb(/a|e|r/) + 0 02:48
p6eval rakudo 748771: OUTPUT«8␤»
frioux ohhh
that's the best one!
rakudo: say +"freweeeeeeeeeeeeeeeeeeewew".comb(/e|w/) 02:49
skids There will be better. That still builds an array, though only of the selected letters.
p6eval rakudo 748771: OUTPUT«24␤»
takadonet what is comb?
skids The flipside of split.
takadonet Cannot believe you guys are still on my question.
skids golfing can be fun
(and educational) 02:50
frioux takadonet: what's your solution :-)
takadonet Not that great...
Still just playing around in perl6 02:51
skids Can we get adverbs into regexe yet in rakudo? 02:55
(erm "modifiers") 02:56
02:56 alc joined 03:02 amoc joined
lichtkind_ q :ww / ... / is the same as << ... >> ? 03:05
03:07 nacho_ left 03:10 kimtaro left 03:15 takadonet left, agentzh left, agentzh joined 03:18 lichtkind_ is now known as lichtkind 03:24 disismt left 03:26 frioux is now known as frioux_away 03:32 samlh left 03:37 samlh joined 03:40 nihiliad left 03:41 hercynium left 03:42 kimtaro joined 03:47 agentzh left 03:48 agentzh joined 03:56 Sepheebear joined 04:11 agentzh left 04:16 agentzh joined
pugs_svn r25980 | lwall++ | [Cursor] preliminary implementation of ww 04:23
r25980 | lwall++ | [STD] fix buglet causing duplicate .caps in "$a[]" postfix
04:46 orafu left, OuLouFu joined 04:47 OuLouFu is now known as orafu 04:55 FurnaceBoy left 05:00 Tene joined 05:18 eternaleye left 05:21 eternaleye joined 05:33 viklund` joined, viklund left 05:38 eternaleye left 06:12 eternaleye joined 06:35 DemoFreak joined 06:39 parduncia joined 06:58 finanalyst joined 07:01 alc left 07:05 xinming_ joined 07:10 xinming left 07:17 araujo left 07:18 pmurias joined 07:19 eternaleye left 07:22 mtve- is now known as mtve
moritz_ rakudo: { say 3 }; say 0; 07:25
p6eval rakudo 748771: OUTPUT«3␤0␤»
07:28 goksie joined
moritz_ std: my $x = regex{abc} 07:29
p6eval std 25980: OUTPUT«ok 00:02 35m␤»
pmurias moritz_: i spotted "is also" in t/S12-class 07:30
moritz_ pmurias: I know, the test suite is not yet updated 07:31
07:33 masak joined 07:36 eternaleye joined
moritz_ it's on my TODO list, but I want to coordinate it with the Rakudo hackers 07:37
pmurias moritz_: should i add a "update t/S12-*, so i don't implement something bygone" step to my GSoC proposal?
or is it near the top of TODO list and it will be done by the start of the GSoC? ;) 07:39
masak is it too late to add GSoC tasks to some list? I think I have a good one. 07:40
dukeleto moritz: i just sent a pull request for roots() to rakudo 07:43
moritz: and of course after that I realize that I should have used the 'polar' builtin, but I wrote my own. That will be the first improvement 07:45
moritz_ masak: don't think it's too late 07:47
dukeleto masak: please, add gsoc tasks to www.perlfoundation.org/perl5/index....9_projects as well
moritz_ pmurias: if you update S12-*, please fudge the files for Rakudo
dukeleto definitely not too late
07:47 alc joined
masak good. I think a PGE grammar for YAML, along with a Perl 6 wrapper, could benefit many Perl 6 projects. 07:47
dukeleto: thank you. I will. 07:48
dukeleto masak: those sound like great ideas
masak dukeleto: glad you like it too. I think it's also the right length for a GSoC task.
moritz_ dukeleto: I'll look at roots() later today 07:49
I've done a JSON parser in two or three hours in Perl 6 ;-)
dukeleto moritz: no worries, I am going to bed 07:50
moritz_ but that's a bit cheating, www.json.org/ contains a grammar that can be translated very neatly to Perl 6
dukeleto night y'all, happy hackin'
moritz_ dukeleto: good night 07:51
masak: is there some documentation along the lines "if I want to use proto for my project, that's what I have to do..."? 07:52
masak moritz_: no, but I've been meaning to write something a bit like that for a few days.
moritz_: I think the README in proto is the closest thing so far. 07:53
moritz_ masak: good; then I'll be your tester once you've done it ;-)
masak moritz_: basically, what you have to do is add a deps.proto file with a list of deps.
moritz_: I'll ping you when I have something.
moritz_ masak: great 07:54
07:56 rgs left, eternaleye left 08:00 eternaleye joined
Matt-W Morning 08:00
masak Matt-W: OH HAI 08:01
pugs_svn r25981 | moritz++ | [t/spec] corrected caps.t, (j y)++ 08:09
08:25 ejs joined
finanalyst moritz_: does proto assume rakudo under parrot or parrot under rakudo? 08:26
masak moritz_: ping
moritz_ finanalyst: ask masak ;-) 08:27
masak: pong
masak finanalyst: neither. it can work with both setups.
moritz_: github.com/masak/proto/blob/master/PIONEER
finanalyst: however, it defaults to installing latest-release Rakudo, with Parrot inside.
but only if it cannot find an already installed Rakudo. 08:28
moritz_ masak++ 08:29
masak in the building step, there are a lot of details that I omitted for now. 08:31
finanalyst masak: I have parrot with rakudo inside languages/ (this being the old way). I am considering changing the setup to rakudo with parrot inside, as this seems to be the most logical for perl6 focus. what do you think?
masak mberends, Matt-W and I need to sit down together and come up with the real conventions for building Perl 6 projects.
finanalyst: I think do whichever you are comfortable with. I've done both, and I don't thing there is much difference. 08:32
08:33 pmurias left
Matt-W masak: yes we do 08:38
masak Matt-W: we should set a day and time, like real grownups do. :)
Matt-W sounds like work to me :) 08:39
But yeah, we should
masak Matt-W: it won't be work if everyone brings cookies!
Matt-W Yes it would
We have cookies at work for meetings sometimes
masak bananas? plastic toy animals? 08:40
miniature excavators?
Matt-W heh
comfy armchairs
masak ooh!
Matt-W pyjamas
masak this is getting better and better.
(as long as we don't have to Skype with video) 08:41
Matt-W haha
I don't do that very often
masak doesn't really like Skype video
too much like a real meeting to me.
Matt-W I only tend to use it when there are physical objects which need to be shown
Which doesn't happen with anything work-like
although at work we do have a proper videoconferencing suite 08:42
08:42 rgs joined
Matt-W I never get to use it though 08:42
Don't work with people from other offices very often 08:43
08:49 ejs1 joined
mberends @shopping.push( "cookies" ); 08:54
masak mberends: :) 08:56
08:57 ejs left
mberends masak: Matt-W: meeting asap, currently anytime this week :) 08:57
moritz_ class Shopping { has @.cart handles <push pop shift unshift>: method pay { ... } } 08:58
masak mberends: sure thing. not today, I think. perhaps tomorrow or Thursday?
mberends ok, my first thought is a canonical 'hello, world!' example 08:59
but not today, then
masak canonical 'hello, world' example sounds nice. 09:00
mberends moritz_: class Shopping is also { method park { ... } method wait_for_partner { ... } } 09:02
09:02 DemoFreak left
mberends !does Shopping 09:02
09:03 samlh left
moritz_ that's 'augment class Shopping { ... }' these days 09:03
mberends hmm. the sugar doesn't change the experience however :) 09:04
masak Rakudo still uses 'is also' et al though. 09:05
mberends needs tea. $kettle.fill.boil.pour( $cup );
masak oh, a 'fluent interface' :) 09:06
mberends or Literate Programming
masak rakudo: my Int $a = 4 - 3; say $a; my Int $b = "4" - 3; 09:07
p6eval rakudo 748771: OUTPUT«1␤Type mismatch in assignment.␤current instr.: 'die' pc 15608 (src/builtins/control.pir:204)␤»
masak is it just me, or does this feel a bit harsh?
09:08 cls_bsd joined
mberends it's p5ish 09:08
masak how is variable typing p5ish? 09:09
mberends in "4" - 3 the operator coerces to a number, but maybe not in P6 09:11
masak yes.
but Num !~~ Int.
mberends oh. I been bitten by that before as well.
masak I'd argue that if 4 - 3 works, then "4" - 3 ought to as well. 09:12
mberends yes, therefore it is harsh
Matt-W masak: mberends: I can do tomorrow daytime, Thursday afternoon (GMT) 09:13
masak good, then the Principle of Early says tomorrow.
a time?
mberends 9:00 UTC? 09:14
masak worksforme.
maybe cap the meeting at 20 minutes? 09:15
mberends can do
masak I know just the type of cookies I'll bring. 09:16
ok, so the goal of the meeting is to reach consensus on a Good Practice for makefiles and configure scripts for Perl 6 projects. something that'll work long-term. 09:17
mberends masak++: saw your makemaker only later #[ tada! ] quite a hefty command line, but nice as a sub for proto.
masak mberends: I do not know what you're referring to.
09:17 goksie left
masak mberends: ah, that one. 09:18
mberends :)
masak yes, it can follow module dependencies. it's not perfect, but it's a fun tool.
I'm not sure if proto needs it, though.
oh wait, perhaps if it's supposed to work as a Makefile maker, yes. 09:19
mberends discuss that tomorrow as well
masak agreed. 09:20
09:20 pmurias joined
Matt-W Righty-ho 09:20
9am it is
mberends masak: bacek++ has sockets working in PIR on Unix. HTTP::Daemon can easily be updated when he's done, and Druid will be able to hook into that too :) 09:22
masak mberends: nice.
Matt-W oooooooooooooh
bacek++ 09:23
masak Druid is first in line for the new Web.pm classes, surprisingly enough.
mberends will do 'hello, world!' for homework 09:24
09:39 meppl joined 09:40 xinming joined
masak on the evenings, I tend to work on the test suite for Druid. 09:44
it's quite relaxing work, but it's also amazing how much better it makes the code.
09:46 eternaleye left, eternaleye_ joined
masak it makes me braver in refactoring, and it finds things I wouldn't have. 09:46
this is currently my favourite statement in the whole codebase: github.com/masak/druid/blob/6ce404e...ame.pm#L71 09:47
09:47 samlh joined
mberends masak: gnarly 09:48
masak mberends: but completely understandable, I think.
it's just a lot of details. 09:49
moritz_ masak: the last three lines of that statement looks like it could be simplified to another grep 09:51
masak moritz_: probably, yes. 09:52
patches welcome.
09:54 meppl left
pugs_svn r25982 | pmurias++ | [re-smop] started porting over interpreter and mold, some more work on named params in capture 09:55
09:55 xinming_ left 10:00 bacek joined
masak hm, $.heights[$row_m][$column_m] == $.heights[$row_1][$column_1] could be written as (.[$row_m][$column_m] == .[$row_1][$column_1] given $.heights) 10:01
don't know whether it'd be a good idea, though. 10:02
pmurias i think it would be a pretty bad one 10:08
as you have to look at the end to see what you are comparing 10:09
masak indeed. 10:12
and (given $.heights { .[$row_m][$column_m] == .[$row_1][$column_1] }) somehow feels like too much work just to reduce duplication. 10:13
10:14 disismt joined 10:23 bacek_ joined 10:25 bacek left 10:26 Hobbestigrou joined, Hobbestigrou left
jnthn morning all 10:33
bacek_ jnthn: evening :) 10:34
10:35 bacek_ is now known as bacek
jnthn bacek: How's the sockets stuff going? 10:35
bacek jnthn: it requires some love... 10:36
And I need few more hours to refactor it.
moritz_ good morning jnthn 10:37
masak bacek: a few of us are very interested in the work on the sockets. best of luck. 10:38
jnthn: OH HAI
bacek masak: I promised to Ilya that I'll finish them by weekend :) 10:39
jnthn moritz_: OH HAI
masak bacek: ok. looking forward to that.
I'll mention it in today's blog post.
jnthn bacek++ # great! 10:40
bacek masak: not so fast. Let me finish it first :)
masak bacek: as you wish.
I'll be vague instead, and say that the Rakudo folks have been starting work on sockets. 10:41
jnthn bacek: Will you leave "unimplemented" stubs for Win32 also? 10:44
bacek: Or you plan to implement that too?
bacek jnthn: I'm not quite familiar with win32 development. 10:45
jnthn OK.
10:45 amoc left
bacek But I'll made my best to convert old socket_win32. 10:45
jnthn bacek: OK, I can try and help there too. 10:47
I know Win32, if not sockets. ;-)
pugs_svn r25983 | pmurias++ | [re-smop] added a basic test for interpreter, add SMOP_interpreter_create() 10:52
11:15 amoc joined
pugs_svn r25984 | pmurias++ | [re-smop] fixed smop_placeholder_message 11:29
11:29 hkBst joined
hkBst is there a web interface for browsing the pugs source code? 11:31
mberends hkBst: yes, Pod::Server within github.com/eric256/perl6-examples/tree/master 11:32
actually, it browses the Pod mainly, and just shows other files as plain text 11:34
hkBst mberends: I want to browse the pugs code. I don't see how to do that with your link.
pugs_svn r25985 | pmurias++ | [re-smop] expanded the test for the interpreter
mberends ok, there's something else for browser only access. looking... 11:35
pmurias hkBst: you can browse subversion repos from the browser if they are served on http 11:36
mberends hkBst: svn.pugscode.org/pugs/
pmurias hkBst: why don't you want to co the repo?
hkBst pmurias: I am looking into the status of pugs 11:37
pmurias the haskell implemention itself is dead 11:38
hkBst is another project also called pugs? 11:39
pmurias they are other thing living in the repo now the test suit,smop,elf...
hkBst: no, why do you ask?
mberends pugs: say "I'm not dead!"; 11:40
p6eval pugs: OUTPUT«I'm not dead!␤»
hkBst pmurias: because you seemed to imply the `pugs' is not the same as `the haskell implementation' 11:41
why was pugs abandoned?
pmurias audreyt stoped working on it
hkBst I see 11:42
mberends also, Rakudo on top of Parrot it more like the final goal.
*is
11:50 FurnaceBoy joined 11:51 ruoso joined
pmurias ruoso: hi 11:52
ruoso hi pmurias 11:53
hkBst thank you for the explanation and help, mberends and pmurias 11:54
mberends you're welcome :) hopefully you will try Perl 6 out in one form or another 11:59
ruoso TimToady, just to note that after all the flatten/unflatten discussion, I realized bare (1,2,3) is not List... but a Capture... That makes a very clear definition that flattening only traverse inside captures... 12:01
pasteling "pmurias" at 78.8.158.35 pasted "rough GSoC schedule" (29 lines, 642B) at sial.org/pbot/35666 12:02
pmurias ruoso: do you think implementing that (see the schedule) for GSoC is enough/to little/to much? 12:03
ruoso pmurias, I think you're forgetting that you need to have RoleHOW in order to have multi working
not just RoleHOW, actually... but bootstrapping Multi.pm 12:05
so you can, after that, implement trait_auxiliary:<is>('export', &code) 12:06
so you can implement Test.pm 12:07
with all the multies for the operators
jnthn ruoso: We've tended to have Test.pm not in a module Test { ... } so as not to have to worry about export, since we didn't have that for a while (we do just of recently). So can be a useful cheat. ;-) 12:08
12:08 mberends left
pmurias ruoso: i wasn't sure how to mention that in the schedule as we don't "pun" true classes untill we have ClassHOW 12:09
ruoso just say that... ;)
or, in a more ellaborated way... 12:10
for bootstrapping purposes, a primitive RoleHOW is installed that pun classes using PrototypeHOW. This primtive RoleHOW will be replaced when we have ClassHOW in place...
jnthn, interesting... but that only saves us the "is export" part... all the other operators still need to be multis.... 12:11
jnthn ruoso: Yes, true.
ruoso and that reminds me I'm still unconfortable about one thing in multi 12:12
jnthn ruoso: We did have the benefit that we could piggy-back off Parrot's multiple dispatch which was good enough until we got the proper Perl 6 dispatch algorithm implemented.
Only one thing? ;-) 12:13
Lucky guy!
ruoso heh...
"my" and "our" usually refer to "new" symbosl
but in a multi you have the possibility to install it as a candidate of a multi declared in an outer scope
using "our" to say "install this in the outer definition of the multi" 12:14
seems odd
since "our" mean... create a symbol in the package with a lexical alias... 12:15
or re-use a symbol if there is already one... *in the current package*
jnthn Ah, but then we've gone and said that multis get imported into lexical scopes and not the package. Hmm.
(At least, not unless you ask for 'em in the package.) 12:16
ruoso I think it's the same dillema with had with methods
and I argue "my" and "our" should always be the same...
jnthn my I would expect to declare a new multi in the current lexical scope that overrides those in the outer scope (I don't know if it just hides anything of the same signature or if it hides 'em all, mind...maybe the spec says somewhere) 12:18
And our - yes, int he package.
ruoso the current package 12:19
with a local alias
jnthn Is installing one in an outer scope going to be a common thing?
ruoso our is just an extension to "my"
jnthn Aye, though we don't actually install anything in the lexpad in Rakudo for our, just keep track of the fact that this name is an alias to something in the package.
ruoso that's "install" to me 12:20
;)
jnthn Compile time installation. ;-)
We know we can look up multis in an outer scope and .add_candidate or whatever the method would be called. 12:21
So it's not that there's no way.
ruoso "push" in rakudo...
my biggest concern is about multis that get exported
jnthn Yeah, but that's unspec, and I'm not 100% sure I like the name.
12:22 riot joined
jnthn .candidates for getting a list of candidates feels fine, but .push..hmm. 12:22
Anyway, bike-shedding.
ruoso does each "use" checks if there's a definition in that scope and add to it?
pmurias does parrot have knowhows? 12:23
jnthn ruoso: I'd figured since it's a lexical import into the current scope, then it should check if there's a definition in that scope and add to it, and if not then it'd need to create a Multi in that scope. 12:24
pmurias: Depends what you mean by "have knowhows"
ruoso so it's the "use" code that does that...
jnthn Yeah, but depending on how your lexpads work you may need to do some twiddling at compile time too. 12:25
12:25 donaldh joined
jnthn (Which is fine because we do 'use' at compile time...) 12:25
ruoso rakudo: knowhow Foo { method bar { say 1 } }; Foo.bar; 12:26
p6eval rakudo 748771: OUTPUT«Could not find non-existent sub Foo␤current instr.: '_block14' pc 64 (EVAL_16:42)␤»
jnthn pmurias: Did you mean, does Rakudo have knowhow? 12:27
pmurias: Or did you mean, does Parrot have any similar concept?
12:27 donaldh left 12:29 donaldh1 joined
ruoso jnthn, hmm... actually... it's not the "use" code... it's "Foo::Bar::.EXPORTALL" that does it... 12:30
12:30 smtms left
ruoso S11 do need more work 12:31
jnthn ruoso: Hmm...but a use by default shouldn't call .EXPORTALL
It should only pull in stuff in Foo::Bar::EXPORT::DEFAULT 12:32
ruoso er... not according to S11
EXPORTALL is the one that handles Foo::Bar::EXPORT::DEFAULT
pmurias jnthn: i meant if rakudo has knowhow
jnthn ruoso: Oh, then it's name is fail.
pmurias: No, not yet.
pmurias: Maybe in the next couple of months or so.
It's not that high priority compared to other things we're missing.
ruoso jnthn, EXPORTALL receives the tags sent by "use", and call EXPORT with the unknown ones... 12:33
jnthn Ah, OK.
ruoso similar to BUILDALL/BUILD
jnthn Ah, so it's not referring to Foo::Bar::EXPORT::ALL
OK..
pmurias jnthn: was concerned if i have to explain what knowhows are in the GSoC proposal
ruoso pmurias, you can use STD as an example... STD already supports it 12:34
pmurias ruoso: is the amount of work i'll spend implementing the schedule enough for GSoC or should i add extra things? 12:37
ruoso I'm worried it might be too much
pmurias, I understand the spec test are interesting check points. but there is a lot to be done which can't be represented in terms of spectest... 12:39
at least, no tests that I'm aware of... 12:40
honestly... if you bootstrap Multi.pm without cheats... I think it would be a cool project already
(including sorting the candidates and grouping the ones with equal value) 12:41
remember, you have a very small time-frame 12:42
jnthn pmurias: Having been there and done pretty much all that you're proposing - it *is* quite a bit of work. 12:45
pmurias: For example, roles only got done fairly quickly because Parrot had been taught how to handle them a couple of years before Rakudo needed them. 12:46
masak likes the suggestion to make the logo for Rakudo contain a zombie cat
jnthn pmurias: And multi-dispatch has been a lot of effort to nail down the algorithm. On the upside, there's quite a few tests now. :-) 12:47
Also it's probably better to have something comfortably achievable and do a bit more than that, than having something that's too big and fall short of it. 12:48
ruoso indeed... 12:49
masak, but I'm not pretty sure how can you illustrate it... 12:51
masak ruoso: true.
it still needs to look fashinable and appropriately perky.
12:52 pmurias_ joined, pmurias left
jnthn www.google.sk/search?q=site%3Aicanh...com+zombie 12:52
;-)
ruoso i.lolcatz.net/tb/fdc47511-269d-4526...2ecc16.jpg 12:53
pmurias_ ruoso: we don't need ClassHOW for Multi, right? 12:54
ruoso no...
we can use the primitive RoleHOW
12:55 pmurias_ is now known as pmurias
pmurias ruoso: i think i'll cut of the ClassHOW part and just do Multi properly 12:55
ruoso I think that's a good plan
13:01 rodi joined
pmurias ruoso: what do we need for Multi? failures,RoleHOW and Signature? 13:01
ruoso yes... but I think there's some ways to go far with AdhocSignature 13:02
like... providing a method that returns the list of types..
13:05 ejs2 joined 13:07 skids left
ruoso masak, heh... I've just posted a zombie cat to the list ;) 13:11
masak ruoso: I am slightly amused by this turn of events. 13:12
ruoso: nice. 13:13
Raarwkudo!
13:14 pifuruan joined
masak ruoso: I could see the final logo evolve out of that SVG image. 13:15
13:15 ejs1 left
pifuruan any guy explain what does perldoc use ' string 's internal form' mean 13:18
masak pifuruan: hello, this is #perl6. we gladly answer questions about Perl 6. 13:19
for Perl 5, there are other fora.
pifuruan a o 13:20
13:20 grwi joined 13:21 grwi left 13:22 pifuruan left
ruoso pmurias, I think you forgot to por SMOP__NATIVE__CAPTURE__named 13:31
s/por/port/
13:32 riot left 13:33 donaldh1 left, donaldh1 joined, donaldh1 left 13:36 frioux_away left
mikehh rakudo (7487710) on parrot r37676 builds make test/make spectest PASS - Kubuntu Intrepid i386 13:37
13:43 lambdabot left 13:46 lambdabot joined
PerlJam make that zombie cat out of hexagons (for some reason I like the tie-in to graphene too :) 13:46
masak or a hexagon built out of zombie cats. 13:53
PerlJam or do some sort of figure/ground trick with hexagons and cats. 13:54
look at it one way and it's a hexagon R, look at it another way and it's a zombie cat. :) 13:55
masak an Escher infinity of zombie cats walking stairs in different directions.
PerlJam Anything with escher, hexagons and zombie cats wins in my book. 13:56
masak Escher in a hexagon, with a zombie cat on his head.
rgs the universe (which others call the Library) is composed of an indefinite and perhaps infinite number of hexagonal galleries. 13:57
PerlJam someone suggested that the cat should be eating a parrot, but I think it's the parrots who made the zombie cat. So ... two parrots with a frankensteinesque cat could be interesting :) 13:58
masak actually, cats are good for another reason, namely the connection between Lolspeak and Rakudo.
jnthn I CAN HAZ KITTEH LOGO?
masak exactly. 13:59
13:59 hercynium joined 14:07 skids joined 14:12 DemoFreak joined, [particle] joined
pugs_svn r25986 | pmurias++ | [re-smop] added SMOP__NATIVE__idconst_create and SMOP__NATIVE__capture_named 14:16
14:17 NordQ joined
masak wanted: a plugin to vim or Emacs which enumerates 'ok' et al in test files. 14:18
14:25 FurnaceBoy left
moritz_ rakudo: my $x = 'a' ~~ /a/; say $x.WHAT 14:32
p6eval rakudo 748771: OUTPUT«Match␤»
masak \o/ 14:33
14:34 DemoFreak left 14:36 frioux joined
masak ok, so what about this one: we might not get the camel, but we can still put a zombie lolcat in a desert environment. sort of give it a background with a pyramid and/or an oasis. 14:40
ruoso pmurias, it might be a good idea to check if the named parameter keys are idconsts...
lambdabot ruoso: You have 1 new message. '/msg lambdabot @messages' to read it.
ruoso @messages
lambdabot skids said 1d 13h 13m 47s ago: www.abrij.org/~bri/S07-tempurl.diff S07 edits + new coro section
ruoso I already have read that lambdabot! 14:41
jnthn masak: Remember the logo should be reasonably simple too. 14:42
zombie lolcat + pyramid... ;)
Quite complex even if...interesting.
14:43 exodist joined
masak jnthn: doesn't have to be too complicated. 14:43
Firefox has the entire Earth in its logo without it looking complex.
moritz_ a cat that hangs on top of a pyramid? 14:44
pmurias ruoso: you can use anything you want as keys if you are happy with pointer equality
masak moritz_: a really happy kitteh on top of a pyramid.
ruoso pmurias, heh... that's not quite useful for things different than idconst, is it?
rgs kittens prefer palm trees
PerlJam if we weren't talking about rakudo, a nice montage could be made of cats and snakes and rubys and such to signify all of the languages for which there exist a parrot compiler.
pmurias ruoso: you can add it 14:45
masak someone draw www.flickr.com/photos/ocpetphotos/2508271110/ in SVG, and people will look at the Rakudo logo, and go "aaaaaw"... forever. 14:47
14:48 nihiliad joined
skids ruoso: I don't know if that talk with TimToady there clered everything up, but if you wanted to cut the section on the item iterator until the @@ stuff gets resolved, I don't mind backtracking changes. (no pugs commit bit here.) 14:49
moritz_ skids: you can get a pugs commit bit easily 14:50
skids howso?
moritz_ skids: just /msg me your email address and desired username
(or any other pugs committer that has two minutes free time)
skids: sent. Please add yourself to AUTHORS as a commit test 14:51
skids is there a time limit or can I do that later (at work now)? 14:52
moritz_ skids: no time limit
skids thanks moritz++ 14:53
14:54 jcrigby left 15:00 finanalyst left
skids If I read this right, the last thing executed by a lazy loop which has not been asked for another iteration is the LEAVE block (or KEEP/UNDO) 15:04
And a redo will not wait for an iteration request.
Do I have that right? 15:05
15:09 ejs1 joined 15:11 disismt left, disismt joined
[particle] anyone here want to be a mentor for gsoc2009, who hasn't signed up yet? i can help you with that. 15:16
PerlJam What does a mentor do? 15:17
[particle] if you get a student, you coach them through the program 15:18
ruoso [particle], how do I know If I'm already signed as a mentor?
[particle] meet with them at least weekly, preferably more often
15:19 ejs2 left
[particle] ruoso: i try to add you, and it tells me you're already there? maybe? this app is new, so i'm a bit behind on that 15:19
ruoso [particle], you have my mail?
[particle] ruoso: you need to create an account at socghop.appspot.com 15:20
perljam: i think you'd be an excellent mentor, btw
PerlJam okay, I've created an account.
[particle] create your accounts, if you wish, and give me the 'public name'
i'll be back in 15m, and send invites! 15:21
15:21 donaldh joined
moritz_ [particle]: all done here, thank you 15:21
PerlJam [particle]: perlpilot is my public name 15:23
15:23 lisppaste3 left
ruoso [particle], ok... I have myself listed as "pending requests" 15:24
15:25 alc left 15:26 kimtaro left 15:35 kimtaro joined, lisppaste3 joined
pmichaud good morning #perl6 15:36
15:36 cls_bsd left
diakopter #perl6 greets you warmly 15:38
... you stumble into a trove of round tuits.
jnthn morning pmichaud 15:39
[particle] invites sent! 15:41
masak good morning pm 15:43
[particle] PerlJam, ruoso: could you fill out spreadsheets.google.com/viewform?fo...1aU3c6MA..
amoc good morning all ! 15:46
15:47 ejs1 left 15:48 lisppaste3 left 15:49 cls_bsd joined
amoc , and then, prepares to go to sleep 15:49
15:52 parduncia left
[particle] perljam, ruoso: nevermind, don't need todo that last bit 15:52
ruoso too late
PerlJam way too late.
:)
[particle] PerlJam, ruoso, masak: you should, however, join [email@hidden.address] 15:53
masak [particle]: gotcha.
masak 's request to join is now pending 15:54
dukeleto the tpf-gsoc mailing list is for mentors only to discuss gsoc-related stuff and the tpf-gsoc-students is for students to ask questions
i will approve now
just approved 15:55
[particle] dukeleto: more on their way, from folks in #parrot 15:56
dukeleto sweet! 15:57
frioux does anyone here know where I can get a room at CMU (for YAPC?)
moritz_
frioux I can't seem to find it on their site.
moritz_ (that was to dukeleto) 15:58
[particle] frioux: i don't think they've opened that up yet
frioux ah, ok
thanks [particle]
ah, it does say "Once we have finalized our facilities contract with CMU, ..." 15:59
[particle] yapc10.org/yn2009/wiki?node=Newslet...%2C%202009
16:00 Meijito joined
Meijito Hey, how I can put photo into a perl script? I don't wanna leave some photo in folder. I wanna implant it to script. Is it possible and how? 16:01
PerlJam Meijito: store the whole thing in a string or as __DATA__
moritz_ Meijito: this channel is about developing the programming language Perl 6, not about Perl 5 questions 16:02
PerlJam heh ... /me didn't even realize he was still on #perl6 (ETOOMANY#PERL)
Meijito moritz_, from where you know that i'm using perl5? Maybe I use perl 6.
moritz_ Meijito: are you?
Meijito: nearly all users who ask such questions here use perl 5 16:03
Meijito It's very slippery question.
[particle] meijito: you don't use perl 6, i can tell :) 16:04
PerlJam Meijito: or you're just trying to be slippery in not answering.
Meijito Answer: If you will still help me if my anser is "Perl 5" when: Yes, I'm using perl5, but if no, so: "I'm using Perl 6". Damn, I'm smart. :D
But if really so yes, I'm using Perl 5. And.. Here is litle problem. Channel: #perl5 not exist. 16:05
PerlJam Meijito: this is where everyone starts ignoring you (if they haven't already)
moritz_ Meijito: try perlmonks.org
ruoso Meijito, join #perl instead
PerlJam Meijito: but #perl does exist
Meijito Yes, but I can't join here. I write: /join #perl and it not work. :/
ruoso Meijito, try #perl @ irc.perl.org 16:06
Meijito perlmonks.org - It's bad cause here answer you can wait.. All week. IRC is better.
moritz_ congratulations, you got a ban
Meijito: most questions on perlmonks are answered within 2 hours or faster
Meijito ruoso, thanks. I go and will is in perl network. 16:07
:)
16:10 dKingston joined
skids ponders how to talk about thread variable sharing without opening the traditional can of worms. 16:13
obviously @a <== map {...} <== map {...} <== @b we want to work. 16:14
So maybe if we asked the heavyweights what the code inside map should look like to be "threadsafe" we could infer the answers as to what is shared in an "autothread." 16:15
16:16 ejs joined 16:17 mako132 joined
skids Without tackling any of the subject matter about how to make threading work to any developer's druther. 16:17
TimToady www.wall.org/~larry/camelia.pdf 16:18
ruoso, jnthn: multi dispatch never looks in packages, so whether there's an "our" is immaterial 16:19
dukeleto TimToady: what a beautiful meta-buttterfly
skids hypersmiley! 16:20
TimToady and the meme is extensible: X-with-P6-wings
16:20 goksie joined
TimToady maybe the new camel book should have a camel with butterfly wings, victorian style 16:21
and a completely straight-faced exposition of the dromedary butterfly
skids Or just lolcat whiskers.
moritz_ like this? perl6.ru/img/perl6book-parody.gif 16:22
dukeleto moritz: did you get a chance to look at the roots_squashed pull request?
moritz_ dukeleto: no, not yet
skids lol is that a crocodile head? 16:23
dukeleto moritz: i don't know if I included too much detail of the algorithm in the POD, but y'all can always cut it down 16:24
ruoso TimToady, no dispatcher looks in the package, but the user might want to make the multi available as a package symbol... hence "our" 16:30
but the questions is wether it is possible to declare a new candidate to an outer multi 16:31
but maybe new candidates are never visible in outer scopes... 16:32
and EXPORTALL does some trick to merge the different candidates from different modules in the user's scope
this actually fits well with the idea of candidates list being closed at compile time 16:33
TimToady the only modifiable outer scope is COMPILING 16:34
and you modify it by exporting 16:35
ruoso so EXPORTALL modifies COMPILING
it checks if there's already a &foo in that scope
TimToady if you put an alias into the package, then it's just for handy &foo use
ruoso TimToady, yes... "our" is just a handy alias
TimToady so anyway, I'm not worried about our vs my wrt multis 16:36
ruoso that wasn't my worry
so... EXPORTALL looks for COMPILING::<&foo> 16:37
if there is one, add his candidates to it
if there isn't, create a new multi and install his candidates in it
but...
COMPILING is a flattened scope like CALLER? or does it really means the scope in the level it is right now? 16:38
i.e...
{ my multi foo {...}; { use Foo; } } 16:39
when calling Foo::.EXPORTALL
would COMPILING see the outer &foo?
or would you need to use something like COMPILING::OUTER::<&foo>?
16:39 araujo joined 16:40 eternaleye_ left
PerlJam would guess the former 16:40
ruoso but that would mean the outer &foo would be changed... so the scoped "use" would kinda fail...
16:41 justatheory joined
ruoso in theory there's a "lookup" method of some sort in the lexical scope object 16:42
so if COMPILING doesn't mean a "flattened" scope...
you can do... 16:43
TimToady the policy for importing a multi into a lexical scope should be identical to the policy for declaring one there directly
masak rakudo: class A does Callable { method invoke() {} }; A.new().()
p6eval rakudo 748771: OUTPUT«invoke() not implemented in class 'A'␤current instr.: '_block14' pc 71 (EVAL_23:40)␤»
masak is too!
ruoso TimToady, so COMPILING is not a "flattened" scope
TimToady no, it's not
ruoso cool...
so I guess there should be some method to perform an actual lookup in its outer scopes... 16:44
maybe COMPILING::OUTER is flattened 16:45
so you can lookup for other definitions of &foo to copy the variatns 16:46
TimToady, does that make sense?
TimToady maybe
jnthn masak: That role probably should in fact just make it an error not to write a postcirfumfix:<( )>
masak jnthn: aye. 16:47
rakudobug?
TimToady jnthn: did you see above about multis?
jnthn TimToady: I noticed it; I'll read it in detail later (working on $other_stuff at the mo) 16:48
TimToady k 16:49
ruoso wonders how COMPILING ends up being found by EXPORTALL
16:50 Psyche^ joined
ruoso looks like a dynamic lookup... but it's written like a package... 16:50
TimToady CALLER is also dynamic
and CONTEXT 16:51
ruoso hmm... right...
so it goes finding for the "use" call
TimToady COMPILING really doesn't care about "use" at all. it could as easily be in a macro definition 16:53
16:54 Patterner left, Psyche^ is now known as Patterner
PerlJam TimToady: what do you think about a twigil (or some syntactic marker) to differentiate dynamic things from non-dynamic things? I ask because it's somthing that I tend to have a lookup table for in my head. 16:57
ruoso TimToady, the problem is that when you compile a file, and it uses a file you don't have compiled, it needs to then recursively compile that file..
PerlJam (yes, I realize how vague that is :)
16:57 donaldh left 17:00 eternaleye joined 17:01 amoc left 17:07 M_o_C joined 17:08 eternaleye left
TimToady PerlJam: we all ready have the * twigil for dynamic variables 17:13
PerlJam but not for CALLER and such. That's where there's a lookup table in my head.
17:17 cspencer joined 17:19 mako132 left
pugs_svn r25987 | pmurias++ | [re-smop] added a test for mold 17:22
TimToady we discourage people from fiddling with CALLER that way :) 17:25
17:27 goksie left 17:31 parduncia joined, eternaleye joined, FurnaceBoy joined
pugs_svn r25988 | ruoso++ | [re-smop] fix a missing RELEASE in interpreter_message 17:31
pasteling "pmurias" at 78.8.158.35 pasted "revised GSoC schedule" (13 lines, 441B) at sial.org/pbot/35673 17:38
17:39 masak left, meppl joined, c9s__ joined 17:41 justatheory left
pmurias ruoso: do you think something like that would be ok? 17:42
ruoso pmurias, yes... but I'd even remove the last three lines... just the multi part is already a lot of work...
17:45 parduncia left 17:46 c9s__ left 17:48 cognominal_ joined 17:52 eternaleye left 17:55 cognominal left 17:57 schmalbe joined
frioux is going to YAPC!!! woohoo! 18:03
pmurias YAPC::NA? 18:05
frioux yessir 18:06
18:09 pmurias left 18:10 pmurias joined 18:15 PerlJam left 18:16 PerlJam joined 18:23 xinming left 18:26 xinming joined 18:29 dalek left, pmichaud left, jnthn left 18:31 cdarroch joined 18:33 cognominal_ left 18:34 cognominal_ joined 18:35 xinming_ joined 18:41 xinming left 18:44 cdarroch left 18:46 cdarroch joined 18:48 Schnueff joined
Tene rakudo: my $a = "♪la la la♪"; say $a 18:59
p6eval rakudo 07ceac: OUTPUT«♪la la la♪␤»
19:05 rodi left 19:24 lisppaste3 joined
ruoso svn down 19:28
19:32 pmurias left 19:38 disismt left, disismt joined 19:40 finanalyst joined, cognominal_ left
finanalyst per6: my $s = foo(); say $s.perl; sub foo { my $v = 1|11; return $v} 19:41
perl6: say "hi" 19:42
p6eval elf 25988, pugs, rakudo 07ceac: OUTPUT«hi␤»
M_o_C you forgot the "l" in perl6
19:42 dalek joined
finanalyst aggggh 19:42
perl6: my $s=foo(); say $s.perl; sub foo {my $v = 1|11; return $v} 19:43
p6eval elf 25988: OUTPUT«11␤»
..rakudo 07ceac: OUTPUT«any(1, 11)␤»
..pugs: OUTPUT«\(1 | 11)␤»
19:44 jonathan2 joined, jonathan2 is now known as jnthn
finanalyst perl6: my $s; foo($s); say $s.perl; sub foo($w is rw) {$w = 1|11} 19:45
p6eval elf 25988: OUTPUT«undef␤»
..pugs: OUTPUT«\(1 | 11)␤»
..rakudo 07ceac: OUTPUT«Type mismatch in assignment.␤current instr.: 'die' pc 15608 (src/builtins/control.pir:204)␤»
19:46 Juerd joined
jnthn rakudo++ 19:47
(the type of a parameter is Any, which doesn't accept Junction, for anyone wondering...) 19:48
Juerd feather's backup :)
jnthn erm, default type...
Juerd s/backup/back up/
19:49 Juerd left
finanalyst is this a rakudo bug? 19:51
or is pugs incorrect?
moritz_ finanalyst: pugs doesn't do any type checking
19:51 jan_ left
jnthn finanalyst: What moritz said, and Rakudo is correct. 19:52
ruoso jnthn, a bare "my $s" is Any?
or is the signature?
jnthn ruoso: The sig.
It's the assignment to $w that does it
finanalyst so why can a junction be returned from the sub?
ruoso interesting... I didn't assume default type for a signature was An
Any
jnthn ruoso: That's how junction auto-threading works. 19:53
ruoso right...
but...
I didn't assume an untyped signature was Any
jnthn It is.
ruoso spec?
moritz_ finanalyst: because the return type doesn't assume Any
jnthn Well, for Routine.
Yes, it's in the spec.
ruoso ok then
jnthn Maybe S03.
Or S09.
19:53 c9s left
moritz_ S02 iirc ;-) 19:53
jnthn Or possibly S02.
Oh.
Well, I got it eventually. :-) 19:54
moritz_ Any Perl 6 object (default routine parameter type, excludes junction) Object
jnthn All of them mention auto-threading. ;-)
19:54 c9s joined
finanalyst how to set the type to junction in the signature? 19:54
moritz_ s/Object/
jnthn moritz_++ # thanks, I'm lazy.
19:54 desertmax joined
ruoso S06 is where most of Signature resides 19:54
19:54 desertmax left, desertmax joined
moritz_ finanalyst: sub f(Junction $x) # if it should only allow junction 19:54
jnthn finanalyst: Just give the parameter a type Junction or Object.
moritz_ finanalyst: or sub f(Object $x) # both junctions or normal values are OK
19:55 jan_ joined
skids Though to be particularly anal it should really return multiple times, in an autothreaded manner. Which of course is impossible :-) 19:55
19:56 [particle] left
finanalyst perl6: my $s; foo($s); say $s.perl; sub foo(Object $w is rw) {$w = 1|11} 19:56
p6eval rakudo 07ceac: OUTPUT«any(1, 11)␤»
..elf 25988: OUTPUT«undef␤»
..pugs: OUTPUT«\(1 | 11)␤»
jnthn Well, it could run the rest of the program from that point on concurrnetly for each junc...no I so am not going to suggest that.
skids lol
I was just NOT going to admit I was thinking that. 19:57
jnthn ;-)
There's a saying about great minds, and another about all fools...
19:57 cdarroch left 20:02 DemoFreak joined 20:04 [particle] joined 20:05 cognominal joined 20:08 trigger_trilogy joined
jnthn masak++ # that Leviticus quite is The Awesome. 20:08
20:19 Diederich left
moritz_ rakudo: 'ab' ~~ /<x>(.)/; say $/.keys.perl 20:23
p6eval rakudo 07ceac: OUTPUT«Unable to find regex 'x'␤Null PMC access in invoke()␤current instr.: 'parrot;PGE;Grammar;' pc 299 (EVAL_18:122)␤»
moritz_ rakudo: 'ab' ~~ /<xdigit>(.)/; say $/.keys.perl 20:24
p6eval rakudo 07ceac: OUTPUT«[0]␤»
moritz_ rakudo: 'ab' ~~ /<xdigit>(.)/; say %($/).keys.perl
p6eval rakudo 07ceac: OUTPUT«["xdigit"]␤»
20:26 Diederich joined
finanalyst rakudo: my @x=1|11,2,1|11; say ([+] @x).perl 20:26
p6eval rakudo 07ceac: OUTPUT«any(any(4, 14), any(14, 24))␤»
finanalyst rakudo: my @x = 1|11,2,1|11; say ([+] @x).eigenstates.perl 20:27
p6eval rakudo 07ceac: OUTPUT«[any(4, 14), any(14, 24)]␤»
moritz_ it doesn't flatten yet as it should 20:28
but it's going away anyway
finanalyst that's what i want to know
it should flatten
rakudo: my @x=1|11,2,1|11; say ([+] ([+] @x)) 20:29
p6eval rakudo 07ceac: OUTPUT«Junction<0xb603aaa0>␤»
finanalyst rakudo: my @x=1|11,2,1|11; say ([+] ([+] @x)).perl 20:30
p6eval rakudo 07ceac: OUTPUT«any(any(4, 14), any(14, 24))␤»
moritz_ the nested junction still behaves like the "flat" one
it autothreads as whole over + 20:31
finanalyst my @x=1|11,2,1|11;say ([+] ([+] @x).eigenstates).eigenstates.perl
rakudo: my @x=1|11,2,1|11;say ([+] ([+] @x).eigenstates).eigenstates.perl
20:31 ejs left
p6eval rakudo 07ceac: OUTPUT«[any(18, 28), any(28, 38)]␤» 20:31
finanalyst is that right? 20:32
20:32 alester joined
moritz_ it's not right, because .eigenstates should be private method 20:32
finanalyst i dont follow
do you mean that one of the eigenstates is ok, but the second is not? 20:33
ruoso finanalyst, junctinos are not sets
finanalyst, you shouldn't try to get its members
you just use it as regular values
finanalyst how?
to get members?
moritz_ don't. 20:34
ruoso you don't
moritz_ it's as simple as that.
(and it annoys me, because it means testing becomes rather hard)
ruoso moritz_, you test for each individual value
more verbose... not harder...
moritz_ ruoso: but then I don't test for absence of values
ruoso: or if I do, I have to consider a huge pool of values 20:35
ruoso moritz_, I think there's a trick you can do...
ruoso taking a look .. 20:36
pugs_svn r25989 | moritz++ | [t/TASKS] not ticket number of 'is also' -> 'augment' transition
finanalyst i am not understanding junctions too well. where is there some more info
on junctins
moritz_ ruoso: also, the test for individual items is much harder for all() junctions
ruoso rakudo: say "ok" if any(1,2,3) == all(1,2,3) 20:37
moritz_ finanalyst: I wrote something here: perlgeek.de/blog-en/perl-5-to-6/08-...tions.html
p6eval rakudo 07ceac: OUTPUT«ok␤»
finanalyst thanx
ruoso moritz_, ^^
moritz_ ruoso: there are also one() and none() junctions 20:38
rakudo: say "ok" if any(1,2,3) == all(1,2)
p6eval rakudo 07ceac: OUTPUT«ok␤»
moritz_ it didn't test for absence of 3 in the first junction
and it already relies von correct autothreading
ruoso rakudo: say "ok" if all(1,2,3) == all(1,2);
p6eval rakudo 07ceac: RESULT«all(all(Bool::True, Bool::False), all(Bool::False, Bool::True), all(Bool::False))» 20:39
moritz_ rakudo: say all(1,2,3) == all(1,2) ?? 'yes' !! 'no'
p6eval rakudo 07ceac: OUTPUT«no␤»
ruoso rakudo: my $j = 1 | 2; say all(1,2,3) == all($j) ?? 'yes' !! 'no' 20:40
p6eval rakudo 07ceac: OUTPUT«no␤»
ruoso rakudo: my $j = 1 | 2 | 3; say all(1,2,3) == all($j) ?? 'yes' !! 'no'
p6eval rakudo 07ceac: OUTPUT«yes␤»
ruoso rakudo: my $j = 1 | 2 | 3 | 4; say all(1,2,3) == all($j) ?? 'yes' !! 'no'
p6eval rakudo 07ceac: OUTPUT«yes␤»
ruoso er... that's a bug... 20:41
rakudo: say all(1,2,3) == all(1,2,3,4)
p6eval rakudo 07ceac: OUTPUT«Junction<0xb6017770>␤»
ruoso rakudo: say (all(1,2,3) == all(1,2,3,4)).perl
p6eval rakudo 07ceac: OUTPUT«all(all(Bool::True, Bool::False), all(Bool::False, Bool::True), all(Bool::False, Bool::True))␤»
ruoso rakudo: say (all(1,2,3) == all(1,2,3)).perl 20:42
p6eval rakudo 07ceac: OUTPUT«all(all(Bool::True, Bool::False), all(Bool::False, Bool::True), all(Bool::False, Bool::True))␤»
finanalyst did i read somewhere that Damian Conway gave a talk on superpositions that introduced junctions? 20:43
ruoso you probably did... Damian did gave that talk 20:44
rakudo: say (all(1,2) == all(1,2)).perl
p6eval rakudo 07ceac: OUTPUT«all(all(Bool::True, Bool::False), all(Bool::False, Bool::True))␤»
ruoso rakudo: say (all(1,2) == all(1,2)).true 20:45
p6eval rakudo 07ceac: OUTPUT«0␤»
ruoso rakudo: say (all(1,2) == all(any(1,2))).true
p6eval rakudo 07ceac: OUTPUT«1␤»
ruoso rakudo: say (all(1,2) == all(any(1,2,3))).true
finanalyst but where can i find it?
p6eval rakudo 07ceac: OUTPUT«1␤»
finanalyst damian's talk 20:46
ruoso finanalyst, I'm not sure he publishes it
moritz_ finanalyst: he wrote Quantum::Superposition, a Perl 5 module that somewhat implements junctions
ruoso rakudo: say (all(1,2) == any(1,2,3)).true # this checks if all values are in the jucntion 20:47
p6eval rakudo 07ceac: OUTPUT«1␤»
finanalyst is there an easy way to flatten nested junctions using the current version of rakudo?
ruoso finanalyst, use it in boolean context
finanalyst i found a version of Damian's Superposition talk - in Portugese!!! 20:49
20:50 sri_kraih joined, ejs joined
finanalyst rakudo: my @x=1|11,2,3|33; my $s=[+] @x; say $s.perl; say ?($s) 20:51
p6eval rakudo 07ceac: OUTPUT«any(any(6, 36), any(16, 46))␤1␤»
skids rakudo: push(any(1|2|3); @_.say;
p6eval rakudo 07ceac: OUTPUT«Statement not terminated properly at line 1, near "(any(1|2|3"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
20:51 schmalbe left
ruoso finanalyst, skids, junctions are not sets 20:51
skids rakudo: my @a; @a.push(any(1|2|3)); @a.say;
p6eval rakudo 07ceac: OUTPUT«Junction<0xb60a4788>␤»
skids ruoso: I know. 20:52
moritz_ IMHO that's a bug
it push should autothread over the junction, and then complain for each that it can't push to an Int 20:53
skids But people will be able to autothread in a way that retains values.
Nomatter what they are told.
ruoso rakudo: my @a; @a.push(1|2|3); @a.say
p6eval rakudo 07ceac: OUTPUT«Junction<0xb6024298>␤»
jnthn That's wrong for sure because .say should auto-thread.
skids Which was the point I was trying to make.
jnthn (Whihc will happen if somebody moves it to the setting ;-)) 20:54
ruoso jnthn, push sould autothread...
jnthn ruoso: Depends on its signature.
ruoso: I suspect it won't though.
finanalyst ruoso: you said junctions are not sets twice, but why is that significant here. I think i should be getting any(6, 16,36,46)
jnthn Because probably role Array[::T = Object] { method push(T *@x) { } }
moritz_ finanalyst: any(any(1, 2), any(3, 4)) is the same as any(1, 2, 3, 4) in *all* respects, excepts for .eigenstates which is going away 20:55
skids At any rate implementing the Set type would at least give an alternative to point people to. 20:56
moritz_ finanalyst: so there's no reason to mull over the fact if and how it should flatten
skids: aye, good idea
skids But then what is any(all(1,2),none(3,4))?
moritz_ skids: it is exactly what it is, any(all(1,2),none(3,4)) 20:57
ruoso it doesn't make sense on itself
skids So it will not flatten.
ruoso it only makes sense when you try to do something with it
skids, it might or might not
moritz_ if you do any(all(1,2),none(3,4)) < 3, it'll autothread to any(all(True, True), all(False, False))
ruoso skids, that question is pointless... 20:58
moritz_ and that collapses to True in Booleand context
flattening is an optimization
ruoso skids, because a junction is something that should be seen as 1 value
20:58 desertmax left
moritz_ that is probably not possible for junctions of mixed types 20:58
finanalyst is there not some sort of algebra to simplify junction expressions like that
moritz_ finanalyst: there is
finanalyst: for example all(a, a, $stuff) is the same as all(a, $stuff) 20:59
finanalyst what about any(all(1,2),none(3,4))?
jnthn That'd maintain its structure. 21:00
moritz_ I don't see a trivial optimization there
finanalyst or am i thinking in sets?
ruoso I think you do
a junction only makes sense when you try to do something with it
moritz_ and a set doesn't have different collapsing types as Junctions do 21:01
ruoso because sets doesn't collapse
;)
moritz_ right ;-)
21:02 FurnaceBoy left
finanalyst ok. How is any(3,4,5,6) different from any(3,4,any(5,6))? 21:04
ruoso it isn't
finanalyst so the any can be taken out of the brackets? 21:05
moritz_ yes
21:06 sri_kraih_ left
finanalyst what about any(3,4,all(6..8)) does this have another representation? 21:06
moritz_ I don't see one 21:07
21:07 M_o_C left
finanalyst perhaps any(all(3,6..8),all(4,6..8)) 21:07
moritz_ no
3 == any(3,4,all(6..8)) is true in boolean context
3 == any(all(3,6..8),all(4,6..8)) is false in boolean context
ruoso finanalyst, again... it only makes sense when you try to use it... 21:08
21:08 mikehh left, mikehh joined
ruoso still trying to figure out a way to check for absent values... 21:08
moritz_ rakudo: say %*ENV.WHAT === ::Hash; 21:09
p6eval rakudo 07ceac: OUTPUT«1␤»
finanalyst ruoso: I can see that you need to test again junctions, but finding other representations is surely important, such as trying to find a way to test absent values
21:10 donaldh joined
moritz_ rakudo: say %*ENV.WHAT === Hash; 21:10
p6eval rakudo 07ceac: OUTPUT«1␤»
moritz_ rakudo: say %*ENV.WHAT eq Hash;
p6eval rakudo 07ceac: OUTPUT«1␤»
finanalyst rakudo: 3 == any(all(3,6..8),all(4,6..8)) and say "yes" 21:11
21:11 donaldh left
p6eval rakudo 07ceac: RESULT«any(all(Bool::True, Bool::False), all(Bool::False))» 21:11
21:13 ejs left
finanalyst rakudo: (3,6..8) == any(all(3,6..8),all(4,6..8)) and say "yes" 21:13
p6eval rakudo 07ceac: RESULT«any(all(Bool::False), all(Bool::False))»
21:13 Meijito left
finanalyst rakudo: all(3,6..8) == any(all(3,6..8),all(4,6..8)) and say "yes" 21:13
p6eval rakudo 07ceac: RESULT«all(any(all(Bool::True, Bool::False), all(Bool::False)), any(all(Bool::False, Bool::True), all(Bool::False, Bool::True)), any(all(Bool::False, Bool::True), all(Bool::False, Bool::True)), any(all(Bool::False, Bool::True), all(Bool::False, Bool::True)))»
21:14 ZuLuuuuuu joined
moritz_ finanalyst: when it says RESULT«...» instead of OUTPUT«...» it means that the statement produced no output 21:14
in that case it returns .perl of the return value
finanalyst I was wondering.
skids and is not boolean enough.
moritz_ rakudo: say ?(all(3, 4) == 3) 21:15
p6eval rakudo 07ceac: OUTPUT«0␤»
moritz_ that's an easier and less confusing way to test the truthiness
finanalyst rakudo: say ?(all(3, 4) >= 3)
p6eval rakudo 07ceac: OUTPUT«1␤»
ruoso later &
finanalyst ahhhhhh
skids Is "truthiness" an official Perl6 term now? Colbert will be pleased. 21:16
21:16 ruoso left
moritz_ don't think so 21:16
21:16 donaldh1 joined
moritz_ the only Colbert I know is a french battle ship ;-) 21:16
finanalyst got to go. thanx for the junction tutorial
21:16 finanalyst left
skids moritz_: seriously? (WRT "Colbert") 21:17
moritz_ skids: yes 21:18
skids wikipedia "truthiness"
21:18 justatheory joined 21:20 wknight8111 joined
moritz_ rakudo: class A { }; say A.what === A; 21:27
p6eval rakudo 07ceac: OUTPUT«Could not locate a method 'what' to invoke on class 'A'.␤current instr.: 'die' pc 15608 (src/builtins/control.pir:204)␤»
moritz_ rakudo: class A { }; say A.WHAT === A;
p6eval rakudo 07ceac: OUTPUT«1␤»
21:32 mikehh left, mikehh joined 21:35 dKingston left 21:38 NordQ left 21:40 hkBst left, hkBst joined, Woody4286 left 21:44 skids left 21:49 Woody4286 joined, Woody4286 left, Woody4286 joined
moritz_ dukeleto: I'm now looking at your roots and roots_squashed branches, and neither can be merged cleanly into master... am I missing something crucial? 21:53
I tried (on master) git merge leto/roots_squashed, and it gave me quite some conflicts 21:56
21:59 hkBst left 22:01 hercynium left
PerlJam moritz_: I think it's just that he hasn't merged recent changes into his branch. 22:02
moritz_ PerlJam: I just thought he did a merge --squash and resolved the errors on the way 22:03
and currently I'm not motivated to resolve 13 conflicts myself :/ 22:04
ah, it seems a rebase + squash seems to solve most of it 22:07
PerlJam rebase + squash? 22:12
22:14 donaldh1 left 22:16 exodist left
moritz_ first in the branch 'git rebase master', then in master git merge --squash branch 22:20
22:21 Schnueff left 22:23 bjohnb joined
bjohnb leave 22:27
exit 22:28
moritz_ bjohnb: try it with / in front
22:28 bjohnb left 22:32 skids joined 22:36 nihiliad left
skids gather { gather { take 1; lift take 2; } } # opinions? 22:47
moritz_ I don't think that does what you want 22:48
lift (iirc) is for propagating different set of multis 22:50
skids The S04 wording seems to deftly avoid mentioning variables other than those defined in the inner scope. 22:53
And at the same time infer anything not found is searched for in the outer scope. 22:54
But then, the identity of the innermost gather would be "found"
So I think you are right.
So then that leads me to: will there be LABEL.take and context(...).take 23:09
The docs are not explicit about that. 23:11
moritz_ skids: send a mail to p6l and ask
skids but then I'd get sucked into p6l :-) 23:12
moritz_ damn, he noticed my trick ;-)
skids: in the long run nothing can safe you anyway ;-)
skids: when the discussions get too long, you can just ignore most of them 23:13
skids I'll think about it but life's been so much better since I gave up mls. 23:15
i really had a ... problem... there, total addict. 23:16
moritz_ ok, then I won't try to suck you in again.
just ask TimToady then ;-)
23:27 kate21de joined
jnthn ponders that Ruud's suggestion is easily do-able in a module with augment class List { method dop ... } 23:27
23:28 eternaleye joined
moritz_ jnthn: I just suggested 1 ~~ 0 :dop(7) (but as a user defined operator, please) 23:29
23:30 hercynium joined
moritz_ this looks like the perfect place for attributes on operators 23:30
jnthn adverbs, but yes. 23:31
moritz_ erm, yes
jnthn The only thing is though...
skids check the precedence rules, they are tricky for those.
jnthn You've used infix:<~~>
Which is already used for smart-match.
moritz_ but not with the :dop adverb
remeber that it just does a multi dispatch
jnthn Yeah, but named parameters don't participate in the multi dispatch. 23:32
moritz_ uhm.
jnthn (By spec, for 6.0.0)
Thus a big part of the motivation for why we can write protos.
moritz_ then our whole idea for using adverb-based testing is also dead, I think
jnthn Hmm. :-| 23:33
Oh, hang on though...
Maybe not.
I guess because the named paramters may be able to veto in some sense.
moritz_ well, I wasn't too fond on re-writing 18k tests anyway
jnthn But I don't know that it falls out so neatly. 23:34
moritz_ wonders why his git-push hasn't made it to github yet 23:36
the github web page doesn't show it, and dalek didn't report it either 23:37
but the command clearly indicated success
(and now we're at 7367 passing tests)
jnthn Nice. 23:41
jnthn would love to hit 7,500 for the next release. 23:42
moritz_ that sounds very possible
... assuming that git doesn't screw up things
hm, a fresh 'git clone' shows the commit 23:43
dalek kudo: 1ef8919 | (Jonathan Leto)++ | (3 files):
Implement roots() builtins
kudo: 9a84c35 | (Moritz Lenz)++ | t/spectest.data:
add now passing roots.t to t/spectest.data
moritz_ ah, there you go
23:49 FurnaceBoy joined
jnthn Nice. 23:50
dukeleto++
moritz_ indeed 23:52
23:54 trigger_trilogy left
jnthn Rakudo day tomorrow, BTW. 23:55
Oh, uh.
Today.
23:55 ZuLuuuuuu left
jnthn The bit of the day that happens after I've spent some time unconcious. 23:55
I hope to work on import a bit more, sort out multi method invocants to have the right type, and try to implement something new. :-) 23:57
moritz_ sounds nice ;-) 23:58