»ö« | 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 formatin 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 formatin 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 formatin 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 insteadin 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 HAI42» | 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 IntIt'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??" "!!"*"};sayFAILED 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«01234» | ||
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_operatorFAILED 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«12345678910» | ||
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«1234567891011Could not find non-existent sub &exitcurrent 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«1234567891011WarningNull 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«121234» | ||
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 insteadcurrent 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 &mincurrent 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 |