»ö« 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! | Rakudo Star Released!
Set by diakopter on 6 September 2010.
masak today's Advent post: perl6advent.wordpress.com/2010/12/1...s-cousins/ 00:19
diakopter tomorrow's ;)
masak whatever ;)
it's already today over here... 00:20
unfortunately, there's an empty slot tomorrow. :/
we've got plenty of ideas for what to write about; anyone want to write advent post #15? 00:21
masak 'night, #perl6 00:34
colomon phenny: tell masak "things tend to get more readable when you golf." Wish I could have easily posted the process made working on the Markov chain script with moritz_++. It started a pretty nice looking script, and found about three awesome simplifications that needed to be discarded before we landed on the final version. 01:33
phenny colomon: I'll pass that on when masak is around.
echosystm will perl6 be completely vm-based? as in no annoying c modules that need to be built? 01:55
i mean, will the perl6 equivalent of cpan be mostly 'pure perl' modules or will there be a lot of C stuff still? 01:56
diakopter echosystm: there are multiple implementations 01:57
it seems you find building/installing 'c modules' annoying in order to interact with other native packages and such. All the VMs of which I'm aware have ways to interact natively, and so folks who need them will create (and sometimes publish for free) modules that link them. 01:59
echosystm: if you don't like their free gifts to you, that's fine... 02:00
echosystm is that a yes? 02:01
diakopter echosystm: the simple reality is that all that existing [natively built] code out there is too much to try to make "pure perl" and furthermore, in most cases, there aren't any reasons to.
echosystm i'd like to know if perl6 will be like java, where i can just move a project over to a different computer, run it and have it just work
having to compile things is a huge workflow killer at our workplace 02:02
diakopter that is, of course, a vastly underqualified/unfair comparison
echosystm every time we need to set something up on a server, our systems guys have a massive cry about dependencies blah blah blah
diakopter there are plenty of situations where perl is far more portable than gobs of java code.
that would be a problem with the "systems guys" 02:03
echosystm yes, but it is a problem nonetheless
diakopter yes.
echosystm so... will perl6 be more portable like that? 02:04
i assume yes, since it's using VMs like parrot etc.
diakopter I'm having trouble deciding which part[s] of what I've already written I need to explain more
echosystm "All the VMs of which I'm aware have ways to interact natively, and so folks who need them will create (and sometimes publish for free) modules that link them." 02:05
ways to interact natively with what? and folks who need what? link to what?
i don't follow that whole sentence 02:06
diakopter say, perl6 to sqlite3
echosystm oh right
diakopter someone who uses rakudo on parrot can install a module to use that software
someone has to write that module to link the two 02:07
and publish it for free
(so that we can talk about it like this) :)
echosystm i'm talking more about examples like snmp
from memory, in perl5 its standard to use net-snmp, which is a c library with perl interfaces 02:08
diakopter sure
echosystm instead of building it ontop of perl sockets and not keeping it 100% pure perl
i assume that was done for performance reasons
i suppose my question is, will things like that be done completely in perl or will we still have this dependency madness? 02:09
diakopter performance of the code, but probably more importantly, expediency of creation of the bindings
it is extremely difficult for me to imagine that thousands of programmers will rise up and translate/port the millions of LOC out there in order to meet your wish 02:10
echosystm mm
surely there are other people that feel the same way though?
diakopter (as I've said, it's much more expedient to use what's already written)
echosystm managing dependencies is a huge issue around here
diakopter yes, but there are costs to indulging such feelings 02:11
others are much more knowledgeable than I am about managing perl5 dependencies... I've heard good things, though, about perlbrew. 02:12
echosystm perlbrew aye
*googles*
this seems to be more about getting more than one version of perl installed 02:13
anyway, i've got a few avenues to investigate 02:14
diakopter if suddenly a company came along and said "here's $40B to port all open-source software to Perl 6", that'd be great... but then there would need to be an excellent fully-optimizing compiler to make that code as efficient as the other native libraries [including by finding the inefficiencies in all that $40B worth of ported code]. :D
echosystm i was just curious is perl6 would be any different
diakopter it'll be as different as people volunteer to make it 02:15
plobsing echosystm: at some level, you need to drop down to C to do anything remotely useful. that or expose every operating system call as a builtin and reimplement libc in your language (both of which are pretty unreasonable things to do) 02:17
what *will* likely go away are the glue libraries. NativeCall (as implemented by zavolaj) allows binding directly to the C libraries, meaning no XS is necessary (some conditions apply) 02:21
diakopter echosystm: note that plobsing is referring to rakudo, which is only one of the several implementations, and in particular rakudo on parrot, which is only one of the VMs on which rakudo will run. 02:22
the .net or mono edition of zavolaj might share its name, but it would look entirely different 02:23
plobsing diakopter: the guts may be different, but the interfaces should be the same 02:25
colomon hmmm... Advent post on creating a p6 module? 02:30
colomon one sentence in, I hate it. :\ 02:41
maybe it will seem better in the morning
lopnor hello, 03:02
I tried to make a class instance from string variables, 03:03
like this: gist.github.com/739951
classname with colon fails with 'Null PMC access' 03:04
am I doing something wrong?
colomon I'm guessing it's indeed the colon. But it's more likely a bug than something wrong you are doing. 03:05
lopnor oh 03:06
i walked around that with my $obj = eval "{$class}.new";
lopnor thank you. 03:08
colomon just for fun, try "Foo-Bar".new instead.
lopnor k
colomon I think the issue may have something to do with :: getting translated to - in nqp, or something to that effect. (Not my area of expertise at all.) 03:09
lopnor colomon: it failed 03:10
thank you for the suggestion, anyway 03:11
colomon you're welcome, sorry I don't have a fix for you.
phenny: tell masak Is lopnor's bug already reported? 03:12
phenny colomon: I'll pass that on when masak is around.
lopnor thank you!
plobsing lopnor: I get a little further by sticking the class name in a ::var (still not all the way though). 03:14
lopnor oh I'm waiting for that! 03:15
Zimbu perl6: say "match" if 99 ~~ (99, 88, 77) 03:57
p6eval pugs, rakudo : ( no output )
Zimbu Now, why didn't that match? Been bugging me all evening.
diakopter perl6: say "match" if 99 ~~ 77, 88, 99
p6eval pugs, rakudo : OUTPUT«match␤»
diakopter (dunno) 03:58
Zimbu First real clue I've seen all night. So what was the difference?
diakopter dunno
Zimbu The more I play with v6, the more I hope Larry's off somewhere writing a good book on all this. :-) 03:59
colomon rakudo: my $a := 99, 88 77; say $a; say $a.WHAT 04:03
p6eval rakudo : OUTPUT«===SORRY!===␤Confused at line 22, near "my $a := 9"␤»
colomon rakudo: my $a := 99, 88, 77; say $a; say $a.WHAT
p6eval rakudo : OUTPUT«99 88 77␤Parcel()␤»
colomon rakudo: my $a := (99, 88, 77); say $a; say $a.WHAT
p6eval rakudo : OUTPUT«99 88 77␤Parcel()␤»
colomon so much for that theory. 04:04
Zimbu I was going down the same path (without leveraging the cool $a.WHAT, thanks for that). Some semantic difference between list or array? 04:06
TimToady smartmatched lists do not assume "any" semantics, unlike in Perl 5 04:07
colomon TimToady++ # coming to the rescue
is the second one a precedence thing?
(99 ~~ 77, 88, 99), I mean
TimToady I have no idea how that worked 04:08
rakudo: say 99 ~~ 77
p6eval rakudo : OUTPUT«Bool::False␤»
TimToady rakudo: say 99 ~~ any 77, 88, 99 04:09
p6eval rakudo : OUTPUT«Bool::True␤»
colomon rakudo: say "match" if (99 ~~ 77), 88, 99
p6eval rakudo : OUTPUT«match␤»
TimToady ah 04:09
Zimbu rakudo: say "match" if 99 ~~ (99, 99, 99)
p6eval rakudo : ( no output )
colomon rakudo: say "match" if Bool::False, 88, 99
p6eval rakudo : OUTPUT«match␤»
TimToady rakudo: say 99 ~~ 99 | 99 | 99 04:10
p6eval rakudo : OUTPUT«Bool::True␤»
colomon rakudo: say "match" if 99 ~~ 77 | 88 | 99 04:11
p6eval rakudo : OUTPUT«match␤»
colomon rakudo: say "match" if 98 ~~ 77 | 88 | 99
p6eval rakudo : ( no output )
colomon 'night, all 04:14
Zimbu Thanks for the insights!
So let me see... smartmatching in this case w/o parens is a "false match" due to precedence. 04:15
And junctions work as you'd expect.
Gotta run. I'll keep puzzling over this. 04:19
OxCart netsplits are much funnier on large networks 04:59
sorear good * #perl6 05:05
ponbiki :3 05:07
sorear phenny: tell masak Due to circumstances beyond my control, I'm likely to miss most of #phasers, sorry. I'll be able to make #phasers+24h though. 05:09
phenny sorear: I'll pass that on when masak is around.
shortcir1uit yawns 05:10
I forgot to write the post until way, way too late.
It's now 12:08AM. I've rewritten the first two paragraphs thrice, and it still sounds like something I'd have written in early high school.
I'll try again tomorrow. :-|
sorear shortcir1uit is doing p6advent/ 05:11
lue ohai o/ 05:12
dalek ecza/clibackend: bd33d2f | sorear++ | src/Metamodel.pm:
Include names in cross-reference nodes
05:25
ecza/clibackend: 4c0d984 | sorear++ | / (9 files):
WIP: Start codegen overhaul

CgOp::xxx now generates portable nodes. A skeleton of a NAM writer exists.
ecza/clibackend: add05ef | sorear++ | src/ (4 files):
Prototype the JSON-based to_nam
dalek ecza/cilbackend: bd33d2f | sorear++ | src/Metamodel.pm:
Include names in cross-reference nodes
05:26
ecza/cilbackend: 4c0d984 | sorear++ | / (9 files):
WIP: Start codegen overhaul

CgOp::xxx now generates portable nodes. A skeleton of a NAM writer exists.
ecza/cilbackend: add05ef | sorear++ | src/ (4 files):
Prototype the JSON-based to_nam
lue
.oO(How do I search for a webhost that allows perl6? It's not exactly popular right now...)
05:38
sorear lue: search for a VPS instead 05:44
sorear lue: if you're only going to be using it for Perl6-related activities, you could also ask Juerd for an acct on feather.perl6.nl 05:45
lue thanks sorear, I'm looking at VPS. [ I'm actually shooting for building a website, so I don't think feather would be ok for that :) ] 05:53
diakopter lue: actually feather is fine for hosting a perl6-related website 06:31
lue Does a website utilizing perl6 count as perl6-related? :) [It would probably gravitate towards perl6, but I plan on it being more a 'whatever I feel like having up' kind of site :D] 06:33
diakopter well sure, sounds like a blog
diakopter Alias_: how many timezones span Australia? 06:37
Alias_ 3 hours give or take
Not including offshore islands 06:38
diakopter oh
that's what was confusing me
also some half-hour-off timezones 06:39
and one 45-min-off one
Alias_ And there's 5-6 timezones within that 3 hour range, depending on daylight savings
diakopter yeah; I was glancing at www.timeanddate.com/worldclock/cust...amp;sort=1 06:40
the day's winding down here.. and by "the day", I mean Monday :) 06:41
lue: no one would object to a website running on perl6, on feather, on principle. however, to be cautious, it would be wise to make it run in a protected VM 06:43
lue I'll have to continue thinking about it. .oO(could I be (insane&rich) enough to get an actual server I can put on my desk? No.) 06:44
I suppose the biggest hurdle for me to clear is how to run my own website/server (never been serious enough to go beyond free hosting) :P . Ah well, good night world o/ 06:45
Alias_ First step beying free hosting is something like a dreamhost account 06:46
Shared hosting
Infinite disk and bandwidth and domains, a fair whack of DWIM tools, but not much CPU or memory to call your own 06:47
diakopter but.. no perl6
Alias_ Perfectly fine for static sites and simple CGI scripts that won't be called a whole lot, with cron options and so on
Unless you built it yourself
diakopter no, I mean, you don't get a shell
Alias_ Which you may well be able to do
Sure you do
Dreamhost lets you create like 10 users, users gets shells 06:48
Dunno if you get compilers and what not though
diakopter hm, oh
i've always used VPSes (and lots of them) 06:49
Alias_ dreamhost is cheaper if you don't need dedicated cpu and memory 06:50
$10 a month for infinite domains, disk and bandwidth
I've got about 10-15 small miscellaneous sites on one account there, plus one VM for stuff like svn.ali.as that really need the cpu 06:51
diakopter rakudo & parrot have been known to take 1-2GB to build 06:52
dalek ecs: e4cd4c8 | moritz++ | S06-routines.pod:
[S06] fix a logic flaw introduced in 15f0b2b
07:06
sorear what is lue's budget? 07:25
TiMBuS ah nuts i just noticed the perl6 ecosystem repo has the wrong link for my module on github 09:29
is anyone with access online?
its meant to be: git://github.com/TiMBuS/Net--IRC.git 09:30
moritz_ TiMBuS: you have access now 09:32
dalek ecza/cilbackend: ee2c1df | sorear++ | / (2 files):
Add writenam stage
09:38
ecza/cilbackend: 4baa098 | sorear++ | src/ (3 files):
Fix remaining crashes in NAM emitter
ecza/cilbackend: 7e24295 | sorear++ | lib/CLRBackend.cs:
Start NAM consumer
ok: 51ea448 | (Jerome Eteve)++ | src/images/.gitignore:
Ignore make time generated src/image/ files
09:47
ok: 4e8d751 | (Jerome Eteve)++ | / (3 files):
Allow any paper width and height to be specified in PAPER make variable
moritz_ rakudo: class A { method x { say 'A::x' } }; class B is A { method x { say 'B::x 1'; nextsame; say 'B::x 2' } }; B.new.x 09:51
p6eval rakudo : OUTPUT«B::x 1␤A::x␤»
moritz_ rakudo: class A { method x { say 'A::x' } }; class B is A { method x { say 'B::x 1'; callsame; say 'B::x 2' } }; B.new.x
p6eval rakudo : OUTPUT«B::x 1␤A::x␤B::x 2␤»
moritz_ dammit, my last specs commit was wrong 09:52
and I can't access the machine on which I could revert it :(
anybody else wants the honor?
sorear how wrong? 09:54
moritz_ it changed working to broken code 09:58
I confused nextsame and callsame
nextsame was correct, I susbtitutde it with callsame
sorear it's nextsame now 09:59
moritz_ wait
moritz_ just confused it again
the return value is used
so it must return
so it should be callsame
and my last commit changed s/callsame/nextsame/, which was wrong 10:00
does that make sense?
dalek ecs: 2e9f35c | sorear++ | S06-routines.pod:
Revert "[S06] fix a logic flaw introduced in 15f0b2b"

It has to be callsame, since the return value is used.
sorear yes
moritz_ thanks 10:01
moritz_ should really take a break
sorear out 10:35
dalek osystem: 5af742d | Jarrod++ | projects.list:
Fixed a broken git URL for Net-IRC
11:08
TiMBuS moritz_++ # Thanks for the commit bit 11:09
muixirt ping TimToady 11:55
masak oh hai, #perl6! 12:53
phenny masak: 01:33Z <colomon> tell masak "things tend to get more readable when you golf." Wish I could have easily posted the process made working on the Markov chain script with moritz_++. It started a pretty nice looking script, and found about three awesome simplifications that needed to be discarded before we landed on the final version.
masak: 03:12Z <colomon> tell masak Is lopnor's bug already reported?
masak: 05:09Z <sorear> tell masak Due to circumstances beyond my control, I'm likely to miss most of #phasers, sorry. I'll be able to make #phasers+24h though.
colomon o/
colomon oooo, #phasers today! 12:54
masak I'll also miss #phasers today.
colomon oooo, boring #phasers today!
masak if I can think of anything I've done, I'll pre-post :) 12:54
colomon Is it cheating to create new modules to make solving one of your prize problems more elegant? 12:55
tadzik oh, anybody to volunteer for tomorrow?
colomon spectests for it for sure. not sure it's worth adding them before we spectest the change, it may turn out there is prior art on the "Int".new thing that still needs to be sorted. 14:42
uasi flussence: maybe '$name = "Foo"; ::($name).new' 15:03
flussence ooh, didn't know about that. 15:05
> my $a = 'Rat'; ::($a).new.WHAT
Indirect name lookups not yet implemented at line 1, near ".new.WHAT\n"
at least it's specced
masak interesting exchange on an Advent post I wrote last year: perl6advent.wordpress.com/2009/12/0...omment-520 15:22
takadonet masak: good thing you are on top of this :) 15:25
masak Wordpress++ sent me an email about the comment. 15:29
someone on Twitter thinks Perl 6 is cool: twitter.com/crazysmoove/status/14544238180040704 15:30
takadonet masak: but you answered 15:31
masak takadonet: right. but it's easy to do when Wordpress reduces the problem to reacting to things in my inbox. 15:32
smash hello everyone 15:42
takadonet smash: hey
masak hi smash 15:45
PerlJam masak: The 2010 calendar is causing people to look at the 2009 entries too. I'm not sure this is a good thing yet :) 15:51
masak oh? I just assumed it's good.
takadonet same
PerlJam yeah it's good. I just have a small nagging worry about the things that have broken in the mean time. 15:52
oh! didn't someone turn the 2009 posts into tests?
takadonet just about to say that....
TimToady I seem to recall several things being backpatched as they changed
masak yes. I'd suggest we try to keep previous Advent posts current and running. 15:55
there's quite a long tail involved.
masak updates perl6advent.wordpress.com/2009/12/1...witcheroo/ from 'continue' to 'proceed' 15:58
daxim are there other places where $_/»this« is spelled *? 16:00
masak daxim: $_ is not exactly identical to *.
daxim: generally, when binary operators are involved, 5 + * can be written instead of { 5 + $_ }, for various values of '5' and '+' 16:01
but note that when you do it with *, you get the curlies for free.
daxim aha, I recognise this now 16:02
flussence huh, neutro doesn't seem to be putting anything in ~/.perl6/lib 16:13
masak I believe that's correct. 16:16
flussence but the advent post makes it sound like it does :( 16:17
colomon hmmm? 16:18
is that a change?
colomon something installed List::Utils in my ~/.perl6/lib ... 16:18
flussence perl6advent.wordpress.com/2010/12/0...ecosystem/ ... I followed those instructions, but trying "neutro zavolaj" doesn't put stuff there. It all ends up in ~/.neutro/src/ 16:20
masak flussence: you should ask tadzik. 16:22
flussence ok.
colomon oh, you know, I think maybe I installed List::Utils by doing "make install" with the ufo-generated Makefile. Does that sound plausible? 16:27
neutro isn't working at all for me at the moment. 16:28
colomon I just pulled neutro, and I get 16:28
"Unable to find module 'File::Mkdir' in the @*INC directories."
flussence I think the problem is that the makefile neutro writes is using @*INC[1] and [2] for user/system lib whereas the correct ones for my install are [0..1] 16:35
and I haven't changed my $PERL6LIB defaults... 16:36
pmichaud hello, world 16:50
phenny pmichaud: 13 Dec 11:49Z <masak> tell pmichaud I think github.com/uasi/rakudo/commit/3022...defc195f11 looks good (and it passes spectests), but I'd like you to review it before I commit it.
pmichaud phenny: tell masak +1 to commit github.com/uasi/rakudo/commit/3022...defc195f11 16:52
phenny pmichaud: I'll pass that on when masak is around.
daxim you crazy time zone shifters, you. 16:53
also, for the next iteration of the contest I very much want to see some sixers: www.plat-forms.org/teams-2011 16:54
pmichaud I'm often considered to be a somewhat shifty character. :-)
but at least I'm not pushy.
(things go onto my head, not my tail :)
daxim punny 16:55
PerlJam daxim: you think perl6 is on par for developing web apps as the others? 16:55
daxim not now 16:56
moritz_ oh hai
daxim with a certainty next year, I mean, if the node.js guys can participate as experimental, so can Web.pm or whatever
colomon pmichaud: \o/ 16:57
pmichaud colomon: o/
colomon pmichaud: don't know if you've backlogged and seen uasi's fix from this morning: gist.github.com/740396 16:58
When you get a chance, we'd love your opinion on it. :) 16:59
pmichaud what is it fixing? 17:06
I'm thinking it's not needed or necessary, but perhaps I'm wrong?
oh, it's working around problems with 'Foo'.new 17:08
the problem is undoubtedly that 'Foo' as a constant isn't being blessed as a p6opaque object 17:09
so get_repr is failing
or something like that 17:10
I think fixing that would be better than adding a 'new' metthod
[Coke] pmichaud: hio 17:14
pmichaud hola, Coke
phasers in 105? 17:15
moritz_ aye 17:16
colomon pmichaud: (sorry, got called in to assist setting up the model Christmas village) 17:18
Just so we're on the same page, the problem is that (for instance) 17:19
rakudo: my $a = "Rat"; say $a.new.WHAT
p6eval rakudo : OUTPUT«Rat()␤»
colomon should be coming out a Str, in our opinion. 17:20
rakudo: my $a = "Rat"; say $a.PARROT
p6eval rakudo : OUTPUT«Perl6Scalar->Str␤»
moritz_ rakudo: say 'random string'.new.WHAT
p6eval rakudo : OUTPUT«Null PMC access in get_repr()␤ in main program body at line 22:/tmp/rLqhIMO_62␤»
pmichaud okay, looking into it further, I'm guessing it's a deeper Parrot thingy 17:25
might be a p6object issue 17:26
pmichaud yeah. 17:29
if $P0 is a String PMC, then various things assume the String is the name of the class to be gotten
(and .new ends up using get_class internally to figure out the class of the thing being 'new'ed.) 17:30
the other problem with gist.github.com/740396 is that it won't work for subclasses of Str
a slightly related issue that leads to the mixup is that isa $x, 'Str' is expected to work, where we look up a type based on the content of a string. 17:36
or, more directly, $x.isa('Rat') # test if $x isa Rat
moritz_ rakudo: class A::B { }; say A::B.new.isa('A::B') 17:38
p6eval rakudo : OUTPUT«0␤»
moritz_ ...except when not.
pmichaud right, because the string-to-class conversion doesn't know how to handle nested package names or how to eval in the caller's context 17:39
anyway, I'm fine with adding a 'new' method to Str for now to work around this little problem, but it has to be listed as a cheat and not a builtin.
(i.e., in src/cheats instead of src/builtins) 17:40
it's worth adding a comment to src/core/Str.pm about it, too.
colomon pmichaud++
pmichaud also add a test that shows that SubclassofStr.new will fail 17:42
afk, errands
uasi pmichaud++ too 17:46
thanks for the insightful comment
colomon #phasers in 8 min? 18:52
mberends yes, now in 3 min :) 18:57
mberends \o/ Russian visa granted, today Andrew Shitov++ bought the ticket for me to fly to event.perlrussia.org/saintperl2/index.html 19:07
mberends I'm going to read The Book to the Russians on Saturday (in English ;-) 19:08
shortcircuit For the p6advent post I'll be putting together this evening, I'd like to ask for links to P6 code on RC that you folks find particularly interesting. My usual format in front of a language user group is to spam the audience with RC links particular to a language, and then go into question-and-answer mode as the audience finds things they're more interested in.
Nice if I could have a list of P6 curiosities in advance. :) 19:09
diakopter mberends: in Soviet Russia, the book throws ITSELF at you.
mberends (book flood)
plobsing shortcircuit: does "exposes bugs in implementation" fit this definition of "interesting"? 19:12
shortcircuit plobsing: That's one of the things I love to talk about. :) 19:13
plobsing the multi-dispatch Ackermann implementation chokes pretty fast on A(9,6) (should take a long time and compute a value)
TimToady just because you love to talk about it doesn't make it a good Christmas gift. :P
shortcircuit TimToady: I usually like to talk about it in the past-tense. :) 19:14
Perl6 isn't the only language to have implementation fixes result from trying to run code on RC.
I don't usually go into specifics, as I don't like the impression name-dropping gives. 19:15
TimToady sure, but advent calendars aren't supposed to scare the kids :)
shortcircuit Very true.
It's tricky flipping my perspective for this post; presentations in front of user groups is very often an attempt to market RC as a useful tool for developers of that language. (As opposed to strictly _in_ that language.) That's obviously not something necessary here. 19:17
I'll probably write it targeting potential P6 users. Some explicit comparisons of P6 code to other langauges' code is probably the best route.
TimToady I think RC shows itself off quite well as soon as anyone follows a link
it's sort of irresistable to start comparing languages then 19:18
shortcircuit I need to make it irresistable to click, though. (And not in a bait-and-switch sense; if I were into that, I'd just link a single word to TVTropes.) 19:19
TimToady it'd be nice if pages like rosettacode.org/wiki/Category:Perl_6 would actually append the link into the language's example 19:20
rather than forcing the user to page past the description to find the language link, which was already known :) 19:21
and people know how to hit HOME to get to the top if they want
shortcircuit There's a JS fix for that.
*looks for it.*
shortcircuit K. Think I found it. I'll run it through our JavaScript guy for a verification test, and add it to the sitewide JS load this evening. 19:24
colomon moritz_: might you be up for some sort of tag-team implement something short & cool Advent post? 19:36
flussence is considering doing one for zavolaj... 19:39
PerlJam flussence: grab a slot! github.com/perl6/mu/blob/master/mi...0/schedule 19:42
flussence maybe one of the last ones. I'm gonna find something in /usr/lib/ to experiment on first... 19:49
lola_89 Where can I find third party perl6 modules (if any is available) ? 19:56
flussence modules.perl.org!
diakopter modules.perl6.org ?
flussence still hasn't woken up fully today
lola_89 omg :D
PerlJam modules.perl6.org .
flussence also, check out day 9 of the advent calendar posts (I think I got *that* line right at least...) 19:57
takadonet lola_89: modules.perl6.org/ 19:58
PerlJam lola_89: perl6advent.wordpress.com/2010/12/0...ecosystem/
lola_89: that's the advent post flussence was just talking about.
lola_89 PerlJam: before I check, could you please tell me about tk and perl6? (is there such thing)? 20:00
PerlJam lola_89: There's no native Tk libs for Perl 6 that I know of.
lola_89: though, you might be able to use Perl 5's Tk module via blizkost (which comes with Rakudo Star)
flussence
.oO( hmm, do I have Tk installed? )
20:01
lola_89 are there native modern Tk libs coming any soon? :) 20:02
sorear Is modern Tk coming soon?
moritz_ colomon: (re advent) yes
colomon moritz_: then we just need to think of something to tackle. :)
PerlJam colomon, moritz_: a small web app? 20:03
colomon that seems too big... 20:04
PerlJam for two wily hackers such as yourselves? No way! :) 20:05
colomon: how about porting a useful module from Perl 5 that no one has ported yet?
colomon That seems like a great idea in general, but way too much work for an Advent post. 20:06
flussence Tk looks like a big library. I'm sure someone's eventually going to write a p6 binding for it, but I wouldn't hold out for it showing up soon...
lola_89 wx perl?
takadonet PerlJam: I been slowly porting over p5 modules over
PerlJam colomon: there are small, useful modules (unless takadonet has taken them all :)
takadonet PerlJam: ali.as/top100/ 20:07
lola_89 is there plans for a wx perl 6?
takadonet That gives a list of the most used modules in cpan
search.cpan.org/dist/Text-ParseWord...seWords.pm
search.cpan.org/dist/Text-Diff/ Would be nice since the dependence of Algorithm::Diff is already ported 20:08
lola_89 perl6: while 1 {say "Japan rules!"}; 20:18
p6eval pugs, rakudo : OUTPUT«(timeout)es!␤Japan rules!␤Japan rules!␤Japan rules!␤Japan rules!␤Japan rules!␤Japan rules!␤Japan rules!␤Japan rules!␤Japan rules!␤Japan rules!␤Japan rules!␤Japan rules!␤Japan rules!␤Japan rules!␤Japan rules!␤Japan rules!␤Japan rules!␤Japan rules!␤Japan rules!␤Japan
..rules!␤Japan rul…
colomon takadonet, moritz_: huh. Text::ParseWords certainly looks like it would be pretty easy to drastically improve by switching to p6... 20:20
takadonet that was on my hit list.... however near the bottom 20:21
dalek odel: f19e855 | (Martin Berends)++ | t/nqp/45-smartmatch.t:
[t/nqp] increment the plan count to 17 in 45-smartmatch.t
mberends \o/ that makes 300 tests passing! 20:22
tylercurtis hello, sorear. 20:23
takadonet sweet 20:24
colomon: you should go for it :) port it over 20:25
masak ahoy! 21:22
phenny masak: 16:52Z <pmichaud> tell masak +1 to commit github.com/uasi/rakudo/commit/3022...defc195f11
sorear hi masak!
masak commits it
moritz_ so, any ideas for advent?
masak I'm only staying on for an hour tonight. going to bed early to beat a colleague to work tomorrow. ;)
sorear masak: I have to leave in 50m 21:23
masak: you wanted to talk about STD?
masak yes, at some point.
colomon moritz_: takadonet suggested porting Text::ParseWords, it looks like it might be a doable size, but I'm still looking at it. 21:26
sorear masak: now?
masak sorear: sure.
sorear: I'll start with the thing that made me think about it: parsing ints.
sorear: inexperienced programmers re-invent the wheel and parse ints manually. 21:27
sorear +$int
masak no, I meant as part of a regex or grammar.
sorear: in Perl 5, seasoned programmers reach for Regexp::Common.
in Perl 6, I'd like for the common practice to be to re-use existing parts of the Perl 6 parser. 21:28
moritz_ would love that
sorear incidentally, STD has a <strtonum> rule which is not used by STD proper, but a comment says Str --> Num conversions should use it
masak actually, the more we turn the Perl 6 parser inside-out and expose it to the regular programmer, the more (I predict) we win in the long term.
actually, that's part of my long-term dream for Perl 6.
sorear [ :lang(STD) <strtonum> ]
masak right. 21:29
things like that.
sorear incidentally, how much support can I get for <STD::strtonum> meaning that?
without the implicit :lang qualified subrules are a lot less useful
masak I associate :: with 'our' scoping.
sorear hmm. point.
masak but I agree there should be some shorthand.
we have a similar problem when referencing methods. 21:30
it used to be you could say A::foo
now, that only works if method foo is 'our'-scoped.
(and I agree that's how it should be, but I miss the easy shorthand)
I'd also like to expose the OPTable parser (which probably means to standardize an API for it as well). 21:32
with an exposed OPTable parser, people can create their own expression-based grammars easily.
I have an old post about that: strangelyconsistent.org/blog/what-y...nt-without 21:33
sorear moritz_: I'm thinking of adding a /t:All target to the niecza msbuild, which would pre-compile all the modules, would something like that be useful for p6eval?
masak the advantages of this blew my mind at the time; as far as I know, it never blew anyone else's.
sorear "niecza: require STD; " 21:34
moritz_ sorear: yes, it would 21:38
sorear masak: hmm 21:39
sorear masak: GGE::OPTable seems rather different from the STD engine 21:46
in STD land, that would look something like 21:47
masak it probably is.
sorear grammar Algebra {
masak it's on my personal roadmap to learn STD, but right now I'm only at PGE. :)
sorear method number { [ :lang(STD) <number> ] <O(:precedence('z')> } 21:48
method infix:sym<+> { <sym> <O(:precedence<y>, :assoc<left>)> }
pmichaud PGE::OPTable pre-dates STD by a couple of years
masak *nod* 21:49
sorear method infix:sym<*> { <sym> <O(:precedence<x>, :assoc<left>)> }
masak and GGE::OPTable just copies it.
sorear method infixish { <infix> }
method term { <number> }
moritz_ -> sleep
sorear method TOP { <EXPR> }
}
erm s:g/method/token/
masak sorear: that's fine by me.
sorear: as pmichaud said, I'm running on slightly old assumptions. 21:50
pmichaud PGE::OPTable came before there was a operator precedence parser in Perl 6 (other than in concept)
afk, homework
sorear pmichaud: can you elaborate on what you mean by that? (though I won't see it for a bit) 21:54
masak could I give the precedence of infix:sym<+> in terms of <term>, and the precedence of infix:sym<*> in terms of infix:sym<+>? all those 'method' declarators should be 'regex', right? 21:55
sorear: PGE was started in 2004/2005, before there was an STD module. 21:56
dalek kudo: 500089c | uasi++ | src/ (2 files):
Fix RT #77668

RT #77668: [BUG] Can't call Callable objects in a list in parallel using the >>.() [or >>()] form in Rakudo
21:57
sorear masak: no. yes. ah.
in that order.
masak I'm used to expecting being able to specify relative precedences in Perl 6. 21:58
why can't I here?
sorear Did PGE have relative precedence?
masak oh yes.
sorear To my knowledge no STD-class OPP has relative precedence
masak with :tighter and :loosed and :equiv 21:59
sorear I'll need to ask TimToady++ what is needed to support that
masak there's a whole theory behind supporting that, developed by TimToady++.
I'm surprised it's not there. 22:00
diakopter sorear: I thought the original STD.pm EXPR did support that
masak perhaps "theory" is too strong a word... there's a nice trick to it. :)
justatheory flexes his muscles
sorear diakopter: nope, STD.pm6 EXPR uses strings and le/gt
masak sorear: see github.com/masak/gge/blob/master/l...gex.pm#L33 for an actual use of relative precedence. 22:01
masak 'night, #perl6. 22:17
flussence I'm playing around with zavolaj, but I have no idea what to do when a function returns C NULL on failure... just gives me a Null PMC error and dies :( 22:20
(and I don't know *why* it's failing, since this is a straight port of C code that works fine...)
flussence rewrites the code to look nice instead, maybe the error'll go away if I ignore it... 22:22
shortcircuit Hm. 23:02
rosettacode.org/wiki/Closest-pair_problem#Perl_6 indicates it's a translation of the Perl 5 code. Is a more idiomatic version of interest? 23:04
TimToady I worked on that one some--it's hard to get it much more idiomatic, so perhaps it's an example of how much Perl 6 is like Pelr 5. :) 23:10
shortcircuit So it would look much like that were it written from scratch?
TimToady I suspect so 23:11
keeping your x's and y's straight means there have to be a lot of names
there are a number of low-level idioms in there though 23:12
just no magic bullet that makes the whole thing shrink
diakopter for @yP -> $p can be made a one-liner 23:13
I think.
shortcircuit I take it it wouldn't be more idiomatic to define a point class, some point operations, and work it from that perspective? 23:14
diakopter push ($p[0] <= $xm ?? @yR !! @yL), $p for @yP -> $p; # TimToady would this work
TimToady there's no -> on modifiers like that (so far) 23:19
diakopter :'(
TimToady postdeclarations are a bit problematical
shortcircuit is just finishing up his P6 advent post. 23:20
TimToady yay 23:21
diakopter rakudo: my (@a,@b); push ($_ %% 2 ?? @a !! @b), $_ for 1..10; [@a,@b].perl.say
p6eval rakudo : OUTPUT«[2, 4, 6, 8, 10, 1, 3, 5, 7, 9]␤»
sjohnson rakudo: say sort < 1 5 3 5 7 2>
p6eval rakudo : OUTPUT«123557␤»
shortcircuit I noticed most of the P6 advent posts are light on HTML formatting. Are inline links, at least, OK?
jasonmay rakudo: class Foo {has $.x;}; my %h=('x' => 1); mFoo.new(%h).x.say;
p6eval rakudo : OUTPUT«Could not find sub &mFoo␤ in main program body at line 22:/tmp/9U1_6Mvf5Q␤»
jasonmay rakudo: class Foo {has $.x;}; my %h=('x' => 1); Foo.new(%h).x.say; 23:22
p6eval rakudo : OUTPUT«Any()␤»
TimToady shortcircuit: I don't see any problem with it
diakopter shortcircuit: so you could replace that for loop with: push ($_[0] <= $xm ?? @yR !! @yL), $_ for @yP; 23:23
TimToady rakudo: class Foo {has $.x;}; my %h=('x' => 1); Foo.new(|%h).x.say;
p6eval rakudo : OUTPUT«1␤»
shortcircuit diakopter: It's a wiki. You can make whatever changes you see fit. :D
TimToady jasonmay: ^^
jasonmay ooo 23:24
thanks
diakopter shortcircuit: ok, but I can't test it here
jasonmay where can I read about that?
shortcircuit Hm.
shortcircuit wonders if Codepad has P6 support.
It does not. 23:25
diakopter hah
TimToady jasonmay: S06:717
jasonmay cool, thanks
shortcircuit Anyone care to poke them about supporting P6? Rakudo sees frequent updates, and I'm not sure howwell they can keep up.
*how well
diakopter hm 23:26
diakopter has an idea 23:26
we've already got most of this
we just need a way to tell p6eval to use a pastebin as its input, and to spit out a pastebin url as its output 23:27
(or if the output's short, just output it all here)
TimToady you'd want to limit the output size anyway, to avoid pastebin abuse 23:28
diakopter p6eval.pastebin.com/raw.php?i=nBMuE7yU
luckily pastebin.com has a raw option
TimToady: gp
shortcircuit Ok, where do I send this? I can post it to my blog, which will bounce to LJ, and I can have it get picked up by planet.rosettacode.org. 23:29
diakopter so I'd say:
p6bin: nBMuE7yU
shortcircuit OTOH, it's plausible that you'd prefer it go to go out through the P6 planet after some review, first.
TimToady likely 23:30
shortcircuit Ok, it's a private pastebin. 23:31
er. Private paste on a pastebin. Forgive the HTML quality; I wrote it in a funky HTML rich edit field.
pastebin.com/SSXmKAWK
TimToady AWK?!?
shortcircuit lol 23:32
Alright, I'm off to do the dishes. Dishes must be done before I'm fed. :) 23:33
diakopter just eat straight out of the freezer is what I always say 23:35
shortcircuit She doesn't like it when I do that. >.> 23:37
TimToady shortcircuit: "there are 243 fascinating(Well examples" 23:38
diakopter actually; heh, p6bin could be automatic .. since it could poll the archive, so someone would paste their program directly, and p6eval would poll it every few seconds, find an unprocessed one, and report back to the channel links to the input pastebin and the output pastebin. 23:41
diakopter starts to think about larger code collaboration efforts. Of course there are entire sites/apps just for remote multi-user sharing of interactive interpreters 23:42
heh. it could even be told to pull straight from rosettacode :) 23:44
TimToady diakopter: btw, this particular problem is quite likely to overrun any CPU limit 23:50
diakopter oh... for what input
TimToady for 5000 points 23:52
diakopter icky
TimToady the brute force version doesn't scale very well, and rakudo already has a very large K 23:53
it did 50 points in 5 seconds, and is still working on 500 point... 23:54
my lap is getting warmer...
TimToady about 4 min 40 seconds for 500 points, and my laptop is not slow... 23:57