»ö« | 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 moderator on 20 October 2009.
jnthn Anyway, that's me done for the night, I think. 00:02
KyleHa ng: my $x; sub foo-($x) { say $x } 00:03
p6eval ng 92410f: Symbol '$x' not predeclared in <anonymous>␤current instr.: 'perl6;PCT;HLLCompiler;panic' pc 137 (src/PCT/HLLCompiler.pir:101)␤
KyleHa ng: my $x; sub foo-($x) { say 'boo' }
p6eval ng 92410f: Symbol '$x' not predeclared in <anonymous>␤current instr.: 'perl6;PCT;HLLCompiler;panic' pc 137 (src/PCT/HLLCompiler.pir:101)␤
ng_feed rakudo-ng: pmichaud++ 00:06
rakudo-ng: Restore error catching ability of eval() (commented out from earlier debug).
jnthn pmichaud: Thanks. Sadly, that didn't make the test I was hoping would pass as a result of that do so. 00:11
Ah well...can hunt more tomorrow. 00:12
vamped in S01 Larry stated regarding strict: "...it should be easy to relax with -e ... perl -e '$x=1'" Is this relaxing still planned, as it currently is not so?
jnthn vamped: As far as I know, it's still planned, just not yet implemented. 00:14
00:20 jferrero joined 00:26 ihrd joined 00:27 ihrd left
pugs_svn r29180 | kyle++ | [t/spec] more paranoia in main-eval.t 00:29
ng_feed rakudo-ng: KyleHa++ 00:32
rakudo-ng: Two more test files pass
jnthn /window 9 00:38
oops
colomon S12-class/basic.t fails one test in ng? 00:50
jnthn colomon: oh?
It passed them all here. :-| 00:51
colomon: oh crap
colomon: It fails one here too now
colomon not ok 31 - can't just use eval to add method to class
jnthn well wtf.
I suspect eval issue.
It all passed for me earlier tonight.
colomon I believe you, and jnthn++ for the flurry of commits today. 00:52
jnthn colomon: I sorta wonder if it's eval_dies_ok at issue. 00:53
colomon: If only because I'd expect S12-class/declaration-order.t to pass.
And it doesn't.
sjohnson what is the msging service again?
for this chan
jnthn phenny?
sjohnson that might be the one, or the lambda 00:54
!help
it's like, tell something
@tell sjohnson hi
lambdabot You can tell yourself!
sjohnson nice
jnthn npr 00:55
phenny: tell sjohnson lolieatedpasta!
phenny jnthn: I'll pass that on when sjohnson is around.
jnthn That's how phenny works.
sjohnson heheh 00:56
phenny sjohnson: 00:55Z <jnthn> tell sjohnson lolieatedpasta!
sjohnson sweet
thanks for the tip
and pasta
colomon jnthn: that test actually has an eval inside an eval?! 00:57
jnthn colomon: oh?
lol
:-)
colomon: Feel free to make the test less insane if you think it needs to be done. :-)
colomon eval_dies_ok 'class A61354_1 { eval q/method x { "OH HAI" }/ }' 00:58
00:58 nihiliad joined
jnthn colomon: oh yes 00:59
colomon I dunno, I'm rather in awe of it.
jnthn colomon: We want to check that the eval explodes. :-)
well, fails
oh wait...
hmm
the test is bull.
01:05 payload joined
colomon rakudo: class A { say "hello"; }; say "goodbye"; 01:05
p6eval rakudo 7347ec: ( no output )
colomon Is that how the test is bull? Or is it something else? 01:06
diakopter colomon: that's just p6eval hating 'class' for some reason we haven't yet ascertained 01:07
jnthn colomon: No, the problem is...
colomon: What we're trying to test is that the eval inside the class fails.
colomon: maybe it should just be:
class A61354_1 { ok !eval(q/method x { "OH HAI" }/), '...'; } 01:08
That is, not an eval_dies_ok around the outside. 01:09
01:09 aCiD2 joined
colomon ah, yes, I was thinking that, only not quite that way. 01:09
class A61354_1 { eval_dies_ok q/method x { "OH HAI" }/ ...
jnthn yes, I purposefully avoided that. 01:11
Since then you are eval'ing it outside of the lexical scope of the class.
Which is doomed anyway, and not really what the purpose of the test is.
colomon jnthn: it's outside the scope because of the try in eval_exception? 01:13
KyleHa class Doomed { ok !eval(q/method x { "OH HAI" }; 1;/), 'does method return true?'; }; Doomed.new; 01:14
jnthn KyleHa: It should return the method object.
Which will be defined, which is what true falls back on.
So I expect so.
colomon: simple example: 01:15
sub foo($x) { eval $x }; sub bar() { my $a = 42; foo('say $a'); }; bar(); 01:16
colomon ponders.... 01:17
the symbol table in foo is not the symbol table with $a, I take it?
jnthn colomon: eval cares about the lexical scope of where you call eval.
colomon (I can imagine models of programming where this does work....)
jnthn colomon: $x is just a string.
01:18 frew_ joined
jnthn strings aren't attached to scopes or anything like blocks. 01:18
OK, sleep...night all o/ 01:20
01:21 zamolxes_ joined 01:22 Wolfman2000 joined
Wolfman2000 TimToady, PerlJam, moritz_, et al: no need to worry about bad publicity. The only errors I made were related to not testing Unicode enough for my rsa demonstration. You all got good publicity. 01:23
01:24 agentzh joined 01:25 ilbot2 joined
moderator »ö« | 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!
01:28 viklund joined, gabiruh joined, omega_ joined, mhsparks joined, nothingmuch joined, ng_feed joined, Guest75832 joined
colomon ng: say sign(-3/2) 01:34
p6eval ng c0678d: -1␤
colomon ng: say sign(:x(0))
p6eval ng c0678d: maximum recursion depth exceeded␤current instr.: 'parrot;P6object;HOW' pc 54 (runtime/parrot/library/P6object.pir:98)␤
01:35 astrojp left
colomon Ah, problem is 01:37
our proto sign($x) { sign($x) }
That worked in rakudo, seems to cause an infinite recursion in ng. 01:38
Wolfman2000 ...it's calling itself?
colomon yes.
I mean, the proto is supposed to be forwarding to a different version of the function with the same signature, but apparently that doesn't happen in ng. 01:39
I wonder... 01:40
Yeah, in ng I can combine the contents of the normal multi declaration into the proto declaration and it works fine. 01:42
01:44 dj_goku joined 01:50 tylerni7 joined 01:51 jaldhar joined
colomon ng: my $a = Rat.new.perl; say $a; say eval($a).WHAT; 01:53
p6eval ng c0678d: Multiple Dispatch: No suitable candidate found for 'concatenate', with signature 'PPP->P'␤current instr.: 'perl6;Rat;perl' pc 206187 (src/gen/core.pir:14941)␤
02:05 rfordinal joined
colomon ng: say "10".Int 02:09
p6eval ng c0678d: Method 'Int' not found for invocant of class 'Perl6Str'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤
Wolfman2000 colomon: I believe PerlJam asked me to at least look into adding more functionality for the Buf type. If I recall correctly, Buf is supposed to be our binary string. Am I correct so far? 02:10
colomon that's my understanding. 02:11
Wolfman2000 ...then I think I will have to know how to change branches on git so that I can work with the proper branch.
colomon errrr.... I can never remember that syntax in git. 02:14
pmichaud git checkout --track -b ng origin/ng # I think
Wolfman2000 I can look it up shortly. The key thing for me...should I work with the ng branch or use my own?
pmichaud after doing that, switching branches is one of
git checkout ng
git checkout master
lisppaste3 Wolfman2000 pasted "I think I did this right." at paste.lisp.org/display/90989 02:17
02:19 orafu joined
Wolfman2000 would whistle if he could. Already 200 revisions ahead of the last Master. 02:22
colomon: do you care about any of the warnings I get with make-ing ng perl? 02:24
02:25 envi^home joined
colomon Can't hurt to paste them here, might be useful to someone. 02:26
Tene pmichaud: you don't need --track, it's the default. 02:28
doesn't hurt, though, so feel free to ignore
Wolfman2000 Tene: I wasn't aware of it either if that helps.
02:29 Tim_Tom joined
lisppaste3 Wolfman2000 pasted "First time compiling ng. Warnings I get are as follows:" at paste.lisp.org/display/90990 02:30
Wolfman2000 now for the tests 02:32
basic tests past...now the spec for kicks 02:33
02:34 JimmyZ joined
Wolfman2000 umm...isn't the spectest supposed to last more than a mintue? 02:34
Or is ng really that much faster than master?
colomon There are very few tests running in the spectest on ng. 02:36
so it's a lot faster. 02:37
Wolfman2000 Is there any reason why there are so few tests in ng?
colomon because nothing works yet.
The spectests are only turned on when the entire file passes (in it's rakudo form). 02:38
Right now, most files have at least one failing test, so they can't be turned on.
Tim_Tom This is probably super silly and easy to find, but where's the bug tracker for rakudo, specifically the build scripts? I've got a nit to pick with the lack of checking return values resulting in bad error messages :)
(Specifically the gen_parrot.pl script doesn't check the SVN checkout return value which resulted in 10 lines of error messages that I had to parse before I got to the first one which was 'unable to create directory 'parrot') 02:39
Wolfman2000 colomon: I'm guessing one of the goals of ng is to make a lot more of the spec tests pass.
colomon Wolfman2000: oh yes. 02:40
Wolfman2000 The test summary report may make you happy then
lisppaste3 Wolfman2000 annotated #90990 "One failed test, but...4 TODOs passed. Should we remove the TODOs?" at paste.lisp.org/display/90990#1
colomon Wolfman2000: yes, those TODOs are needed for master. 02:41
Wolfman2000 So no removing the TODOs yet
KyleHa Tim_Tom: rakudobug@perl.org
colomon That's the tricky bit, right now the test files are run the same on master and ng, it's just a matter of which files are run on each.
Tim_Tom KyleHa: Thanks 02:42
colomon ng: my ($a, $b) = (1, 2); say $a; say $b; 02:44
p6eval ng 055390: Cannot assign to readonly value␤current instr.: '&infix:<=>' pc 8530 (src/builtins/assign.pir:12)␤
Wolfman2000 ng: my ($a, $b) = (1, 2);
p6eval ng 055390: sh: ./perl6: No such file or directory␤
Wolfman2000 ...
how'd yours work?
colomon Wolfman2000: it's rebuilding p6eval. 02:47
Wolfman2000 colomon: so I just tried my idea too late to see then...alright
anyway, as sort of confirmation: since I built with ng, perl6 is basically in ng mode instead of master mode. This means any code I wrote previously is no longer guaranteed to work. 02:49
...ooh yeah
lisppaste3 Wolfman2000 annotated #90990 "I wonder how much work I'll have to do to get prime.pl working again on ng." at paste.lisp.org/display/90990#2 02:51
pmichaud 02:28 <Tene> pmichaud: you don't need --track, it's the default. 02:53
previously when I didn't do --track, I ran into problems.
maybe it's because I forgot the remote branch, though.
02:54 mberends joined
Wolfman2000 pmichaud: As someone new to the ng crowd, what does the stack trace in my last paste mean exactly? What caused the problem? 02:55
colomon It's complaining about line 3.
Tene pmichaud: I'm working on gather/take in ng right now.
colomon I believe where { $x <= 1} doesn't work yet. 02:56
Tene++ !
Wolfman2000 colomon: in other words, the constraints aren't working
colomon ng: sub A($x where { $x > 3 }) { say $x; }
p6eval ng 055390: Non-block anonymous sub-types su todo at line 1, near ") { say $x"␤current instr.: 'perl6;HLL;Grammar;panic' pc 519 (src/stage0/HLL-s0.pir:336)␤
Wolfman2000 alright...this may be a good starting point then.
colomon Wolfman2000: exactly.
Wolfman2000 Now, I know that ng is not exactly just "copy what's in master" 02:57
there's probably some sort of methodology I have to follow in order to contribute to ng
pmichaud Tene: excellent. 02:58
Wolfman2000 just has to figure out that methodology and proper starting point... 02:59
colomon tackling "where" seems like a weighty first project.
Wolfman2000 colomon: I'm not exactly sure what a simpler idea is. 03:00
err...I know the definition of simpler idea.
colomon I understood. :)
KyleHa Is Tim_Tom still here?
Tim_Tom yep
KyleHa I may have a patch for you.
Tim_Tom Yea, I submitted a sample patch with my bug report 03:01
colomon Wolfman2000: I am pondering...
Tim_Tom It was just the cascading failure aspect, the failure point was just me not prefixing 'sudo' to my command
colomon ng: say sqrt(5);
p6eval ng 055390: 2.23606797749979␤
Tim_Tom (which I of course proceeded to forget to do for every command I ran after that...) 03:02
Tene pmichaud: where should I put the 'gather' function that the statement_prefix gather constructs a call to?
03:02 perlygatekeeper joined
colomon ng: loop { last; } 03:02
p6eval ng 055390: Could not find non-existent sub &loop␤current instr.: '_block14' pc 29 (EVAL_1:0)␤ 03:03
lisppaste3 KyleHa pasted "better build bomb" at paste.lisp.org/display/90992
Tene pmichaud: that is, do I hide it off in another namespace, just dump it in the global namespace, something else?
03:04 zaphar_ps joined
Wolfman2000 colomon: ...isn't "loop" supposed to be...well, loop(;;) at minimum? 03:04
KyleHa Tim_Tom: I'll go look for your patch.
Tim_Tom It's pretty much the same as yours
Wolfman2000 isn't used to the parentheses less versions
colomon rakudo: loop { say "a"; last; }
p6eval rakudo 7347ec: a␤
Tene pmichaud: maybe just name it '!GATHER'? 03:05
colomon Wolfman2000: nope, the (;;) is optional.
KyleHa I see it. Thanks!
colomon At any rate, it doesn't work yet in ng.
Wolfman2000 so no (;;) still means that. And yet...by itself, last doesn't work. With say "a", it does.
I admit, that makes little sense.
colomon Wolfman2000: no, it doesn't work in ng and it does work in rakudo. 03:06
(ie rakudo master)
I just added say "a" so we'd see output when loop worked.
KyleHa Tim_Tom: I committed what I had. Dalek should announce it soon. Thanks a lot for your bug report! 03:07
dalek kudo: 0a61bee | (Kyle Hasselbacher)++ | build/gen_parrot.pl:
Make gen_parrot.pl die more gracefully, thanks to Timothy Bollman
Wolfman2000 colomon: then what's confusing me...without say "a", it couldn't recognize the loop. with it, though, it saw it.
Tim_Tom KyleHa: Sure. If you want I could probably run a script over the config scripts to find all the system calls that don't check for return status
... Script of course meaning grep
colomon ng: loop { say "a"; last; } 03:08
p6eval ng 055390: Could not find non-existent sub &loop␤current instr.: '_block14' pc 29 (EVAL_1:0)␤
colomon rakudo: loop { last; }
p6eval rakudo 7347ec: ( no output )
KyleHa Tim_Tom: Thanks for the offer. I'll probably do that myself here shortly.
Wolfman2000 ...oh. I missed the ng and rakudo starts. right.
alright...I'm guessing the first goal should be to identify where loop is stored on master, and then somehow port it over. 03:09
Tim_Tom KyleHa: Sure, I just figured it would give me something to do while the spectest runs. It's very... single threaded... Although my processor sometimes gets confused and switches cores. Makes for a pretty graph
KyleHa Tim_Tom: You can fork the spectests if you have a recent version of TAP::Harness and set the TEST_JOBS environment variable. 03:10
03:11 run4flat left
colomon Wolfman2000: I was mostly just trying to catalog what doesn't work in your is_prime. But yeah, I think loop ought to be pretty approachable... 03:11
Tim_Tom KyleHa: Oh yea, I recall reading someone mention that a couple weeks pack on this channel. I get bored at work and may read your backlog when that happens :-P
s/pack/back
Wolfman2000 colomon: soon as I can find where loop is located in rakudo/src, I can hopefully figure out...something 03:12
KyleHa I think it's also mentioned in a README somewhere.
TimToady I'm thinking of killing off undef entirely--it's only used in about 80 of the test files... :/
Wolfman2000 TimToady: what would replace undef for Scalars/items then? 03:13
TimToady the correct type object
Tim_Tom KyleHa: It's in the parrot readme but not the Rakudo readme
Wolfman2000 ...I asked the wrong question. What IS the correct equivalent of a scalar that has no value?
Tim_Tom Nevermind 03:14
03:14 frew_ joined
colomon Wolfman2000: dang if I can find loop. Seems like it ought to be in builtins/control.pir, but it's not. 03:17
lisppaste3 Wolfman2000 annotated #90990 "Perhaps this is where the loop is located colomon? master/src/parser/actions.pm" at paste.lisp.org/display/90990#3 03:18
Tene are you looking for loop in ng or master?
Wolfman2000 Tene: I don't think loop is implemented at all in ng
colomon Tene: master. It's not in ng yet.
Wolfman2000 so I'm trying to see how it is in master
colomon Wolfman2000: you may be right about that code, but alas, it's over my head.
Tene ng: for 1..10 { .say } 03:19
p6eval ng 055390: 1..10␤
Tene rakudo: for 1..10 { .say }
Wolfman2000 ...if I am correct, then I have to wonder how...okay, I need grep assistance here I think.
p6eval rakudo 7347ec: 1␤2␤3␤4␤5␤6␤7␤8␤9␤10␤ 03:20
Wolfman2000 Inside the rakudo directory, I want to recursively look in the files for "_statement"
Tene pmichaud: is that an intentional change, or broken in ng?
Wolfman2000 Since the directory structure has changed between master and rakudo, I can't rely on the old stuff
colomon Tene: Ranges don't work with the rest of the ng universe yet.
Tene ah, okay.
colomon and you can't get around that sad fact because loop doesn't work either. 03:22
Tene I'll help you guys with loop as soon as I get gather/take work. 03:23
I'm almost there. Right now I'm running into no .push() on List
Wolfman2000 Tene: As soon as I find the right place to try copy and pasting loop, I was hoping to try putting it in.
colomon actually, I've got to get to bed, I can barely keep my eyes open. but any help you can offer would be great.
Tene: errr.... List is immutable, right? If you need push, you need Array, I believe? 03:24
Wolfman2000 I just don't know what ng's equivalent of master/src/parser/actions.pm is
Tene Hmm.
Wolfman2000 ...huh. The way it's done is changed. I don't know if a straight copy/paste will work. 03:25
Tene: ng/src/Perl6/Actions.pm is where it should go I think.
Tene Yes, that's the equivalent. 03:26
You'll also need to add a rule for it in the grammar.
colomon Wolfman2000: one last thought before I go to bed. If you're just looking for a quick ng project to get your toes wet, I've just remembered that chop and chomp are not implemented yet. I think those should be straightforward to implement... 03:27
Wolfman2000 ...those are String functions. With luck, that should be simpler than loop.
Tene: i'll let you handle loop while I study up on cho(m?)p 03:28
rakudo: say "Testing".chop
p6eval rakudo 7347ec: Testin␤ 03:29
Wolfman2000 ...huh. Looks like chop is in Any-str.pm 03:30
ng: say "Testing".chop
p6eval ng 055390: Testin␤
Wolfman2000 colomon: thanks for trying
rakudo: my $tmp = "testing"; for $tmp -> $wtf { say $wtf; }; 03:31
p6eval rakudo 7347ec: testing␤
Wolfman2000 rakudo: my @tmp = "testing", "perl 6"; for @tmp -> $wtf { say $wtf; };
p6eval rakudo 7347ec: testing␤perl 6␤
Tene Okay, gather/take works, except for one last issue... my @list = gather ...; results in the list being stored as the first element of @list. 03:32
03:32 rfordinal joined
JimmyZ Tene++ 03:33
Wolfman2000 Tene: I'm going to try implementing capitalize first.
03:34 frew_ joined
Wolfman2000 Tene: I have the multi method in place if I did it right. You said something about adding whatever I do into the grammar file. Which is that file, and where do I place it? 03:36
Tene Wolfman2000: you don't need to add *everything* to the grammar.
If it's just a function, you won't need to.
Wolfman2000 technically, it's a multi method
Tene yeah, don't touch the grammar. 03:37
Wolfman2000 rakudo: my $tmp = " teSTIng"; say $tmp.lc.ucfirst; 03:38
p6eval rakudo 7347ec: testing␤
03:38 pointme joined, zaslon joined 03:39 astrojp joined
Wolfman2000 Tene: Alright, not touching the grammar. Next thing I need to know...well, the proper order of compiling and testing. Will I have to perl Configure.pl --gen-parrot first, or can I just skip to the make install? 03:40
Tene Wolfman2000: just 'make' 03:42
and then test it locally.
./perl6 foo.pl
you don't need to install.
Wolfman2000 Tene: testing has already failed. I didn't implement capitalize correctly.
I have to use a regex on the returned lc string. I'm just...not quite sure how to put the regex in. Checking S05 03:44
rakudo: say "Pugs IS cOOL".lc.s:g/(\\w+)/{ucfirst $1}/;
p6eval rakudo 7347ec: Confused at line 2, near ":g/(\\\\w+)/{"␤in Main (file <unknown>, line <unknown>)␤
Wolfman2000 ...yeah, should have guessed
Tene rakudo: say "Pugs IS cOOL".lc ~~ s:g/(\\w+)/{ucfirst $1}/ 03:45
p6eval rakudo 7347ec: Colons cannot be used as delimiters in quoting constructs at line 2, near ":g/(\\\\w+)/{"␤in Main (file <unknown>, line <unknown>)␤
Tene rakudo: say "Pugs IS cOOL".lc ~~ s/(\\w+)/{ucfirst $1}/ 03:46
p6eval rakudo 7347ec: s/// not implemented, try .subst as workaround at line 2, near "{ucfirst $"␤in Main (file <unknown>, line <unknown>)␤
Tene ah, there you go
rakudo: say "Pugs IS cOOL".lc.subst(/(\\w+)/, {ucfirst $1}, :g); 03:47
p6eval rakudo 7347ec: Use of uninitialized value␤Use of uninitialized value␤Use of uninitialized value␤ ␤
Tene rakudo: say "Pugs IS cOOL".lc.subst(/(\\w+)/, {ucfirst $_}, :g);
p6eval rakudo 7347ec: Pugs Is Cool␤
Tene :)
Wolfman2000 That's what I'm going to have to try to put in ng
mberends Wolfman2000: it would be very inefficient to implement ucfirst() as a regex call, please try to write it using something less heavyweight. It's only changing one character...
Wolfman2000 mberends: technically, capitalize is not changing one character. 03:48
Tene pmichaud: Okay, committed a basic eager impl. of gather/take.
mberends Wolf: ah, each word, ok
Wolfman2000 will have to get used to the subst syntax 03:49
...and either .subst was done wrong, or it's not implemented right. 03:50
Either way, the test crashes
lisppaste3 Wolfman2000 annotated #90990 "Trying to implement capitalize is harder than it seems." at paste.lisp.org/display/90990#4 03:51
Tene moritz_: gather/take is in rakudo now. Please break it.
Wolfman2000 is capitalize(:string($a)), "Pugs Is Cool!", "capitalize string works with positional argument"; <-- I think it's crashing on this test. 03:53
Wolfman2000 is a bit...unsure on how to proceed here 03:54
04:00 envi^office joined 04:16 xomas_ joined 04:22 jaldhar joined
carlin Wolfman2000: That test is skipped in master 04:34
Wolfman2000 carlin: Well...apparently not in ng 04:35
carlin Wolfman2000: because you ran it directly. Try 'make t/spec/S32-str/capitalize.t' 04:37
Wolfman2000 carlin: That causes...more problems. Let me get the patebin
pastebin*
lisppaste3 Wolfman2000 pasted "Make t files? More like Break them." at paste.lisp.org/display/91000 04:38
04:38 pnate2 joined 04:45 xenoterracide joined
carlin Wolfman2000: Can you try './perl6 t/spec/S32-str/capitalize.t' 04:46
lisppaste3 Wolfman2000 annotated #91000 "perl6 t instead. Main reason for early failing tests: probably implemented capitalize wrong." at paste.lisp.org/display/91000#1 04:47
carlin Wolfman2000: './perl6' instead of 'perl6' 04:48
lisppaste3 Wolfman2000 annotated #91000 "Right, ./ matters" at paste.lisp.org/display/91000#2 04:49
carlin Wolfman2000: looks like ng doesn't have subst yet. When you did 'perl6' it was running a master rakudo from somewhere on your PATH, make/./perl6 were running the ng rakudo 04:50
Wolfman2000 ...so much for thinking adding a method from spec would be easy.
04:54 dj_goku joined
Wolfman2000 anyway, off to bed now. 05:06
carlin 'night
05:10 vamped left
Wolfman2000 ...hold the phone: no sleep yet. 05:10
Wolfman2000 just received his Google Wave invite. :D
I wonder who here has a wave...we may be able to possibly pull off community Perl code at some point. 05:11
dj_goku has a wave 05:12
carlin does
dj_goku Wolfman2000: that sounds like an awesome idea :D
Wolfman2000 may as well add you guys to whatever semblance of a buddy list I have here.
carlin, dj_goku: emails? 05:13
dj_goku Wolfman2000: djgoku@
05:13 pnate2 joined
carlin Wolfman2000: subcarlin@googlewave.com 05:14
Wolfman2000 now, let's see if I can even start a wave here 05:15
dj_goku hehe
click the New Wave button :D
Wolfman2000 right...hang on: let me finish the Dr Wave tutorial
dj_goku hehe 05:16
wow, I wish I knew perl6. 05:22
I have read a little about it, but don't know enough.
Wolfman2000 I've made my first wave...basically just put my prime.pl Perl 6 program up there 05:24
dj_goku: don't know if you got added into the wave or not
woah...I'm seeing my wave being ridden on 05:25
dj_goku that would be scary if there were a run button you could click to run that program :D 05:26
carlin A Wave eval bot 05:27
Patterner I think google prefers python...
Wolfman2000 Perhaps we can add a gadget? 05:28
carlin Is it possible to write wave bots/gadgets in languages other than Python or Java? 05:29
dj_goku Wolfman2000: that is what I was thinking.
Wolfman2000 carlin: Even if not, can we still write in Python or Java to give us automatic syntax highlighting for Perl?
mdxi carlin: google, institutionally, *hates* perl, in a very frat-boy way 05:30
and by "frat-boy" i mean Python:Perl::Xbox::Playstation sort of thing
Wolfman2000 mdxi: ...I didn't quite understand your package mangling. 05:32
mdxi Wolfman2000: en.wikipedia.org/wiki/Analogy#Ident...f_relation 05:33
05:33 pnate joined
mdxi i didn't mean to double-colon the last pair 05:33
habit, i suppose :)
Wolfman2000 ah. analogy
carlin So Python is to Perl what Xbot is to Playstation? 05:34
mdxi carlin: can't play Halo on a playstation! :) 05:35
05:35 vamped joined
mdxi sorry. it's late here. the video game console partisan analogy seemed good. 05:35
dj_goku Wolfman2000: is there a __package__->run() in perl6? 05:36
I don't know if you seen my comments. 05:37
Wolfman2000 dj_goku: unsure
dj_goku: I'm guessing you were the one that proposed $*PROGRAM_NAME
dj_goku nope.
JimmyZ Wolfman2000:could you invite me? jimmy.zhuo((AT))gmail.com
mdxi anyhow, it's not that they can't be talked into doing anything with perl, eventually. they're pragmatic people, of a sort.
but i wouldn't ever expect it from them without much prodding
Wolfman2000 JimmyZ: hang on 05:38
carlin 'twas me that mentioned $*PROGRAM_NAME
JimmyZ Wolfman2000: thank you!! ;)
dj_goku Wolfman2000: you can use the playback to see who said what :D
Wolfman2000 JimmyZ: invite sent. May take awhile.
JimmyZ Wolfman2000: ok.
Wolfman2000 dj_goku: give me a second
dj_goku Wolfman2000: haha 'twas a joke :) 05:39
Wolfman2000 ...bah
dj_goku well you can see who did what, but you don't need too.
Wolfman2000 If anyone wants to give this module a shot, feel free
I'm hoping when I wake up tomorrow, I'll either get a better idea on how to work with ng or I'll just end up sticking with master branch for the time being 05:40
Now, is there a way to make my wave public to everyone? 05:41
05:42 pnate2 joined
dj_goku Wolfman2000: yes add: public@a.gwave.com 05:44
Wolfman2000 dj_goku: not a google wave account. doesn't quite work 05:45
dj_goku: alright, what's your secret?
dj_goku uh, its public actually :D 05:46
Wolfman2000 dj_goku: when I tried adding, I was told it wasn't a google wave account. Was I supposed to add to contacts firsT?
dj_goku Wolfman2000: do you see the public user?
Wolfman2000 dj_goku: now I do
after carlin did his magic
dj_goku Wolfman2000: I don't know actually. I haven't made a wave public in a while.
Wolfman2000 Anyway, we can mess with more of this later. 05:48
NOW, I'm getting sleep. Or at least, I'll try to.
05:48 xenoterracide joined
Wolfman2000 has a feeling Google Wave will be VERY useful for us. 05:48
carlin Is it possible to link to the wave somehow since it's public? 05:52
05:55 vamped left
dj_goku carlin: just copy the URL 05:59
wave.google.com/wave/#restored:wav...BvnmNmAePD
carlin Oh, cool 06:01
colomon you can't see that if you don't have wave. 06:05
dj_goku colomon: yeah :( 06:06
PerlJam add me to that wave (perlpilot@gmail.com) 06:08
dj_goku PerlJam: FYI you can search 06:09
PerlJam: with:public perl6
PerlJam: login and just click the link I posted.
06:46 vamped joined
vamped What does the "..." mean? as in @a = 1 ... *+2,10; I saw this somewhere earlier today, but can't find documentation on it. Is there documentation? 06:49
06:50 rfordinal joined 06:53 agentzh joined 06:55 meppl joined
JimmyZ rakudo: (($_ for 1..100) »**» 2).say; 07:00
p6eval rakudo 7347ec: Null PMC access in find_method('WHAT')␤in Main (file <unknown>, line <unknown>)␤
JimmyZ rakudo: ([~] gather{ take for 1..6 }).say 07:01
p6eval rakudo 7347ec: too few positional arguments: 0 passed, 1 (or more) expected␤in Main (file <unknown>, line <unknown>)␤
mathw vamped: perlcabal.org/syn/S03.html, look for "infix:<...>, the series operator"
quietfanatic rakudo: ([~] gather { take for 1..6 }).say
JimmyZ rakudo: ([~] gather{ take $_ for 1..6 }).say
p6eval rakudo 7347ec: too few positional arguments: 0 passed, 1 (or more) expected␤in Main (file <unknown>, line <unknown>)␤
rakudo 7347ec: 123456␤
JimmyZ take couldn't take $_ by default :( 07:02
vamped mathw: Thanks! will read on. I can't make goole search for "..." because . means any char. 07:04
mathw yes it's tricky 07:05
Since it's clearly an operator though, S03 was the place to look
and that contains few enough instances of ... in its role as an ellipsis that I was able to find it :)
I should've just looked for infix:<...> I suppose, that would have been more sensible 07:06
vamped mathw: lol. "clearly" is sometimes only in the eye of the beholder, or in hindsight. Yes that makes sense, now. 07:07
mathw yes well, you just get a feel for where things live after a while
it's only because I've spent so much time trawling through the documentation myself 07:08
07:08 snearch joined
mathw aaah, time for work 07:13
07:20 payload joined 07:24 am0c joined 07:26 vamped left 07:28 Su-Shee joined
moritz_ good morning 07:29
Su-Shee moin ;) 07:30
07:31 agentzh joined 07:33 TiMBuS joined 07:34 Guest56850 joined 07:36 zamolxes joined
Tene moritz_: iirc you were wanting to break gather/take in ng? 07:43
moritz_ Tene: s/breaking/using/ :-) 07:44
Tene Those are different for you? ;)
moritz_ Tene: depends on how well you did :-)
Tene: I'm currently looking if any new tests pass
Tene anyway, yeah, a basic eager impl is there now.
I'll be looking at the lazy generator stuff tomorrow 07:45
moritz_ so far I've found two tests we've won back, neither of them related to gather/take :-) 07:49
mathw Morning 07:50
moritz_ ng: say $_ for 1, 2, 3 07:54
p6eval ng c3e17b: Missing block at line 1, near ""␤current instr.: 'perl6;HLL;Grammar;panic' pc 519 (src/stage0/HLL-s0.pir:336)␤
moritz_ Tene: if you're looking for other things to do in ng, statement modifying 'for' would be great :-) 07:55
Tene moritz_: I'm sleeping shortly, but should be able to work on it during the day tomorrow, so in... 8 hours? 08:05
ng: my @list = gather for 1, 2, 3, 4 { take $_ ** 3 }; say @list;
moritz_ Tene: great (and no hurry :)
p6eval ng c3e17b: 182764␤
Tene ng: my @list = gather for 1, 2, 3, 4 { take $_ ** 3 }; say @list.perl; 08:06
p6eval ng c3e17b: ( no output )
Tene ng: my @list = 1, 2, 3, 4; say @list.perl 08:07
p6eval ng c3e17b: ( no output )
08:10 pnate joined
Tene moritz_: hilight me on the results from gather/take plz. 08:11
08:16 ejs joined 08:18 iblechbot joined 08:19 rfordinal joined
moritz_ Tene: will do 08:19
08:23 riffraff joined 08:24 mberends joined 08:25 rgrau joined 08:26 ejs1 joined 08:37 jferrero joined
pugs_svn r29181 | lwall++ | clobber undef as a poorly defined noun, use Object or Nil 08:38
mathw did... did larry just remove undef? 08:40
moritz_ yes. 08:42
mathw wow
moritz_ that's going to be a lot of work in the test suite :/
mberends clobbered! \\o/
moritz_ but otherwise I approve of the change
mberends defined() survives, does it not? 08:43
moritz_ yep
TimToady++ 08:44
mathw is there an interface to the pugs repo that lets me see the diff for that before it turns up on the mailing list
oh, it just did
never mind
pugs_svn r29182 | lwall++ | [STD] start carping about undef
r29182 | [CORE] trim pi and e to fit into Rat
TimToady since Object is taking over a lot of undef's work, we should probably name it something more like "Empty" or some such 08:46
or Void :) 08:47
moritz_ rakudo: my Int $x = *; 08:48
p6eval rakudo 7347ec: ( no output )
moritz_ should that be a type check failure?
I don't think so...
TimToady aiming more for Nil to be the generic init-this-to-empty value 08:49
mathw TimToady: that might also help give it a nicer feeling with the role of Any, too.
TimToady so I don't really care about *; seems to me it should fail
moritz_ don't we have a special case for undefined values? 08:50
mathw moritz_: my initial reading of that would suggest it should initialise it to a random value, because you've just said 'oh, whatever' :)
TimToady mathw: which, Void?
mathw TimToady: Possibly. I'm not sure which, but I've never felt Object and Any sit very well together
moritz_ ng: say 4.match(/4/)
p6eval ng c3e17b: 4␤
mathw Void might be a bit strong a name though. Hmm. 08:51
TimToady Un, with pun on French 'one'
Nil is taken :)
Tene TimToady: did you forget to add a variable here: + my num = computation() // NaN; 08:52
moritz_ You may also comb lists and filehandles. +$*IN.comb counts the words on standard input, for instance
from S32::Str
TimToady yeah
moritz_ that looks like a fossile
08:52 _eMaX_ joined
moritz_ at least the "words" part 08:52
TimToady yes, .words does that now
.comb would count the chars
moritz_ ng: say 4.match(/4/); say $/ 08:53
p6eval ng c3e17b: 4␤Object()␤
TimToady could rename it to just O, which represents both 'object' and 'zero'
too easy to confuse O with 0 though 08:54
call it OO :)
short for "oh oh!"
Tene TimToady: did you remove Nil or not? You remove a lot of mentions of Nil, but add a few others? 08:55
TimToady I don't think I removed any Nils
mathw "Perl 6 requires you to use a decent editor font which allows you to distinguish O and 0"
Tene - Nil Empty list viewed as an item 08:56
Maybe I just haven't read enough of the diff yet.
TimToady can't just use Nil for undef though, since () doesn't interpolate anything in a list
that what Object is for
mathw TimToady: just calling it O has a very appealing elegance, but I suppose it might be a bit too cute.
TimToady or whatever we end up calling it
Tene Yeah... I just haven't read enough of the diff.
:)
moritz_ ng: 1 ~~ Whatever ?? Inf !! 3
p6eval ng c3e17b: ( no output )
TimToady call it NO "no object" 08:57
Tene wow, it's rally really late. I need to wake up in 4.5 hours. Goodnight all.
TimToady night
mathw Nothing :) 09:00
TimToady too long 09:01
mathw although then you have the concept of everything being derived from it, which would also be a problem
TimToady maybe we should just call it a LOL and be done with it
IT for initial type 09:02
U for universal and undefined 09:03
that's not bad
JimmyZ rakudo: (gather take $_ for 1...4).say 09:04
p6eval rakudo 7347ec: 1234␤
JimmyZ ng: (gather take $_ for 1...4).say
p6eval ng c3e17b: Missing block at line 1, near ").say"␤current instr.: 'perl6;HLL;Grammar;panic' pc 519 (src/stage0/HLL-s0.pir:336)␤
mathw TimToady: U is a strong contender 09:05
JimmyZ moritz_: Is it a bug?
TimToady I'd better sleep on it overnight, but I think U is probably it
moritz_ JimmyZ: what could be a bug? that it doesn't work in ng? 09:06
TimToady U, you're the one...
mathw Sleeping on it sounds wise
Usually best not to name things when you're on a late-night caffeine binge
JimmyZ moritz_: (gather take $_ for 1...4).say
moritz_: (gather take $_ for 1..4).say 09:07
ng: (gather take $_ for 1..4).say
p6eval ng c3e17b: Missing block at line 1, near ").say"␤current instr.: 'perl6;HLL;Grammar;panic' pc 519 (src/stage0/HLL-s0.pir:336)␤
JimmyZ rakudo: (gather take $_ for 1..4).say
p6eval rakudo 7347ec: 1234␤
moritz_ JimmyZ: ... and? please explain more
JimmyZ ng: gather take $_ for 1..4
p6eval ng c3e17b: Missing block at line 1, near ""␤current instr.: 'perl6;HLL;Grammar;panic' pc 519 (src/stage0/HLL-s0.pir:336)␤ 09:08
mathw std: (gather take $_ for 1..4).say
p6eval std 29182: ok 00:01 107m␤
JimmyZ rakudo: gather take $_ for 1..4
p6eval rakudo 7347ec: ( no output )
mathw looks like a bug in ng
or just a NYI
moritz_ ng's parse errors are really aweful 09:09
mathw groans 09:10
moritz_ ng: my $x = 0; my $y = 1; while ($x = $y) { say $x; $y = 0 } 09:18
p6eval ng c3e17b: 1␤
moritz_ ng: my $x = 3; :$x 09:21
p6eval ng c3e17b: Confused at line 1, near ":$x"␤current instr.: 'perl6;HLL;Grammar;panic' pc 519 (src/stage0/HLL-s0.pir:336)␤
JimmyZ ng: my $a = 1; my $b = 2; ($a,$b)=($b,$a), $a.say; $b.say;
p6eval ng c3e17b: 1␤Cannot assign to readonly value␤current instr.: '&infix:<=>' pc 8530 (src/builtins/assign.pir:12)␤
moritz_ just wasted 20 minutes locating that parse error
JimmyZ rakudo: my $a = 1; my $b = 2; ($a,$b)=($b,$a), $a.say; $b.say;
p6eval rakudo 7347ec: 1␤1␤ 09:22
JimmyZ rakudo: my $a = 1; my $b = 2; ($a,$b)=@($b,$a), $a.say; $b.say;
p6eval rakudo 7347ec: 1␤1␤
JimmyZ pugs: my $a = 1; my $b = 2; ($a,$b)=@($b,$a), $a.say; $b.say; 09:23
p6eval pugs: 1␤1␤
pugs_svn r29183 | lwall++ | tentatively rename Object to U, representing (among other things) 09:25
r29183 | Universal, Undefined, Union, and Uranium :)
TimToady now I will sleep with myself, and see if I respect me in the morning... 09:26
moritz_ good night
09:28 pnate2 joined
moritz_ Tene: implementing .comb with gather/take worked fine in ng 09:34
mathw night TimToady 09:35
also see if there's outrage on the mailing list, I think
09:37 rfordinal left
moritz_ ng: say * ~~ Whatever 09:42
p6eval ng c3e17b: 1␤
moritz_ ng: if * ~~ Whatever { say 1 } else { say 2 }
p6eval ng c3e17b: 1␤
moritz_ some in the setting that gives a parse error :( 09:44
09:45 szabgab joined
moritz_ more specifically it triggers a parse error in the line after it 09:46
09:47 razvanm02 joined
moritz_ facepalms 09:50
at that point in the setting Whatever isn't know yet 09:51
mathw doh 09:52
moritz_ and when I move Whatever.pm further up the chain, I get method set_candidates not found for invocant of type Sub 09:57
mathw argh 09:59
the pain
09:59 kobargh joined
moritz_ indeed 10:00
ng: my $x = 5; say $x-- 10:08
p6eval ng 3a1479: 5␤
moritz_ ng: my $x = 5; say $x--; say $x
p6eval ng 3a1479: 5␤4␤
10:14 zamolxes joined
rgrau ng: my $x = 5; say --$x 10:14
p6eval ng 3a1479: sh: ./perl6: No such file or directory␤
JimmyZ ng: $_ = 5; .--.say;
p6eval ng 3a1479: sh: ./perl6: No such file or directory␤ 10:15
JimmyZ ng: $_ = 5; $_.--.say;
p6eval ng 3a1479: sh: ./perl6: No such file or directory␤
moritz_ it needs a few minutes to rebuild
and -- is not a method call
std: .--.say
JimmyZ :)
p6eval std 29183: ok 00:01 105m␤
moritz_ now I'm curious how that is parsed
std: . 10:16
p6eval std 29183: [31m===[0mSORRY![31m===[0m␤Obsolete use of . to concatenate strings; in Perl 6 please use ~ instead at /tmp/yhMlCT0ilT line 1 (EOF):␤------> [32m.[33m⏏[31m<EOL>[0m␤FAILED 00:01 103m␤
JimmyZ ng: <1,2,3>>>.say;
p6eval ng 3a1479: Method 'list' not found for invocant of class 'Perl6Str'␤current instr.: '!dispatch_method_parallel' pc 314 (src/glue/dispatch.pir:72)␤
JimmyZ rakudo: <1,2,3>>>.say;
p6eval rakudo 7347ec: 1,2,3␤
JimmyZ rakudo: <1,2,3>>>.++.say;
p6eval rakudo 7347ec: Confused at line 2, near ">>.++.say;"␤in Main (file <unknown>, line <unknown>)␤
JimmyZ rakudo: <1,2,3>>>++.say; 10:17
p6eval rakudo 7347ec: Confused at line 2, near ">>++.say;"␤in Main (file <unknown>, line <unknown>)␤
carlin rakudo: class Foo {}; class Corge { has Foo $.foo .= new; } 10:18
p6eval rakudo 7347ec: error:imcc:syntax error, unexpected '\\n'␤ in file 'EVAL_26' line 126␤
10:18 ng_feed joined
ng_feed rakudo-ng: colomon++ 10:19
rakudo-ng: Merge proto sign($x) and multi sign ($x) into one, which seems to make ng happy.
rakudo-ng: (Stephen Weeks)++
rakudo-ng: Very basic eager implementation of gather/take.
rakudo-ng: KyleHa++
moritz_ discovers that ng_feed was gone
ng_feed rakudo-ng: integration/substr-after-match-in-gather-in-for.t passes now
rakudo-ng: moritz++
rakudo-ng: two more passing test files
rakudo-ng: moritz++
rakudo-ng: initial implementation of .comb in Any-str (lacks limit)
rakudo-ng: moritz++
rakudo-ng: implement limit in .comb
JimmyZ oh, ng_feed is very slow. 10:20
ng: gather
p6eval ng 3a1479: Could not find non-existent sub &gather␤current instr.: '_block14' pc 29 (EVAL_1:0)␤
JimmyZ rakudo: gather
p6eval rakudo 7347ec: too few positional arguments: 0 passed, 1 (or more) expected␤in Main (file <unknown>, line <unknown>)␤
moritz_ hugme: tweet rakudoperl rakudo-ng now passes 535 test, has the .comb builtin 10:21
hugme hugs moritz_; tweet delivered
JimmyZ moritz_: could you try use &gather instead of !GATHER in ng? 10:22
carlin ng: class Foo {}; class Corge { has Foo $.foo .= new; }
p6eval ng 3a1479: error:imcc:syntax error, unexpected '\\n'␤ in file 'EVAL_1' line 133␤Null PMC access in find_method('new')␤current instr.: 'perl6;Corge;_block35' pc 218 (EVAL_1:106)␤
moritz_ JimmyZ: why should I? 10:23
JimmyZ: the spec doesn't say there's a sub &gather
JimmyZ oh, I have no source code, Just want somebody use &gather like the master. 10:24
just ignore it ;)
10:32 pnate joined 10:45 edeca joined, mberends joined 10:50 Lorn joined
edeca perl6: say (1, 2, 3).WHAT; 10:51
p6eval elf 29183: Useless use of a constant in void context at (eval 123) line 3.␤Int␤
..pugs: Array␤
..rakudo 7347ec: List()␤
mathw ng: say (1, 2, 3).WHAT; 10:53
p6eval ng bd7d2f: List()␤
mathw excellent
edeca Why did mine break it? 10:54
mathw yours didn't
elf didn't handle it
but pugs and rakudo were quite happy
even though they gave different answers
when you say 'perl6:' it runs it through several implementations, or you can pick one specifically such as rakudo 10:55
edeca Ah, ta. I am reading the perl5 to perl6 tutorials and thought I'd try it :) 10:56
mathw :) 10:57
edeca ' The -> $x { ... } thing is called a "pointy block" ' 10:58
Haha
mathw :)
well it is
it's even called that in the grammar
jnthn oh hai
mathw oh hai jnthn
edeca Why is 'for' now 'loop' though 10:59
mathw because 'for' is now just for what used to be foreach
'loop' becomes the most general and flexible loop type
edeca Makes sense. 11:00
mathw I thought so.
In practice, people don't seem to be using 'loop' very often 11:01
pmichaud good morning, #perl6
edeca And no more funky sub argument handling, ooh.
mathw I think 'loop's lack of popularity has a lot to do with the new 'for' and its added flexibility. You end up recoursing to using array indexes much less than in Perl 5. 11:02
o/ pmichaud
jnthn hi pmichaud 11:03
That's...embarassing. We're how many timezones apart, and show up at about the same time on #perl6. :-)
mathw well it's lunchtime in jnthn land 11:04
and breakfast time in pmichaud land, I believe
I think it depends how late you stay...
jnthn Sheesh, more big spec changes... 11:10
mathw yes
no more undef
and s/Object/U/
(tentatively) 11:11
jnthn eww to the last one. :-/ 11:14
mathw As I said to TimToady earlier, I don't much care for the way we have 'Object' and 'Any' and would welcome a change to 'Object's name
I'm not entirely sure about U, but...
I haven't thought of anything better yet
jnthn Object is fairly conventionally the top of the hierarchy in a lot of languages. 11:15
mathw true
11:17 charsbar_ joined
mathw The thing that always strikes me as weird in our heirarchy is the role of Any 11:19
jnthn I guess U feels kinda badly huffmanized in some senses, because we don't write U very often. 11:21
erm, don't write Object very often..
OTOH, maybe if undef is gone we would...
But then it's not very descriptive.
11:22 jnthn joined
Juerd U feels badly huffmanized? I feel fine! :) 11:22
mathw We'll definitely write it more often without undef
Juerd undef... gone? 11:23
jnthn Juerd: I meant, a waste of a 1-letter thingy.
Juerd jnthn: And I was playing with U sounds-like you.
jnthn Oh!
jnthn slurps more coffee :-)
Juerd u can haz.
11:23 Jedai joined, estrai joined
mathw yeah I did wonder if it was badly huffmanized 11:23
jnthn mathw: I kinda liked Any.
pmichaud it's pre-breakfast time here
mathw Any's still there 11:24
but it's what it's for that gets me
jnthn mathw: It's shorter than Object and what you normally want to write, if you're going to write it.
mathw I can never remember which way round they go
pmichaud I just couldn't sleep -- was trying to figure out laziness, flattening, and generators again
11:24 krunen joined, avuserow joined, huf joined, pjcj joined, he_ joined
Juerd When do you actually write Object or U? 11:24
mathw I tried to look it up, but I couldn't find an explanation in the synopses
pmichaud also, Any fits the 3-character-type: Int, Num, Str, Buf, Rat, ... Any
Juerd Obj
jnthn Obj++ 11:25
For pattern fitting
mathw that's almost exactly the same as Object though
Juerd Uuu :)
jnthn Well, given I don't have a problem with Object... :-)
carlin Ewe
Juerd ***
pmichaud I'm not a fan of U at the momnet -- for one, sub foo(U:U $x) { ... }
jnthn Yeah, that too.
moritz_ not either 11:26
but hey, it's conjectural
mathw I'm no enormous fan of U right now
jnthn I really don't get the problem with Object and Any, tbh.
Juerd And it really does sound too much like "you". Not a fan of me :|
mathw but I don't like Object either
jnthn Top?
moritz_ it sounds a bit like lisp with all it's weird abbreviations
(defun ..) instead of (define ...)
mathw shoots down the apostrophe
pmichaud 08:46 <TimToady> since Object is taking over a lot of undef's work, we should probably name it something more like "Empty" or some such
mathw yes 11:27
Empty and Void were mentioned
Juerd Nil? :)
mathw Nil means something else
Juerd runs away, and hides behind a big building.
mathw can't use it as a type name as well
jnthn Neither represent the top of the hierarchy very well though.
mathw jnthn: yeah
pmichaud ...Is Object really taking over a lot of undef's work?
jnthn Whereas Object kinda does.
mathw I didn't like the idea of everything descending from Void
pmichaud: it might... depends how typey you are I think
pmichaud I thought that "undef" was being handled by all of the type objects, not just Object
mathw I'm more likely to say Int
because I like types 11:28
static ones
except where I don't
pmichaud in some sense, undef is really more like Nil
jnthn I thought we could write Nil instead and it would dtrt
pmichaud which seems more appropriately named anyway
Juerd Root is one letter too many.
mathw Nil's got semantics around lists which are probably not what you want
jnthn yes
no, not any more
Juerd But "root" does sound powerful.
jnthn +Assigning or binding C<Nil> to any scalar container causes the
+container to throw out any contents and restore itself to an
+uninitialized state (after which it will contain a type object
+appropriate to the declared type of the container, or C<Object>
mathw assigning Nil to an @array doesn't undefine the @array itself
11:28 zamolxes joined
jnthn +for untyped containers). 11:28
+Assigning or binding C<Nil> to any composite container (such as an
+C<Array> or C<Hash>) empties the container, resetting it back to an
+uninitialized state. The container object itself remains defined.
pmichaud anyway, the purpose of renaming Object was to denote undefinedness, not to come up with another name for "root of the object hierarchy" 11:29
jnthn pmichaud: Well yes, but then there's the awkward fact that it *is*.
Juerd pmichaud: But ideally, a name would represent both
U tries, I think.
pmichaud Juerd: why?
why can't Nil represent "undefined", and Object represent "root of the hierarchy?"
jnthn My reading of this is that I'm supposed to write Nil where I'd have written undef before.
Juerd pmichaud: Because it is both, and good identifiers help to learn and understand a language.
pmichaud I'm not sure I agree with the premise that "Object" is the generic "undefined" 11:30
jnthn Right, me either.
That's not what the spec change reads like to me.
11:30 snearch_ joined
Juerd It's not clear to me what Nil is. Is it a type? 11:30
jnthn See the bits I just pasted, which were added as part of the change.
pmichaud my Int $a = Object; # looks like a type-mismatch
my Int $a = Nil; # looks right to me
jnthn Juerd: +The empty C<Parcel> is a value with a special name: C<Nil>.
Juerd I see
jnthn pmichaud: Yes, my Int $a = Object; # most certainly a type-mismatch. 11:31
11:32 JimmyZ joined
pmichaud now then, one place where U might make a bit more sense is with something like 11:32
my @a = Object, Object, Object 11:33
moritz_ my @a = Object xx 3;
mathw Actually yes, you're not going to use U very much if you use typed variables
pmichaud which initializes @a to three undefined objects
obviously one cannot use Nil there, because my @a = Nil, Nil, Nil; results in an empty @a
Juerd dives into p6l to find out why undef's gone 11:34
pmichaud Juerd: short answer -- undef is no longer a type of its own -- we now have "interesting undef"
jnthn pmichaud: my @a[3]; # would do that, no?
pmichaud: Though it'd restrict the size later too.. 11:35
Juerd pmichaud: You could still keep the keyword
pmichaud Juerd: yes, but that was the problem. What does it return?
mathw but what would it mean?
Juerd I think I should read first
pmichaud it was conjectured that "undef" should return "Object" 11:36
but then we ended up with
Juerd "Perl 6 does not have a single value representing undefinedness." means I missed something important :)
Because I had no idea.
pmichaud ahhh
mathw The reason is basically because of types
pmichaud yes, that's been around for a while. :)
mathw what type is undef
pmichaud we have lots of notions of undef -- for example, failures are a form of undefinedness
Juerd pmichaud: The diff is dated today.
JimmyZ rakudo: undef.WHAT.say;
p6eval rakudo 7347ec: Failure()␤ 11:37
jnthn Yes, but it seems we've just shuffled the magic undef had to perform into some magic Nil has to perform.
pmichaud Juerd: the notion of "Perl 6 doesn't have a single value representing undefinedness" has been around for quite a while, though.
We've already had Object, Failure, Whatever, ...
it's been years since there was an Undef type in Perl 6. 11:38
mathw I think the key realisation behind the removal of undef is that it no longer has a purpose
since the type objects have been around for some time, doing most of that job
pmichaud actually, Failure seems to do most of the job.
Juerd So what exactly would be the purpose of Object or U? 11:39
jnthn Well, yes and no. It meant I could write: my Int $x; ...later... $x = undef; and it'd get the right type object. It appears that's what Nil now does.
pmichaud at least, that's where I've encountered undefinedness the most in the stuff I've done
Juerd Or, maybe: why would writing that as "undef" be wrong?
pmichaud Juerd: the one that stuck was my observation yesterday about $a ~~ undef
jnthn We could just renmae Nil to undef. ;-)
Juerd Perl 5 also has undef and other values that aren't defined but also aren't undef itself.
mathw PErl 5 doesn't have Perl 6's type system to go with that though 11:40
pmichaud we could just have undef() return Nil. :-) 11:41
but we already have Nil for that, and it's shorter. :-)
Juerd Nil is ucfirst, so it's longer.
effort-wise
pmichaud okay, () then ? ;-)
Juerd Still requires shift :) 11:42
Let's use `.
jnthn std: my $x = 1;
gah
p6eval std 29183: ok 00:01 107m␤
jnthn std: my $x = `;
Juerd It looks like almost nothing
p6eval std 29183: [31m===[0mSORRY![31m===[0m␤Bogus statement at /tmp/QWqGfYSbdp line 1:␤------> [32mmy $x = [33m⏏[31m`;[0m␤ expecting any of:␤ infix or meta-infix␤ infix stopper␤ prefix or term␤ standard stopper␤ term␤ terminator␤Other potential difficulties:␤ Useless
..redeclaration of variable …
jnthn :-)
Juerd Maybe just a lone dot :)
jnthn ...usless redeclaration?! :-)
Juerd
.oO( my @foo = ... xx 3; )
11:43
That doesn't want to run, does it? 11:44
11:44 justatheory joined
mathw ¬ is the obvious choice... 11:45
Juerd No, it's not.
mathw yes it is
Juerd Indeed.
mathw and it's on my keyboard too!
Juerd ° is on german keyboards 11:46
And it looks like the semisoundless letter in Korean
mathw aaw man
I wish that was on UK keyboards
that'd be useful 11:47
Juerd bought a laptop with a german keyboard
I ordered a US keyboard on ebay
pmichaud jnthn: with the new U type, what would you expect from my Int $a = U; ?
mathw type mismatch
11:47 SmokeMachine joined
jnthn pmichaud: Type check fail. 11:48
pmichaud: In the future, even a compile time one for such an obvious fail.
mathw so utlimately you won't write U very much...
so it doesn't/shouldn't have just the one letter in it
pmichaud jnthn: then how would I pass an undefined value to sub foo(Int $a) { ... } ?
do I have to know that I'm passing an Int ? 11:49
jnthn pmichaud: foo(Int)
moritz_ wait... don't type check special-case undefined values?
pmichaud jnthn: so, there's not a generic equivalent to foo(Undef) ?
jnthn pmichaud: Well, subtype works too of course.
pmichaud sorry, foo(undef) ?
moritz_ rakudo: my Int $x = *
p6eval rakudo 7347ec: ( no output )
moritz_ that wouldn't work if we did type checks for undefined values 11:50
jnthn rakudo: sub foo(Int $x) { }; foo(Object);
p6eval rakudo 7347ec: Nominal type check failed for parameter '$x'; expected Int but got Object instead␤in Main (file src/gen_setting.pm, line 324)␤
jnthn rakudo: sub foo(Int $x) { }; foo(Int);
p6eval rakudo 7347ec: ( no output )
jnthn rakudo: sub foo(Int $x) { }; foo(undef); say "alive";
p6eval rakudo 7347ec: Nominal type check failed for parameter '$x'; expected Int but got Failure instead␤in Main (file src/gen_setting.pm, line 324)␤
jnthn Evidently not there.
I think assignment specially handles it.
pmichaud at the moment assignment specially handles undefined, yes. 11:51
(per the previous spec)
jnthn Right. It looks like we'd need to specially handle Nil instead now.
For calling, that's trickier.
I do not (really do not) want to start putting "oh but this is OK" exceptions into type checking.
pmichaud I don't think we're headed that direction. 11:52
jnthn I don't think foo(...something generic here...) is really an issue though.
I mean, it's not something you want to do all that often.
11:53 pnate2 joined
jnthn pmichaud: Oh no. We have a parsing issue with block implying end of line. :-( 11:53
pugs_svn r29184 | jnthn++ | [t/spec] Correct bogus fix to test yesterday. 11:54
pmichaud jnthn: ?
jnthn: example? 11:55
jnthn pmichaud: ^^ In that test file, look for class A61354_1 {
It's S12-class/basic.t
pmichaud: Note we run the .rakudo version
pmichaud: If you remove the ; from the end of the class decl, we get a parse error.
Even though that line just contains a } followed by new line.
Anyway, with the semi in we pass it all again, now I fixed the bogus test. :-) 11:56
OK, time for me to focus on roles stuff for a bit. 11:57
pmichaud oh, it's probably because of the comment on the next line 11:58
booting, updating, fixing
11:59 ejs1 joined
jnthn pmichaud++ # can hunt down these fails fast ;-) 11:59
s/;/:/
12:05 cognominal joined, envi^home joined
pmichaud aha 12:12
it thinks the block following the class definition is a postcircumfix:<{ }>
12:12 snearch joined
jnthn pmichaud: oh! 12:12
pmichaud: That may explain another brain-bending bug I was seeing yesterday. 12:13
12:13 envi^home joined
pmichaud fix pushed. 12:19
ng_feed rakudo-ng: pmichaud++
rakudo-ng: Fix bug with postcircumfix-after-whitespace.
jnthn pmichaud: Thanks! :-) 12:21
pmichaud afk for a bit 12:22
12:25 am0c joined 12:27 mariano__ joined, pmurias joined 12:36 ruoso joined
pugs_svn r29185 | pmurias++ | [mildew-js] multimethods 12:37
pmurias ruoso: see the above commit
12:38 JimmyZ joined
pmurias s/see/look at/ 12:39
12:43 FCO joined 12:50 masak joined
masak oh hai, #perl6. 12:50
phenny masak: 23 Nov 13:34Z <moritz_> tell masak see ali.as/top100/index.html for ideas how to score projects
moritz_ oh hai masak
masak moritz_: yes, it's a good source of inspiration. 12:51
jnthn lolitsmasak!
masak but I get the feeling that the goal of those lists os almost the opposite of what I want.
jnthn masak: bra flygg? :-)
masak jnthn: :) 12:52
jnthn: ja, bra flyg.
jnthn \\o/
masak jnthn: ingen Fokker, dock.
jnthn Ah, one g. :-)
masak yes, the 'y' is long.
moritz_ flight, flyg, Flug 12:53
masak on the way back, I had both books and laptop at my disposal. but the biggest piece of entertainment was a one-year-old on the seat in front of me.
jnthn heh 12:54
I read a paper.
masak she appeared royally bored, so I started 'speaking' to her.
not that she did speak. but one-year-olds are extremely awake in other ways.
they understand different gestures and faces perfectly, for example. 12:56
moritz_ wonders why so many parents take their kids on train/planes/cars without anything to do, and wonder why they get bored and sometimes unpleasant
masak parenting seems to be one of the most neglected fields of expertise in the world. 12:57
probably because it's a bit sensitive to try to teach it to people.
Wolfman2000 *yawn* morning
masak Wolfman2000: hello! 12:58
moritz_ I'm sure I would be a bad father, but some things I learned from my parents, or by observation...
jnthn
.oO( How is babby raised? )
Wolfman2000 First piece of news: presentation went well, so you guys don't have to worry about bad publicity about Perl 6. Second: Got a Google Wave account so that we can share Perl code in another way.
masak Wolfman2000: cool! 12:59
takadonet morning all
masak takadonet: \\o
Wolfman2000 anyway masak, I'm done with classes for the rest of the week. I also learned yesterday that trying to contribute to the ng branch...can be painful to do. Is there any other sort of task you want me to try to take care of for the next few days? 13:00
mathw Yay! 13:01
I was supposed to get a Wave invite from a friend but I guess he hasn't had his yet
rgrau mathw: want one? 13:02
masak Wolfman2000: want to take a look at November?
Wolfman2000 Those that have wave accounts that I never added yet, please PM me them so I can add to the contacts
masak: November...just to be sure, that's the wiki hosted on Perl 6, right? 13:03
mathw rgrau: please!
masak Wolfman2000: yes. 13:04
Wolfman2000 github.com/viklund/november/ This is the one I believe
masak nod. 13:05
Wolfman2000: you can help in any number of ways, anything from using it (writing wiki content) to having a look at the source code.
Wolfman2000 Give me a few more minutes to wake up first please.
masak absolutely.
Wolfman2000 Also, what is the wiki URL again?
masak also november-wiki.org/
Wolfman2000 not the source code--ah
masak: sort of a silly question...one can login to november wiki, but not register. How does that work? 13:06
masak Wolfman2000: erm, that's an example of where November could be better. :) 13:07
Wolfman2000: want an account?
Wolfman2000 masak: sure
masak I'll get you one.
13:07 bbkr joined
masak oh! and there's also the #november-wiki channel on this IRC server, where people with an interest in November (and Web.pm) hang out. 13:07
discussion can take place on any of #perl6 or #november-wiki, though. 13:08
Wolfman2000 I'm guessing I'll need yet a different account to check out the november source code 13:10
moritz_ it's open on github, no need for any account 13:11
masak Wolfman2000: you'll need a github account if you want to push commits, though.
Wolfman2000 masak: that, I have
masak what's the name of that account?
Wolfman2000 lc(<--)
or <--.lc in the new lingo 13:12
masak hugme: add wolfman2000 to november
hugme hugs wolfman2000. Welcome to november!
Wolfman2000 alright, got november. Still in waking up mode though...need roughly 15 more minutes. 13:13
masak take your time.
13:13 aindilis joined
bbkr Hi. I have a class instance, let's say $c. And it has method $c.to_string(). That works OK, but I'd like to use this class in Str context easily, like this: ~$c. Is there any magic method i can implement/override to make class context-aware? 13:19
moritz_ bbkr: yes, method Str 13:20
(it might change to method Stringy soon, but for now Str works)
bbkr works, thanks! 13:21
mathw masak: How are things? 13:22
masak: Did you see that ng has push now?
masak mathw: I vaguely picked that up from yesterdays backlogging. woot! 13:24
moritz_ ng: my @a = 1, 2, 3; say @a.push: 5; say ~@a
masak mathw: things are good. I'm back at work for four days. all I really want to do is November-blog and fiddle with GGE, though. :)
p6eval ng 345ac3: 1235␤1 2 3 5␤
13:24 ejs1 joined
masak \\o/ 13:24
moritz_ ng: my @a = 1, 2, 3; push @a, 5; say ~@a 13:25
p6eval ng 345ac3: 1 2 3 5␤
mathw masak: I can understand and sympathise
I'm supposed to be writing performance reviews, but I keep waiting for phone calls instead
Or *gasp* writing code
masak :) 13:26
mathw just wish we had a proper test suite
you know, one that doesn't randomly break 13:27
masak mathw: by the way, I ran the tests on Form yesterday. all tests pass, and quite many tests, at that. mathw++
szabgab I was trying to do something with perl 6 again and I get
== SORRY! == Unable to find Perl 6 dynops and dynpmcs library. If you want to run Rakudo outside of the build directory, please make install.
mathw masak: they shouldn't have rotted too much since I last fixed them up
masak: what I'm looking forward to is the day they pass against ng :)
masak szabgab: well, you didn't make install.
colomon is not in favor of U
masak szabgab: it says so, right there in the error message.
szabgab can I config some env variable so I don't ned to make install ?
masak colomon: no, I thought that was a really weird change. 13:28
szabgab where is it going to install anyway ?
masak szabgab: in a directory within the rakudo directory.
moritz_ szabgab: it installs into the same location where parrot is installed
masak szabgab: ah. what moritz_ said.
BinGOs rm /usr/bin/perl install /usr/bin perl6
moritz_ if you compiled with --gen-parrot, that's $rakudo_dir/parrot_install/bin/perl6
masak BinGOs: might want to wait a bit doing that one :) 13:29
szabgab that's it probably
BinGOs jiggles.
masak BinGOs: for one, rakudo uses the perl executable to configure itself. Parrot too.
BinGOs I'm aware of this.
I had a go at build/installing rakudo but encountered woes. 13:30
szabgab masak, moritz_ thanks that worked
BinGOs parrot was bleating that it couldn't find the icu shared libraries 13:31
moritz_ BinGOs: which OS?
BinGOs NetBSD 3.1
I'd built ICU and thrown it in /usr/local/
moritz_ has no experience with that at all
BinGOs parrot appeared to have found it there, but bleated later on about finding the shared library 13:32
I thought I'd remove it from /usr/local and install in /usr/pkg/ 13:33
moritz_ BinGOs: when you cd $rakudo_dir/parrot; perl Configure.pl --prefix=$rakudo_dir/parrot_install it would be interesting what Configure says, and if parrot passes all tests
BinGOs I've removed ICU now.
13:34 avuserow joined
BinGOs I got worried I'd interfer with pkgsrc if I installed it in /usr/pkg 13:34
What's the oldest version of ICU supported ?
moritz_ I have no idea; maybe the parrot folks know
3.8.1 seems to work fine :-) 13:35
BinGOs the pkgsrc I have will do icu-3.4.1
oh the hell with it. I'll update pkgsrc 13:36
carlin Is there an easy way to turn $/ into a Hash of Strings? 13:39
moritz_ %( %($/).kv>>.Str ) might work 13:41
carlin moritz_: Looks like it did, thanks 13:46
mathw oooh 13:49
cunning
PerlJam good morning 13:52
13:53 iblechbot joined
Wolfman2000 PerlJam: morning 13:53
PerlJam I wish I had a good sense for when I'm just being a curmudgeon versus when my unease at change is more meaningful. 13:55
But I guess you just can't short circuit time.
Wolfman2000 masak: ready for a first commit I think. How do I commit to git again? 13:56
masak Wolfman2000: whoa. what did you change? :) 13:57
Wolfman2000 masak: lib/URI/grammar: just forced the port number to stick with 5 digits max according to iana
at least, I think I did it right
masak ah, cool.
Wolfman2000 rakudo: say 95837 ~~ /[\\d] ** 1 .. 5/
p6eval rakudo 7347ec: ␤
masak well, either you do 'git add' + 'git commit', or you do just 'git commit' and specify the file/directory.
Wolfman2000 ...perhaps I didn't 13:58
masak Wolfman2000: lose the spaces around ..
Wolfman2000 rakudo: say 95837 ~~ /[\\d] ** 1..5/
p6eval rakudo 7347ec: 95837␤
masak and no [] needed either.
moritz_ Wolfman2000: 'git show' will tell you what the last commit was
Wolfman2000 rakudo: say 95837 ~~ /\\d ** 1..5/
p6eval rakudo 7347ec: 95837␤
masak Wolfman2000++
Wolfman2000 moritz_: good thing you said that. Someone just committed to November.pm 13:59
moritz_ but you can also check with $number < 1e6
rakudo: say '123456789' ~~ / \\d ** 1..5 /
p6eval rakudo 7347ec: 12345␤
moritz_ also matches, so you need anchors 14:00
Wolfman2000 moritz_: ...that was not what I was after.
moritz_ Wolfman2000: oh, URLs
jnthn wtf? Why can't I have a Parrot role that has a method called attributes?!
Wolfman2000 rakudo: say 12345 ~~ /^\\d**1..5$/
p6eval rakudo 7347ec: 12345␤
Wolfman2000 rakudo: say 123456 ~~ /^\\d**1..5$/
p6eval rakudo 7347ec: ␤
jnthn isn't sure he even wants to know the answer to this one...
Wolfman2000 masak: commit should be in place. 14:02
moritz_ probably because it doesn't use out-of-bound storage/communication where it should
(that was for jnthn)
jnthn oh! 14:03
Wolfman2000 ...can one of you guys please ping me?
jnthn moritz_: It's OK, I was doing it wrong.
moritz_ Wolfman2000: ping :-) 14:04
1.6s 14:05
Wolfman2000 thank you. Guess Feather is just slow right now
masak: Got another question for you here. toggle(@style_stack, @promises, 'b'); <-- Are you basically trying to add <b> tags here? 14:06
ng_feed rakudo-ng: jnthn++ 14:09
rakudo-ng: More meta-ponderings.
rakudo-ng: jnthn++
rakudo-ng: Tweak a few bits of bits in ClassHOW to match metamodel spec a bit more.
rakudo-ng: jnthn++
rakudo-ng: Move metamodel-y stuff to a dedicated directory. Add a low-level role ParrotBacked that we'll compose into ClassHOW and RoleHOW and factors out the commonalities of things that are backed by Parrot Class or Role PMCs.
14:16 pnate joined
masak Wolfman2000: it's been a while since I wrote that piece of code. let me dig out a blog post for you that describes why I did it that way. 14:16
Wolfman2000 ...before you end up reverting that change while I will soon make another. 14:17
masak Wolfman2000: oh, did you push already? 14:18
Wolfman2000 I've pushed twice already. About to push a third in a non related folder.
But yeah, I pushed replacing b with strong and i with em
Revert that if needed, but watch out for my third coming within 30 seconds
masak Wolfman2000: use.perl.org/~masak/journal/37988 14:19
Wolfman2000 ...looks like my change was fine then 14:20
b or strong, i or em, shouldn't matter.
...though knowing me, I broke some of the t/ files with my changes. 14:21
What I find funny...I STILL didn't find what I was looking for
PerlJam Wolfman2000: making progress en passant is still fine :) 14:22
Wolfman2000 PerlJam: fair enough. 14:23
masak: Guess I'm finally that guinea pig.
masak Wolfman2000++
Wolfman2000: if you break tests, I'll notice. I get automatic smokes every night.
Wolfman2000 ...I wonder if you can program your november wiki bot to recognize November changes
masak Wolfman2000: there is a bot here that reports november commits.
Wolfman2000 ...I made 3 commits. Why am I not seeing them? 14:24
masak which is why I was surprised that you had pushed and it hadn't reported anything.
carlin Wolfman2000: Have you done a git push or just git commit?
masak Wolfman2000: you know there's a difference between commit and push? :)
Wolfman2000 commit
masak commit is local.
push goes all the way back to (in this case) github.
Wolfman2000 ...so I have 3 local commits.
masak yup.
Wolfman2000 Is just a git push all I need?
masak should be.
Wolfman2000 ...err, did it wrong 14:25
masak now you'll notice if you got november with the right URL.
what's the error?
lisppaste3 Wolfman2000 pasted "Don't think I did this right." at paste.lisp.org/display/91011
Wolfman2000 masak: ^^
masak looks
Wolfman2000 or rather, ☝
masak right.
that's what I thought.
you'll need to edit .git/config
Wolfman2000 masak: in which directory? 14:26
masak the top november one.
Wolfman2000 Alright, I'm in
carlin What about: git remote add origin git@github.com:viklund/november.git ?
14:27 pnate2 joined
Wolfman2000 carlin: unsure who to listen to at this stage: masak or you. 14:27
masak carlin: not needed if Wolfman2000 got it from there.
then that's already the case.
Wolfman2000 masak: what exactly do I have to edit in .git/config? I can paste what I have inside so far if you want. 14:28
masak no, I'll check for you.
Wolfman2000 alright
masak the line below [remove "origin"]
that starts 'url ='
Wolfman2000 remote origin you mean?
But yeah
starts with git://github.com/viklun/november
masak aye, 'remote'. sorry :) 14:29
Wolfman2000 ...shouldn't that be november.git?
masak look again at your error message.
do the change it prescribes.
:q
hugme hugs masak, good vi(m) user!
masak hugs hugme back :) 14:30
mathw \\o/ vim
Wolfman2000 masak: permission denied
pmichaud back
masak Wolfman2000: does it say why?
Wolfman2000 Permission denied (publickey). fatal: The remote end hung up unexpectedly
PerlJam Wolfman2000: git@github.com:viklund/november.git # is what I would expect the remore URL to be if you're able to push. 14:31
Wolfman2000 PerlJam: I have that right now
masak Wolfman2000: you might need to start your 'ssh-agent' or something.
and add the public key in your .ssh directory. 14:32
PerlJam Just checking. you didn't have "viklund" in your previous text
Wolfman2000 masak: never heard of ssh-agent before. Wonder how that works on Feather
masak Wolfman2000: it's works the same on most Unices.
s/'s//
Wolfman2000 masak: That tells me nothing. I'm primarily on Mac OS X 14:33
Wolfman2000 uses the GUI a bit
PerlJam Wolfman2000: run ssh-keygen and copy/paste the public key to github.
Wolfman2000 I don't know everything I probably should about terminal usage
PerlJam stops "helping" because he's only half paying attention
masak Wolfman2000: what PerlJam says might be the way to go, if you haven't done that already. 14:34
I think github has a help page on this. hold on, I might find it.
Wolfman2000 masak: haven't done that yet. Just have to find the right place on my github account for it now
masak help.github.com/linux-key-setup/
Wolfman2000 ...argh, hated my key
masak help.github.com/mac-key-setup/
BinGOs help.github.com/working-with-key-passphrases/ 14:35
colomon oooo, shiny: rjbs.manxome.org/rubric/entry/1813
BinGOs doh.
masak rjbs advent calendar! \\o/ 14:38
PerlJam Where's the Perl 6 advent calendar? :)
Wolfman2000 okay, I think I got my passkey figured out. Not to try pushing again 14:39
colomon PerlJam: my thought precisely. ;)
masak colomon, PerlJam: are you two volunteering?
PerlJam masak: Sure, but given my history of contribution, you'll only get about 3 or 4 days out of me :) 14:40
colomon masak: I'd be willing to try to contribute some days, for sure.
masak colomon, PerlJam: if you build it, they will come.
bbkr Pair has no clone constructor Pair.new("a" => "b") in #23 Rakudo release. Is it on purpose or just not yet implemented? So far I did workaround: class HTTP::Header is Pair { method new(Pair $p) { return self.bless($p)} } and I can use nice HTTP::Header.new("User-Agent" => "mozilla") syntax :)
lisppaste3 Wolfman2000 pasted "I think I did this right." at paste.lisp.org/display/91013
masak Wolfman2000: yes. \\o/ 14:41
PerlJam Wolfman2000: aye!
masak takes a look at the commits
Wolfman2000 ...
great, I killed the bot
masak that tends to happen. 14:42
PerlJam colomon: Have you got someplace to put up the advent calendar?
arnsholt Heh. Whoever maintains it should add some kind of rate limiting ^^
14:42 dalek joined
masak dalek, ironically enough, is very fragile. 14:42
Wolfman2000: this commit is wrong. github.com/viklund/november/commit/...4805f2211d
Wolfman2000 PerlJam++, masak++: either way, thanks for the assistance.
masak Wolfman2000: I should have guessed when you added the ^ and $ here on the channel.
Wolfman2000: they mean 'start and end of /string/', not regex.
arnsholt Wolfman2000: I don't know about OS X 10.5, but in 10.6 the shh keychain stuff is integrated into the OS X keychain stuff (re: SSH keys) 14:43
masak which is almost certainly wrong for a URI.
colomon PerlJam: I guess we could stick it on harmonyware.com, but it's not perlish and there's no handy content-management stuff.
PerlJam colomon: maybe we could do it on rakudo.org?
arnsholt Just open a terminal and run ssh-add and it'll be available
Wolfman2000 masak: I think I may be right though. ^ and $ should be limited to the token.
Wolfman2000 thinks he has some code that works similarly...hang on
masak the next commit is OK, but I question your use of 'proper' wrt <i> and <b>. github.com/viklund/november/commit/...f84a739821 14:44
Wolfman2000 masak: Web Developer background
masak Wolfman2000: yes, but that part of your background is unfounded.
Wolfman2000: there's nothing deprecated about <i> and <b>.
Wolfman2000 masak: 4 websites to my name. Not fully unfounded.
colomon PerlJam: Who do we ask? (or maybe feather?)
Wolfman2000 masak: doesn't validate properly. 14:45
masak Wolfman2000: I'm not questioning your experience.
Wolfman2000: they do validate.
Wolfman2000 Not on Strict
masak Wolfman2000: show me a place where they don't.
I don't think we use Strict in November.
Wolfman2000 You should. :P
masak and what I'm mainly after is compliance with MediaWiki.
Wolfman2000: no reason to use Strict for everything, IMHO. 14:46
Wolfman2000 masak: you'll get better compliance and support with strict
masak hm, we do use strict. hang on, I'll validate for you.
lisppaste3 Wolfman2000 annotated #91013 "Paste this into validator.w3.org and witness the failure." at paste.lisp.org/display/91013#1 14:47
masak validator.w3.org/check?uri=http%3A%...mp;group=0 14:48
14:48 ejs2 joined
masak the above URL validates the main page of november-wiki, which uses <i>. 14:48
PerlJam colomon: alester is the goto guy for rakudo.org. We could put it on feather, but I'm woefully ignorant of what software would be good to use
colomon PerlJam: yeah, me too. 14:49
Wolfman2000 masak: ...that...makes no sense. <i> and <b> are deprecated.
masak Wolfman2000: no, they are not.
Wolfman2000: that's what I keep telling you.
Wolfman2000: you have been slightly brainwashed. sorrry.
ng_feed rakudo-ng: jnthn++
masak Wolfman2000: there's nothing wrong per se with <i> and <b>.
ng_feed rakudo-ng: Gah, I screwed up the last commit. Corrected.
masak Wolfman2000: what is ture is that they are presentational rather than semantical.
Wolfman2000: but that doesn't mean 'deprecated'.
Wolfman2000: I think I'll revert that commit. thanks for making it, though. it was nice to have this discussion with a seasoned web developer. again. :) 14:50
Wolfman2000 masak: ...hold on on that please
masak sure, ok.
Wolfman2000 I'm trying to find more proof of my claim
masak I'll go find proof of mine, in the meantime. 14:51
www.w3.org/TR/html4/index/elements.html
zaslon lolpmichaudhazblogged! pmichaud++ 'Hague grant status report, milestones M1/M2': use.perl.org/~pmichaud/journal/39939?from=rss
masak Wolfman2000: note the Depr. column.
Wolfman2000: the deprecation status of elements in XHTML 1.0 is the same as for HTML 4.01. 14:52
Wolfman2000 <<austincheney1>> Wolfman2000: because <b> and <i> are not deprecated, but should be deprecated <-- from #html. ......I'm POed.
HTML--; XHTML--;
masak Wolfman2000: I disagree.
Wolfman2000: they are perfectly good elements. they do their job.
Wolfman2000 that's what <strong> and <em> are for. HTML should not have presentation elements. 14:53
That's for CSS
masak I know.
all I'm saying is that these rules are never absolute.
PerlJam even HTML 5 has <i> and <b> :)
masak Wolfman2000: www.eod.com/devil/archive/web_standards.html
Wolfman2000 PerlJam: ......let me double check that
Wolfman2000 hopes those tags were just redefined or something 14:54
carlin They mean different things in HTML 5 though
jnthn Wolfman2000: www.w3.org/TR/xhtml1/dtds.html#a_dt...1.0-Strict
Wolfman2000: <!ENTITY % fontstyle "tt | i | b | big | small ">
masak Wolfman2000: there's nothing wrong with <i> and <b>!
Wolfman2000: they italicize the text, or bold it, respectively.
jnthn Wolfman2000: They're specified as valid in the DTD.
PerlJam Wolfman2000: yeah, I agree with masak here ... you've been brainwashed.
:)
masak many have.
14:54 facsimile joined
Wolfman2000 .......... 14:54
                              
                              
                              
                           
                              
