»ö« | perl6.org/ | nopaste: paste.lisp.org/new/perl6 | evalbot usage: 'perl6: say 3;' or rakudo: / pugs: / std: , or /msg p6eval perl6: ... | irclog: irc.pugscode.org/ | UTF-8 is our friend!
Set by diakopter on 25 January 2010.
00:00 nihiliad left, fridim_ left 00:09 pmurias left 00:19 jferrero left 00:21 payload joined 00:25 rgrau left 00:33 drbean joined 00:34 uniejo joined 00:44 ShaneC left 00:46 ShaneC joined 00:47 ihrd joined, ihrd left 00:48 pnate left 00:58 patspam joined 01:04 cognominal left 01:05 yinyin joined 01:06 cognominal joined 01:08 Chillance left 01:11 dugg left, justatheory left 01:21 mssm left 01:23 [particle] joined 01:34 meppl left
lichtkind good night 01:41
01:42 lichtkind left 01:45 hercynium left 01:47 justatheory joined, lestrrat is now known as lest_away 01:49 justatheory left 01:50 cdarroch left 01:55 sjn left 01:56 uniejo left 01:57 nihiliad joined 02:02 sjn joined 02:10 fcahoon joined, cognominal left 02:11 cognominal joined 02:14 ash_ joined 02:23 agentzh joined 02:42 lest_away is now known as lestrrat 02:46 fcahoon left 02:48 colomon left 02:49 lestrrat is now known as lest_away 02:55 lest_away is now known as lestrrat 03:01 ShaneC left 03:02 colomon joined 03:15 agentzh left 03:18 dalek left 03:23 dalek joined
colomon github done? 03:27
*down 03:28
diakopter oh? 03:33
03:34 dalek left 03:36 cxreg left, cxreg joined
colomon I haven't been able to pull or see the commit list on the web for ten minutes now. 03:38
oh hey, that worked last time. 03:39
03:39 dalek joined
colomon and there are commits since I last checked, too. \o/ 03:39
03:41 sjohnson sets mode: +oo diakopter colomon 03:44 jaldhar joined
colomon jnthn++ # ng1 over 3000 tests running again. 03:45
colomon is wondering if we should have Seq.reverse which returns a lazy list, and Iterator.reverse which returns a Seq... 03:48
sjohnson colomon: hi 03:51
colomon 'ello 03:52
sjohnson how's it going?
colomon pretty good. about ready for bed here.
lots of changes to ng1 one today! 03:53
how're you doing?
sjohnson pretty good 03:54
really stoked about perl
makes my life at work so much easier
i wish i had learned it 10 years ago
been using perl for 2 years
colomon It has frequently been a life-saver for me over the years.
sjohnson it's the WD-40 of programming languages
over 2000 uses! 03:55
colomon :)
eternaleye colomon: The only way I can think of for that not to be the case (re Seq and Iterator reversing) is if Iterator has a '.end' method, returning a bindirectional iterator already at the end of the lazy list 03:57
*bidirectional
Which has .succ and .pred swapped
03:58 k23z__ left
colomon eternaleye: I don't think we have any framework for that yet, but it's a nice idea. 03:58
Right now reverse takes an Iterator and builds an array, adding each new element from the Iterator to the front of the array. 03:59
eternaleye The problem is that it only works on non-infinite lists - the ones that are infinite, which are the primary ue case, have an unknown end
The Iterator.reverse -> Seq is more general 04:00
colomon how can you possibly reverse a generic infinite list?
oh, wait, think I read you wrong there. 04:01
pugs_svn r29637 | lwall++ | [CORE] catch up with some name changes
eternaleye colomon: You can't, Im thinking more like my @foo = (1, 2, bar(), 7).reverse, because bar() is assumed to be an infinite list for the purposes of laziness
colomon I think we're talking past each other a bit here. (Or at least, I'm confused.) 04:04
If you have a list, you have to step through all of its values to reverse it. In which case you have to do something equivalent to creating an Array. (I mean, I guess you could do it on the stack, but that would be ugly ugly ugly.) 04:05
That's our current .reverse method.
What I was pondering was that it might be useful to also support reversing a Seq by gathering its elements in reverse. Because you can't reverse a Seq without instantiating all of its values, and once you realize you've got to do that you can use elems and just read off the Seq backwards. 04:08
04:13 eternaleye left
lisppaste3 colomon pasted "Suggested approach to Seq.reverse" at paste.lisp.org/display/94333 04:15
colomon is off to bed... 04:18
sjohnson cya 04:19
04:20 eternaleye joined 04:22 sundar joined
eternaleye colomon: Yes. I thought of an optimization of Iterator.reverse where each iterator caches its endpoint, to be returned from .reverse. I then realized that Perl 6 only creates iterators where lists are explicitly lazy or infinite, and infinite lists have no endpoint to cache. 04:22
04:24 LaVolta joined 04:33 bob__ joined
bob__ hi 04:33
any1 there? 04:34
04:34 bob__ left 04:37 perlman25 joined
perlman25 helllo is any1 there? 04:37
i have a perl 6 snowman here 04:38
use v6; my $height = @*ARGS[0] // 31; my $width = $height; my $max_iterations = 50; my $upper-right = -2 + (5/4)i; my $lower-left = 1/2 - (5/4)i; sub mandel(Complex $c) { my $z = 0i; for ^$max_iterations { $z = $z * $z + $c; return 1 if ($z.abs > 2); } return 0; } sub subdivide($low, $high, $count) { (^$count).map({ $low + ($_ / ($count - 1)) * ($high - $low) }); }
04:39 perlman25 left
spinclad yes, i've seen that. you say it's yours? 04:40
loses a bit in line-length limiting. 04:41
*ircline-length limiting 04:42
04:42 alester joined 04:46 ash_ left 04:51 alester left, ihrd1 joined 04:56 nihiliad left 04:59 drbean left 05:00 ihrd1 left 05:07 cognominal left 05:27 stephenlb left 06:38 REPLeffect left 06:40 REPLeffect joined 07:13 Su-Shee joined
Su-Shee good morning 07:16
07:24 REPLeffect left 07:25 REPLeffect joined 07:38 Baggiokwok joined 07:46 LaVolta left 07:59 kaare joined 08:00 drbean joined, kaare is now known as Guest46644 08:01 dual left 08:03 jferrero joined 08:08 dual joined, Baggiokwok left 08:32 agentzh joined 08:39 mssm joined, agentzh left
moritz_ good morning 08:41
08:50 payload left
mathw Good morning moritz_ 08:52
09:01 tuxdna left 09:03 payload joined 09:04 payload left, payload1 joined 09:06 payload1 left, payload joined 09:08 szabgab left, riffraff joined 09:18 tuxdna joined 09:32 quester joined 09:33 agentzh joined 09:36 eternaleye left 09:42 dr_df0 joined 09:43 drbean left 09:44 eternaleye joined 09:50 payload left 09:58 yinyin left
jnthn oh morning 10:19
10:19 fridim_ joined 10:20 payload joined
mathw oh hai jnthn 10:20
jnthn has a couple of errands this morning and Slovak class this afternoon, but is pretty confident he'll have Perl 6 time later on in the day. o/ 10:23
mathw \o/ 10:26
and Slovak class is important
moritz_ is glad that jnthn++ comes to the hackathon in Copenhangen, and hopes that pmichaud++ does that too 10:27
mathw That does look like fun 10:28
arnsholt When is the Copenhagen thing again? 10:30
moritz_ first weekend in March, iirc
jnthn Yes.
moritz_: You are going to be there, yes?
oh, yes, the email said so... 10:31
jnthn pours more coffee down his throat
10:39 dakkar joined 10:40 cosimo left, cosimo joined 11:00 masak joined
masak oh hai, #perl6. 11:00
11:04 frettled sets mode: +o masak, frettled sets mode: +o arnsholt
frettled good noon 11:04
arnsholt 'lo 11:14
11:15 dr_df0 left 11:18 lestrrat is now known as lest_away 11:19 drbean joined, dr_df0 joined 11:20 agentzh left 11:21 macae joined 11:22 payload left 11:24 dr_df0 left
colomon o/ 11:44
11:45 xinming_ left 11:46 xinming joined 11:50 tuxdna left
masak we have a winner of 1 Internet already: lastofthecarelessmen.blogspot.com/2...-tree.html 11:50
masak is always confused as to what to call lastofthecarelessmen on IRC 11:51
I'm not focused enough yet to help debug the problems in that code. maybe later today. 11:52
jnthn back from @morning-errand
masak jnthn: \o
jnthn masak: Hi! :-)
masak however, the '%mode<LEFT> = Hash' is an idiom I've never seem before. not sure you can do that. 11:53
colomon masak: Don't think that's the complete script from E02. Maybe half an internet? :)
jnthn Taht looks odd.
That's sticking the Hash type object into the hash.
masak colomon: agreed. half an internet. the half with all the lolcats. :)
jnthn Which you can do I guess, but I doubt it's quite what's wanted.
masak jnthn: 'xactly.
colomon Hash is an undefined object of type Hash, right?
moritz_ right 11:54
jnthn masak: We're withholding the one with all the FAILs until there's a full solution? :-)
masak jnthn: I think that's only fair :)
11:54 lest_away is now known as lestrrat
colomon original code uses undef there... 11:54
must be his attempt to do a modern perl 6 equivalent. 11:55
jnthn Oh. Well, a proto-object in a sense is just a typed undef.
moritz_ likes it 11:56
11:57 tuxdna joined
masak I think I'd put a well-named sentinel object in that place. 11:57
NOTHINGHERE
THESEARENOTTHENODESYOU'RELOOKINGFOR
colomon But for the recursive tree structure to work, doesn't it has to be typed Hash? 11:58
moritz_ depends on how you do the recursion 11:59
you can also just don't insert anything
if the algorithms work appropriately
colomon sure.
11:59 dr_df0 joined 12:08 SmokeMachine joined, dr_df0 left 12:10 dr_df0 joined 12:13 payload joined 12:17 meteorjay joined 12:22 Baggiokwok joined, xomas left 12:23 bluescreen joined 12:25 bluescreen left, bluescreen joined 12:26 xomas_ joined, xomas_ left, xomas_ joined 12:27 payload left, payload joined 12:31 payload left 12:32 Baggiokwok left 12:38 quester left 12:52 xomas_ is now known as xomas 12:54 orafu left 12:55 orafu joined 12:57 Baggiokwok joined 13:04 Baggiokwok left 13:08 ignacio_ joined 13:09 patspam left
takadonet morning all 13:09
masak good morning to you, takadonet. 13:12
takadonet masak: how are you doing?
masak takadonet: I'm in a warm, well-lit room, my belly is full of lunch, I'm writing Perl 6 and I don't have a worry in the world. pretty good. :) 13:13
takadonet: and you?
mathw masak 13:14
I hate you :P
masak :)
mathw: you're probably making more money than I am, too. :P 13:15
mathw yeah probably
masak mathw: I'm only working 50% so that I can spend more time on things like Perl 6.
mathw but I bet you're not having to deal with colleagues trampling all over your code
masak mathw: no, but that's just because I've put fear in them by making them think my code is really good. :) 13:16
they wouldn't dare trample all over it.
takadonet masak: Good, going to be teaching perl and bioperl to a new co worker in a hour and then back to working on my huge perl 5 project
masak takadonet: sounds agreeable. 13:17
13:17 ejs joined
mathw Sounds agreeable indeed 13:18
I just polished off some work, so I'm feeling good about that
Despite some lingering irritation
takadonet masak: I love working on this project even if there is over half a million lines of Perl 5 code
mathw And I am probably going to spend the afternoon looking at dtrace-related things
Which will be a nice change
takadonet: wow, that's big 13:19
takadonet mathw: My group is modifying this: www.cebitec.uni-bielefeld.de/groups.../wiki.html
masak rakudo: sub foo(%a) {}; foo(Mu) 13:34
p6eval rakudo 1d4928: OUTPUT«'a' is not a valid sprintf format␤in Main (file <unknown>, line <unknown>)␤»
moritz_ wow
colomon :)
masak rakudo: sub foo(%a) {}; foo(Object) 13:35
p6eval rakudo 1d4928: OUTPUT«'a' is not a valid sprintf format␤in Main (file <unknown>, line <unknown>)␤»
masak submits rakudobug
it looks vaguely familiar, but I'm not sure I've reported it before... 13:36
rakudo: sub foo(%a) {}; foo(Array) 13:37
p6eval rakudo 1d4928: OUTPUT«'a' is not a valid sprintf format␤in Main (file <unknown>, line <unknown>)␤»
masak rakudo: sub foo(%a) {}; foo(Hash)
p6eval rakudo 1d4928: ( no output )
jnthn rakudo: sub foo(%d) {}; foo(Hash) 13:38
p6eval rakudo 1d4928: ( no output )
jnthn Bad jnthn, no cookie. 13:39
masak rakudo: sub foo(%s) {}; foo(Array)
jnthn -> Slovak, will patch that later. <embarassed look>
p6eval rakudo 1d4928: ( no output )
masak hahah!
masak half-understands the problem
colomon wait, is the problem that the error message tries to include %a in it? 13:43
masak yep. 13:44
and it sends that string to a sprintf call.
colomon cute
moritz_ so it interpolates someting into an sprintf format? :-)
masak SF++ has a more finished bintree version now: lastofthecarelessmen.blogspot.com/2...cript.html
I also wrote one, and it works: gist.github.com/294621 13:45
maybe I'll do a writeup on mine, as well.
SF's version is closer to the E02 one. mine takes a few liberties.
I think I aimed for (my version of) Perl 6 idiomaticity. 13:46
mathw that kind of experimentation is valuable 13:51
since we're still trying to figure out what the Perl 6 idioms are
colomon masak++ # fixing the bits SF left off
masak I understand now what SF did with Hash.
colomon: actually, I started from scratch. haven't looked much at SF's code yet.
it'll be interesting to do a comparison.
I'm especially glad I got the trait working. I didn't think I would be able to. 13:52
masak looks at SF's code
colomon I think SF's version of the initial insert is nicer than yours. And you've got the found and prompt stuff, which he left off altogether.
masak ah, he didn't get traits working yet. :)
mathw I spent a little time playing with traits when they were first implemented in Rakudo, they're pretty straightforward I thought
colomon masak: you seem to have wandered further from the original with "show", but I like your version better. 13:53
masak colomon: our versions of &insert are almost identical.
13:53 ignacio_ left
masak colomon: yeah, the E02 version of &show was silly. it would have written the numbers together. 13:54
.perl is much nicer. and gather/take falls out as a consequence.
13:55 Lorn left
masak oh right, and I really didn't want to use statement-modifying if and unless the way E02 did it in &show. PBP even advises against that. 13:55
sure, it makes for less repetition, but it also makes the code tougher to reason about. 13:56
13:56 Lorn joined, wanradt joined
colomon masak: oooo, I hadn't noticed the gather / take -ness of show. But in that case, it shouldn't be show anymore, should it? 13:57
13:57 ignacio_ joined
masak perhaps not. 13:57
there is some prior art to calling 'stringify' 'show'. :)
Haskell does it, for example.
colomon What you've actually done is implemented a slightly screwy iterator for the binary tree. 13:58
masak aye.
I have a slight aversion to subroutines that print stuff rather than returning the stuff in question as a value.
colomon ooo, makes me wish ng1 were working a bit better. what a fine implementation you could do there! 13:59
masak heh :)
SF++'s use of .pick(20) is more idiomatic than mine. I didn't think of that. 14:00
I see SF also settled on making $root into %root. :)
colomon you make the tree a class, and then you implement .list(Traversal $method = in-order), which does a gather and then calls your show function. 14:01
masak but he's fairly inconsistent between $tree, Hash $tree and %tree in the subroutine parameters.
14:01 payload joined, drbean left
masak both SF and I hit on the 'enum' idea. it was quite obvious, I guess. 14:02
colomon the original is just plain silly there.
masak it was before enums existed.
things get silly without them. :)
colomon it should have been enough reason to invent them. :)
14:03 jferrero left
masak SF: no, $ARGS prompts('Search? ') is definitely dead. note that there is an implicit 'is' there, and that implicitness is also dead. TimToady conjectures in E02 that it'd be $ARGS.prompt or something like that. but I don't think that's in the spec. 14:03
SF: yeah, a class would perhaps be the next logical step both for your code and mine. 14:05
colomon masak: you'd better blog your version. :) 14:13
masak colomon: I'm on it. :)
colomon keeps on thinking he should start a blog on wordpress, given how smoothly things went for the Advent calendar...
masak colomon: give it a provocative name, like "The Revenge of Perl 6" 14:14
moritz_ Perl 6 Strikes Back
masak or "Perl 6 can has your cookie, and eat it, too!"
s/hash/haz/
erm. :/ 14:15
Juerd s/eat/eats/
masak thx.
Juerd s/your/ur/
14:15 pmurias joined
colomon Perl 6: Ultimate Power 14:16
masak that's not provocative, that's just hubristic :) 14:17
Perl 6: Ultimate Power to Destroy You and Your Dog
Juerd Perl 6: Our Perl is better than yours 14:18
masak haha
Juerd *That's* provocative
masak Perl 6: Don't tell the Perl 5 Guys, But We're 1000% Better
Juerd Perl 6: No matter what they say, 6 > 5 14:19
masak Juerd: you're good at this!
Juerd Just take everything from the "Perl 6 is not going to replace Perl 5"-theory and invert it 14:20
masak Perl 6: Is Going To Replace Perl 5
you're right!
wow.
Juerd Perl 6: One Perl to rule them all
masak I feel bad for laughing at each of these. 14:21
Juerd Hehe
I still have that t-shirt, s:g/5/6/, but I can't wear it anymore :P
masak :)
Perl 6: The Next Version of Perl 5, Which Is, Like, So Old Now 14:22
14:23 cognominal joined
moritz_ Perl 6: Removing the Technical Debt from Perl 14:23
masak Perl 6: Perl 5, Done Right
14:24 Woody2143 left, he_ left
Juerd Perl 6: The Perl is dead, long live the Perl 14:24
[particle] Perl 6: Perl 6, Not Done
Juerd [particle]: :) 14:25
14:25 moritz_ sets mode: +oo Juerd [particle]
Juerd Perl 6: EMWTDI 14:25
masak Perl 6: It's Been, What, 10 years? 14:26
[particle] Perl 6: Nil; Perl 5: undef
...but who's keeping score...
Juerd masak: Great slogan :) 14:27
But...
masak :)
Juerd Perl 5: It's been what, 23 years?
moritz_ Perl 6 - Do You Abandon a 10-Year Old Because She's Not Yet Production Ready? 14:28
Juerd s/5/5.$current/
moritz_: Lovely :)
moritz_: Can I tweet that? :)
moritz_ Juerd: sure
[particle] in soviet russia you do!
Juerd moritz_: Do you use twitter?
moritz_ Juerd: only via hugme :-) 14:29
masak [particle]: in Soviet Russia, a not-yet production-ready 10 year old abandons YOU!
[particle] you're welcome for the setup, masak :)
masak LHF :)
14:30 iblechbot joined
[particle] Perl Six: two terms in a row 14:30
moritz_ unless Perl is a listop :-) 14:31
masak of course it's a listop :)
[particle] 's cpu fan is stuck on high... gotta reboot *sigh* 14:32
14:33 [particle] left 14:37 [particle] joined 14:39 tomaw left 14:40 tomaw joined 14:41 ignacio_ left 14:44 Guest46644 left
colomon woah, stopped to play some music for my boy and you guys really went to town on the unusable blog titles... :) 14:46
masak loliblogged! use.perl.org/~masak/journal/40159 14:47
colomon masak++ # good post 14:51
masak a dank.
14:53 mssm left
colomon Hmm.... is there any reason we shouldn't move ng1 to ng today? (Other than maybe making it master instead.) 14:53
masak it's just names :)
colomon seems like ng1 is more-or-less as capable as ng at this point, and I can't imagine any point to further hacking on ng. 14:54
but, for instance, dalek reports ng commits but not ng1 commits. :)
moritz_ and ng is tracked by dalek :-)
colomon jinx!
14:55 ignacio_ joined
colomon I think tracking alone is a good enough reason to do it, having a tangible on #perl6 trace of changes is a Good Thing. 14:55
masak nod.
+1
14:56 wanradt left 14:57 wanradt joined 14:59 wasy_afk is now known as wasy 15:03 dr_df0 left 15:06 wanradt left, wanradt joined
masak by the way, the Perl 6 Advent Calendar is in the Long Tail phase now. we've stabilized at 150 +/- 100 hits a day to the blog as a whole. 15:09
the 'Grammars and Actions' post is the most popular every day. :) Tene++ 15:10
anyway, if the 150-a-day keeps up, then 20 weeks of Long Tail is more significant than 1 slashdotting. :) 15:11
15:12 nihiliad joined 15:14 forrest joined 15:15 [particle] left
forrest anyone know of a good online article about the history of perl6 (so far)? 15:16
15:16 mssm joined
masak forrest: no, but if you stay around, I'm sure we can patch the history together for you, at least approximately. 15:17
sjohnson forrest: wikipedia is decent
forrest: en.wikipedia.org/wiki/Perl 15:18
masak forrest: there's also a 2006 Google Video talk by audreyt that covers the history to an extent.
sjohnson: hi! I saw in the backlog that you addressed me two days ago, but I had already left. 15:19
sjohnson no worries just was saying hi
masak yeah. still. :) hi.
forrest masak: can you find a link to that video?
15:20 rv2733 joined
sjohnson forrest: just search for it on youtube 15:21
or google
forrest this one? video.google.com/videoplay?docid=-3...103839772# 15:22
15:22 k23z__ joined, [particle] joined
jnthn is back 15:24
colomon o/ 15:25
masak forrest: yes, that one. she gives one milestone per year, up to 2006 or so. 15:27
sjohnson i wonder what she is up to these days
masak forrest: but at the time of that talk, Pugs was the predominant implementation. nowadays, Rakudo is.
and the evolution of Rakudo starts in 2005 or so with PGE, then PCT and nqp, and that started giving visible results in late 2007. 15:28
2008 was a year of lots of functionality being added, and 2009 was the year of lots of Perl 6 projects.
15:30 Psyche^ joined
masak the big event in 2010 will be the merging of ng, and the subsequent features that are then possible. :) 15:31
moritz_ let's give it a catchy name... Rakudo * ?
colomon lazy!
masak and then the April/Q2 release, which will tell the world... yeah.
15:34 Patterner left, Psyche^ is now known as Patterner
forrest i'm supposed to find "news articles" for my dynamic languages class tomorrow and i found a couple of perl6 things 15:34
i got the announcement of the latest rakudo perl development release, "Minneapolis" ... which is cool because that's where I am 15:35
the basic message i'm telling the class is "perl 6 lives!" 15:36
masak forrest: then it might interest you to know about how Perl 6 combines static and dynamic features. 15:37
forrest yes!
masak audreyt talks about about that too, in the latter part of that same talk.
but let's summarize it for you :)
ok, so variable declaration. in Perl 6 (as in Perl 5), you can do 'my $var;' and then just put anything in it. 15:38
forrest ok
masak you can also do 'my Int $var' and have the compiler/runtime err out if you deviate from your own restriction.
forrest nice 15:39
masak so typing is optional.
the same for function and method signatures. 15:40
rakudo: sub foo(Int $a) {}; foo("OH HAI")
p6eval rakudo 1d4928: OUTPUT«Nominal type check failed for parameter '$a'; expected Int but got Str instead␤in Main (file src/gen_setting.pm, line 324)␤»
masak rakudo: sub foo($a) { say $a }; foo("OH HAI"); foo(42)
p6eval rakudo 1d4928: OUTPUT«OH HAI␤42␤» 15:41
masak the point is that you can add and subtract typing as you like.
jnthn masak: heh. Whenever I see a rakudo: line typed by you I automatically try to spot why the output below it is wrong these days. :-)
masak jnthn: Pavlov did have a point, then :P
jnthn Then I realized you're demonstrating stuff and was like...phew. :-)
forrest if you have real method signatures, then can you have ... oh what do you call it, more than one method of the same name with different type arguments.
jnthn jnthn: Why does that name ring a bell? 15:42
masak groans
forrest: aye, multi methods.
moritz_ forrest: mutli dispatch
masak let's demo that, too.
forrest you guys rock
masak rakudo: multi sub foo(Str $a) { say "It's a Str!" }; multi sub foo(Int $a) { say "It's an Int" }; foo(42); foo("OH HAI") 15:43
p6eval rakudo 1d4928: OUTPUT«It's an Int␤It's a Str!␤»
forrest so multi is a keyword?
moritz_ aye
masak in the sense that anything in Perl 6 is a keyword :) 15:44
rakudo: multi sub bar($a, Str $b) {}; multi sub bar(Str $a, $b) {}; bar("OH", "HAI") 15:45
p6eval rakudo 1d4928: OUTPUT«Ambiguous dispatch to multi 'bar'. Ambiguous candidates had signatures:␤:(Any $a, Str $b)␤:(Str $a, Any $b)␤in Main (file <unknown>, line <unknown>)␤»
masak many of the run-time binding errors will be catchable at compile time as our compilers evolve. 15:46
forrest say, is there some gee-whizzical "press release" type document about rakudo * I could show? 15:48
15:48 alester joined
masak there's pmichaud++'s blog post. 15:49
use.perl.org/~pmichaud/journal/39411 15:50
15:51 Grant-himself joined
forrest yeah, that's great, because everyone wants to know "is it done yet?" 15:52
masak I don't. :)
I want to know "can I do cool stuff with it yet?"
whether it's at 100% is fairly irrelevant to me.
forrest well, everyone who's only vaguely heard that perl 6 is coming one day, and doesn't know any more than that, i mean 15:53
which is the audience i'm addressing
mathw yeah that's the continual thing we keep trying to rectify
one person at a time
masak Perl 6 is here already.
just not all of it, and not in a form which will appeal to everyone.
yet.
mathw yes
I kind of need it to run faster
masak indeed. 15:54
much faster.
Tene masak: someone is translating p6advent posts into japanese, did you see?
d.hatena.ne.jp/uasi/20100114/1263480626
mathw wow
masak Tene: yeah, I've been following it and even complimenting the blogger.
mathw that's awesome
Tene ah, that's who that is. 15:55
masak but it's slowed down in the last few weeks, I think.
15:56 Grant-himself left
masak overall, I'm getting vibes through Twitter that Japanese have a generally positive view of Perl 6. 15:57
jnthn found it a friendly place to give a Perl 6 talk :-) 15:58
16:00 nihiliad left
masak bound 'it' to 'Twitter' before falling back on 'Japan' :) 16:01
jnthn masak: I meant Japan. :-)
masak: But nice to know that you consider Twitter a narrower candidate than Japan. :-) 16:02
masak :)
mathw gets a warm fuzzy feeling for a place of such wonderfully geeky humour 16:05
16:05 dugg joined
masak that's been a consistent trait of #perl6 at least since 2005. 16:05
I have a small collection of geeky jokes from in here, such as people using CSS to describe the frames of their glasses. :) 16:06
16:07 rv2734 joined 16:08 rv2734 left 16:09 Chillance joined, ruoso joined 16:10 rv2735 joined, rv2735 left 16:17 ejs left 16:18 PacoLinux left 16:27 hercynium joined 16:31 Woody2143 joined 16:33 cotto_working joined 16:36 cotto_w0rk left 16:38 cotto_working left 16:46 ejs joined, PacoLinux joined, [particle] left
masak you people should try this one-liner at home: perl6 -e 'for ^32->$y {for ^32 {print $_?&$y??" "!!"*"};say ""}' 16:54
16:54 cotto_working joined, justatheory joined
pmurias masak: what's the penalty for passing that to the evalbot? :) 16:57
masak pmurias: only that it won't be very pretty :) 16:58
jnthn damm, ng won't run it!
masak yet another short-term goal, then :)
16:58 rv2733 left 17:02 wanradt left 17:03 masak left
colomon wait, why won't ng run that? 17:03
oh, ng.
hmm.... 17:04
17:04 wanradt joined, [particle] joined
colomon how is $_?&$y supposed to parse? 17:06
jnthn $_ ?& $y
Where ?& is an operator.
colomon bool and? 17:07
jnthn iirc
colomon boolean bitwise and
probably not implemented in ng / ng1 yet? 17:08
btw, jnthn, I vote for moving ng1 to ng today.
17:08 rgrau joined
jnthn colomon: wfm, no benefit to having both. 17:10
I'm doing current dev in ng1
colomon I don't think anyone's working in ng.
And ng gets dalek reports, etc.
jnthn Right.
Has my vote too. 17:11
colomon Do you know how to do the switch? should we wait for pmichaud to pitch in?
jnthn No, my git-fu is weak.
colomon (I believe I could probably merge all ng1's changes into ng, but I'm not sure that's the right way to do it.)
btw, ng1 handles everything in that one-liner but the ?&, I'm pretty sure. 17:13
I had thought "for" didn't work yet, but it seems to work like a charm for this.
17:14 cognominal left
jnthn Oh 17:14
I thought ranges didn't work in ng1 yet.
and ^32
colomon :)
jnthn Cool :-)
?& should be easy. 17:15
colomon > for ^5 { $_.say }
0
1
2
3
4
jnthn \o/
colomon agreed on ?&
Tene colomon: personally, I'd just merge any extra changes from ng since the branch into ng1, and then delete the ng branch.
You could try a merge first, and if it's trivial, that's fine. 17:16
colomon Tene: I already did that merge. (Unless someone has done in ng more since I did it.)
but I think we'd like the "working" branch to end up named ng.
Tene colomon: if ng has been merged into ng1, then a merge from ng1 into ng should be a no-op. 17:17
colomon could we just merge everything back to ng, and then delete ng1, maybe?
Tene So, go ahead.
colomon: That sounds great to me.
jnthn colomon: Sounds good.
colomon I will give it a try, then.
jnthn colomon++ 17:18
colomon git merge origin/ng1 was fast-forward. 17:19
now building....
Tene if it's fast-forward, then there are no changes. 17:20
colomon Tene: yeah, I just like to run spectest to be sure I've made a working system. :)
Tene a rebuild doesn't hurt, but isn't necessary.
Sure, good habit.
colomon not least since I managed to completely bork ng(1?) for about 12 hours a week or two ago with a commit I was sure couldn't cause problems, and so didn't test. :) 17:21
luckily no one else was actually working on it that day, so I was the first person to note the problem, too.
17:21 ejs left
colomon make test passes 17:23
17:26 araujo left
colomon make spectest passes 17:27
pushing
okay, looks like ng is now lazy.
jnthn \o/ 17:28
colomon so how do we rope off ng1 so there is no further development there?
> for (^5).map({$_*$_}) { $_.say } 17:30
0
1
dalek kudo/ng: 533672f | (Solomon Foster)++ | t/spectest.data:
Turn back on join.t.
kudo/ng: 380ff4a | (Solomon Foster)++ | (2 files):
Merge branch 'ng1' of [email@hidden.address] into ng1
colomon 4
9
16
kudo/ng: 20f54dd | jonathan++ | src/Perl6/ (2 files):
Fix up my ($a, $b) again, with a little refactoring of the way we handle symbol registration. This also fudges in multisig, though we don't actually parse multiple signatures just yet.
kudo/ng: c55ec79 | jonathan++ | src/Perl6/Grammar.pm:
A little re-ordering, to account for not doing LTM just yet.
kudo/ng: ab294a0 | jonathan++ | (4 files):
A few role tweaks to help us pass more tests.