pmichaud dev.w3.org/html5/spec/Overview.html...-i-element
masak reverting the commit. 14:55
Wolfman2000 ...I feel...blue screened.
PerlJam Wolfman2000: just because a language construct is generally abused doesn't necessarily mean that it should be deprecated. 14:56
14:56 cognominal_ joined
Wolfman2000 PerlJam: tell that to <iframe> and <applet> 14:56
PerlJam Wolfman2000: otherwise, think of all of the Perl constructs we'd be without 14:57
Wolfman2000 Plus, <embed> was never in the standard
masak: I found the code I did in dealing with grammar. I can adjust my first commit without issue. 14:58
dalek vember: e2df51b | masak++ | lib/Text/Markup/Wiki/MediaWiki.pm:
Revert "Use proper HTML tags. No longer on HTML v3."

Our primary goal is to stay close to what MediaWiki does. Besides, there's nothing improper about <i> and <b>; they are not deprecated.
14:59
Wolfman2000 :( :( :(
HTML--; XHTML--; just because 15:00
I'm not going to shoot the messanger.
masak Wolfman2000: I hope you understand that I'm still thankful you did that commit. I just think it's wrong. :)
Wolfman2000 I'll understand the thanks another day perhaps.
Now, what of my third commit?
masak Wolfman2000: about the first commit, it'd be interesting to see if the test suite still passes after it. if so, I'd be tempted to leave it in. or write more tests :) 15:01
masak looks at third commit
Wolfman2000 masak: Right now, that port number can be above iana spec
masak Wolfman2000: third commit is fine.
Wolfman2000 kind of have to fix that
15:01 am0c joined
masak Wolfman2000: the reason that goto was there is, I think, similar to the reason we put a comma after the last element in lists sometimes. 15:02
pmichaud isn't sure what to make of all of the undef/Object changes yet -- i.e., what to do with them for ng. 15:04
[particle] wait for the 'temporary' changes to become permanent
jnthn pmichaud: It still feels somewhat in flux to me.
pmichaud [particle]: ...except they're blockers.
[particle] oy. 15:05
jnthn pmichaud: tbh I'm not really in favor of all of them.
pmichaud: I really want U to go away.
pmichaud jnthn: me either.
jnthn
.oO( oops, that sounded offensive :-) )
15:05 Psyche^ joined
masak I really don't understand the U change. 15:05
jnthn masak: U don't?
masak :) 15:06
jnthn I don't understand U either.
PerlJam aha! Some sanity. I was thinking (to myself mostly) that I was just being curmudgeonly about U
pmichaud I think (hope) it just came from confusing the undef role with Object.
[particle] then it's probably a good idea to talk about what you don't like or don't understand, to inform the designer
jnthn I think top of the object hierarchy and undef need to same somewhat separate.
pmichaud payload: it was discussed earlier on chan -- he'll likely see it :)
jnthn er, stay
tab fail 15:07
pmichaud s/payload/particle
(tab fail sigh)
doesn't feel like a good morning for hacking :-|
jnthn EDISTRACTIONS?
pmichaud: I'm busily hacking on metamodel stuff. 15:08
pmichaud partially that, yes. but also my mind is trying to clarify undef/failure/laziness/iterators a bit
jnthn Heh. My mind is trying to clarify metamodel bits.
15:08 cognominal joined
Wolfman2000 masak: long as I didn't kill the bot, new update coming. 15:09
pmichaud this feels a bit like one of those places where I should take a hubris pill and just write the implementation the way I want it to look and hope the spec will evolve to match :)
jnthn pmichaud: I'm doing exactly that with the metamodel-y bits. 15:10
jnthn read the sources of much of both smop and moose, various papers...needs to read more though. :-/
masak Wolfman2000: ah, cool. that's something that can be written much shorter when closure-assertions-in-regexes land. 15:11
jnthn pmichaud: I'm realizing more and more that backing onto Parrot Class / Role is...well...
masak Wolfman2000: if you want to, you could write it as a PIR assertion already.
dalek vember: 0da33d7 | (Jason Felds)++ | lib/URI/Grammar.pm:
Force port to be capped at 65535 by IANA.
pmichaud ng: 'abc' ~~ / b { say 'yes' } /
p6eval ng 18082e: Symbol '$¢' not predeclared in <anonymous>␤current instr.: 'perl6;PCT;HLLCompiler;panic' pc 137 (src/PCT/HLLCompiler.pir:101)␤
pmichaud oh yeah, that bug.
pmichaud decides to fix.
Wolfman2000 dalek++: yay for not crashing
masak: not familiar with the PIR assertions yet. 15:12
jnthn pmichaud: I'm not doing it right now, but Perl 6 roles may get a complete divorce from Parrot roles in the future.
Wolfman2000 Also, good grief I have too many names assigned to me.
pmichaud jnthn: I see no problem with that :)
masak Wolfman2000: I'll try to put together a short example.
Wolfman2000 I have wolfman2000, Wolfman2000, jafelds, and Jason Felds
not exactly good for karma when it's all spread
moritz_ @karma Felds)
lambdabot Felds) has a karma of 1
Wolfman2000 moritz_: would ahve been 4 if dalek didn't flood 15:13
moritz_ Wolfman2000: happens to all of us at some point
@karma moritz
lambdabot moritz has a karma of 917
moritz_ @karma moritz_
lambdabot You have a karma of 128
moritz_ also split
jnthn @karma jnthn
lambdabot You have a karma of 551
jnthn @karma jonathan
lambdabot jonathan has a karma of 102
PerlJam Wolfman2000: karma is illusory anyway
jnthn @karma Worthington)
lambdabot Worthington) has a karma of 7
mathw it doesn't matter
jnthn :-)
mathw we all know you're all really cool 15:14
PerlJam @karma Duff)
lambdabot Duff) has a karma of 1
PerlJam @karma duff
lambdabot duff has a karma of 28
PerlJam @karma perljam
lambdabot You have a karma of 24
PerlJam @karma perlpilot
lambdabot perlpilot has a karma of 0
Wolfman2000 PerlJam: gotcha 15:15
15:18 synth joined
masak pmichaud: can one access $/ from a PIR closure? 15:18
rakudo: say "15" ~~ / (\\d+) <?{{ find_lex $P1, "$/" }}>/
p6eval rakudo 7347ec: Lexical '$/' not found␤in Main (file src/gen_setting.pm, line 324)␤
masak pmichaud: did you see this? twitter.com/sjoshuan/status/6010072910 15:20
pmichaud masak: didn't see that, no. Probably need to be written. 15:21
masak pmichaud: do you want to reply to him, or shall I?
moritz_ release_guide.pod describes release cycles
masak good point.
I'll say that.
moritz_ perl6.org/community/ feedback channels 15:22
pmichaud also, I think README and getting_started.pod probably say something
masak I'll just post a link to this discussion. :)
pmichaud looking
moritz_ commit bit policy... don't think it's written down
dalek p-rx: 0ce5b09 | pmichaud++ | src/Regex/P6Regex/Actions.pm:
Automatically add � lexical to regex blocks.
moritz_ submit a few good patches, send in a CLA, kindly ask for a commit bit
15:23 pmurias joined
Wolfman2000 masak: ...which discussion? 15:23
masak Wolfman2000: the one we just had.
Wolfman2000 you mean the one where I had my /b no?
masak Wolfman2000: nono, the one about release cycles etc. 15:24
Wolfman2000 oh
Wolfman2000 feels better.
masak hugme: hug Wolfman2000 15:25
hugme hugs Wolfman2000
masak pmichaud: what about $/ in PIR assertion closures? have I missed something, or are they inaccessible? 15:26
pmichaud: if it cannot be accessed, what's the big advantage with PIR assertion closures?
Wolfman2000 ...okay, I think I know what I'm looking for. I just have no clue where. masak: trying to find where the sidebar is generated.
pmichaud masak: it's 'match'
masak: it's a PIR register 15:27
masak Wolfman2000: skins/
pmichaud: ah. I always feel lost when trying to figure such things out.
Wolfman2000 ...pages are in skins? Strange
pmichaud masak: soon it won't matter -- ng has Perl 6 closures natively :)
masak pmichaud: and the rakudo.org/status page has the syntax wrong. the curlies are doubled in number.
pmichaud: yeah, yeah. :)
pmichaud and those *do* understand lexicals and $/ 15:28
masak Nomveber runs on master. :)
moritz_ rakudo: 'a' ~~ / . {{{ say match }} /
p6eval rakudo 7347ec: perl6regex parse error: Missing closing braces for closure at offset 24, found ' '␤in Main (file <unknown>, line <unknown>)␤
moritz_ rakudo: 'a' ~~ / . {{ say match }} /
p6eval rakudo 7347ec: a␤
moritz_ wow
PerlJam pmichaud: words like "soon" always have a way of biting you when you least expect it (See Perl 6 :)
moritz_ ng: 'a' ~~ / . { say $/ } /
p6eval ng ce6633: Symbol '$¢' not predeclared in <anonymous>␤current instr.: 'perl6;PCT;HLLCompiler;panic' pc 137 (src/PCT/HLLCompiler.pir:101)␤ 15:29
pmichaud ...what's the story on adding <[+\\-]> to token numish in STD.pm ?
moritz_: I just fixed that error in nqp-rx... just need to update ng with it.
(working on that also)
i.e., why was <[+\\-]> added (in numish as opposed to somewhere else)?
15:30 pnate2 joined
jnthn pmichaud: Is it so e.g. -42 is parsed as a literal, rather than a runtime negation of a literal 42? 15:30
pmichaud jnthn: yes, I understand that part (more)
but -3/4 isn't parsed as a literal
Tene pmichaud: can you give me a pointer on how to create a generator that can be used as a lazy list? 15:31
jnthn Oh?
Tene in ng?
jnthn I was under the impression that it was...
pmichaud Tene: not yet I can't.
jnthn:
oops!
Tene Oh, I thought that was working in ng. I must have misremembered.
pmichaud token number:rational { <nu=.integer>'/'<de=.integer> }
jnthn oh.
pmichaud Tene: we have some forms of laziness in ng, yes -- but it needs a big rethink.
jnthn :-/
pmichaud: I find that slightly surprising. 15:32
moritz_ pmichaud: oh, it's an nqp-rx fix... I thought it was in ng already, and searched the commit in the wrong repo :-)
pmichaud jnthn: so do I, thus my question :-)
jnthn pmichaud: e.g. that 3/4 is a literal but -3/4 is not.
pmichaud: Right. Got it. :-)
Tene Ah. I'll hold off on doing lazy gather/take for now, then.
:(
pmichaud Tene: yes; that's why I suggested to just do the eager implementation for the moment
I'm also wanting to rethink the "flatten" flag -- turns out that nearly everything _except_ scalars gets flattened 15:33
Tene pmichaud: Which I did last night! My first commit in over a month, I think. Maybe I'm finally recovering a bit.
Heh. :)
masak rakudo: say "15" ~~ / (\\d+) <?{{ $I0 = match␤$I1 = 0␤if $I0 > 16 goto fail␤$I1 = 1␤fail:␤.return ($I1) }}>/
p6eval rakudo 7347ec: 15␤
masak pmichaud: the above works, but it also works for numbers above 16. what am I missing?
Tene pmichaud: anything you'd like to point me to working on in ng, then? 15:34
pmichaud Tene: not at the moment, alas. I really need to get my head around a few fundamentals next.
Wolfman2000 ...alright, guess dalek is on vacation again. I'm getting pop tarts before I try to understand what needs to be done for registration.
pmichaud mmmmm, pop tarts is pmichaud.com/toast/ 15:35
Tene pmichaud: Okay. I'll do whatever. Feel free to push tasks on me later.
pmichaud Tene: will definitely do that
masak: you might want $I0 = match[0]
dalek vember: 38f3141 | (Jason Felds)++ | skins/CleanAndSoft/sidebar.tmpl:
Have FAQ link accessible to all users right away.
vember: e96e881 | (Jason Felds)++ | skins/CleanAndSoft/sidebar.tmpl:
Better clarifying text.
Wolfman2000 pmichaud: I'm going to eat pop tarts, not blow them up.
jnthn pmichaud: Wolfman2000 may have been thinking of food rather than burning his house down. ;-)
masak pmichaud: oh, of course! thanks.
Wolfman2000 now, to the toaster!
masak Wolfman2000: last couple of commits look good.
15:36 ash_ joined
masak Wolfman2000: you might want to check out 'git commit --amend', cool alien tech. :) 15:36
15:36 rfordinal joined
ash_ so i think i found a bug... anyone tried doing a repeated regex from any number to infinity? like / \\d ** 1..inf / 15:37
15:37 zamolxes_ joined
masak ash_: yes, sure. 15:37
pmichaud it's \\d ** 1..*
moritz_ ash_: it's spelled 1..*
ash_ oh
oops
masak ash_: that's how the + quantifier works, after all.
jnthn ng: my @x; @x[]
p6eval ng ce6633: Confused at line 1, near "@x[]"␤current instr.: 'perl6;HLL;Grammar;panic' pc 519 (src/stage0/HLL-s0.pir:336)␤
15:37 Coke joined
masak I think Inf works as well. 15:37
jnthn aww
pmichaud ng doesn't know zen slices yet (parsing) 15:38
masak pmichaud: if 1..Inf doesn't work, could there be a case for supporting it?
pmichaud: it's very DWIM.
pmichaud std: / \\d ** 1..Inf /
p6eval std 29185: ok 00:01 107m␤
pmichaud masak: looks like yes :)
moritz_ that doesn't mean much
masak moritz_: I think it does.
std: / \\d ** 1..DuckSauce / 15:39
moritz_ if STD.pm can't interpret the RHS of a ** as range, it can still interpret it as a regex
p6eval std 29185: ok 00:01 104m␤
ash_ I really meant 3+ but i tried that and thought it might be worth mentioning
masak oh, all right. :)
Coke question about the specs - should Perl�| 6 be rewritten to use escaped chars in the pod?
pmichaud STD.pm has
| \\d+ [ '..' [ \\d+ | '*' ] ]?
moritz_ std: / \\d ** \\, / # also valid
p6eval std 29185: ok 00:01 104m␤
moritz_ Coke: not escaped
pmichaud ...which means that std is likely parsing / \\d ** 1..Inf / as / [\\d ** 1] . . 'Inf' / 15:40
masak nod.
I propose that 1..Inf should be synonymous to 1..*.
Coke moritz_: why not/
? 15:41
moritz_ Coke: because it's ugly to read
Coke: and decent text editors can tell you the difference between a space and a non-breaking space, if you care
Coke is that what that is?
15:41 nihiliad joined
moritz_ it is 15:41
it's UTF-8
pmichaud Coke: yes, it's non-breaking space (codepoint u+00a0) 15:42
Coke ok. it's completely illegible to me.
pmichaud Coke: you need an editor that understands utf8 :)
Wolfman2000 ...speaking of utf8...that reminds me
pmichaud masak: I have no objection to the proposal
I suspect that we should give some sort of useful error message on \\d+ '..' <something_not_valid> 15:43
Wolfman2000 I only had one bug when giving my Perl 6 cryptography demos. When I tried putting in “quote” as my string to convert, I was given a malformed UTF-8 error.
masak pmichaud: yeah, that too.
Coke pmichaud: eh. only if I wish to spend time proofing/reading perl 6 specs.
masak highlights TimToady
Coke Danke.
pmichaud I'll put an error into nqp-rx, std.pm will then adopt it :) 15:44
Wolfman2000 If it matters, all I do is do $*IN.get for retrieving the line, and then replacing every character with its hex equivalent.
masak I could have a look at updating S05.
Wolfman2000 What's the proper way of avoiding that error?
pmichaud Wolfman2000: that's likely a problem with reading utf8 from your keyboard
Wolfman2000 pmichaud: my Terminal is set for Unicode
pmichaud Wolfman2000: right now there is often difficulty with reading utf8 from an interactive terminal
Wolfman2000: I don't doubt it -- mine is also. 15:45
Wolfman2000: I'm just saying that Parrot doesn't always recognize it properly yet
[particle] pmichaud: make sure the error message is GEA so you don't have to change it later
Wolfman2000 ...well, it was an interactive "Give me a prime number", "Give a second", "give a message"
check feather/jafelds/cryptography_project/rsa.pl if you want to see it.
Note: don't give a long message right now: it takes awhile to compute.
Wolfman2000 learned that the hard way.
pmichaud: alright, I'll not worry about the terminal for now. Guess it's back to November...while waiting for The Price is Right to come on 15:47
TimToady morning, all U :) 15:48
moritz_ UH MORNING 15:49
Wolfman2000 Morning TimToady :)
masak TimToady: are you calling us Objects? or undefined? :P
pmichaud thinks TimToady is objectifying the #perl6 citizens.
masak I object! 15:50
moritz_ well, everything is an object, isn't it? :-)
TimToady well, if I take TheDamian++'s suggestion, it'd be Mu, in which case we couldn't make U puns...which might be a feature
PerlJam masak: Asimov already used that one I think.
moritz_ TimToady: and Mu stands for...?
the successor for lambda? 15:51
PerlJam moritz_: have you read GEB?
moritz_ PerlJam: what is GEB?
Wolfman2000 PerlJam: what moritz_ said
Coke Any perl6 resources pointing folks how to enable utf-8 support?
TimToady Gödel, Escher, Bach
PerlJam mildly boggles
Wolfman2000 Coke: Perl 6 should have utf-8 support out of the box 15:52
moritz_ Coke: that's rather platform specific
Coke Wolfman2000: you misunderstand, I think. I want to edit parts of perl6 that already contain utf8, not use perl6 to mangle utf8.
TimToady but the reference is to the Zen concept of universal nothingness, which is sort of what Object is turning into
pmichaud Coke: what editor do you normally use?
moritz_ Coke: I've found some tutorials on the web for linux, which is what I needed it for
Coke moritz_: yes, but if perl6 is going to push unicode for folks hacking...
moritz_ TimToady: so everything inherits from nothing? 15:53
Coke iwbn to smooth the transition for new hackers.
pmichaud: vi.
perigrin moritz_: no it's a strange loop
PerlJam TimToady: then clearly you should use an "invisible" character :)
dalek vember: d6cd2f8 | (Jason Felds)++ | skins/CleanAndSoft/register (3 files):
Start of registration pages. Copied from login.
perigrin Object should inherit from Object ...
pmichaud Coke: vim understands utf8 natively, at least on my system.
perigrin :)
Coke pmichaud: and not on mine. Hence my request. =-)
moritz_ Coke: what's your locale?
PerlJam Coke: first, install ubuntu ;)
Wolfman2000 Coke: what's your OS? 15:54
moritz_ Coke: and waht's the output of :set fileencoding ?
TimToady moritz_: that which is most universal is almost by definition least defined
pmichaud TimToady: have you read the backscroll discussion(s) yet?
Coke moritz_: unset and unset. 15:55
Wolfman2000 prepares his laptop for the family room...TPIR time!
Coke PerlJam: sadly, no hardware on which to do that.
TimToady not yet, still waiting for coffee, and thinking about Mu
PerlJam TimToady: I think the world needs something a little more concrete to hang their hats on than just U.
pmichaud TimToady: several of us think that Nil should serve most purposes of "undef"
moritz_ Coke: try setting the locale to en_US.UTF-8, if that works on your device
pmichaud and then Object can remain Object
moritz_ I for mostly used the undef term for smart matching 15:56
ie $thing ~~ undef
pmichaud moritz_: yes, U wouldn't solve that.
Coke moritz_: export LOCALE=en_US.UTF-8 ? (no effect)
moritz_ Coke: export LC_ALL=en_US.UTF-8
TimToady pmichaud: Nil works for initializing to undefined, but it doesn't work as an irreducable placeholder in a list, since it is ()
pmichaud TimToady: right, but in such a case I think "Object" is still better than "U" 15:57
moritz_ too
Wolfman2000 alright, I'm set up. Back to November!
Coke moritz_: that changes how it displays in vi, but not in a useful way.
PerlJam suppresses his "me too" reflex'
pmichaud I'm not sure there are that many cases where we need an irreducible placeholder. There's also Any as an irreducible placeholder 15:58
moritz_ Coke: does it change the output of :se fileeencoding?
Coke yes. now that says utf-8
moritz_ Coke: ok, but it's a start..
masak rakudo: say "15" ~~ / (\\d+) <?{{ $I0 = match[0]␤$I1 = 0␤if $I0 > 16 goto fail␤$I1 = 1␤fail:␤.return ($I1) }}>/
moritz_ Coke: now we need to fix your terminal, and screen if you use it
p6eval rakudo 7347ec: 15␤
masak rakudo: say "25" ~~ / (\\d+) <?{{ $I0 = match[0]␤$I1 = 0␤if $I0 > 16 goto fail␤$I1 = 1␤fail:␤.return ($I1) }}>/
p6eval rakudo 7347ec: 2␤
pmichaud masak: heh 15:59
masak: backtracking ftw
moritz_ masak: anchor that regex to ^
masak Wolfman2000: there you go. you might want to adapt that for your commit.
moritz_ Coke: what terminal do you use?
Wolfman2000 masak: adapt what? Sounds like I just missed something
masak rakudo: say "25" ~~ / (\\d+:) <?{{ $I0 = match[0]␤$I1 = 0␤if $I0 > 16 goto fail␤$I1 = 1␤fail:␤.return ($I1) }}>/
Coke moritz_: Terminal.app
p6eval rakudo 7347ec: 5␤
Coke ;(bash)
masak :)
rakudo: say "25" ~~ / ^ (\\d+:) <?{{ $I0 = match[0]␤$I1 = 0␤if $I0 > 16 goto fail␤$I1 = 1␤fail:␤.return ($I1) }}>/ 16:00
Coke (and yes, I'm using screen.)
p6eval rakudo 7347ec: ␤
Wolfman2000 masak: ...if I understood that, I'd put it in.
moritz_ Coke: in screen Ctrl+a :utf on <return>
masak Wolfman2000: how may I assist you?
moritz_ erm, utf8
Wolfman2000 Let's start with the basics. I'm guess <?{{ ... }}> means PIR 16:01
Coke moritz_: done. 16:02
moritz_ Coke: does it change anything?
Wolfman2000 masak: am I right so far?
16:03 nihiliad joined
Coke moritz_: not that I can see. (created a new window, tried to re-edit that file; looks the same.) 16:03
16:03 ejs joined
moritz_ Coke: detach that screen, and on the outside try this in your terminal: 16:03
perl -CS -wle 'print "\\x{20AC}"'
if you see an Euro sign, the terminal works with UTF-8 16:04
Coke â¬
moritz_ ok
Coke so, let me start a new session with LC_ALL set everywhere.
moment.
moritz_ Coke: can't help you with fixing your terminal, I know next to nothing about the Mac
Coke moritz_: at the moment, I'm going through putty to get to bash to get to screen to get to bash. 16:05
(so, I lied, I only use Terminal.app at home. whoops)
foudn a putty setting...
moritz_ Coke: in putty you can switch to UTF-8 in the menu under "view"
Coke yes, doing that worked for your perl snippet. no effect on vi, it seems. 16:06
masak Wolfman2000: yes.
ash_ Coke: what version of os x? 16:07
Coke ash_: 10.4.mumble
masak Wolfman2000: and the '?' in there means it's an assertion, so it assits in passing or failing the match.
moritz_ Coke: does the locale command give you any output?
anyway, Coke is right, we need a proper tutorial for that kind of things 16:08
Wolfman2000 masak: alright...I'm guessing match[0] is the first match found, and that's stored in $I0. In this case, 25 was found, so that's the first match. However, that's...aha... 16:09
Coke moritz_ : nopaste.snit.ch/18832
pmichaud pmichaud@plum:~/nqp-rx$ ./nqp
> token foo { \\d ** 1..Inf }
Only integers or '*' allowed as range quantifier endpoint at line 1, near "Inf }\\n"
lambdabot <no location info>: parse error on input `\\'
Coke should I also set LANG?
masak Wolfman2000: all correct so far. 16:10
Wolfman2000 rakudo: say 66666 ~~ / ^ (\\d**1..5) <?{{$I0 = match[0]␤$I1 = 0␤if $I0 > 65535 goto fail␤$I1 = 1␤fail:␤.return ($I1) }}>/
p6eval rakudo 7347ec: 6666␤
moritz_ Coke: yes, please try that
Wolfman2000 masak: not quite there...
masak Wolfman2000: right. and then we have to prevent that from happening. :)
moritz_ (though it shouldn't really matter much)
Wolfman2000 rakudo: say 66666 ~~ / ^ (\\d+:) <?{{$I0 = match[0]␤$I1 = 0␤if $I0 > 65535 goto fail␤$I1 = 1␤fail:␤.return ($I1) }}>/ 16:11
dalek vember: 9dc4827 | (Jason Felds)++ | skins/CleanAndSoft/register (3 files):
Actually use registration lingo, not login lingo.
p6eval rakudo 7347ec: ␤
Wolfman2000 I wonder what \\d+: means...don't recal that
masak rakudo: say 66666 ~~ / ^ (\\d**1..5) <?{{$I0 = match[0]␤$I1 = 0␤if $I0 > 65535 goto fail␤$I1 = 1␤fail:␤.return ($I1) }}> <!after \\d> /
p6eval rakudo 7347ec: ␤
masak rakudo: say 65534 ~~ / ^ (\\d**1..5) <?{{$I0 = match[0]␤$I1 = 0␤if $I0 > 65535 goto fail␤$I1 = 1␤fail:␤.return ($I1) }}> <!after \\d> /
p6eval rakudo 7347ec: ␤
masak dang. :)
Coke moritz_: no effect.
masak what zero-width assertion should I use meaning 'there is no digit after this'? 16:12
Wolfman2000 what's the problem? Wait...65534 isn't greater than 65535
masak Wolfman2000: \\d+: means 1..* and doesn't backtrack.
moritz_ Coke: ok, let's go through the layers again... putty + screen + vim, anything else?
masak Wolfman2000: right, so it should pass.
Coke moritz_: there's a bash in there, before the screen and inside...
masak rakudo: say 65534 ~~ / ^ (\\d**1..5) <?{{$I0 = match[0]␤$I1 = 0␤if $I0 > 65535 goto fail␤$I1 = 1␤fail:␤.return ($I1) }}> <!before \\d> /
moritz_ (bash is not important)
p6eval rakudo 7347ec: 65534␤
Coke oh, let me reexec the outermost bash.
masak rakudo: say 65536 ~~ / ^ (\\d**1..5) <?{{$I0 = match[0]␤$I1 = 0␤if $I0 > 65535 goto fail␤$I1 = 1␤fail:␤.return ($I1) }}> <!before \\d> /
p6eval rakudo 7347ec: ␤
Wolfman2000 before, not after 16:13
masak Wolfman2000: there you go.
Wolfman2000: I always get those two mixed up. :P
Coke (no effect)
Wolfman2000 I still ahve to relearn those
masak need to think of a good mnemonic.
TimToady some screens need -u, I think
moritz_ Coke: you can also start screen with the -U option to avoid having to :set utf8 on
Coke moritz_: already updated my alias for that, danke.
moritz_: works if I avoid screen. 16:14
TimToady yeah, -U, I mean
Coke lemme try a brand new screen.
TimToady also, could be an old screen
Coke moritz_: that's probably it.
brb. 16:15
dalek vember: 1311963 | (Jason Felds)++ | lib/URI/Grammar.pm:
Use PIR for simpler code. Thanks masak++!
16:17
16:19 Coke joined
Coke moritz++ 16:19
moritz_ tëst :-) 16:21
dalek vember: 7163bd1 | (Jason Felds)++ | lib/November.pm:
Recognize the start of the registration page.
16:22
Wolfman2000 If nothing else masak, you've got more material for your blog. I'm actually contributing to Web.pm indirectly now. 16:23
masak :)
Wolfman2000++
and to November directly.
Coke moritz_: woot. 16:24
(i made no changes to irssi, I'm surprised that worked. =-)
16:24 ejs joined
Wolfman2000 Few more good changes, and I can perhaps be on a proper credits page for Perl 6 development. 16:25
masak Wolfman2000: oh, speaking of that, please add yourself to AUTHORS. 16:27
in the November repo.
16:28 ejs joined
dalek vember: 209696c | (Jason Felds)++ | AUTHORS:
Add myself properly.
16:28
Wolfman2000 not much to that one 16:29
masak: silly question... why do you have this style of if statement: my $user_name = $.cgi.params<user_name>? Shouldn't it be ==, or is there some sort of trick to this? 16:32
masak Wolfman2000: the latter.
there's some sort of trick to this.
Wolfman2000 ...it depends on $.cgi.params 16:33
Su-Shee Wolfman2000: it gets the value of the hashkey of cgi.params which is called username wich comes from a form.
masak it's a simultaneous assignment and truth test.
Su-Shee user_name
Wolfman2000 Thought so
masak Wolfman2000: == would have been wrong for another reason. it's a numeric test, not a string test.
[particle] thinks assignment in conditional expressions is bad form 16:34
masak YMMV.
nowadays, I'd probably do `if $.cgi.params<user_name> -> $user_name { ... }`
actually, nowadays I'd probably do $user-name :) 16:35
Wolfman2000 That -> operator is still mysterious to me.
masak Wolfman2000: it says 'here are the parameters that this block takes'.
Wolfman2000 Anyway...are there any restrictions on the password that people should use?
TimToady that's because it's not an operator, it's Perl's version of lambda
masak Wolfman2000: not that I can think of right now.
Wolfman2000: maybe some length restriction, for sanity's sake. 16:36
Wolfman2000 rakudo: say "test" neq "Test" 16:37
p6eval rakudo 7347ec: Confused at line 2, near "neq \\"Test\\""␤in Main (file <unknown>, line <unknown>)␤
Wolfman2000 rakudo: say "test" ne "Test"
p6eval rakudo 7347ec: 1␤
Wolfman2000 ...I'm tempted to just add an infix for neq
moritz_ rakudo: say "Test" !eq "test"
Wolfman2000 ColdFusion requires neq
p6eval rakudo 7347ec: 1␤
moritz_ Wolfman2000: you mean two ways to do it aren't enough? :-)
Coke someone here is using coldfusion?
I thought it was just me!
Wolfman2000 Coke: I do contract web development work for a company that uses ColdFusion 16:38
masak I thought it turned out that cold fusion was a hoax.
moritz_ masak: it is :-)
masak ah. good. :)
back to out regular, very hot fission, then. :)
Wolfman2000 masak, moritz_: the language is pretty powerful. However, I'm not liking the idea of moving the language to the cloud though. 16:39
That's what ColdFusion 9 has basically done.
masak no, I'm not sure I'm all crazy about the cloud either.
Coke I was thinking of doing an implementation of CF8 onto parrot so we could get mod_cfmx.
(but the lack of a good DBI atm would pretty much kill that.) 16:40
I may revisit that once partcl is redone using nqp-rx, I'll probably have a much better idea of how to do it. =-) 16:41
Wolfman2000 ColdFusion Parrot? ...depending on what tags we can get from them, that may be very good.
ColdParrot? Sounds like a Dead Parrot though
masak FusedParrot. 16:42
Wolfman2000 rakudo: my $test = undef; say $test.chars 16:43
p6eval rakudo 7347ec: Use of uninitialized value␤0␤
Wolfman2000 ...right, need to learn how to turn off warnings now and then 16:44
rakudo: my $test = undef; my $tmp = undef; say $test eq $tmp;
p6eval rakudo 7347ec: Use of uninitialized value␤Use of uninitialized value␤1␤
PerlJam Wolfman2000: AFAIK, there is no mechanism to turn them off yet in Rakudo 16:45
masak rakudo: my $test; my $tmp; say ($test // '') eq ($tmp // '')
ash_ am i doing this right? rx:g/(\\d[^\\d]*?)/ i want to make that a global match, aren't you supposed to do rx:g// for that?
p6eval rakudo 7347ec: 1␤
moritz_ ash_: you are, but it's not implemented yet 16:46
ash_ oh
moritz_ ash_: but you can use Str.comb for that
16:46 rfordinal joined
moritz_ rakudo: say 'a23b89e6'.comb(/\\d+/).perl 16:47
p6eval rakudo 7347ec: ["23", "89", "6"]␤
moritz_ rakudo: say 'a23b89e6'.comb(/\\d+/)[0].WHAT
p6eval rakudo 7347ec: Str()␤
moritz_ rakudo: say 'a23b89e6'.comb(/\\d+/, :match)[0].WHAT
p6eval rakudo 7347ec: Str()␤
moritz_ hm, :match NYI (but implemented in ng)
Wolfman2000 rakudo: my @test; say @test.elems;
p6eval rakudo 7347ec: 0␤ 16:48
masak rakudo: say "foo" ~~ m:foo:
p6eval rakudo 7347ec: Colons cannot be used as delimiters in quoting constructs at line 2, near ":foo:"␤in Main (file <unknown>, line <unknown>)␤
masak rakudo: say "g" ~~ m:g:
p6eval rakudo 7347ec: Colons cannot be used as delimiters in quoting constructs at line 2, near ":g:"␤in Main (file <unknown>, line <unknown>)␤
PerlJam rakudo++
16:48 RonOreck joined
moritz_ ash_: and \\d[^\\d] looks much like Perl 5 regex to me :-) 16:49
ash_ moritz_: i am not used to perl 6's changed to regexs, they are new to me, i am toying with them to try to understand them better 16:50
16:50 takadonet joined
frew pmichaud++ # exciting journal post! 16:50
Wolfman2000 ash_: Try <digit>[^<digit>] to use Perl 6 perhaps? 16:51
PerlJam or \\d\\D
moritz_ or just \\d\\D+
Wolfman2000 frew: which journal post? I've been too focused on November this morning.
moritz_ Wolfman2000: that's wrong too
[] is not a char class
so ^ anchors to the start of string 16:52
frew Wolfman2000: use.perl.org/~pmichaud/journal/39939?from=rss
dalek vember: 20c161d | (Jason Felds)++ | lib/November.pm:
Implementation of registration method: not done.
p-rx: fb49c3e | pmichaud++ | src/NQP/ (2 files):
Treat leading '-' as part of numeric literals.
16:53
p-rx: fafe401 | pmichaud++ | src/Regex/P6Regex/Grammar.pm:
Add error message on incorrect range quantifiers.
p-rx: d982340 | pmichaud++ | src/stage0/ (3 files):
Update bootstrap.
ash_ moritz_: oh, [] aren't character classes anymore? man i just need to read S05 top down and not assume i know regex's 16:54
masak Wolfman2000: you're mixing K&R and BSD brace style. November genrally uses BSD style.
moritz_ ash_: or you could read the (unfinished) book chapter on regexes
ash_: it covers less, but is likely easier to read
Wolfman2000 masak: I've lost track on all of the different styles.
moritz_ (if we did a good job, at least :-)
masak Wolfman2000: also, I'd prefer `if @array` or `if ?@array` to `if @array.elems`. 16:55
ash_ moritz_: is that on perlcabal?
masak Wolfman2000: BSD is `keyword {\\n`
moritz_ ash_: cloud.github.com/downloads/perl6/bo...009-11.pdf
or source at github.com/perl6/book/
Wolfman2000 rakudo: my @tmp; if @tmp { say "Hi"; } else { say "Bye"; }
p6eval rakudo 7347ec: Bye␤
Wolfman2000 masak: that does simplify things
masak aye. Perl tends to do that. :) 16:56
ash_ moritz_: thanks, i'll read over that
dalek vember: 9089b28 | (Jason Felds)++ | lib/November.pm:
Style fix.
16:59
17:00 iblechbot joined
masak Wolfman2000: also, it seems to me only one of the pushed errors at a time makes any sense, and that later ones should not be checked once one matches. 17:00
Wolfman2000 masak: Seen different implementations.
17:00 ash__ joined
masak Wolfman2000: what I mean is, if $password turns out to be undefined, it'll go on to throw an undef warning, and give the (useless) error that the password is shorter than six chars. 17:01
that seems less than desirable.
Wolfman2000 ...point
masak actually, the others are fine in that regard, now that I think about it. 17:02
17:02 rfordinal left
Wolfman2000 I'll let you handle that commit bit if you want. 17:02
masak sure, no problem. 17:03
ash__ moritz_: what is the 'perl 6' way of doing while (<>) ? 17:04
17:04 nothingmuch joined
moritz_ for $*IN.lines { } 17:05
Wolfman2000 doublechecks something in November.pm...something's off
moritz_ I think there's also an $*ARGS magic thing
nto sure though
Wolfman2000 moritz_: @*ARGS
moritz_ Wolfman2000: that's not what I mean
PerlJam Wolfman2000: yes, but how to do the same magic that <> does in perl 5?
ash__ moritz_: did the rules for implicit function arguments change? so you can't just call chomp after you do for $*IN.lines?
moritz_ ash__: yes, they changed, and no, you don't need chomp 17:06
Wolfman2000 PerlJam: ...don't recall that one
moritz_ rakudo: say $*IN.get
p6eval rakudo 7347ec: Land der Berge, Land am Strome,␤
moritz_ and newlines comes from the say, not from the line 17:07
rakudo: print $*IN.get
p6eval rakudo 7347ec: Land der Berge, Land am Strome,
moritz_ anyway, need to decommute, see you all tomorrow evening 17:08
ash__ moritz_: well, i wasn't using chomp, just wanted to use it as an example, i have been trying to learn perl 5 so i can get a better grasp of perl 6, i bought the Learning Perl book
PerlJam ash__: for lines() { ... }
masak moritz_: see you!
PerlJam See S04:523 17:09
ash__ thanks PerlJam++
Wolfman2000 masak: first question...why do you use sha256 for the username, then hash that with the password? That sounds redundant. second: where IS sha256 implemented right now? I looked in Digest.pm, but that file doesn't exactly contain...well, the implementations.
PerlJam ash__: not sure of its implementation status though
masak Wolfman2000: first: that's standard procedure. it's called salting, IIRC.
Wolfman2000: second: in Digest.pm.
Wolfman2000 masak: That's generally...not how I've seen salting done 17:10
masak Wolfman2000: ISTR MediaWiki does exactly that.
Wolfman2000: ah, the actual implementation is somewhere in Parrot.
Wolfman2000: Digest.pm is only a thin wrapper.
viklund++
Wolfman2000 masak: Would it be better if we used a Pure Perl implementation, or are the binary strings not ready yet? 17:11
dalek vember: e7ff443 | masak++ | lib/November.pm:
[November] various changes

  - changed to single-quoted strings
  - reworded strings and comments
ash__ most people salt passwords with either a random string like the timestamp of when the user register divided by 42, or something, so you can't guess the salt + password for a dictionary lookup on an encrypted password
17:11 cdarroch joined
masak Wolfman2000: actually, I started out writing a pure Perl 6 implementation. that was August 2008, but at that time I soon gave it up. 17:12
Wolfman2000: I'm not sure the landscape has changed much since then. of course, others might have more success than I did anyway.
Wolfman2000: another concern is that I don't want to do something that turns out to be extremely slow. 17:13
Wolfman2000 masak: I was going to try MD5/SHA, but I was informed adding bits to strings isn't quite working yet
masak Wolfman2000: correct.
there are always workarounds, of course.
but not always enjoyable ones.
Wolfman2000 Those workarounds are probably the slower ones. 17:14
If you were to run my rsa.pl file...well, don't pass a string of more than 5 characters.
17:15 cognominal_ joined
jnthn pmichaud: ping 17:20
pmichaud jnthn: pong
jnthn pmichaud: *sigh* :-(
pmichaud: Run into something...frustrating.
pmichaud: You know how a while back we switched to doing class declarations by having a sub that did the init and calling it from the .loadinit of the package? 17:21
Juerd can haz interwebs in his new home! :)
Coke Juerd++
masak Latvia++ # calls the Internet 'Internets' by default
jnthn pmichaud: Well, I just extended that to roles too...so they exist "early enough"
role Bar { }; class Foo does Bar { }; 17:22
Leads to building two blocks doing the setup for a role and a class respectively.
And calling them from the package.
Apart from...this doesn't actually work out.
PerlJam What does the ! suffix mean in a RE? like / [foo]+! / 17:23
jnthn Because we never get to call the loadinit that sets up the signature of the role until too late.
pmichaud why doesn't it work out ?
PerlJam (force eager?)
jnthn So we're missing a signature and then blow up.
Wolfman2000 switches out of ng...I'll stick with November/Web.pm for now
pmichaud jnthn: can we set up the signature as part of the block in the package's loadinit ? 17:24
PerlJam: it forces greedy backtracking
jnthn pmichaud: I guess so, but we're probably only postponing the problem until later...
pmichaud jnthn: why? 17:25
jnthn pmichaud: That is, it'll fix this issue.
pmichaud jnthn: I guess I'm not seeing the overall problem.
jnthn pmichaud: But if we end up needing to define class A and then want to call a method on class A as part of a following class's construction... 17:26
Granted, that's not likely for a while.
(e.g. until custom metaclass-y stuff lands)
pmichaud jnthn: then all of our class setup needs to happen at BEGIN time
jnthn But it will bite us at some point in the future.
Well, the issue is ordering. 17:27
pmichaud as in, called from the package's loadinit
jnthn At the moment we end up setting up block signatures in the block's loadinit.
Whereas we may need them before that.
pmichaud oh
jnthn Because the order of the code is:
pmichaud that seems wrongish
Juerd PerlJam: ! forces greedy. Apparently eager is the opposite of that, and written as ?. 17:28
jnthn packages loadinit class init for foo and then init for bar
and after it, the loadinit of the blocks
as in, the methods within foo and bar.
PerlJam Juerd: aye, thanks. That's what I meant though it didn't come out that way :)
pmichaud what I'd *really* like to see happen is for block signature setup to happen lazily. 17:29
jnthn Well, there's that approach too...if it can be got right.
It would maybe fix the immediate problem too. 17:30
Well, most likely it would.
Could also give a startup win.
Maybe I'll work on that. 17:31
pmichaud does the block signature setup need to occur in the namespace of the block ? 17:33
I guess it does.
jnthn Yeah...probably in the correct lexical scope too...
pmichaud yes, that also.
jnthn We can still handle that though. 17:34
pmichaud btw, if things can be designed in terms of phasers, that code works already.
jnthn Hmm...perhaps. 17:35
ng_feed rakudo-ng: jnthn++ 17:36
rakudo-ng: RoleHOW should not inherit from ClassHOW; correct that.
rakudo-ng: jnthn++
rakudo-ng: Fix to role code generation to make sure we get declaration order correct.
rakudo-ng: jnthn++
rakudo-ng: Tweaks to traits.
17:36 mberends joined
ng_feed rakudo-ng: jnthn++ 17:36
rakudo-ng: Fill out role applier determination logic.
jnthn I'll have a crack at the lazy sig init. Finding some fix to this is blocking me doing more on roles anyway. 17:37
17:44 electronoob joined
pmichaud jnthn: if we start creating things in terms of phasers then I think it might work out better in the long run 17:48
in this case it might mean actually creating blocks that are then register using '!add_phaser'('BEGIN', initcode) 17:49
gone for lunch -- bbiah 17:51
pugs_svn r29186 | lwall++ | much less tentatively go with the Mu suggestion from TheDamian++
pmichaud "Mu" is less troublesome than "U", but I'm still not sure I like it better than "Object". 17:53
masak pmichaud: I was just going to say exactly that!
it feels like it's a problem that didn't need fixing.
pmichaud oh, we definitely needed a clearer handle on "undef" -- that needed fixing. 17:54
masak in terms of speaking to people's preconceived notions, Object stirs up associations. Mu doesn't.
pmichaud but I'm not sure it requires a change to the base Object class.
masak also, Object _feels_ like the top of the hierarchy. Mu doesn't.
perigrin Mu stirrs up associations 17:55
pmichaud it's not the hierarchy-ness that bugs me -- it's just that writing things like sub xyz(Mu $x) { ... } doesn't really tell me much
perigrin just not neccessairly the right ones
pmichaud whereas sub xyz(Object $x) { ... } is a lot more direct
masak pmichaud: right. I think that's a consequence of the hierarcy-ness. 17:56
pmichaud maybe
anyway, lunch
PerlJam pmichaud: How often do you think that you will write sub xyz(Mu $x) ?
Wolfman2000 μ This mu?
perigrin no
masak an Object, sure, then I get that you can pass in everything. a Mu... wtf?
pmichaud PerlJam: anytime I need to have a sub that doesn't thread?
PerlJam: let's just say it happens frequently enough that "Mu" doesn't quite work for me 17:57
masak PerlJam: there are real-world examples in the November source code.
jnthn It should be called Object. 18:00
masak jnthn: good idea! that's descriptive, and easy-to-remember.
jnthn I haven't seen a single argument for it not beeing that's convinced me otherwise.
I certainly don't plan to adopt the name change into Rakudo any time soon. 18:01
18:01 stephenlb joined
masak jnthn: I'm glad. that means I don't have to convert tons of code. 18:01
...for a change I don't believe in.
jnthn Right. 18:02
My reasoning too. ;-) 18:03
masak food &
pmurias is using an unicode character for Mu allowed? ;) 18:04
jnthn pmurias: May as well...it'll be just as meaningless to anyone reading the code. </snark> ;-) 18:05
perigrin does Mu have identity? 18:07
TimToady the basic problem with Object is that it fights *hard* with the concept of undef
PerlJam I don't see a huge use of Object anywhere.
Test.pm is the biggest "external" user
TimToady and an almost bigger problem is that people think they understand Object, and it should be something more ineffable so they don't jump to conclusions 18:08
jnthn TimToady: Yes but Object is pretty useless to write in place of undef.
18:08 estrabd_ joined
jnthn TimToady: At least, as soon as you've got a typed variable. 18:08
TimToady: And given Nil is spec'd now as magically setting the right type of undef in the thing it's assigned/bound to, I don't see why anyone would write Object in their code to set an undef. 18:09
It'd be a bad practice anyway.
TimToady it's more the output that I'm worried about
if it says Object() people have to mentally translate that to "oh, that's the most undefined value" 18:10
Wolfman2000 ...and Objects are not meant to be undefined.
But Mu...is?
jnthn TimToady: Yes, but as soon as they instead write my Int $x; we're back to exactly the same problem.
TimToady yes, Mu has a long history of being defined as undefined
Wolfman2000 ...right...Earthbound 18:11
Mu = emptiness
pmurias TimToady: .perl can use undef instead of Object()
TimToady jnthn: what problem is that?
Wolfman2000
jnthn TimToady: That the output will be Int, not Object.
Well, or not some other thingy.
TimToady well, the Int at least conveys Int-ness, and the Mu conveys Mu-ness 18:12
jnthn TimToady: To most people, I rather suspect that Mu will mean nothing more in the output than Object would. 18:13
pmurias ah, there seems not to be an &undef in Perl6
jnthn And to many people, less.
PerlJam jnthn: learn once, use many
TimToady then they'll look it up, which they won't for Object
mberends $x = Umm; # let's call it Umm
TimToady +.5 :) 18:14
jnthn TimToady: I don't think this is going to be worth the cost of having to call the thing at the top of the object hierarchy Mu.
Wolfman2000 umm...unsure? Honestly...I can somewhat see TimToady's idea of Mu
jnthn TimToady: And having to explane that.
TimToady I do
pmurias Mu seems to be the sort of thing people will mention to make fun of Perl 6 18:15
PerlJam "... and with one small stroke, the Perl 6 community was fractured into the Mu-men and the Objectivists" ;)
TimToady good
we like fun
it will also mark it as Way Cool to anyone who's read GEB :)
perigrin Mu 18:16
Wolfman2000 At least Mu has a meaning in Japanese. I can understand it
Perl 6...the world language
TimToady durn western objectivists... :
:)
mberends that's Mew in Lolcat
TimToady the pun is intended :)
also Moo
perigrin se 18:17
jnthn TimToady: I'm not sure the problem isn't more the conflation of undefindness and type objects...
*undefinedness
TimToady oh, great, now you want to break the fundamental type theory of Perl 6 :/
mberends how 'but Nix ?
TimToady I just want to change the name :)
jnthn I don't really want to change either... :-/
TimToady Nix is good for undef, but not good for the atom from which everything else comes 18:18
mberends trew
TimToady Nit would be better, except it also lousy
mdxi Nyx, then? :)
Wolfman2000 so we've got Mu, μ, and 無
(all of those are mu)
TimToady and Moo
Wolfman2000 I have to strike down Moo 18:19
TimToady it means everything and nothing to a cow
what do you have against cows?
pmurias we could name it Top as it's the topmost type
Wolfman2000 But we're...butterflies right now
TimToady: long as they are medium rare and in a burger form, nothing
TimToady Top doesn't covey undef
jnthn And Mu immediately does? 18:20
Wolfman2000 jnthn: Mu = emptiness
TimToady do literate people :P
*to
pmurias CheckThisUp?
jnthn Erm, yes, I'm sure Joe-average programming will immediately make the association.
pmurias * LookThisUp
Wolfman2000 jnthn: Joe-average knows Street Fighter
The character Akuma/Gouki has the character Mu on the back of his gi.
jnthn Wolfman2000: I guess I'm just not average.
Wolfman2000 ...wait, I'm thinking the wrong character. 18:21
TimToady Joe-average will say "Whoa, dude! That must be something special!"
Wolfman2000 Akuma/Gouki has a character, but the wrong one
...I think it's Gen that has Mu
PerlJam jnthn: is your "top of the object hierarchy" argument based solely on the fact that it'll be something programmers will have to look up?
jnthn PerlJam: It feels like we've gone from a name that at least had some clear cultural meaning of one of the things it is to something that has none. 18:22
TimToady Mu also is short for Mushy, which is a good characteristic for anything outside the discrete Any
PerlJam jnthn: I agree and I kinda think that's the point. 18:23
TimToady not true
there's lots of history for Mu
PerlJam TimToady: I think you and jnthn are talking about different cultures now :)
TimToady even in hacker culture, there's lots of history for it
Coke fwiw, I'm not a perl6 guy, and I get mu.
Wolfman2000 TimToady++ for 無!
Coke moritz++ for the kanji that's now showing up in my window. 18:24
Wolfman2000 Emptiness...clarity.
Coke: what font do you have?
Coke Courier new
jnthn The problem with it showing up in the output could perhaps be solved by having type objects complain if you stringify them ("use of undefiend value"), and you need to use .perl if you want to get at the name of the class.
Wolfman2000 dejavu-fonts.org/wiki/index.php?title=Main_Page Try this one. If we're going to allow more unicode, we may as well have a universal font for it.
Tene try { say("trying..."); 18:25
}
jnthn That deals with the "undefiend things showing up in output" for all types.
TimToady that's newbie friendly but very expert-unfriendly
this is a spot where I want to be expert friendly 18:26
Tene Ooo! Use strikethrough when printing an undefined type!
Coke tene: ^_-
TimToady especially when you print out a match object full of Mu values
jnthn Hmm, true.
Always stringify to undef? :-) 18:27
TimToady the decider for me was I hated to see (Object,Object,Object,Object,"foo","bar")
PerlJam we could call it "Mud" :)
Wolfman2000 PerlJam: perhaps Mu should be kept so that it can mean Mu, Mud, Mushy, 無, Moo, etc.
jnthn But then I guess we lose the name of the type.
TimToady I'd *much* rather see (Mu,Mu,Mu,Mu,"foo","bar") on output
PerlJam FWIW, I didn't like U at all, and I'm warming up to Mu (at least I can see TimToady's side of things better if it's called Mu) 18:28
jnthn TimToady: I'm not convinced, but at lesat now I see your arguments.
Wolfman2000 Once I remembered what Mu meant, I'm with TimToady too.
TimToady is all I ask for now :)
well, that, and changing rakudo :P
Coke Wolfman2000: looks nifty. if only it came with instructions on how to install it. =-) 18:29
TimToady but hey, I haven't even changed STD yet...
Tene TimToady: You could always submit a patch.
Wolfman2000 Coke: there should be a common font directory to place the TTF files.
jnthn TimToady: Heh. There's deeper questions yet on what Object...er...Mu...actually should be in some senses anyway.
TimToady: That is, is it an instance of some class Mu. 18:30
PerlJam I see only 130 lines that mention Mu in Rakudo :)
er, s/Mu/Object/
:-)
jnthn TimToady: Or is there some other more prototype-ish thingy that things all fall out from.
Coke Wolfman2000: (found some win32 specific instructions, whee.)
jnthn (This is coming from lots of recent metamodel pondering...)
TimToady Mu is just a type object 18:31
Wolfman2000 Coke: I'm primarily on Mac OS X, and I was able to figure it out.
Coke ... ew.
TimToady representing the most universal object class
jnthn TimToady: OK, so it's just a type object representing a class. That answers my question.
Coke (to the font, not your OS. =-)
TimToady there's no instance, and Mu.new could arguably fail, or return an empty object
18:32 zamolxes joined
TimToady it's just the "least typed" undef 18:32
mberends not failing would encourage bad habits in some programmers
jnthn Well, Mu is a type object for an Object class in the same sense that Int is a type object for an Int class, etc?
PerlJam mberends: not necessarily.
Mu.new could be the same as Mu 18:33
TimToady and it's not like it's difficult to say class Peg {} if you really need an empty object
jnthn True.
TimToady Mu.new would presumably be defined if it worked
Mu.defined is false
jnthn Yeah.
TimToady Nil.defined is also false, but not intrinsically; that one is rather forced, since in some sense a null list is defined 18:34
18:35 cognominal joined
TimToady also, Nil is a value, not a type 18:35
it's just the () value, so by that argument could also be defined
jnthn It's just whatever &infix:<,>() would give back, yes?
e.g. an empty parcel? 18:36
TimToady rakudo: say [].defined; say ().defined
p6eval rakudo 7347ec: 1␤0␤
Wolfman2000 ...so a reference can be defined, but not the actual list?
TimToady in the case of [], it's the container that is defined
as I said, we could easily make ().defined return true too, but it seems like it works a little better to force it the other way, insofar as Nil also represents a missing value 18:38
in fact, arguably, binding Nil to a scalar parameter with a default should set the default, unlike Mu
which up till now we've not had a way to do, apart from not passing the argument 18:39
Wolfman2000 ah, here's what I'm looking for...S32 - Containers. *gets to reading* 18:40
TimToady in other words, foo(0) is indistinguishable from foo(0,|(Nil xx *)) 18:41
jnthn Would that even make it so far as the signautre binder though? 18:43
Or would it have evaporated during the constructor of the capture?
*construction
(feels to me more like the latter) 18:44
18:46 ash_ joined
TimToady well, but you can't throw out Nils that soon, or foo(0, (), 1) will be missing its middle arg 18:49
you can't throw out () till you know it's in list context
jnthn Ah.
TimToady and it's also important in slice context 18:50
jnthn But doesn't the xx but the Nil into list context?
TimToady no
18:50 snearch_ joined
jnthn Ah, ok 18:50
TimToady xx isn't a list infix
jnthn Hmm
I guess the sig binder would have to know about Nil then 18:51
TimToady well, it has to know about () if it doesn't know about Nil :)
jnthn I guess that means it has to know what to do with a parcel when handling an optional parameter. 18:52
And if it's an empty parcel, it treats it as "nothing passed" or something.
TimToady rakudo: sub foo($a,$b,$c) { say "a $a b $b c $c" }; foo(1,(),3)
p6eval rakudo 7347ec: Use of uninitialized value␤a 1 b c 3␤
TimToady okay, that one's fair
jnthn ;-) 18:53
TimToady since concatenation is effective ~ and we've said that will warn
I wonder how we're going to do the same thing that Perl 5 does and tell you which variable is undefined, if known...
Wolfman2000 TimToady: do we have to do the same thing Perl 5 does? 18:54
TimToady no, but it's pretty useful behavior
PerlJam Wolfman2000: yes!
TimToady and closely related to a problem in testing that we're trying to solve
jnthn Yeah, I'd wondered how on earth to do that efficiently.
TimToady currently we can say: ok $a ~~ "value", "message" 18:55
Wolfman2000 just thought I'd ask. Alright, back to my synopsis reading
TimToady but we lose the information about what the args were in the output
which is why people want to say: is $a, "value", "message" instead
we've had various theories about how to capture the information for an arbitrary comparison, but capturing the information for an arbitrary ~ is much the same problem 18:56
that's something I've been mulling for a long time 18:57
Wolfman2000 rakudo: my $tmp = "Hi!"; say $tmp.encode; 18:58
p6eval rakudo 7347ec: Buf()<0x2b73c158a268>␤
jnthn TimToady: I guess one way is to just have every container know it's name, but, well... 18:59
It's maybe a tad inefficient.
Wolfman2000 ...if someone can care to explain how H in hex doesn't exactly mean 47 here, that would be appreciated.
TimToady rakudo: sub foo($a,$b,$c) { say (:a($a),:b($b),:c($c)).perl }; foo(1,(),3)
p6eval rakudo 7347ec: ["a" => 1, "b" => undef, "c" => 3]␤
18:59 yahooooo joined
Wolfman2000 ...hah. Nicely done TimToady++. You updated S02 on Feather to talk about the Mu type 19:00
TimToady I'm wondering if we have developed Parcel enough that we could return one of those from .perl and be lazy on the itemness 19:01
19:03 Woodi joined
TimToady especially if interpolating (...) into an eval makes a Parcel naturally. 19:03
Wolfman2000 ...at this rate, I'm wondering if I'm understanding Buf properly 19:05
rakudo: say "A" & "a"; 19:06
p6eval rakudo 7347ec: all("A", "a")␤
Wolfman2000 ...right, need the binary form
rakudo: say "A" +& "a";
p6eval rakudo 7347ec: 0␤
Wolfman2000 rakudo: say "A" ?& "a"; 19:07
p6eval rakudo 7347ec: 0␤
Wolfman2000 rakudo: say "A" ~& "a";
p6eval rakudo 7347ec: A␤
Wolfman2000 How fast are string bitwise operations anyway? If they're fast enough, I can try to implement one of the hashing algorithms possibly. 19:08
rakudo: say "“Unicode”".subst(/./, { ord($/).fmt('%X') }, :global); 19:17
p6eval rakudo 7347ec: 201C556E69636F6465201D␤
diakopter ng: my $a=1000; 1 while --$a; say 'done' 19:20
p6eval ng 6fb0a0: Missing block at line 1, near "; say 'don"␤current instr.: 'perl6;HLL;Grammar;panic' pc 519 (src/stage0/HLL-s0.pir:336)␤
diakopter masakbot: bug ng: "parse fail" my $a=1000; 1 while --$a; say 'done' 19:22
Wolfman2000 diakopter: not seeing the bot
jnthn diakopter: We ain't filing bugs on ng at the moment - I'm quite sure there'll be a spectest for that.
diakopter :)
Wolfman2000: it's my imaginary friend bot 19:23
diakopter files bugs in the irclogs only
jnthn :-)
Hmm. I might just have made lazy signature building work... 19:24
Wolfman2000 rakudo: say chr(8); 19:27
p6eval rakudo 7347ec: ␤
Tene jnthn: pmichaud says that laziness in ng needs a refactor, yes? 19:28
Wolfman2000 rakudo: say chr(65);
p6eval rakudo 7347ec: A␤
jnthn Tene: Yes, but that's unrelated to what I just did. :-) 19:29
Tene: I just got us to construct signature objects the first time we invoke a sub/method.
diakopter gives up on Perl 6 in favor of Rexx
pmichaud jnthn: ...or ask it for its signature, I hope?
jnthn pmichaud: Yeah
Tene jnthn: I was excited to write lazy gather/take, but then sad when I discovered that it needs to block on a refactor. :( 19:30
diakopter ( :) )
jnthn pmichaud: Well actually...if we don't find the signature in the prop when we want to bind, we just got and call .signature...
Wolfman2000 rakudo: my $tmp = chr(0) ~ ' ' ~ chr(0); say $tmp.chars
jnthn *go
p6eval rakudo 7347ec: 3␤
pmichaud jnthn: that's what I was hoping for :)
jnthn pmichaud: It seems to work apart from a bizzare new test fail.
pmichaud Tene: I still have to work out the whole laziness interface a bit.
and flattening
jnthn It's raining lots outside, and I need to go out and buy nom. 19:31
pmichaud currently (at TimToady's suggestion) we put a flag on things that flatten in list context. I'm wondering if we should instead have the flag on things that don't flatten, since there are far fewer of them.
jnthn has been putting that task off for like, 2 hours.
Wolfman2000 infix:<mod> not yet implemented in Rakudo, sorry <-- well, that's a nice error.
TimToady I would think that most arguments don't flatten 19:36
pmichaud well, arguments are part of parcels --- parcels don't flatten until they're placed in a context 19:37
but if I have
my $a = (1, 2, 4..10, 15)
I expect that Range to flatten.
TimToady sure, but the 1, 2, and 15 don't 19:38
and there are more of them
which is my point
pmichaud oh
TimToady or are you counting differently?
pmichaud well, there's also a notion of whether a given type "can flatten"
ranges, lists, arrays, etc. "can flatten"
nums, ints, strings, etc don't 19:39
the case we're needing to call out is where we have a type that "can flatten" being held in a container that says "don't flatten"
i.e., so that (1, 2, $a, 6) and (1, 2, @a, 6) can dtrt even when $a and @a are referencing the same object 19:40
Wolfman2000 To those with Google Wave: trying to come up with a way of doing MD5. If anyone can tell me how to link to my wave, that would be appreciated.
TimToady right, but I expect the $a to be roughly as common as the @a too
and it seems like having $a be a bare object is simpler
pmichaud except that what gives the "don't flatten" behavior is the container, not the type 19:41
many of our types flatten by default
(List, Range, Array, IO, ... )
TimToady maybe flattening is the xor of two bits... 19:42
pmichaud well, perhaps what I need is to look and see if I have a container, and if I do, then flatten if it has the "flatten me" bit set
but non-containers always flatten if the type allows
TimToady the natural flatten bit, and an optional flipper
pmichaud I'm trying to avoid the case where constructing objects of certain classes always has to set the flatten bit 19:43
sounds like it ought to be a role or method or something.
TimToady I guess I think of $x as a container that forces non-flattening
pmichaud right, I do to
ash_ can you do an | with lookaheads in perl 6? Like /<?before \\d>|<?before A>(.)/
pmichaud *too
which is why I think "non-flatten" is perhaps the flag
TimToady well, as long as the semantics come out right, you're the one implementing it
pmichaud ash_: yes, you can 19:44
TimToady I just don't want $x to suddenly get confused and start flattening
ash_ pmichaud: hmm, is that implemented? it seems to only match the last <?before > grouping
pmichaud TimToady: that also argues for the "don't flatten" bit to be on $x, to positively stop flattening :)
ash_: well, you might need to group it
/ [ <?before \\d> | <?before A> ] (.) ] 19:45
er
/ [ <?before \\d> | <?before A> ] (.) /
or better still
/ <?before \\d | A> (.) /
TimToady ash_: or if you're asking about LTM, it doesn't yet
ash_ what pmichaud++ suggested fixed my problem, thanks
pmichaud ash_: your original expression matches null string if before a digit, or the letter A
ash_: i.e., it's the same as writing 19:46
/ <?before \\d> | [ <?before A> (.) ] /
TimToady: okay, thanks for the suggestions on flattening -- they help crystallize things for me a bit 19:47
TimToady as long as you guys are still not really running tests much, I guess I can go ahead and change undef in *.t; worst case you might have to put in some temporary aliases
pmichaud well, we still run tests on rakudo master :0|
er, :-|
that said, if you want to change them, I have no problem with that. 19:48
We can update rakudo master to recognize "Mu" as "undef"
Wolfman2000 I generally don't run that many tests.
Go for it
BTW: My MD5 code is currently on Google Wave if you guys are able to search for it.
Improvements welcome. :)
jnthn pmichaud: This is *really* odd.
perl6.pastebin.com/m2ad8e3fd 19:49
Tene Where is the protoregex stuff defined? I don't see it specced in S05, just mentioned.
pmichaud jnthn: it's happening from a phaser -- that's a big clue 19:50
jnthn pmichaud: That only makes it more odd. :-) 19:51
pmichaud: But yes, I noticed that.
19:51 payload joined
pmichaud jnthn: fwiw, it works fine here atm. 19:51
jnthn pmichaud: Thing is, in the generated code I don't see any calls to prefix:<->
pmichaud let me git pull.
jnthn pmichaud: Yeah 19:52
pmichaud: I didn't push the changes for the lazy sig init yet.
pmichaud: oh! :-(
pmichaud: I know what it might be.
pmichaud: We may be ending up with conflicting names for the lazy sig init block...
I bet that'll be it.
pmichaud ....WHAT HAPPENED to the rakudo repo on github?! 19:59
Wolfman2000 pmichaud: ...haven't been keeping up. what took place? 20:00
pmichaud github.com/rakudo/rakudo
"Nothing to see here yet. Move along.
ash_ github for me is down
Wolfman2000 all of github is down
ash_ i get an angry unicorn
Wolfman2000 same
jnthn pmichaud: Not specific to rakudo.
pmichaud: Nothing is found.
ash_ its so angry! 20:01
pmichaud I'm able to get to partcl-nqp okay
github.com/partcl/partcl-nqp
ash_ sorry, hehe, never seen github's 404 page before
jnthn pmichaud: That one doesn't work for me either. :-/
pmichaud: Seems github is br0ken.
pmichaud seems so.
jnthn "We are experiencing intermittent issues with our backends currently. Investigating." 20:02
pmichaud yup
jnthn Well, I know that feeling. ;-)
pmichaud: Anyway, fixed the issue.
pmichaud: So lazy sig building works.
pmichaud jnthn +1
jnthn++
jnthn pmichaud: It seems it'll solve my problem with roles too. 20:03
So I'm unblocked again there.
pmichaud \\o/
jnthn I can't push for now (github issues)
pmichaud I like the notion of lazy signature building :)
jnthn pmichaud: I'm only doing it for sub/method/role body at the moment.
It was a little trickier to sort out blocks for now. 20:04
pmichaud jnthn: wfm
jnthn It shaved > 25% off startup time, it seems.
pmichaud I would expect that also :)
jnthn ooh...rain has lightened. \\o/ 20:05
jnthn -> store
pmichaud github says things should be returning to normal now
...and they appear to be so.
Wolfman2000 ...man, times like this I wish I recalled more about rotating bits. 20:06
Perl includes shifting by default, but not rotating, right? 20:07
jeremiah OH HAI!
jnthn: Can I have a copy of last weekend's talk, it was so darn good I want to see it again. 20:08
20:08 drbean_ joined
spinclad_ rakudo: sub foo($a, $b? = 1, $c? = 2) { say "a $a b $b c $c" }; foo(1,(),3) 20:08
p6eval rakudo 7347ec: Use of uninitialized value␤a 1 b c 3␤ 20:09
spinclad_ ng: sub foo($a, $b? = 1, $c? = 2) { say "a $a b $b c $c" }; foo(1,(),3)
p6eval ng 6fb0a0: a 1 b c 3␤
spinclad_ (if assigning Nil invokes default, this will be "a 1 b 1 c 3" 20:11
)
20:11 jaldhar joined
Wolfman2000 rakudo: my $tmp = "ababababab"; say $tmp.substr(*-8); 20:14
p6eval rakudo 7347ec: get_integer() not implemented in class 'Sub'␤in Main (file <unknown>, line <unknown>)␤
Wolfman2000 I don't think I'm using the whatever right.
rakudo: my $tmp = "ababababab"; say $tmp.substr($tmp.chars - 8); 20:15
p6eval rakudo 7347ec: abababab␤
Wolfman2000 rakudo: my Int|Str $tmp = 42; $tmp = "Fortytwo"; say $tmp; 20:16
p6eval rakudo 7347ec: Malformed declaration at line 2, near "Int|Str $t"␤in Main (file <unknown>, line <unknown>)␤
20:21 supernovus joined
jnthn back 20:30
jeremiah: hej hej...I didn't get chance to upload the slides yet, will try and do later on today :-)
jeremiah jnthn: Tjena! 20:31
Cool, sounds good. :)
You had a good trip home I presume?
20:31 zepard joined
pugs_svn r29187 | lwall++ | [S04] clarifications suggested by TheDamian++ 20:31
zepard hi all 20:32
jnthn jeremiah: Yes, it was fine...flight arrived only a little late.
zepard: hi
jeremiah: How about yours? How was the drunk boat? :-) 20:35
jeremiah Even quieter this time. :) 20:36
Wolfman2000 jeremiah: big activity took place earlier
jeremiah The Baltic was a little angrier though.
A bit rough.
Wolfman2000: Really?
20:36 Coke left
jeremiah Whaddya mean? 20:36
Oh, perhaps you're alluding to the conference itself. :)
Wolfman2000 We have a new word being introduced into the Perl 6 language. 20:37
Wolfman2000 never attended the conference.
That's being added to Perl 6 now
It's called Mu
jeremiah Yes, that was certainly the highlight of the weekend in sleepy Riga.
jnthn Sleepy it was.
jeremiah What does Mu du? 20:38
lulz
Wolfman2000 Mu = emptiness
jeremiah How truly zen.
Wolfman2000 basically 20:39
colomon pmichaud: when you get the chance (no rush), could you try to explain to Tene and I (and whoever else is listening) what the issues that are blocking lazy Iterators are? I don't know that we can actually help, but at least maybe writing it down will help clarify things in your head.... :) 20:43
20:43 mariano__ joined 20:44 _eMaX_ joined
Tene TimToady: can you confirm whether 'try' catches control exceptions or not? 20:46
TimToady: nevermind, I found it in S04 20:50
21:00 KyleHa joined
Wolfman2000 ...aha! There is a rotate. 21:01
I just have to know...how to use the adverb. 21:02
rakudo: say 65 +>:rotate 4 21:03
p6eval rakudo 7347ec: Confused at line 2, near "4"␤in Main (file <unknown>, line <unknown>)␤
pmichaud colomon: it's primarily an issue of figuring out the api. I think I've pretty well got it down now. 21:04
colomon pmichaud: just a little antsy because I keep on running into cool stuff I could implement if the api were pinned down. :) 21:05
pmichaud understood.
Tene Better to get it right first, though. 21:06
We don't want to have a rakudo-nng branch later. :)
colomon I believe by convention it would by the rakudo-ds9 branch. :) 21:07
21:09 Su-Shee left
Wolfman2000 rakudo: say 65 +> 4 :rotate 21:11
p6eval rakudo 7347ec: Confused at line 2, near ":rotate"␤in Main (file <unknown>, line <unknown>)␤
Wolfman2000 rakudo: say 65 :rotate+> 4
p6eval rakudo 7347ec: Confused at line 2, near ":rotate+> "␤in Main (file <unknown>, line <unknown>)␤
Wolfman2000 where does the adverb go?
TimToady rakudo doesn't do adverbs yet
std: say 65 +> 4 :rotate 21:12
p6eval std 29187: ok 00:01 106m␤
Wolfman2000 Then I can't even attempt to implement the encryption algorithms I wanted to.
21:15 tylerni7 joined
Wolfman2000 ng: say 65 +> 4 :rotate 21:16
p6eval ng f85514: Confused at line 1, near "say 65 +> "␤current instr.: 'perl6;HLL;Grammar;panic' pc 519 (src/stage0/HLL-s0.pir:336)␤
Wolfman2000 ...it will be awhile perhaps
21:29 Wolfman2000 joined 21:34 masak joined
masak I'm backlogging over the Mu discussion, and very surprised that no-one suggested Dao as a name somewhere along the way. 21:34
'the atom from which everything else comes' 21:35
Wolfman2000 We like Mu.
masak that's your Dao right there.
jnthn For some definition of "we" :-)
masak jnthn: royal 'we' :)
Wolfman2000 Well, I'm not a fan of Dao.
jnthn lol
Wolfman2000 masak: Not just the royal we.
There's more than just the King and I.
masak Wolfman2000: :) 21:36
Wolfman2000 assuming King = TimToady
allbery_b either one is better than U
Wolfman2000 anyway, got another ng request masak.
masak allbery_b: holier than U.
Wolfman2000 How well does ng support adverbs?
allbery_b (which caused me a serious wtf? reaction when it hit)
masak Wolfman2000: no idea. :)
jnthn: what Wolfman2000 asked.
Wolfman2000 ng: say 65 +> 4 :rotate
masak allbery_b: yah, me too.
p6eval ng f85514: Confused at line 1, near "say 65 +> "␤current instr.: 'perl6;HLL;Grammar;panic' pc 519 (src/stage0/HLL-s0.pir:336)␤
jnthn Wolfman2000: It doesn't yet. 21:37
masak allbery_b: but Mu is still not as clear as Object was.
Wolfman2000 ng: say 65 +> 4
p6eval ng f85514: 4␤
allbery_b agreed
jnthn Wolfman2000: I think they're tricky-ish on the parsing side.
allbery_b hm. dumb thought: given Any, shouldn't it be All?
Wolfman2000 adverbs? Yeah, I'll agree with that.
Still, I have to wonder...when bits are shifted, do those bits get returned?
rakudo: say 9 +> 1 21:38
p6eval rakudo 7347ec: 4␤
Wolfman2000 ...they do not.
masak no, the result gets returned. :)
Wolfman2000 so the shifted bit just...goes away?
alright, we'll have to come up with a manual interpretation for now
9 in decimal is 0x9 in hex. 21:39
that means 1001
masak if the Mu type represents the idea of nothingness, why not call it NothingMuch? :D
Wolfman2000 Rotating to the right is simple: do % 2
well...not that simple. 21:40
You take a bit out, you have to put that bit back in.
jnthn masak: Calling something related to the object NothingMuch is fitting. :-)
21:41 simcop2387 joined
masak or we just put Nil at the top of our hierarchy. everything comes out of the empty list. 21:41
allbery_b tempting. I also thought Void in response to NothingMuch, but that would probably p*iss people off 21:42
whoops
nothingmuch it's all fun and games until somebody gets 3 highlights
allbery_b clerly has typing issues
now you know how I feel every time someone plays code golf here.
("a*b" for any operator * sets off xchat)
which is looking for "a_b", but "a-b" also gets used to mean me... 21:43
masak Wolfman2000: heh. looking at your wave. I did *exactly* that a year ago.
Wolfman2000 masak: which wave? I have two of them
masak the MD5 one.
Wolfman2000 I'm a bit unsure about the little endian part...which is why I may just try the SHA implementation for when rotating is properly figured out.
21:44 IllvilJa joined
masak nothingmuch: sorry to have dragged you into this silly discussion. I knew it was only a matter of time until the first casualty. 21:44
Wolfman2000: I alse remembered being unsure about the little-endian part. 21:45
nothingmuch cries 21:47
masak Wolfman2000: github.com/viklund/november/blob/e8...est/MD5.pm 21:48
hugme: hug nothingmuch
hugme hugs nothingmuch
Wolfman2000 rakudo: say string_to_bits("Test"); 21:49
masak nothingmuch: don't cry. TimToady was only kidding! he'll change it back to Object soon.
p6eval rakudo 7347ec: Could not find non-existent sub string_to_bits␤in Main (file src/gen_setting.pm, line 324)␤
Wolfman2000 ...not built-in. right
also...aha! I wondered about the p6w directory.
masak Wolfman2000: nope. that module used to sit in November.
I had do dig it out of the git repo. 21:50
Wolfman2000 masak: your implementation is incorrect BTW 21:51
masak yes, it was.
it never worked.
Wolfman2000 you have to push 1 no matter what: no question. However, if it matched 448 mod 512, you still had to add another 512
PerlJam masak: I doubt TimToady was kidding or that he'll change it back to Object.
Wolfman2000 masak: Perhaps we can pull this off together.
masak PerlJam: no, that was more of a quiet hope than the straight truth. 21:52
PerlJam: you said before that Test.pm was the largest 'external' user of Object. I think November is quite a large external user too. want to go through the source and mentally replace s/Object/Mu/ to see how much sense it makes? 21:53
Wolfman2000 masak: if nothing else, I'll get more practice with classes
masak Wolfman2000: I'm not sure MD5 is what I want to spend much of my time on. to me, it's a solved problem.
Wolfman2000: but I'll happily help you if you have any questions.
Wolfman2000 masak: Sure the algorithm is out...but wouldn't it be better if we had a pure purl 6 solution?
pure perl*
masak no, I don't think so. 21:54
it would be slower.
and more code to maintain.
PerlJam masak: I did C<ack -aw Object> on my local clone of the november repo (perhaps I have the wrong one?) and there are only 2 files and 5 lines that mention Object.
masak ok. 21:55
that sounds about right.
Test.pm definitely mentions it more often than that. I stand corrected.
21:57 alester joined
Tene TimToady: any chance of getting a statement-modifying CATCH? dangerous() CATCH { ... }; 21:58
PerlJam even rakudo doesn't use Object very much in the grand scheme of things. 35 lines if I exclude src/old (on ng)
If I include src/old, it's only 65 lines
pmichaud hugme add tene to nqp-rx 21:59
hugme pmichaud: You need to register with freenode first
pmichaud hugme: add tene to nqp-rx
hugme pmichaud: You need to register with freenode first
pmichaud hmmpf
hugme: add tene to nqp-rx
hugme hugs tene. Welcome to nqp-rx!
Tene :D
22:03 rfordinal joined
masak Wolfman2000: hm... `Int $x where {$x <= 1}` 22:04
Wolfman2000 looking at my prime code? 22:05
masak Wolfman2000: that probably does what you want, but I'd write it as `Int $ where { $^x <=1 }`
yes, the prime code.
Wolfman2000 masak: feel free to wave the change
masak sure, if I can figure out how.
dalek p-rx: b42c475 | tene++ | src/NQP/ (2 files):
Basic implementation of "try".
22:06
Wolfman2000 doubleclick somewhere on the text, and you should be able to edit/reply
masak ah. I took the route of the pulldown menu up-right.
22:08 d^_^b joined
masak Wolfman2000: as to 'TODO: Find a better way to make this only work for 6k ± 1', I suggest you make it the least general multi sub, and it'll sort itself out. 22:09
i.e. make the one that only returns False right now into the one that does the % 2 and % 3 tests. 22:10
hm, that one would still have to test > 5, I fear. otherwise there's a conflict. 22:11
Wolfman2000 Hmm...plenty to think about 22:13
22:14 ruoso joined, rfordinal left 22:18 pure1111 joined
diakopter std: if 3 {say 4}else {say 5} # TimToady - no ws required between '}' and 'else'? 22:31
p6eval std 29187: ok 00:01 103m␤ 22:32
masak diakopter: why should it be required?
s/sh/w/
22:33 ruoso joined
diakopter masak: I don't know 22:34
22:36 justatheory joined
masak oh, and by the way, Haskell 2010 was announced today. any first impressions, anyone? 22:37
22:38 astrojp left
PerlJam masak: is it coming out in April? :) 22:38
masak "The process has not been a smooth one, and there have been several changes of direction, but the current process is actually producing concrete results that let us move the language forward in positive steps, so I feel we're on the right track." 22:39
that sounds vaguely familiar.
22:39 IOOIIIOIIO left
masak www.haskell.org/pipermail/haskell/2...21750.html 22:39
PerlJam oh, a language release every year too. That's interesting. 22:40
jnthn Hmmm...where went the rakudo-ng bot? 22:43
sjohnson is rakduo programmed in some sort of "parrot script"?
rakudo*
jnthn sjohnson: Parts of Rakudo are written in PIR, which is Parrot-specific, yes. 22:44
We try to write more and more of it in Perl 6 or NQP though.
sjohnson interesting
jnthn But for various reasons that's sometimes challenging.
sjohnson im just trying to wrap my head around how the parrot VM kind of works as far as implementing Perl 6 22:45
PerlJam jnthn: are you saying that Perl 6 is inadequate for writing a Perl 6 compiler? ;)
jnthn PerlJam: Not at all.
sjohnson i think he's being sarcastic
jnthn I *know* he's being sarcastic. :-)
sjohnson oic
22:46 astrojp joined
jnthn I actually want to work towards minimizing the amount of PIR we have. 22:46
But in the shorter term, I want ng to land. :-)
Wolfman2000 jnthn: I want rakudo to have more features honestly. 22:47
Will ng eventually help with that?
jnthn Wolfman2000: Well, that and ng landing are kinda one and the same. When it lands, we get a load of new things right out of that.
masak Wolfman2000: oh, I see now that the ␤ characters got put in verbatim in github.com/viklund/november/commit/...ae48c62f16 -- that's my fault for being unclear, so I'll fix that.
PerlJam Wolfman2000: when ng lands, rakudo will be poised to jump a bit farther ahead than it was a month or so ago.
22:48 camenix joined
PerlJam Wolfman2000: er, quite a bit farther ... 22:48
Wolfman2000 masak: ...are you trying to revert my latest change? Far as I'm aware, those verbatim newlines are supposed to be in.
masak Wolfman2000: not reverting this time, just fixing.
Wolfman2000 masak: oh. fix away
PerlJam: gotcha 22:49
jnthn Wolfman2000: ng will bring lazy lists, many regex additions and improvements, all of the OO will be based on a metamodel foundation.
masak Wolfman2000: the ␤ characters are a p6eval convention to simulate real newlines.
jnthn And many other little improvements.
In fact, the role composition stuff I'm hacking on in ng right now should give us at least 2 new features that master doesn't have when I'm done, as well as being better structured. 22:50
PerlJam jnthn: btw, I've been meaning to ask ... how much has Moose influenced you?
jnthn PerlJam: Moose and SMOP, amongst other things, have been very notable influences.
PerlJam: Actually, the role composition model I'm putting in at the moment is heavily influenced by Moose. 22:51
PerlJam excellent.
dalek november: a817694 | masak++ | lib/URI/Grammar.pm:
Wolfman2000 ...did dalek get his stuff cut off?
masak seems so. 22:52
jnthn PerlJam: I read a significant chunk of the Class::MOP and Moose source recently, and I read various bits of SMOP source a while back too.
PerlJam: My main headaches at the moment are around the prickly topic of metaclass/meta-composer compatibility. 22:53
You know, I'm looking at Perl6::Metamodel::RoleToClassApplier, which I just wrote in PIR, and thinking "heh, I coulda written this in NQP"... 22:55
PerlJam The more you think that (preferably before you write the code :), the better IMHO 22:56
jnthn It's not much code... 22:57
pmichaud: Do you have any objections to us writing stuff that belongs in the stage 1 compiler in NQP rather than PIR where it makes sense?
pmichaud: That is, things besides just the grammar/actions/auxilliary classes. 22:58
pmichaud jnthn: I have no issues with writing things in NQP 23:00
jnthn pmichaud: OK, cool.
pmichaud at some point we might want to use .nqp instead of .pm though, to make it clear when we're doing one or other
jnthn pmichaud: I can start that convention with these bits, if you like? 23:01
PerlJam gone home
pmichaud wfm
+1
jnthn pmichaud: Great.
masak Wolfman2000: you figure in today's blog post, along with a fair amount of praise. I hope that's OK.
Wolfman2000 masak: Long as my /b NO isn't copied, it's fine
jnthn pmichaud: It'll be _far_ nicer to write chunks of the metamodel in NQP. ;-)
masak Wolfman2000: no, I deliberately avoided that topic.
pmichaud NQP is turning out to be a nice little glue language, yes. :)
Wolfman2000 masak++: thank you
23:01 payload1 joined
masak Wolfman2000: thank -you- for today's commits. it was cool to see so much energy going into November. first time in a while. :) 23:02
Wolfman2000 masak: *nods*
jnthn pmichaud: I've not really got role composition all done yet, but I am happy with how it's going.
Wolfman2000 You can thank me not having any more classes until next Monday
jnthn pmichaud: We're going to get a few things right that we got wrong before. 23:03
Wolfman2000 However, I will ahve to take care of some homework tonight and tomorrow.
I don't want to have to do anything on or after Thanksgiving
masak Wolfman2000: understandable.
Wolfman2000 (knowing me, I'll have to anyway)
masak :)
sjohnson y0 masak
jnthn pmichaud: And we'll get or be able to trivially have later some other features we were missing too.
masak Wolfman2000: let's try to dedicate some of your free time to Web.pm as well, that'd be nice.
pmichaud +1 again
masak sjohnson: \\o
Wolfman2000 masak: We'll find out. 23:04
One step at a time
jnthn pmichaud: If you want to read anything, docs/metamodel.pod has been muchly filled out, fwiw.
masak Wolfman2000: nod.
masak reads docs/metamodel.pod
pmichaud jnthn: excellent, I will do that. 23:05
jnthn Corrections/feedback/thoughts are very welcome. Typos, just go ahead and commit changes.
23:05 ruoso joined
masak barefoot++ 23:06
Tene ng: try { say 'hi'; die 'omg'; say 'lol' }
p6eval ng def1b0: hi␤
Wolfman2000 Tene: what were you expecting with that? 23:07
23:07 jummy joined
jnthn pmichaud: How does NQP know what is a type name and what is a sub name, btw? 23:08
Wolfman2000 rakudo: my @i; push @i, {4, 3, 2, 1} for 1..4; say join(" ", @i);
pmichaud jnthn: it doesn't.
p6eval rakudo 7347ec: _block72 _block72 _block72 _block72␤
jnthn pmichaud: Just that you always have to write parens to call?
pmichaud jnthn: that's wh.... right
Wolfman2000 rakudo: my @i; push @i, 4, 3, 2, 1 for 1..4; say join(" ", @i);
p6eval rakudo 7347ec: 4 3 2 1 4 3 2 1 4 3 2 1 4 3 2 1␤
jnthn pmichaud: OK, perfect.
pmichaud jnthn: that's why we have no listops.
Tene Wolfman2000: I expected what I got. I just wanted to see if ng has try/catch implemented yet.
jnthn pmichaud: Right.
pmichaud obtw
ng: say ?(256 ~~ /\\d+/)
p6eval ng def1b0: 1␤
jnthn omg 23:09
pmichaud++
pmichaud ng: say ?(256 ~~ /\\d+ <?{ $/ < 256 }> /)
zaslon lolmasakhazblogged! masak++ 'November 24 2009 -- a sort of leap of faith': use.perl.org/~masak/journal/39941?from=rss
p6eval ng def1b0: Symbol '$¢' not predeclared in <anonymous>␤current instr.: 'perl6;PCT;HLLCompiler;panic' pc 137 (src/PCT/HLLCompiler.pir:101)␤
pmichaud grrr
haven't updated yet
oh well.
23:09 jummy left, jummy joined
jnthn pmichaud: oh wait 23:09
pmichaud: I read nqp there ;-)
23:09 jummy left
jnthn pmichaud: Not that it isn't good in Rakudo too :) 23:10
pmichaud ahhh
yes, that needs to be added in NQP shortly as well.
it's a bit difficult since I don't have a good way to distinguish regex subs from normal subs
Wolfman2000 masak: Everyone gets my last name wrong. You did too.
Felds. Not Fields.
masak Wolfman2000: oops. should have double-checked. fixing. 23:11
Wolfman2000 Some things never change...
masak Wolfman2000: fixed. sorry about that.
Wolfman2000 It's fine.
I'm no longer bothered by it
well...much
masak is reminded of the first time audreyt++ wrote his name in a blog post, and got it wrong 23:12
Wolfman2000 ...unfortunately, shadowcat is down for me still
masak oh, here too.
I just pulled the post out of my browser history.
Wolfman2000 Something took place this past weekend: many perl projects in Europe are down. That includes Catalyst 23:13
masak jnthn: 'There are three important things.' and then you mention two things.
jnthn masak: The third is that metamodel hackers can't count. 23:14
masak :P 23:15
jnthn masak: Feel free to s/three/two/
masak makes it so
jnthn masak++
Wolfman2000 ...I can possibly finish registration tomorrow for November.
masak jnthn: oh, and this API makes me drool.
Wolfman2000: as soon as you have something ready-ish, I'll bump the server so we can play with it. 23:16
Wolfman2000 masak: I was wondering about that...
Make sure what's up works properly first
jnthn masak: That's an encouraging sign...apart from for your keyboard.
masak jnthn: 's'ok, I can haz napkin. 23:17
Wolfman2000: if it doesn't work, we'll find out quickly. :)
23:17 jummy joined, jummy left
Wolfman2000 true 23:18
masak jnthn: 'Certainly all of the built-in implementations of this do not actually perform any composition at this point.' do you consider that sentence equivalent to 'Certainly, not all of the built-in implementations of this actually perform any composition at this point.' ? 23:20
Wolfman2000 rakudo: say to_base64("huh?");
p6eval rakudo 7347ec: Could not find non-existent sub to_base64␤in Main (file src/gen_setting.pm, line 324)␤
Wolfman2000 ...didn't think so. Yeah, you were missing stuff from p6w::Digest::MD5 masak 23:21
masak Wolfman2000: in order to convert something to base64, you need to know its byte sequence. in Perl 6, one does not know the byte sequence of Str objects.
Wolfman2000: hold on, I'll throw you an URL of me realizing this.
Wolfman2000 Next up: how to convert to Base64 23:22
masak Wolfman2000: use.perl.org/~masak/journal/39236
jnthn masak: s/not all/none/ 23:23
masak oh! 23:24
Wolfman2000 masak: ...if I understand you right on the post...it will be very difficult to figure out the bytes.
masak jnthn: can I change it to that?
I think the current wording is ambiguous.
Wolfman2000: no, you just have to 'cast' the Str to some byte sequence.
jnthn masak: Basically, it's meant to be a strong hint that add_composable is *not* the thing that should actually compose something, just add it to a list that we process at compose time.
masak Wolfman2000: but in order to do that, you need to say according to which scheme: ASCII, UTF-8, Latin-1, etc. 23:25
Wolfman2000 rakudo: my $tmp = "42"; say $tmp.Int # Like this?
p6eval rakudo 7347ec: 42␤
jnthn masak: Yes, you may change it.
masak to this (just to be clear): 'Certainly, none of the built-in implementations of this actually perform any composition at this point.' 23:26
jnthn masak: moment, checking context.
ETOOMANYTHIS 23:27
masak :)
jnthn Certainly, none of the built-in implementations of add_composable immediately perform any compositoin.
masak changes it to that.
jnthn er, whithout the smepp
gah
without the spelling mistake
:-)
masak nod. 23:28
jnthn *composition
I think I've lsot my ability to type.
23:28 quietfanatic joined
masak :) 23:28
jnthn pmichaud: Ah. 23:29
pmichaud: I think it may not be an issue right now. 23:30
pmichaud: However, one issue is that NQP classes end up using the wrong metaclass.
(That is, ones I write in NQP.)
Also, I need to learn POD6. 23:32
.oO( I am very sorry for my lots )
pmichaud: omg. 23:33
pmichaud: It works. \\o/
masak jnthn: a small nit: seems to me, in the .now method signature in the Attribute MO API: :$accessor should be named :$has-accessor. what do you think?
jnthn .new ?
masak: I'm inclined to agree. 23:34
masak jnthn: also, hm. are all these described things methods, or subs?
jnthn masak: However, if we're going to do that...
masak jnthn: if methods, why not use the invocant colon after the invocant? 23:35
jnthn masak: I don't follow
They're methods
Remember that meta-methods tend to be called like $foo.^meth(), which is equivalent to $foo.HOW.meth($foo)
masak jnthn: ok, in compose in the Attribute MO API, for example.
oh, that might be what I'm missing. 23:36
jnthn masak: I'm not sure if that really should apply to the attribute MO though...
masak so the $attr in the .compose method is not equal to the invocant?
jnthn masak: No
masak oh, good.
in that case, nvm.
jnthn masak: Though I am pondering whether it's overkill.
I mean, for meta-packages, there's an obvious need/win. 23:37
(e.g. facilitating prototype OO)
But I'm not seeing the win so much for the attributes.
masak I like the word 'composee'. :) 23:38
jnthn masak: Note if we change it to has-accessor, then also we'll need to patch S12 and a spectest or so.
S12 near "The C<.^attributes> method returns a list of attribute descriptors
"
masak I can do that.
perigrin what are attribute descriptors?
masak it's the future of the MOP at stake.
jnthn Anyway, it does return whether we have an accessor rather than the accessor itself.
masak seems a small price. :) 23:39
oh.
perigrin sorry been distracted by work drama
jnthn perigrin: It's S12ish for "attribute meta-object"
pmichaud afk, long dinner
masak jnthn: in your metamodel.pod, it says 'whether or not the attribute has an accessor'.
perigrin jnthn: that's what I thought :)
jnthn masak: Right.
masak jnthn: that's what confused me, I think. 23:40
jnthn masak: Yeah. (has-accessor)++
masak jnthn: if it's not a Bool, I change it back to :$accessor for now.
jnthn masak: No, it's just a bool
"do we have an accessor"
Well
masak then :$has-accessor.
jnthn Or at this level
"Should we generate an accessor?" 23:41
Both really.
masak right.
jnthn Depends whether you're declaring, or introspecting later on. :-)
masak I think the declaring one should be :$has-accessor, and the introspecting one should be .accessor
jnthn masak: no no! 23:42
masak: It's the same object. :-)
masak sure, but the .new method can rewire internally.
jnthn Literally. :-)
masak yes, I get that.
jnthn masak: You expect .accessor to return a Bool in introspection too though, yes? 23:43
masak no.
jnthn If so, why introduce an inconsistency?
23:43 ihrd joined
jnthn masak: Ah, I do. 23:43
masak: What did you want it to return?
masak oh, I thought we agreed it returned the accessor method.
that makes a lot of sense, actually. 23:44
jnthn I didn't think I'd agreed that. :-)
masak no, I realize that. :)
jnthn Let's go with .has-accessor everywhere for the "do we haz".
masak oh, I see now where I misread what you wrote.
nodnod.
23:44 mariano_ joined
masak I'll read this through and then change S12. 23:44
jnthn Cool. 23:45
masak++
perigrin where is this?
out of curiosity
perigrin checks logs
jnthn github.com/rakudo/rakudo/blob/ng/do...amodel.pod 23:46
perigrin: ^^
perigrin ta
jnthn hmm...there's some funky formatting in a bit of that. 23:47
Probably because I suck at writing POD.
perigrin I didn't realize that github would render POD anyway :) 23:48
masak jnthn: 'For now, we forbid this unless the metaclass of the thing we're inheriting from is a superclass of the thing that is inheriting.' 23:49
jnthn: that sounds too limiting, IIUC.
jnthn: it could be the same metaclass.
jnthn oh, there's a thingy missing in there. 23:50
yeah, that sentence doesn't say what I wanted it to.
Great. One half the day I can type, but don't have a brain. The second half I have a brain and can't type.
:-)
masak 哈哈
perigrin yeah this.HOW.isa(this.super.HOW)
jnthn Right. 23:51
I say as much in code.
Just not in the text.
masak jnthn: 'Thus the problem of the behaviors of two' -- and the sentence ends right there, leaving me in suspense. :) 23:52
perhaps you went for lunch at that point.
jnthn yeah, probably
...different appliers is only a composition-time issue and not a runtime one. 23:53
Or something like that.
That bit all still *really* needs some thought though.
masak I'll add that part. 23:54
jnthn It may be a tad over-ambitious.
But I do like the idea of generalizing flattening compositiony things.
Equally, getting into a mess of conflicting mechanisms without any safety is kinda...sucky. 23:55
The composing metaclasses with traits paper was quite good, but I'm still pondering how (and how much) it helps us here.
23:55 payload joined
masak gets a sudden urge to read it, too 23:56
jnthn For the other sentence that's nasty
'For now, we require that if some class S isa T, then also S.HOW isa T.HOW.
'
masak good.
cotto_work msg chromatic I've run valgrind --tool=callgrind ./parrot ext/nqp-rx/nqp-rx.pbc --target=pir ../nqp-rx/src/NQP/Actions.pm with an optimized and non-optimized Parrot and it only spends 20-22% of its time in gc_ms_mark_and_sweep. This seems inconsistent with the high amount of time you found to be spent in Capture's mark VTABLE function.
ww
I briefly wondered why masak would be storing messages like that. 23:57
jnthn I rather think we shouldn't be going so far as Smalltalk and doing the parallel metaclass approach though.
masak phenny: tell cotto_work that this is how you do it. 23:58
phenny masak: I'll pass that on when cotto_work is around.
masak cotto_work: I probably missed a '/' before the 'msg' once.
cotto_work I forgot I wasn't in #parrot. The syntax works there.
phenny cotto_work: 23:58Z <masak> tell cotto_work that this is how you do it.
masak jnthn: I am unaware of Smalltalk's parallel metaclass approach.
cotto_work: oh yeah. purl. 23:59
perigrin #parrot afaik isn't using the magnet phenny :)
jnthn masak LOVES purl
;-)
masak: It derives a metaclass unique to the subclass.
masak jnthn: oh ah.
jnthn masak: It's sorta nice in that you then have a metaclass you can add methods to and all that lot.
perigrin jnthn: actually I think if you treat everything as a composition of Roles