Turn on new boolean-bitwise.t.
colomon wow, that all didn't cause a flood? :)
spoke too soon, I guess.
jnthn :-) 17:31
colomon: Not sure you can do much besides delete the branch, but again, weak git-fu. :-)
17:35 payload left 17:39 k23z__ left
PerlJam greetings alll 17:41
s/ll/l/
colomon o/ 17:42
acid test:
ng: for ^5 { $_.say }
p6eval ng 58d896: OUTPUT«0..^5␤»
colomon ack, it hasn't rebuilt yet.
Tene colomon: just delete the branch 17:43
colomon Tene: how?
Tene git push origin :ng1
colomon done.
colomon feels like that was too easy.... 17:44
and now "git pull" from my ng1 build complains bitterly. seems like it worked!
Tene++ # for knowing how to get stuff done
PerlJam How goes #perl6 today? 17:45
colomon PerlJam: we just merged working laziness (aka ng1) into the ng branch. 17:46
sjohnson great
PerlJam cool.
colomon So it's a fine day for #perl6, IMO.
PerlJam I may have time to play with rakudo tonight too. 17:47
colomon ng: for ^5 { $_.say }
p6eval ng 58d896: OUTPUT«0..^5␤»
colomon how does p6eval know when to rebuild?
PerlJam colomon: I think it happens every 15 or 30 min via cron
colomon Okay, then I just need to learn patience. 17:48
PerlJam (it always seems to have trouble around the top and bottom of the hour anyway)
17:53 cognominal joined 17:54 meteorjay left
Tene colomon: feel free to ask me for git help whenever you like. 17:55
colomon Tene: thank you. 17:57
17:59 simcop2387 left 18:04 dakkar left 18:05 ruoso left
TimToady std: for ^32->$y {for ^32 {print $_?&$y??" "!!"*"};say ""} 18:05
p6eval std 29637: OUTPUT«===SORRY!===␤Unsupported use of -> to call a method; in Perl 6 please use . at /tmp/WlT2bndFnE line 1:␤------> for ^32->⏏$y {for ^32 {print $_?&$y??" "!!"*"};say␤FAILED 00:01 108m␤»
18:06 simcop2387 joined
jnthn TimToady: stdbug or Rakudo being too liberal? 18:06
TimToady the latter
but the message should probably mention the other thing 18:07
jnthn The other thing being?
Some whitespace needed?
TimToady "or put space before the ->"
jnthn Is that only required so we can give the warning about -> being 5think? 18:08
Or am I missing something else?
TimToady there's a general policy of requiring whitespace between a term and a lambda
jnthn OK.
colomon ng: for ^5 { $_.say }
p6eval ng b0a176: OUTPUT«0␤1␤2␤3␤4␤»
jnthn wfm.
colomon \o/ 18:09
TimToady std: for ^5{ $_.say }
p6eval std 29637: OUTPUT«===SORRY!===␤Missing block at /tmp/8ueEqF2QbI line 1 (EOF):␤------> for ^5{ $_.say }⏏<EOL>␤ expecting any of:␤ POST␤ postfix␤ postfix_prefix_meta_operator␤FAILED 00:01 107m␤»
jnthn ng: for 1..* { .say; exit if $_ > 10 }
p6eval ng b0a176: ( no output ) 18:10
jnthn ng: for 1..10 { .say; exit if $_ > 10 }
p6eval ng b0a176: OUTPUT«1␤2␤3␤4␤5␤6␤7␤8␤9␤10␤»
jnthn ng: for ^10000000 { .say; exit if $_ > 10 }
colomon oh, for may not be lazy yet.
p6eval ng b0a176: ( no output )
jnthn Oh.
OK. :-)
OK, cooking, eating, then Rakudoing. 18:11
TimToady laters
colomon ng: (1..*).map({ .say; exit if $_ > 10 }).eager
p6eval ng b0a176: OUTPUT«1␤2␤3␤4␤5␤6␤7␤8␤9␤10␤11␤Could not find non-existent sub &exit␤current instr.: '_block27' pc 143 (EVAL_1:53)␤»
TimToady void context is supposed to be eager 18:12
er, *sink* context, ahem
colomon TimToady: yes, but it isn't yet.
TimToady ng: eager (1..*).map: { .say; last when 10 } 18:13
p6eval ng b0a176: OUTPUT«Missing block at line 1, near "}"␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (src/stage0/HLL-s0.pir:328)␤»
TimToady std: eager (1..*).map: { .say; last when 10 }
p6eval std 29637: OUTPUT«ok 00:01 106m␤»
colomon ng: (1..*).map: { .say; last when 10 }.eager
p6eval ng b0a176: OUTPUT«Missing block at line 1, near "}.eager"␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (src/stage0/HLL-s0.pir:328)␤»
colomon yeah, I don't think the "last when" construct works yet, either. 18:14
TimToady ah, thinks when is a statement, I think
colomon ng: (1..*).map: { .say; last if $_ > 10; }.eager
p6eval ng b0a176: OUTPUT«Method 'eager' not found for invocant of class 'Block'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
colomon ng: (1..*).map({ .say; last if $_ > 10; }).eager
TimToady that's also supposed to work, via a quaint hack
p6eval ng b0a176: OUTPUT«1␤2␤3␤4␤5␤6␤7␤8␤9␤10␤11␤Warning␤Null PMC access in isa_pmc()␤current instr.: 'perl6;Iterator;eager' pc 9685 (src/gen/RoleToInstanceApplier.pir:387)␤»
colomon clearly we don't have full STD working yet. :) 18:15
TimToady will go shower and see if it's working by the time he comes back &
colomon ng: (1..*).map({ .say; last if $_ > 10; }).perl.say 18:16
p6eval ng b0a176: OUTPUT«Method 'perl' not found for invocant of class 'MapIterator'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
colomon hmm, thought we had that working now.
well, except for the whole part where I have no clue what .perl should actually do in that case. :) 18:17
18:18 fridim_ left
colomon ng: (1..*).map({ .say; last if $_ > 10; }).join(' ').say 18:18
p6eval ng b0a176: OUTPUT«sh: ./perl6: No such file or directory␤»
colomon jnthn: you working on adding ?& or should I take a stab at it? 18:20
18:20 ruoso joined 18:22 stephenlb joined 18:23 payload joined 18:25 k23z__ joined, am0c joined 18:30 cdarroch joined, cdarroch left, cdarroch joined 18:31 fridim_ joined, xomas left 18:33 xomas_ joined, xomas_ left, xomas_ joined, meppl joined 18:34 xomas_ is now known as xomas
Tene TimToady: what exactly is supposed to be catching the 'last' exception in that case? map? 18:39
colomon Tene: if map and for are supposed to be exactly equivalent, it has to be map, doesn't it? 18:44
Tene nods.
colomon: are there tests for next/last/redo in map?
If you can get those in, I can add support for them 18:45
colomon Tene: darned if I know.
Tene when life settles down, at least.
18:45 pmurias left
colomon Hmmm... actually, map.t doesn't even work at the moment. 18:46
18:48 cognominal left, cognominal joined 18:49 hercynium left 19:11 jonasbn joined 19:19 mikehh left 19:20 mikehh joined 19:27 eternaleye left 19:29 hercynium joined
colomon isne is is not equal in parrot? 19:29
19:29 wanradt left
Tene yes 19:30
jnthn back
colomon: Go for ?& :-) 19:31
colomon jnthn: already am, the isne was about trying to understand how master handles ?& :)
19:32 stephenlb left
colomon band is obviously binary and... I'm not clear on why isne is also needed, unless it's converting the result to a Bool. 19:32
jnthn make spectest in ng is a tad noisy 19:37
Though mostly because of TODO passed
colomon: Let me take a peek. 19:38
It's not creating a Bool, but that's the sentiment, I think. 19:39
multi infix:<?&>($a, $b) { ?pir::band__III($a, $b) } # or some such 19:40
Would probably do the right thing.
19:44 stephenlb joined
colomon jnthn: the TODO passed thing is a big loop where some of the cases succeed and some fail. 19:48
so really it's a cry for attention. :)
19:49 nihiliad joined
colomon jnthn: looks like your suggested ?& works beautifully (on my first four simple tests). 19:52
19:53 ruoso left
jnthn colomon: Yay 19:53
colomon: Erm. Turns out I git checkout ng'd but forgot to pull.
So the tests maybe ain't so bad.
colomon looking for tests for ?& right now...
jnthn colomon: May as well put in the related ones while you're on it. ;-) 19:54
colomon wow, I think our tests for that are officially pathetic.
jnthn: I was afraid someone would say that. ;) 19:55
19:56 hercynium left
colomon Test file also describes it as "logical AND", which doesn't seem right to me, and the tests never do anything bitwise-y with it. :( 19:57
jnthn awww
And there we were thinking we'd win some back.
colomon Well, maybe. 19:58
I think I'm going to move the boolean bitwise tests to a file of their own, add needed tests, and make it all work.
or at least, that's my business plan for the moment. :)
jnthn Go for it. 19:59
I'm going to fix my Foo $x .= new first of all.
colomon masak++'s one-liner from this morning now works on my local copy. :) 20:00
jnthn Yay!
colomon At least, I assume that was the output he was looking for... 20:01
lisppaste3 colomon pasted "masak's one-liner in (colomon's local) ng" at paste.lisp.org/display/94375
jnthn Oh, it's one of them thingy fracal trianges things!! 20:02
20:05 jaldhar left
colomon Sierpinski triangles, something like that? 20:07
jnthn Yes, that's the name I was failing to find. :-)
colomon Did I actually spell it right? That was completely off the cuff, and I'm not a good speller... 20:09
\o/ 20:10
jnthn It looks rightish. :-)
yes, it is...just google'd it :-)
masak++ for the example. :-)
pugs_svn r29638 | lwall++ | [STD] spruce up error message on -> in postfix position 20:11
r29639 | colomon++ | 20:13
20:14 clintongormley joined
pugs_svn r29640 | colomon++ | [t/spec] Rename to better name. 20:14
20:17 arnsholt_ joined, arnsholt left, k23z___ joined 20:18 buubot left, buu left 20:19 k23z__ left
20:20 buu joined
pugs_svn r29641 | colomon++ | [t/spec] Remove tests moved to boolean-bitwise.t. 20:21
colomon errr, what happened to the actual patch? 20:22
20:22 buubot joined
colomon There we go. 20:23
(come on, dalek...) 20:24
20:25 mssm left
dalek kudo/ng: 17dd439 | (Solomon Foster)++ | src/ (2 files):
Add boolean bitwise operators ?|, ?&, and ?^.
20:26
colomon So that's 20 tests we've got back. 20:27
20:28 bluescreen left
jnthn Yay. 20:28
pugs_svn r29642 | colomon++ | [t/spec] Add a few tests which actually test the "bitwise" part of the boolean bitwise operators. 20:35
colomon and 8 new tests. :) 20:36
Of course, those are the dangerous tests: the tests added by the person who added the feature. If I don't understand what the feature is actually meant to do, then I probably got both the test and the feature wrong. :) 20:37
20:38 nadim__ left, mssm joined 20:40 bluescreen joined 20:41 nadim joined
TimToady wrong tests are better than no tests, because they'll eventually provide feedback when another implementation does them right and fails :) 20:45
and it's arguably more important for everyone to do it wrong the same way than to do it several different ways 20:46
jnthn colomon: Yay. Think I mighta got us my Foo $x .= new working again. 20:49
colomon \o/
jnthn Need to spectest.
(doing so)
We win back at least one integration test.
Maybe more. Will see.
20:50 riffraff left, gabiruh left 20:51 gabiruh joined
jnthn yup, tests look good. 20:52
20:52 araujo joined
colomon \o/ 20:53
jnthn pushing
TimToady is ng now what was ng1? 20:54
colomon TimToady: yes. 20:55
we merged them and deleted ng1 earlier today.
TimToady I kinda skimmed that part while I still wasn't awake...
jnthn :-)
colomon That's why we were trying lazy list tests on ng: this afternoon. :) 20:56
TimToady now we just rename rakudo to rakudo/stable, and rakudo/ng to rakudo, and then we can engage the masakbot again 20:57
20:57 cdarroch left
frettled Yes, kill -CONT masakbot 20:58
20:59 macae left
dalek kudo/ng: 7b0a0ba | jonathan++ | src/Perl6/Actions.pm:
Fix init of typed variables; my Monkey $martin .= new; now works again.
21:00
kudo/ng: a230972 | jonathan++ | t/spectest.data:
integration/method-calls-and-instantiation.t passes again.
jnthn We're one (the last) test off passing S12-methods/instance.t again. 21:02
21:04 meteorjay joined
jnthn std: class A { method m($:) { } } 21:05
p6eval std 29642: OUTPUT«ok 00:01 109m␤»
jnthn std: class A { method m(::T $:) { } }
p6eval std 29642: OUTPUT«ok 00:01 108m␤»
jnthn std: sub foo($:) { }
p6eval std 29642: OUTPUT«ok 00:01 106m␤»
jnthn std: sub foo($a:) { } 21:07
p6eval std 29642: OUTPUT«ok 00:01 106m␤»
jnthn std: sub foo($a: $b) { }
p6eval std 29642: OUTPUT«ok 00:01 106m␤»
21:09 k23z___ left
jnthn TimToady: In Rakudo we end up parsing this as $ (as a sigil) then : (as a twigil) and an empty name. Is STD also? 21:09
21:09 k23z__ joined
jnthn ah 21:10
I think not on closer inspection.
Oh, actually...changed my mind again. 21:11
I think it is. :-)
TimToady: We have a test that seems to expect that method m(::T $:) { } will parse as capturing the type of the invocant into T and the $ just being a placeholder variable. 21:12
Changing the test to method m(::T $ :) { } makes it pass 21:13
colomon suspects the smiley is why it works. ;) 21:14
jnthn ;-) 21:16
colomon: An answer gets us a 26-test-long test file back. :-) 21:17
Including one passing TODO.
TimToady STD is parsing it as an anonymous $ following by invocant marker, as determinable by viv -e 21:18
21:18 SmokeMachine left 21:19 lichtkind joined
jnthn TimToady: OK. I'm happy that's the outcome, but I'm struggling to understand why. 21:20
TimToady: Or more to the point, where we differ from STD that causes it.
TimToady: Or put another way, why does:
| <sigil> <twigil>?
TimToady there are lookaheads in twigil:<:> etc
token twigil:sym<:> { <sym> <?before \w> }
jnthn Oh! 21:21
It had totally not occurred to me to look there.
TimToady++ # thanks
oh, our twigil rule is not even broken out into protoregexes yet. 21:22
jnthn hopes doing so doesn't cause any issues... 21:24
Tene driving home from work now. hopefully rakudohacking tonight sometime. 21:25
21:29 lisppaste3 left
jnthn Yay. Well, two more passing test files again. :-) 21:29
colomon \o/ 21:30
21:31 bluescreen left 21:33 bluescreen joined
dalek kudo/ng: e0004fe | jonathan++ | src/Perl6/Grammar.pm:
Break twigil out into protoregex and add missing lookaheads to fix some wrong parsing.
21:34
kudo/ng: e36d988 | jonathan++ | t/spectest.data:
Two more test files from S12-methods that we can run again now.
colomon jnthn: is that <?before mean that ^ and : are only twigils if they are followed by a letter (presumably the start of a variable name?)? 21:36
jnthn colomon: Correct.
colomon cool.
jnthn tries to catch up on Pair/Enum/EnumMap/Hash and work out the relationships.
21:37 lisppaste3 joined 21:38 ihrd joined, ihrd left
jnthn OK, so looks like :a constructs a Pair rather than an Enum 21:45
TimToady: Is there any relationship type wise between Enum and Pair, and between EnumMap and Hash?
colomon wonders why he has been messing around with random operators when he knows that Range still has some big issues that need fixing. 21:46
jnthn TimToady: Like Pair ~~ Enum and EnumMap ~~ Hash?
erm
Hash ~~ EnumMap I meant]
That is, a Hash is an EnumMap + mutable.
21:47 dugg left 21:48 clintongormley left
TimToady sounds reasonable 21:51
a nap sounds reasonable too 21:52
zzz &
colomon a nap always sounds reasonable. 21:53
jnthn tentatively starts on EnumMap and Hash 21:55
colomon Hrm. If an operator can do $a min $b min $c, is that two calls to min or one call with an Array argument? 22:00
jnthn colomon: one. It's list associative. 22:01
colomon (btw, tests for min and max operators seem very very weak.) 22:02
What's the signature for implementing that?
jnthn iirc just slurpy 22:03
multi infix:<min>(*@args) { ... }
colomon any chance that works in ng?
22:04 jonasbn left, bluescreen left
jnthn erm 22:05
Not sure because of the list changes
colomon is trying right now...
jnthn but it did at some point
ng: sub foo(*@args) { for @args { .say } }; foo(1,2); foo(1,2,3,4);
p6eval ng e36d98: OUTPUT«1␤2␤1␤2␤3␤4␤»
jnthn Apparently it works :)
colomon woah, looks like it works for operators, too! 22:06
jnthn Nice. :-)
We can haz min and max ops. :-)
Akshually
There's an S06-multi test that tries to override the default implementation of that op and fails 'cus it's not there 22:07
colomon of course, now I need to implement min on a list to make that work.... :)
jnthn So we may win that one back too.
colomon oh, chaining them does not yet work in ng. 22:08
our multi infix:<min>(*@args) { @args.perl.say; }
> say 4 min 6 min 60
[4, 6]
[1, 60]
jnthn colomon: oh, maybe just needs a little tweak in Grammar.pm - lemme check. 22:09
oh
is it defined in the grammar?
colomon min?
jnthn yeah
colomon it is in my copy.
give me a sec, I'll check it in.
jnthn Did you add it? 22:10
Oh, OK
colomon pushed.
I think.
Yes.
jnthn colomon: oh, we have a discrepancy against STD
Rakudo has:
Perl6::Grammar.O(':prec<l=>, :assoc<left>', '%tight_and');
Perl6::Grammar.O(':prec<k=>, :assoc<left>', '%tight_or');
STD says :assoc<list> for both of those. 22:11
dalek kudo/ng: 6bc10e4 | (Solomon Foster)++ | src/ (2 files):
Quick implementations of infix:<min> and infix:<max> (using before and after).
22:14
colomon jnthn: should we just try changing them to list and see what blows up? 22:15
jnthn colomon: Yes.
colomon: I'm not sure if their being different to STD is just mistake or something else. 22:16
colomon might be something as simple as list wasn't ready to go when they were added.
jnthn Maybe
It may also be deeper - this is the precedence level of && and ||
colomon ooo, does it need to short-circuit then? 22:17
jnthn colomon: min no. 22:18
colomon ng: (1, 2, 3, 4).perl.say
p6eval ng e36d98: OUTPUT«sh: ./perl6: No such file or directory␤»
jnthn afaik.
colomon: but && and || do some special stuff to achieve that 22:19
colomon jnthn: but && and || do, right?
22:19 Su-Shee left
jnthn colomon: I have a slight fear that they maybe are assoc<left> in Rakudo at the moment to make that work. But, well, try it. :-) 22:19
If it doesn't work, then you can probably undo it and the add :assoc<list> to min and max individually.
colomon I would, except I'm poking around with "list".min at the moment.
okay, I'll put that on hold and try.
jnthn Too many things to poke at. :-) 22:20
colomon target-rich environment.
okay, it compiles with tight-or as list. 22:22
make test okay.
jnthn OK, if spectest passes too, we're probably fine then :-)
jnthn reads through some of the lazy list code for the first time 22:23
22:24 pmurias joined
colomon spectest passes! 22:24
jnthn \o/
colomon and it works with min.
jnthn Cool. 22:25
colomon of course, min doesn't work yet, but it's the principle of the thing.
jnthn Right.
If @list.min can be made to work, then min should be easyish from there.
22:25 am0c left
jnthn well, hopefully trivial I guess :-) 22:25
colomon right.
jnthn colomon: You wouldn't happen to remember from the discussions of late what type a slice hands back, would you? 22:26
colomon I keep backing arguments out of the min prototype, hopefully sooner or later it will work without a Null PMC. :)
nope, slices just tend to go over my head so far.
jnthn Ah, OK, no worries then.
hmm...wonder if any of it works...
colomon come to think of it, so do parcels. :) 22:27
jnthn ng: my @x = 1,2,3,4; say @x[2] # I guess this works
p6eval ng 6bc10e: OUTPUT«3␤»
jnthn ng: my @x = 1,2,3,4; say @x[1,2] # and this?
p6eval ng 6bc10e: OUTPUT«No applicable candidates found to dispatch to for 'postcircumfix:<[ ]>'␤current instr.: '!postcircumfix:<[ ]>' pc 291187 (src/gen/core.pir:34871)␤»
jnthn Ah
I'll not worry about that case for Hash too then :-) 22:29
colomon oh, right, if I'd thought a moment I could have told you it didn't work yet there. :)
I thought you were looking for ideal rather than actual.
jnthn colomon: I'm curious, but it's not pressing yet.
colomon so how do you write a multi-type min function?
I can use "before" for the sorting, but I'm not sure how to get things started.
ng: say 4 before Mu; 22:30
p6eval ng 6bc10e: OUTPUT«Nominal type check failed for parameter '$b'; expected Num but got Mu instead␤current instr.: '&infix:<cmp>' pc 215151 (src/gen/core.pir:6161)␤»
colomon ng: say 4 before Num
p6eval ng 6bc10e: OUTPUT«0␤»
jnthn colomon: Hmm...maybe see master for how it does it?
colomon I'm assuming the FIRST phaser doesn't work yet in ng?
jnthn Maybe not, no. 22:31
Probably not, in fact.
22:31 saschi left
jnthn ng: my @x = 1,2,3; say @s.WHAT 22:32
p6eval ng 6bc10e: OUTPUT«Symbol '@s' not predeclared in <anonymous>␤current instr.: 'perl6;PCT;HLLCompiler;panic' pc 137 (src/PCT/HLLCompiler.pir:101)␤»
jnthn ng: my @x = 1,2,3; say @x.WHAT
p6eval ng 6bc10e: OUTPUT«Null PMC access in elements()␤current instr.: 'perl6;SeqIter;get' pc 11801 (src/builtins/Callable.pir:36)␤»
colomon they do it by shifting the first value off the list, but I'm not sure if that makes sense with a lazy list.
jnthn ...oh. 22:33
colomon: If you're going to find the min, you'll have to go through the whole lot anyway.
colomon: So not sure laziness matters so much here.
colomon sure it does.
if I make it into a Seq, the whole thing will have to be stored in memory at once. 22:34
with laziness you never need more than two elements at a time.
jnthn Ah, I see.
colomon on the other hand, shift ought to be trivial for a lazy list; it's exactly the same as .get. 22:35
so maybe it will work here.
colomon is terribly tempted to implement it using low-level iterator functions... 22:36
22:36 patspam joined
colomon gack, I don't know. 22:36
okay, this will be ugly, but it will work. 22:37
spinclad shift once, then use a for?
colomon spinclad: except I'm implementing it on Any, and that's definitely NOT what you want if the type is actually Array. 22:38
jnthn Yes, shift feels wrong-ish.
Because you'd mutabe the array.
colomon I'm just going to use a special boolean flag. crude and smacking of C, but it will work.
jnthn *mutate
22:39 fridim_ left
colomon works! 22:41
jnthn yay
Don't think I'm going to mangae to get Hash working tonight.
spinclad method min (*$first, *@rest) {...} 22:42
colomon spinclad: can you define a method so that the invocant gets split into two arguments ?!? 22:43
jnthn Not quite like that. 22:44
colomon oh brill!
> say 3 min -3 min 4 min 1
hello
-3
spinclad method min ((*$first, *@rest):) {...} # sure?
colomon the "hello" was my test to see that infix:<min> was only called once.
jnthn method min([$first, *@rest]:) { ... } # should do it
Probably not yet in ng though. 22:45
(things don't know how to turn into a capture yet)
colomon !!!!
sweetness, that's cool. 22:46
22:46 ignacio_ left
jnthn OK, enough for me tonight. 22:48
I'll return to the hash tomorrow.
colomon I've got to be off soon as well, dinner and then Malinky in concert. 22:50
22:51 pmurias left
colomon If someone wants to write some tests for min and max, that would be cool, so .... 22:51
bloody heck, forgot to run spectest before pushing.
one day I will learn.
dalek kudo/ng: 135ace1 | (Solomon Foster)++ | src/Perl6/Grammar.pm:
Make "tight_or" list associative rather than left.
22:54
kudo/ng: 8aa3b7a | (Solomon Foster)++ | src/core/ (2 files):
Add a simple versions of Any.min and Any.max, and use them to implement re-implement infix:<min> and infix:<max> as list associative operators.
colomon luckily all the standard tests pass anyway.
23:00 pmurias joined, forrest left 23:03 wasy is now known as wasy_afk
lichtkind jnthn: ping 23:06
jnthn lichtkind: pong 23:12
23:16 pnu left, pnu joined 23:28 Chillance left, Chillance joined
TimToady ng: say [*] 23:28
p6eval ng 8aa3b7: OUTPUT«!whatever_dispatch_helper␤»
TimToady ng: say [*]()
p6eval ng 8aa3b7: OUTPUT«invoke() not implemented in class 'Array'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
23:28 iblechbot left 23:29 old_gray_bear joined
jnthn TimToady: Suspect Array is a bit quirky still. 23:29
TimToady: And also Whatever, though I think I know what's wrong with that.
TimToady that's a reduce op
it should return 1 23:30
rakudo: say [*]() 23:31
p6eval rakudo 1d4928: OUTPUT«1␤»
TimToady rakudo: say [min]()
p6eval rakudo 1d4928: OUTPUT«Use of uninitialized value␤␤»
23:31 old_gray_bear left
jnthn TimToady: Heh. My mental parser is evidently missing as much as ng's. :-) 23:32
TimToady and that one is supposed to return +Inf
ng: say [min]() 23:33
p6eval ng 8aa3b7: OUTPUT«Could not find non-existent sub &min␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
jnthn TimToady: Aye. We just don't parse reductions yet.
TimToady need reduction redactions :) 23:34
diakopter and reduction reductions 23:37
std: [[]][] 23:39
p6eval std 29642: OUTPUT«ok 00:01 106m␤» 23:40
23:48 nihiliad left 23:52 mberends left
TimToady std: [[ ] ][ [ ][ ]][[ [[ ] ][ [ ]]][[[ ] ][[[ ][ ]][ ][ [ ]][ ][ ][ ]][ ][ ][ ][[ ] ][ [ ]][ ][[ ] ][ [ ][ ]]][ [[ ] ]]] 23:54
p6eval std 29642: OUTPUT«ok 00:01 107m␤» 23:55