»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend! Set by sorear on 4 February 2011. |
|||
00:04
Ex joined
00:20
Chillance left
00:27
mucker left
|
|||
TimToady | you'll know how my life has been when I tell you that I'm currently backlogging July 5th | 00:36 | |
00:48
thou left,
quietfanatic joined
|
|||
supernovus | here's the url for my port, with two different options for obtaining the libcurl constants: github.com/supernovus/perl6-libcurl | 00:49 | |
it doesn't do much yet, but it'll get better when I have spare time to work on it :-) | 00:50 | ||
TimToady | faith-in-the-future++ | 00:51 | |
00:54
supernovus left
01:02
awwaiid left,
awwaiid joined
01:08
scott__ joined
01:12
tokuhiro_ left,
tokuhiro_ joined
01:17
tokuhiro_ left
01:26
thou joined
01:28
quietfanatic left
02:06
charsbar_____ joined,
arnsholt_ joined,
charsbar____ left
02:07
scott__ left,
Bucciarati left,
mattp_ left,
larks left,
ponbiki left,
mattp_ joined,
Bucciarati joined,
Ex left,
Tene left,
pnu left,
nuba left,
Tene joined,
Tene left,
Tene joined,
pnu joined,
scott__ joined,
arnsholt left
02:08
larks_ joined,
ponbiki joined,
nuba joined,
ponbiki is now known as Guest65084
02:09
orafu left,
OuLouFu joined,
OuLouFu is now known as orafu
02:12
Ex joined,
Ex left,
Ex joined
02:28
silug left
02:36
Psyche^ joined
02:40
Patterner left,
Psyche^ is now known as Patterner
03:04
spaceships left
03:36
skids left
03:38
snearch joined
03:39
am0c joined
03:58
cognominal left
03:59
cognominal joined
04:10
snearch left
|
|||
dalek | ast: a57ed69 | coke++ | S32-num/fatrat.t: pugs fudge |
04:11 | |
gs.hs: d445250 | coke++ | t/spectest.data: run fudged test |
04:12 | ||
04:15
geekosaur left
04:26
drbean left
04:28
telex left
04:29
drbean joined
04:30
kaare_ joined
04:36
telex joined
04:40
kaare__ joined
04:43
kaare_ left
04:47
telex left,
crab2313 left
04:48
telex joined
04:50
birdwindupbird joined
05:12
adu joined
|
|||
moritz | tadzik: gist.github.com/3168196 panda bootstrap failure | 05:23 | |
tadzik: and merging the branch a day before the star released might have not been the best of ideas :-) | |||
05:27
am0c is now known as am0c_yk
|
|||
moritz | tadzik: it loads ext/File__Tools/lib/Shell/Command.pm instead of the .pir version | 05:41 | |
05:45
nodmonkey joined
|
|||
moritz | at the time panda is compiled, we don't need anything from ext/ in PERL6LIB anymore, right? | 05:46 | |
05:52
mikemol left
05:54
mikemol joined
06:09
wtw joined
06:10
kaleem joined
06:17
crab2313 joined
|
|||
tadzik | moritz: yes | 06:17 | |
moritz: oh, forgot about Star | |||
can we ship the pre-merge snapshot? | 06:18 | ||
ingy | . | ||
phenny | ingy: 23 Jul 14:20Z <[Coke]> tell ingy I'm keeping pugs warm for him. | ||
ingy | [Coke]: ♥ | 06:19 | |
moritz | tadzik: sure, that's possible | 06:21 | |
dalek | ar: 3e25d93 | moritz++ | Makefile: fix panda revision to something before the offline-bootstrap merge |
06:23 | |
06:26
awwaiid left,
nodmonkey left
06:27
adu left
|
|||
tadzik | moritz: it sort of surprises me though that it behaves differently on your machine | 06:28 | |
I did countless bootstraps on it recently. Maybe I did break something when resolving the conflicts | 06:29 | ||
moritz cleans out the panda dir and tries again | 06:31 | ||
06:33
awwaiid joined
|
|||
moritz | no difference | 06:34 | |
tadzik: did you rebase instead of merge? | |||
cause, you know, there's no merge commit | |||
and you don't get any conflicts on a fast-forward merge | 06:35 | ||
tadzik: oh, and using : as path separator for PERL6LIB is going to break on windows | 06:36 | ||
tadzik | yeah, must've git pull --rebase. Dang | 06:37 | |
I'll look into it soon | |||
tadzik commutees | 06:38 | ||
I did merge, but then git pull --rebase as usual Y/ | |||
:/ | |||
moritz | tadzik: you can probably find the merge commit in 'git reflog', and then force-push that one | 06:39 | |
dunno if that makes a difference | |||
tadzik: gist.github.com/3168196#file_workaround.patch that fixes the bootstrap for me, but it feels like a workaround, not a fix | 06:44 | ||
06:52
cognominal left,
cognominal joined
06:54
SamuraiJack joined
06:55
kresike joined
|
|||
kresike | good morning all you happy perl6 people | 06:56 | |
mhasch | good `time-of-day`, kresike | 06:57 | |
kresike | hello mhasch o/ | 06:58 | |
ingy | [Coke]: let's chat tomorrow about pugs. I'm off to zzzz | 07:00 | |
07:01
am0c_yk left,
GlitchMr joined,
thou left
07:17
cognominal left,
cognominal joined
07:20
fgomez left
|
|||
tadzik | moritz: I think I'll just revert this and that and try offline-bootstrap later on | 07:26 | |
. o O ( git pull; pit bull ) | 07:27 | ||
hmm | |||
ok, force push it is | 07:28 | ||
hope nobody notices :) | |||
07:28
hoelzro|away is now known as hoelzro
|
|||
tadzik | zing! Nobody noticed | 07:29 | |
moritz: could you please re-check if master works fine now? | |||
07:40
GlitchMr left
07:43
mucker joined
07:45
kaare__ left
07:48
xinming left
07:54
hoelzro left
|
|||
masak | good antenoon, #perl6 | 07:54 | |
07:55
xinming joined
|
|||
tadzik | but... but it's still moaning! | 07:55 | |
timotimo | tadzik: wouldn't it be more like a pit gull? i wonder what a pit gull would look like ... | 07:58 | |
how hard would it be to write a custom perl6 compiler (a modified rakudo, for instance) that inspects code and tries to infer the strictest type annotations for parameters and variables and then writes those out to the compiled module file in addition to the annotations already present? | 08:02 | ||
tadzik | timotimo: oh, I'll _so_ draw a pit gull, if only I didn't just have assigned 6 tickets to myself :P | 08:05 | |
08:14
GlitchMr joined
08:15
fhelmberger joined
08:29
hoelzro joined
|
|||
arnsholt_ | r: sub t(&cb(int --> num)) { * }; say &t.signature.params[0].signature.returns; | 08:30 | |
p6eval | rakudo 3ac8c7: OUTPUT«No such method 'signature' for invocant of type 'Parameter' in block <anon> at /tmp/TClRTCVuqf:1» | ||
arnsholt_ | Oh, derp. I've not pushed that patch upstream yet | ||
tadzik | ooh | 08:31 | |
08:31
arnsholt_ is now known as arnsholt
|
|||
tadzik | that's something I could use in Typed::Subroutines :) | 08:32 | |
I think | |||
arnsholt | Gimme a sec and I'll push it | ||
tadzik | no hurry, I probably won't have tuits until tomorrow evening anyway :) | ||
08:33
mucker left
08:39
kaare__ joined,
kaare__ is now known as kaare_
08:46
am0c joined
|
|||
jnthn | ohhai o/ | 08:54 | |
diakopter | o/ | ||
08:54
MayDaniel joined
|
|||
masak | jnthn! \o/ | 08:57 | |
09:02
seldon joined,
dakkar joined
09:15
bbkr joined
09:22
MayDaniel left
09:34
seldon_ joined,
seldon left,
seldon_ is now known as seldon
|
|||
moritz | tadzik: yes, panda works again | 09:43 | |
tadzik | ok cool | 09:45 | |
09:46
crab2313 left
|
|||
arnsholt | r: sub a(int --> num) { * }; say &a.signature.returns | 09:47 | |
p6eval | rakudo 3ac8c7: OUTPUT«Mu()» | ||
arnsholt | r: sub a(int ) returns num { * }; say &a.signature.returns | ||
p6eval | rakudo 3ac8c7: OUTPUT«num()» | ||
arnsholt | jnthn: How hard d'you think it'd be to make the --> form of returns bind the return type to the signature? | 09:48 | |
jnthn | arnsholt: Hm, shouldn't be too hard. | 09:49 | |
arnsholt | 'cause I kinda need it for the callbacks to work =) | ||
jnthn | arnsholt: Ah. | ||
arnsholt: Do you need it to work for this case or for the nested signature case? | 09:50 | ||
arnsholt | For the nested signature case | ||
Hopefully it's the same bit of code for the two | 09:51 | ||
jnthn | Yeah, I hope so too... | 09:52 | |
Hmm | 09:53 | ||
Thing is that we construct signatures quite lazily | |||
(as in, the thing they're getting attached to - if anything - is what invokes their construction) | |||
You'll see that method signature actually just sets up an array of hashes describing parameters. | 09:54 | ||
arnsholt | Aha. And the sig object is only created when it's first requested? | ||
jnthn | No | 09:55 | |
It's created at compile time always | |||
It's just delayed until, say, method_def or routine_def | |||
It's 'cus they want to twiddle defaults to be Any, not Mu | |||
Or in the method case add the implicit invocant and *%_ | |||
We always end up in create_signature_object | 09:56 | ||
arnsholt | Hmm. But the nesteds won't pass through method/routine_def in the same way the top level sigs do? | 09:57 | |
jnthn | No, but they'll still result in a call to create_signature_object, so that's fine. | ||
It's just how we convey the return type up to that point | |||
I guess we could try shoving it into the array as an extra, specially marked entry | 09:58 | ||
arnsholt | r: sub test($x --> Int) returns Num { say $x; 1.2e0; }; test('hmm?') | 10:02 | |
p6eval | rakudo 3ac8c7: OUTPUT«hmm?» | ||
arnsholt | r: sub test($x --> Int) returns Num { say $x; 1.2e0; }; say test('hmm?') | ||
p6eval | rakudo 3ac8c7: OUTPUT«hmm?1.2» | ||
arnsholt | r: sub test($x --> Int) returns Num { say $x; 1; }; say test('hmm?') | ||
p6eval | rakudo 3ac8c7: OUTPUT«hmm?Type check failed for return value; expected 'Num' but got 'Int' in sub test at /tmp/RCpqVOcsGU:1 in block <anon> at /tmp/RCpqVOcsGU:1» | ||
arnsholt | Heh | ||
tadzik | not Num enough ;) | 10:03 | |
moritz | get Real! | ||
arnsholt | Well, how do you choose between the --> form and the returns trait? ^_^ | ||
tadzik | I prefer returns myself | 10:04 | |
moritz too | |||
tadzik | it doesn't look like another argument then | ||
arnsholt | Well, that's true. But for nested signatures Rakudo only supports the --> form | ||
tadzik | and I tend to like when the code looks like prose :P | ||
10:04
scott__ left
|
|||
jnthn | std: sub foo(--> Int) returns Int { } | 10:04 | |
p6eval | std d5bea92: OUTPUT«===SORRY!===Extra 'of' type; already declared as type Int at /tmp/XvLRVj8xb9 line 1:------> sub foo(--> Int) returns Int ⏏{ }Check failedFAILED 00:00 41m» | ||
jnthn | Should complain if you write both. | 10:05 | |
arnsholt | Yeah, I assumed so | ||
r: sub test(&cb() returns Int) { * } | |||
p6eval | rakudo 3ac8c7: OUTPUT«===SORRY!===Missing blockat /tmp/ck7nqDddJw:1» | ||
arnsholt | tadzik: That's my use-case above, so returns isn't an option, unfortunately | 10:06 | |
masak | tadzik: I tend to like it when the code looks like the problem domain it's in. | 10:07 | |
tadzik | I see | ||
that toto | |||
toot toot | |||
diakopter | r: say sub () { } ~~ /a/ | 10:11 | |
p6eval | rakudo 3ac8c7: OUTPUT«#<failed match>» | ||
diakopter | r: say sub () { } ~~ /./ | ||
p6eval | rakudo 3ac8c7: OUTPUT«No such method 'substr' for invocant of type 'Sub' in method Str at src/gen/CORE.setting:9611 in method Stringy at src/gen/CORE.setting:715 in method gist at src/gen/CORE.setting:9667 in sub say at src/gen/CORE.setting:6985 in block <anon> at /tmp/69wyWgl… | ||
diakopter | why the difference ^^ | ||
jnthn | Hm. Probably because the second one matches. | 10:16 | |
diakopter | how can it match but not be say-able | 10:17 | |
jnthn | r: sub foo() { }; say &foo.Str | ||
p6eval | rakudo 3ac8c7: OUTPUT«foo» | ||
jnthn | r: sub foo() { }; say &foo.substr(0, 1) | ||
p6eval | rakudo 3ac8c7: OUTPUT«No such method 'substr' for invocant of type 'Sub' in block <anon> at /tmp/VrRwv2IroT:1» | ||
diakopter | how does ~~ /./ know to stringify first but say doesn't | 10:18 | |
10:18
kaleem_ joined
|
|||
arnsholt | Say calls .gist, doesn't it? | 10:19 | |
jnthn | Right | 10:20 | |
10:21
daxim joined
|
|||
jnthn | Well, it's probably more that when it matches it forces it to stringify (calls .Str), but it doesn't explicitly do that when displaying the match. | 10:21 | |
10:21
kaleem left
10:22
kaleem joined
10:23
kaleem_ left
|
|||
arnsholt | Hmm. This is a more involved hack than my previous Rakudo ones | 10:26 | |
dalek | kudo/toqast: 633f401 | jnthn++ | src/ (2 files): Fix up handling of failed symbol lookups, thus eliminating a couple of reamining NPMCAs and fixing a couple more tests. |
10:48 | |
moritz | arnsholt: iirc I've pushed a patch to nom that adds Parameter.sub_signature | 10:55 | |
10:56
mucker joined
|
|||
arnsholt | moritz: Oh. I've a patch that adds Parameter.signature =) | 10:59 | |
11:00
JimmyZ joined
11:01
birdwindupbird left
11:03
birdwindupbird joined
|
|||
moritz | arnsholt: I don't think we should push both :-) | 11:04 | |
arnsholt: and I prefer something with 'sub' in the name, to make it clear it's not a backreference to the signature that contains the parameter | |||
arnsholt | I'll back out mine, since it's only local | ||
Yeah, sub_ is a point. OTOH it'd be nice to have the symmetry with Routine.signature | 11:05 | ||
11:06
aindilis left
|
|||
moritz | hm, good point too | 11:06 | |
arnsholt | Back in a bit | 11:08 | |
lunch & | |||
moritz | ooh, toqast spectes summary now fits on a single screen page :-) | 11:09 | |
dalek | p/toqast: c21542a | jnthn++ | src/QAST/ (2 files): Restore line number annotation emission. Fixes callframe.t. |
11:10 | |
11:11
brrt joined
|
|||
jnthn | moritz: What's your latest ooc? | 11:11 | |
dalek | kudo/toqast: d0dc2d3 | moritz++ | src/core/IO/Socket/INET.pm: explicitly set encoding on sockets |
11:16 | |
kudo/toqast: e09fbe6 | moritz++ | src/core/IO/Socket/INET.pm: Merge remote branch 'remotes/origin/parrot-iocleanup1' into nom |
|||
kudo/toqast: cd31947 | moritz++ | src/core/List.pm: fix List.tree it got broken by the last API change of MapIter.new |
|||
kudo/toqast: 6db12d6 | moritz++ | src/core/IO/Socket/INET.pm: Revert "Merge remote branch 'remotes/origin/parrot-iocleanup1' into nom" This reverts commit e09fbe68707707004d1111dba7b0b6fb9e100541, reversing changes made to 5b56cfcf9286e70b9a77a73369b80ad98ad10786. |
|||
11:16
brrt left
|
|||
dalek | kudo/toqast: 3ac8c77 | moritz++ | src/core/List.pm: fix another misuse of MapIter.new, felher++ |
11:16 | |
kudo/toqast: acf9778 | jnthn++ | src/core/List.pm: Merge branch 'nom' into toqast |
|||
jnthn | Well. That worked out well for moritz :P | ||
I think we're down to a single figure number of spectests in need to triage now. | 11:17 | ||
JimmyZ | jnthn++ | 11:18 | |
11:20
birdwind1pbird joined
|
|||
arnsholt | jnthn: Any opinions on Parameter.sub_signature vs. Parameter.signature? | 11:20 | |
11:22
birdwindupbird left
|
|||
moritz | jnthn: perlpunks.de/paste/show/500e86e5.404c.6 | 11:28 | |
now tree.t should pass again | 11:29 | ||
jnthn | arnsholt: I worry a little that .signature may get confused with "the signature that this parameter is in" | ||
11:30
tokuhiro_ joined
|
|||
jnthn | moritz: and I fixed t/spec/S06-advanced/callframe.rakudo | 11:30 | |
(in the patch I pushed to nqp/toqast a few moments ago) | |||
Potentially that fixes t/spec/integration/error-reporting.rakudo too | |||
The two S12 ones are still a little mysterious. | 11:31 | ||
GlitchMr | > chdir '~' | 11:32 | |
Failed to change the working directory to '~': chdir failed: No such file or directory | |||
perl6: chdir '~' | |||
p6eval | niecza v19-13-g442e075: OUTPUT«Unhandled exception: chdir may not be used in safe mode at /home/p6eval/niecza/lib/CORE.setting line 0 (chdir @ 0)  at /tmp/LDYZ3t3YDl line 1 (mainline @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 3918 (ANON @ 3)  at /home/p6eval/niecza/lib/C… | ||
..rakudo 3ac8c7: OUTPUT«Failed to change the working directory to '~': chdir failed: No such file or directory in block <anon> at src/gen/CORE.setting:7404 in sub chdir at src/gen/CORE.setting:7399 in block <anon> at /tmp/MMAI8X3l25:1» | |||
GlitchMr | Wait, so '~' directory doesn't exist | ||
dalek | kudo/toqast: 7f3a7b2 | jnthn++ | src/Perl6/Actions.pm: Fix detection of existing CATCH in a try, fixing one of the broken tests in catch.t. |
11:33 | |
GlitchMr | oh, right, it's shell magic | ||
arnsholt | Yep | 11:36 | |
daxim | developers.slashdot.org/story/12/07...-announced | ||
arnsholt | But you can do the same thing with ENV<HOME> | 11:37 | |
tadzik | on unix | 11:38 | |
11:38
JimmyZ_ joined
|
|||
tadzik | HOMEDIR on windows | 11:38 | |
we need File::HomeDir and do this properly | |||
arnsholt | Aha. Windows keeps messing up my perfectly fine Unix-centric solutions =) | 11:39 | |
GlitchMr | perl6: run 'echo', 'world' | ||
p6eval | rakudo 3ac8c7: OUTPUT«run is disallowed in restricted setting in sub restricted at src/RESTRICTED.setting:2 in sub run at src/RESTRICTED.setting:8 in block <anon> at /tmp/tbXBok7SQZ:1» | ||
..niecza v19-13-g442e075: OUTPUT«Unhandled exception: run may not be used in safe mode at /home/p6eval/niecza/lib/CORE.setting line 0 (run @ 0)  at /tmp/vgpS3cjxmP line 1 (mainline @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 3918 (ANON @ 3)  at /home/p6eval/niecza/lib/CORE.… | |||
11:39
JimmyZ left,
JimmyZ_ is now known as JimmyZ
|
|||
GlitchMr | Just wondering, will be "run" implemented in Rakudo in near future | 11:40 | |
tadzik | not unless somebody implements it ;) | 11:41 | |
GlitchMr | What's so difficult in running programs without shell? | ||
execvp()? | 11:42 | ||
tadzik | well volunteered : | 11:43 | |
:) | |||
GlitchMr | If I can do this without problem on C, why it would be problematic in Perl 6? | 11:44 | |
tadzik | may be that it isn't | 11:45 | |
shouldn't that be motivating for you? | |||
sitting there and saying "go on guys, it's probably easy" isn't pushing the work forward | |||
you can also contribute and make world a better place :) | |||
GlitchMr | Well, I don't know how to modify anything in rakudo | 11:47 | |
hoelzro | GlitchMr: sounds like a good time to learn =) | ||
tadzik | it's not really different than modifying any other Perl 6 code | ||
moritz | when we started, none of us knew anything about changing stuff in rakudo | 11:48 | |
GlitchMr | src/core/control.pm | ||
168: die 'run() is not yet implemented, please use shell() for now'; | |||
possibly... | |||
But now the problem is that I probably would have to get into lower level | 11:49 | ||
Perhaps nqp could do it | 11:50 | ||
Or Parrot itself | |||
arnsholt | One option would be to implement the fork/exec pair in C in NQP, expose it as an op and then call that from Rakudo | 11:51 | |
11:52
Coleoid left
|
|||
GlitchMr | Would fork work in Windows? | 11:52 | |
arnsholt | I've no idea. I only speak Unix =) | ||
GlitchMr | multi run ( *$cmd, *@args, :$bg, :%env = %*ENV --> Proc::Status ) | 11:53 | |
What is *$? | |||
I know that *@ is flattened list, but what is *$ | |||
Is there any documentation on pir:: (Parrot) methods? | 11:57 | ||
tadzik | docs.parrot.org, look for Opcodes | ||
GlitchMr | What is __Is? | 11:59 | |
Actually, what are those prefixes | |||
tadzik | postfixes | ||
it's the signature, what arguments does the opcode take | |||
here's it's int and str, where Int is... boxed? rw? I don't remember | 12:00 | ||
flussence | yeah, capital letters are boxed iirc | 12:01 | |
GlitchMr | spawnw(out INT, invar PMC) | 12:02 | |
What is PMC? | |||
flussence | parrot object pointer... thingy | ||
arnsholt | It's what Parrot calls its objects | 12:03 | |
Timbus | they used to be magic cookies | ||
12:03
sisar joined
|
|||
arnsholt | (Originally Parrot Magic Cookie if memory serves, PolyMorphic Container these days IIRC) | 12:03 | |
sisar | hello #perl6 ! | ||
Timbus | yes that name is a bit stale now | ||
GlitchMr | "Spawn a subprocess whose program name and arguments are contained in the array $2 and wait for it to finish." | 12:04 | |
How can I make Parrot array | |||
arnsholt | ResizablePMCArray | ||
Timbus | tie a bunch of them together | ||
tadzik | hello sisar | ||
GlitchMr | I'm getting confused already | ||
pir::new('ResizablePMCArray')? | 12:05 | ||
arnsholt | There's a standard PMC called ResizablePMCArray | ||
12:05
birdwindupbird joined
|
|||
GlitchMr | r: pir::new('ResizablePMCArray') = 3 | 12:06 | |
p6eval | rakudo 3ac8c7: OUTPUT«(signal SEGV)» | ||
GlitchMr | I guess I shouldn't do it | ||
tadzik | :) | ||
it should react to nqp::push alright | |||
GlitchMr | Cannot assign a non-Perl 6 value to a Perl 6 container | 12:07 | |
ok | |||
tadzik | r: my Mu $a := pir::new('ResizablePMCArray'); nqp::push($a, nqp::unbox_i(5)); | ||
p6eval | rakudo 3ac8c7: ( no output ) | ||
tadzik | so far so good | ||
arnsholt | You'll probably have to bind it with := | ||
Yeah, what tadzik said | |||
tadzik | r: my Mu $a := pir::new('ResizablePMCArray'); nqp::push($a, nqp::unbox_i(5)); nqp::say(nqp::join($a, nqp::unbox_s(''))) | ||
p6eval | rakudo 3ac8c7: OUTPUT«» | ||
tadzik | hrm | ||
r: my Mu $a := pir::new('ResizablePMCArray'); nqp::push($a, nqp::unbox_i(5)); nqp::say(nqp::join(nqp::unbox_s(''), $a)) | 12:08 | ||
p6eval | rakudo 3ac8c7: OUTPUT«5» | ||
tadzik | aye, win | ||
lots of nqp:: and pir::, lots of unboxing; that's the prize for mangling on low level | |||
12:08
birdwind1pbird left
|
|||
GlitchMr | pir::shr__0II | 12:09 | |
What is that? | |||
tadzik | looks like shift-right | ||
0 doesn't ring a bell to me though | 12:10 | ||
GlitchMr | ok :) | ||
Is there any list of those prefixes thingy | 12:11 | ||
12:12
jerome joined
|
|||
dalek | kudo/toqast: e084b07 | jnthn++ | src/Perl6/Actions.pm: Fix last remaining failures in catch.t. |
12:20 | |
arnsholt | jnthn: Looks like the signature action method assumes that a signature only contains parameters, but I'm a bit wary of changing the data it returns, since it's used all over the place. Any thoughts? | ||
jnthn | arnsholt: Yeah, it being used in a fair few places worried me a bit too... | 12:22 | |
arnsholt: Though it probably is the right thing to do really. | 12:23 | ||
Having an extra thing in the array is possible, though potentially a bit of a hack and may make things harder really. | |||
arnsholt | What's the reason Actions.signature doesn't create the signature object and the thing using it attaches it? | ||
jnthn | Because other things higher up want to change things in it. | 12:24 | |
12:24
cognominal_ joined
|
|||
arnsholt | Right. In which case it makes sense to delay the creation | 12:24 | |
12:24
sirrobert left
|
|||
arnsholt | One thing I considered was to make the signature action attach a returns trait to the declared thing, but I can't quite see a way to do it | 12:25 | |
jnthn | The best solution (through a bit of a refactor) is if signature were to return a hash a key params which points to the array we have today, and optionally another key returns. | ||
12:25
cognominal left
|
|||
GlitchMr | Now, how I could call this: spawnw(out INT, invar PMC) | 12:25 | |
arnsholt | Yeah, probably the easiest | 12:26 | |
GlitchMr | pir::spawnw__I?() | ||
Or am I doing something wrongly | |||
jnthn | GlitchMr: pir::spawn__IP(...) | ||
arnsholt | spawnw__IP I think | ||
jnthn | er, spawnw | ||
arnsholt | The first one is the return type, then the rest of them are the argument types | ||
jnthn | r: pir::spawn__IP('foo') | 12:27 | |
p6eval | rakudo 3ac8c7: OUTPUT«use of uninitialized value of type Mu in string context in any <anon> at src/gen/BOOTSTRAP.pm:104use of uninitialized value of type Mu in string context in any <anon> at src/gen/BOOTSTRAP.pm:104===SORRY!===error:imcc:syntax error, unexpected IREG, expecting … | ||
jnthn | r: pir::spawn__IP('foo'); 1 | ||
p6eval | rakudo 3ac8c7: OUTPUT«use of uninitialized value of type Mu in string context in any <anon> at src/gen/BOOTSTRAP.pm:104use of uninitialized value of type Mu in string context in any <anon> at src/gen/BOOTSTRAP.pm:104===SORRY!===error:imcc:syntax error, unexpected IREG, expecting … | ||
arnsholt | Mmmm. imcc error | 12:28 | |
jnthn | r: nqp::p6box_i(pir::spawn__IP('foo')) | ||
p6eval | rakudo 3ac8c7: OUTPUT«use of uninitialized value of type Mu in string context in any <anon> at src/gen/BOOTSTRAP.pm:104use of uninitialized value of type Mu in string context in any <anon> at src/gen/BOOTSTRAP.pm:104===SORRY!===error:imcc:syntax error, unexpected IREG, expecting … | ||
12:28
snearch joined
|
|||
jnthn | oh | 12:28 | |
I spelt the op wrong again! | |||
r: nqp::p6box_i(pir::spawnw__IP('foo')) | |||
p6eval | rakudo 3ac8c7: OUTPUT«elements() not implemented in class 'Str' in block <anon> at /tmp/HQc8A8iyNt:1» | ||
jnthn | r: nqp::p6box_i(pir::spawnw__IP(nqp::list('foo'))) | ||
p6eval | rakudo 3ac8c7: ( no output ) | ||
jnthn | r: say nqp::p6box_i(pir::spawnw__IP(nqp::list('foo'))) | ||
p6eval | rakudo 3ac8c7: OUTPUT«65280» | ||
jnthn | r: say nqp::p6box_i(pir::spawnw__IP(nqp::list('sh'))) | ||
p6eval | rakudo 3ac8c7: OUTPUT«sh: 1: Land: not foundsh: 2: Land: not foundsh: 3: Land: not foundsh: 4: Heimat: not foundsh: 5: Volk,: not foundsh: 6: vielgerühmtes: not foundsh: 7: vielgerühmtes: not foundsh: 9: Heiß: not foundsh: 10: liegst: not foundsh: 11: einem: not foundsh: 12: H… | ||
jnthn | WHOA! | 12:29 | |
moritz | it gets the standard input from evalbot | ||
jnthn | :) | ||
moritz | r: say nqp::p6box_i(pir::spawnw__IP(nqp::list('ls', '/home'))) | ||
p6eval | rakudo 3ac8c7: OUTPUT«andaraashazawawicokecygxdiakopterdrainflussenceinfinoidjaphbmoritzp6evalrunpugssnarkyboojumsorearszabgabtenetewktryrakudo0» | ||
moritz | can anybody please test that on windows? | ||
I mean, spawn with an nqp::list | |||
r: say nqp::p6box_i(pir::spawnw__IP(nqp::list('ls', '~'))) # just checkin' | 12:30 | ||
p6eval | rakudo 3ac8c7: OUTPUT«ls: cannot access ~: No such file or directory512» | ||
moritz | \o | ||
jnthn | say nqp::p6box_i(pir::spawnw__IP(nqp::list('explorer', '.'))) # works nicely | ||
arnsholt | Actions.pm is NQP, right? | 12:31 | |
jnthn | arnsholt: Written in NQP, yes. | ||
masak | today, when you all have time, I'd like to talk about the four terms "abstraction", "encapsulation", "data hiding", and "information hiding". what they all mean to you, and whether some of them are equivalent or not. I had this discussion on #ruby yesterday, and it was very interesting. | 12:32 | |
jnthn | Somehow, "abstraction" feels like a combo breaker in that list :) | ||
masak | I'd like to recommend c2.com/cgi/wiki?EncapsulationIsNotI...tionHiding as reading material. | 12:33 | |
jnthn: well, yes and no. | |||
jnthn: "abstraction" enters into it all, though I agree it's the outgroup in the phylogenetic tree. | |||
moritz | ok, "abstraction" means to me that there's some way to do stuff without taking care of all the details myself | ||
GlitchMr | I have feeling I made run() command for Rakudo: paste.uk.to/60723c38 | 12:34 | |
But... I find this array creation method ugly... | |||
Is there better way? | |||
masak | "to abstract" means "to pull away" from insignificant details. so, the variable '$x' abstracts a certain value in an algorithm, for example. | 12:35 | |
jnthn | my $parrot_args := pir::new 'ResizablePMCArray'; | ||
use | |||
my $parrot_args := nqp::list(); | |||
moritz | or | 12:36 | |
GlitchMr | Thanks :) | ||
moritz | nqp::getattr(@args.eager, List, '$!items') | ||
jnthn | ooh | ||
moritz | GlitchMr: and please throw an exception when the return is not a success | ||
jnthn | That does avoid the loop, yes | ||
moritz | oh, but coerce everything to Str first | ||
GlitchMr | github.com/perl6/roast/blob/master...m.t#L4-L29 | ||
moritz | (*@args is copy) | 12:37 | |
GlitchMr | Exception? Weird, but Perl 6 specification says to return integer value then | ||
moritz | GlitchMr: the tests might disagree, I don't care :-) | ||
and the specs can also be adapted | |||
GlitchMr | The return value of either function is the exit status of the program, and can be evaluated in the following contexts: | ||
oh, but I will fix it | |||
moritz | but the general trend is to die or fail when something fails | ||
in the very least if spawning the process fails | 12:38 | ||
if the return value is non-zero, it might be OK not to die | |||
12:40
nightlord joined
|
|||
moritz | jnthn: any pointers on how to re-enable line numbers? or are you working on that? | 12:40 | |
jnthn | moritz: I pushed a patch to nqp/toqast earlier for it. | 12:41 | |
c21542ac | |||
GlitchMr | ok, it looks like paste.uk.to/ec04a604 for now | ||
moritz | jnthn: oh, then I just didn't notice it | 12:42 | |
jnthn | By my counting, we're now down to 2 tests files that need some native types stuff, 1 macros test file that needs diagnosis/fixing, and two undiagnosed failures in S12. | ||
GlitchMr | That "return $result but !$result;" is kind of platform specific, but well... | 12:43 | |
On most platforms (aside of VMS), success is 0 | |||
moritz | GlitchMr: please make it die or fail if the spawning of the process fails | 12:44 | |
GlitchMr | But... it isn't in the specification... I guess that specification needs to be updated then | ||
Also, how can I recognize if spawning of the process fails | 12:45 | ||
moritz | isn't that encoded in the return value of spawn? | ||
and yes, the specs might need updating | |||
GlitchMr | On my system, running unexistant program returns 255 | 12:46 | |
But I get this same result with: run 'perl', '-e', 'exit 255' | |||
moritz | does the parrot documentation say anything about it? | ||
GlitchMr | docs.parrot.org/parrot/latest/html/...s.ops.html | 12:47 | |
Possibly $!, but this feels system specific | |||
12:48
am0c left
|
|||
GlitchMr | err()* | 12:48 | |
moritz | well, better than not having any information at all | ||
we have X::OS exceptions for system specific error messages | |||
12:49
birdwind1pbird joined
|
|||
GlitchMr | Actually, I think it could be realistic | 12:49 | |
Just run pir::err__I() and I get ID | |||
pir::err_S() for string | 12:50 | ||
moritz | the question if, if you have to shift 8 bits to get to the return value, what's in those 8 shifted bits? | ||
perl 5 puts some information in there | |||
GlitchMr | ... I have no idea | ||
moritz | perldoc -f system has lots of info about that | ||
12:52
birdwindupbird left
|
|||
GlitchMr | On my system, trying to run unexistant program returns | 12:53 | |
65280 = 0xFF00 = 0b1111111100000000 | |||
So, those bits seem... useless... at least for that purpose | |||
12:54
PacoAir joined
|
|||
GlitchMr | run 'perl', '-e', 'exit 255'; also gives this same result | 12:54 | |
And "pir::err__I()" ALWAYS returns me "No such file or directory" for some reason | 12:57 | ||
r: say pir::err__I() | |||
p6eval | rakudo 3ac8c7: OUTPUT«No such method 'gist' for invocant of type 'Integer' in sub say at src/gen/CORE.setting:6985 in block <anon> at /tmp/j6zvjHxvDM:1» | ||
GlitchMr | r: say +pir::err__I() | ||
p6eval | rakudo 3ac8c7: OUTPUT«2» | 12:58 | |
GlitchMr | r: say ~pir::err__S() | ||
p6eval | rakudo 3ac8c7: OUTPUT«No such file or directory» | ||
13:00
sergot joined
13:01
eviltwin_b joined,
eviltwin_b left,
birdwindupbird joined
13:02
eviltwin_b joined,
eviltwin_b is now known as geekosaur,
sisar left
13:09
kaleem left
|
|||
GlitchMr | Any ideas about exceptions in run() and shell()? | 13:13 | |
masak | what exceptions would those throw? | 13:14 | |
GlitchMr | Checking for error is easy - anything else than 0. But checking what error it is... well... | ||
My current code looks like: | |||
paste.uk.to/29eecca3 | 13:15 | ||
13:22
moukeddar joined
|
|||
moritz | X::OS::Spawn or X::OS::Run | 13:25 | |
masak: did your macro investigations get anywhere? | |||
tadzik | GlitchMr++ # contributing | 13:27 | |
masak | moritz: haven't dug into it any further. I may tonight after $work. | ||
moritz | r:  f() | 13:28 | |
p6eval | rakudo 3ac8c7: OUTPUT«===SORRY!===CHECK FAILED:Undefined routine '&f' called (line 1)» | ||
moritz | line 1, eh? | ||
r:  say 4?LINE | |||
p6eval | rakudo 3ac8c7: OUTPUT«===SORRY!===Confusedat /tmp/qaVxbfQRPr:1» | ||
moritz | r:  say $?LINE | 13:29 | |
p6eval | rakudo 3ac8c7: OUTPUT«1» | ||
moritz | r: 1; say $?LINE | ||
p6eval | rakudo 3ac8c7: OUTPUT«4» | ||
13:29
kaleem joined
|
|||
moritz | r: use v6; say $?LINE | 13:29 | |
p6eval | rakudo 3ac8c7: OUTPUT«4» | ||
moritz | bug! | ||
t: use v6; say $?LINE | |||
p6eval | toqast : OUTPUT«4» | ||
moritz | t: use v6; foo() | ||
p6eval | toqast : OUTPUT«===SORRY!===CHECK FAILED:Undefined routine '&foo' called (line 1)» | ||
13:29
skids joined
|
|||
moritz | that (line 1) is also wrong | 13:29 | |
13:30
tokuhiro_ left,
tokuhiro_ joined
|
|||
moritz | r: use v6; foo() | 13:30 | |
p6eval | rakudo 3ac8c7: OUTPUT«===SORRY!===CHECK FAILED:Undefined routine '&foo' called (line 4)» | ||
moritz | that's what makes t/spec/integration/error-reporting.rakudo fail test 4 | ||
and the socket tests fail with "Malformed UTF-8 string in sub QX" here | 13:31 | ||
[Coke] | GlitchMr++ #spawn! | 13:32 | |
13:34
birdwindupbird left
13:35
pluto_ joined,
tokuhiro_ left
13:37
lumi_ left
|
|||
jnthn | r: use v6; foo() | 13:39 | |
p6eval | rakudo 3ac8c7: OUTPUT«===SORRY!===CHECK FAILED:Undefined routine '&foo' called (line 4)» | ||
jnthn | t: use v6; foo() | ||
p6eval | toqast : OUTPUT«===SORRY!===CHECK FAILED:Undefined routine '&foo' called (line 1)» | ||
jnthn | hmm | 13:40 | |
GlitchMr | So, I have working run() command... except I don't know WHEN to throw exception | ||
moritz | the most reliable approach is to read parrot's source code | 13:42 | |
to find out about possible error conditions, and how to detect them on the caller's side | |||
GlitchMr | Except I think that spawnw uses execvp internally | 13:43 | |
moritz | don't think, read | 13:45 | |
well, do both :-) | |||
13:52
odoacre left
13:56
bluescreen10 joined
|
|||
GlitchMr | > run | 13:57 | |
Empty argument array for execvp | |||
13:59
crab2313 joined
|
|||
moritz | we should catch that earlier | 14:02 | |
sub run(*@args ($, *@)) { ... } | |||
then you need to call it with at least one argument | |||
tadzik | r: sub run(*@args ($, *@)) { ... }; sub run2(*@args where +@args) { ... }; run | 14:04 | |
p6eval | rakudo 3ac8c7: OUTPUT«Not enough positional parameters passed; got 0 but expected at least 1 in sub-signature of parameter @args in sub run at /tmp/NJ2c5uglie:1 in block <anon> at /tmp/NJ2c5uglie:1» | ||
tadzik | r: sub run(*@args ($, *@)) { ... }; sub run2(*@args where +@args) { ... }; run2 | ||
p6eval | rakudo 3ac8c7: ( no output ) | ||
tadzik | sub run2(*@args where +@args > 0) { ... }; run2 | ||
r: sub run2(*@args where +@args > 0) { ... }; run2 | 14:05 | ||
p6eval | rakudo 3ac8c7: OUTPUT«Constraint type check failed for parameter '@args' in sub run2 at /tmp/iL8XmwiTqI:1 in block <anon> at /tmp/iL8XmwiTqI:1» | ||
tadzik | right, the first one gives a better error message | ||
GlitchMr | I had sub run (*@_ where * != 0) {... but I guess it's bad | 14:07 | |
Something like this: paste.uk.to/ce4b605f | 14:09 | ||
? | |||
moritz | that still doesn't die | 14:10 | |
but otherwise looks better | 14:11 | ||
GlitchMr | The problem is that I don't know when to die | ||
arnsholt | Huh. First step was easier than I though, apparently | ||
Fingers crossed for the spectest | |||
GlitchMr | I would use pir::err__I(), except something is wrong with it | ||
14:12
atrodo joined
|
|||
GlitchMr | It always returns 2 for me... but somehow not in REPL | 14:12 | |
Where it returns 0? | 14:13 | ||
confused | 14:14 | ||
14:14
erkan left
|
|||
moritz | GlitchMr: spawnw returns the return value from waitpid | 14:15 | |
GlitchMr: so read the waitpid docs to see what to make of the return value, and when to die | 14:16 | ||
GlitchMr | Interesting | 14:17 | |
moritz | afk | 14:18 | |
GlitchMr | But I guess I have problem. It should return -1, except it returns 255 | ||
arnsholt | Heeheehee. t/spec/S06-signature/introspection.rakudo: No plan found in TAP output | 14:19 | |
I think I broke it ^_^ | |||
14:20
snearch left
14:30
JimmyZ_ joined
14:33
JimmyZ left,
JimmyZ_ is now known as JimmyZ,
kaleem left
|
|||
arnsholt | n: sub a(--> Str) { "foo" }; say &a.signature.returns | 14:36 | |
p6eval | niecza v19-13-g442e075: OUTPUT«Unhandled exception: Unable to resolve method returns in type Signature at /tmp/xLAVPJHZub line 1 (mainline @ 5)  at /home/p6eval/niecza/lib/CORE.setting line 3918 (ANON @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 3919 (module-CORE @ 562)  a… | ||
arnsholt | n: sub a(--> Str) { "foo" }; say &a.returns | ||
p6eval | niecza v19-13-g442e075: OUTPUT«Unhandled exception: Unable to resolve method returns in type Sub at /tmp/XtU__TiEFN line 1 (mainline @ 4)  at /home/p6eval/niecza/lib/CORE.setting line 3918 (ANON @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 3919 (module-CORE @ 562)  at /hom… | ||
14:37
sisar joined
|
|||
arnsholt | I get a single spectest failure in filestat.t is that expected? | 14:39 | |
14:45
sisar left
|
|||
jnthn | arnsholt: I get failures in taht file on Windows. | 14:48 | |
arnsholt: Could be platform specific issue. | |||
arnsholt | Quite. On my Linux, test no. 8 fails | ||
kresike | bye all | 14:52 | |
14:52
kresike left
14:59
fhelmberger left
15:04
birdwind1pbird left
15:05
nightlord left
15:09
mikemol left
15:11
mikemol joined
15:13
felipe left
15:17
pluto_ left
15:18
hoelzro is now known as hoelzro|away
15:21
JimmyZ left
15:28
moukeddar left
15:29
hoelzro|away left
15:34
hoelzro|away joined
15:44
takadonet joined
15:55
pyrimidine joined
15:57
sudokode left
15:58
sudokode joined
16:11
bbkr left
16:20
lumi_ joined
16:21
dbr left
16:29
crab2313 left
16:32
fgomez joined
16:40
nodmonkey joined
16:41
felipe joined
16:48
[hds] joined,
[hds] left
16:50
seldon left
16:51
seldon joined
16:52
dakkar left
|
|||
dalek | c: 080974a | moritz++ | README: update README |
16:54 | |
[Coke] | r: my $p = "perl 5"; substr($p, 6, 1, '6'); say $p | ||
p6eval | rakudo 3ac8c7: OUTPUT«Too many positional parameters passed; got 4 but expected between 2 and 3 in sub substr at src/gen/CORE.setting:2045 in block <anon> at /tmp/8LwndiIhQI:1» | ||
geekosaur | substr-rw? | 16:57 | |
dalek | p/toqast: f5d0884 | jnthn++ | src/QAST/Compiler.nqp: Don't emit variable lookup code when the variable is in void context. Cuts down on code generated for declarations, but also fixes implicit %_ handling. |
16:58 | |
jnthn | moritz: Did you manage to figure out what was going on in S12-methods/method-vs-sub.t? I know you were looking at it... | 16:59 | |
masak | geekosaur: for when you want to changed the indicated subpart of a Str. | ||
change* | |||
geekosaur thinks he just got misread | 17:00 | ||
masak | oh, you didn't ask what it was, sorry :) | ||
17:00
pyrimidine left,
Tene left,
Bucciarati left,
charsbar_____ left,
felher left,
smash left,
Pleiades` left,
lue left,
phenny left,
sivoais left,
aloha left
|
|||
geekosaur | was responding to [Coke]'s thing | 17:00 | |
masak | r: my $s = "OH HAI"; substr-rw($s, 3, 1) = 'B'; say $s | 17:01 | |
p6eval | rakudo 3ac8c7: OUTPUT«OH BAI» | ||
geekosaur | (using substr not quite as an lvalue, but I wouldthink thta usage would either be completley wrong or go with substr-rw instead of substr) | ||
17:02
pyrimidine joined,
Tene joined,
charsbar_____ joined,
Pleiades` joined,
lue joined,
phenny joined,
sivoais joined,
aloha joined,
felher joined,
pyrimidine left,
pyrimidine joined
17:03
Bucciarati joined
17:04
smash joined
|
|||
rurban | rakudo fails the spectests on nom and parrot-iocleanup1 | 17:06 | |
ERL6LIB="lib:." ./perl6 t/spec/S01-perl-5-integration/array.t => Undefined routine '&VAR' called (line 57) | |||
moritz | geekosaur: not so wrong, it could simply return a modified copy | 17:07 | |
masak | good eve'n, #perl6 | ||
moritz | jnthn: no, didn't find out anything. Just that the problem is weird. | ||
rurban: it shouldn't even run that file | 17:08 | ||
pyrimidine | masak: whatever came about re: splitting .trans functionality? | ||
moritz | rurban: which command did you launch? 'make spectest'? | ||
rurban | make spectetst_full | ||
moritz | that runs all test files, not just those expected to pass | 17:09 | |
rurban | I see, good | ||
moritz | so failures are to be expected | ||
masak | pyrimidine: in that thread, there was some very confused counter-proposing, and one approval from cjfields. there were some approving voices here on the channel, but in total the reaction hasn't superseded the friction of not changing anything, IMO. | 17:10 | |
pyrimidine is cjfields :) | |||
jnthn | moritz: Yeah, it's weird. :) | 17:11 | |
pmichaud | My sense is that there's consensus that .trans needs to change, but not (yet) on what it should change to | ||
but I haven't followed the thread terribly closely yet | 17:12 | ||
masak | yary's email can be summarized as "I've misunderstood what .trans does". | ||
cjfield's email can be summarized as "I like this. I think the efficiency concerns are real." | 17:13 | ||
pyrimidine: oh! hi :) | 17:14 | ||
pyrimidine | :) | ||
yep, that pretty much sums it up | |||
17:14
vmspb joined
|
|||
jnthn | moritz: Think I figured it... | 17:15 | |
yay. | |||
17:15
sisar joined
|
|||
pmichaud | masak: now that I'm re-reading the thread a bit, what's the difference between .translate and .subst ? | 17:16 | |
I mean, yes, they're different, but they seem related also. | |||
jnthn | moritz: It was the use of { foo => 42 } to construct hashes that was busted, of all things... | 17:17 | |
17:17
dbr joined
|
|||
pyrimidine | pmichaud: maybe a p5 flag for .trans? | 17:17 | |
masak | pmichaud: .translate does one-pass parallel *multi-character* substring subtitution (using strings or regexes or blocks of code) on a single string. | 17:19 | |
pmichaud | ...doesn't .subst do multi-character substitution, though? | 17:20 | |
masak | pmichaud: .trans (as I propose it) will have more or less exactly the functionality of p5 tr///: one-pass *single-character* substring substitution (using just characters). | ||
geekosaur | fwiw I thought the proposal made a lot of sense, but as I keep demonstrating my p6fu is still somewhat weak... | ||
[Coke] | geekosaur: github.com/perl6/book/issues/73 | ||
masak | pmichaud: subst does multi-character substitution, but serially, not in parallel. | ||
pyrimidine | masak: here is the thread: www.nntp.perl.org/group/perl.perl6....35024.html | ||
masak | that's a very important distinction. | ||
pyrimidine: thank you. | |||
pmichaud | masak: can you give an example of the difference? | ||
masak | pmichaud: the & example in the p6advent post linked from my yary reply. | 17:21 | |
pmichaud | looking. | ||
and then the question becomes, could .subst be extended to provide the parallelism? | |||
masak | ooh :) | ||
I think I like that idea. | |||
pmichaud | my point is that .subst does multi-character replacement; it seems like .translate is just a generalization to doing "more than one at a t time" | 17:22 | |
pyrimidine | that makes sense to me as well | ||
pmichaud | in other words, perhaps the mistake was in putting the new desired semantics into .trans instead of .subst :-) | ||
masak | yes; deflate .trans to p5 sanity levels. forget about .translate and push the semantics into .subst | ||
dalek | kudo/toqast: eb13c5a | jnthn++ | src/Perl6/Actions.pm: Fix an accidental violation of the QAST::Stmt usage rules when a block becomes a hash. |
||
masak | pmichaud: I think that makes a lot of sense and I would have proposed it myself had I seen it sooner. | 17:23 | |
pmichaud | I just noticed it myself (more) | ||
I mentally bikeshedded the name ".translate" and said "no, that's really .replace", which then made me think "wait a minute, we already have a .replace, but it's called .subst" :-) | 17:24 | ||
anyway, I'm in agreement that .trans should be limited to the p5 form. | 17:26 | ||
also, note that since I refactored .match, it may be possible to improve the .subst implementation a bit | 17:27 | ||
(I hadn't gotten around to looking at that yet) | |||
pyrimidine | pmichaud: does .subst handle something like: | 17:29 | |
is $s.trans([<X Y>] => [{++$x},{++$y}]) | |||
s/is// | |||
e.g. can the pattern => replacement be pairs? | 17:30 | ||
masak | frankly, I think the [...] => [...] form is a premature (syntactic) optimization and should be scrapped in the transition. | ||
we have Z=> now and can split our own arrays. | 17:31 | ||
pyrimidine | masak: sounds good to me | ||
simpler is better | |||
pmichaud | masak: I totally agree. Using the array on the lhs of => has always felt wrongish. | 17:32 | |
masak | it's one of the things that confuse the API user. | 17:33 | |
pmichaud | even just <X Y> Z <abc def> can work :-) | ||
[Coke] | +# 07/24/2012 - rakudo++ (22934); niecza (89.87%); pugs (41.01%) | 17:36 | |
dalek | c: 4b7d9c8 | moritz++ | type-graph.txt: [type-graph] remove Rakduo-specific stuff |
||
[Coke] | pugs gaining slightly. niecza failing 1, rakudo failing 2. | ||
p: say 41.01/89.87 | 17:37 | ||
p6eval | pugs: OUTPUT«0.4563258039390230332702792923111160565261» | ||
pmichaud | [Coke]++ | ||
moritz | r: say Rational.^mro | ||
p6eval | rakudo 3ac8c7: OUTPUT«None of the parametric role variants for 'Rational' matched the arguments supplied.Cannot call '_block55916'; none of these signatures match::(Mu , Mu , Mu ) in any specialize at src/gen/Metamodel.pm:1898 in <anon> at src/gen/Metamodel.pm:2169 in <anon> at… | ||
pyrimidine | pmichaud: so something like: $s.subst( <X Y> Z [{++$x},{++$y}], :parallel ) | 17:38 | |
[Coke] | p: say 22934*(89.87/2-41.01) | ||
pyrimidine | ? | ||
p6eval | pugs: OUTPUT«90015.95» | ||
[Coke] | p: say 22934*(89.87/2-41.01)/100 | ||
p6eval | pugs: OUTPUT«900.1595» | ||
[Coke] | that's a lot of tests to get to half of niecza. ah well. ;) | ||
17:43
daguest joined
|
|||
daguest | hi | 17:43 | |
moritz | hello daguest | ||
skids | Hrm wouldn't adverbs in subst args lead to some surprising results if you were passing in pairs with the same key as the adverb? | 17:44 | |
pmichaud | pyrimidine: assuming they need to be in arrays, yes, although I would probably not want the brackets | ||
[Coke] | r: say 1,2,* + *..100; say 1,2,* * *..100; say 1,2,* ** *..100 | ||
p6eval | rakudo 3ac8c7: OUTPUT«12WhateverCode.new()12WhateverCode.new()12WhateverCode.new()» | ||
pmichaud | $s.subst( X => {++$x}, Y => {++$y}, ... ) | 17:45 | |
or | |||
[Coke] | ah. must have a really old perl6 installed on feather. | ||
moritz | skids: why would they? | ||
pmichaud | $s.subst(( <X Y> Z {++$x}, {++$y}), ... | ||
[...] arrays tend not to flatten | 17:46 | ||
moritz | skids: oh, you mean if we allow passing trans-style pairs to it | ||
skids | right. | ||
pmichaud | skids: yes, you're correct; my first example would be treated as named arguments. | ||
so | |||
$s.subst( (X => {++$x}, Y => {++$y}), ... ) # or some such | |||
pyrimidine | yes, that makes sense and keeps in line with the second example using Z | 17:47 | |
pmichaud | just a caution that it may in fact be that we want to keep the parallel-replacement semantics separate from .subst also; I mainly wanted to point out that we need to include it in our discussions as well :) | 17:48 | |
dalek | c: 70eb964 | moritz++ | / (2 files): [type graph] fix for roles with superclasses also remove some more non-spec types |
17:49 | |
pyrimidine | pmichaud: right | ||
masak | pyrimidine: I think parallel substitution should be the default in .subst -- if you want serial substitution, just make several .subst calls in a row. | ||
17:49
Chillance joined
|
|||
pyrimidine | would you even need a :parallel adverb? | 17:49 | |
right | |||
pmichaud | well, keep in mind that .subst also has :global, :ex, :ov, flags | 17:50 | |
so the permutations there might get weird-ish | |||
skids | .oO(Can a signature capture a junction before it gets exploded? thinking subst(X=>a|Y=>b)) |
||
moritz | please don't make .subst any more complicated than it is today | ||
dalek | ecs: d9d8b35 | larry++ | S32-setting-library/Str.pod: refactor case mappings (again) There is no more titlecase function. Instead there is a suite of mapping functions appropriate to apply on a word-by-word basis (tc, tclc, and tcuc), and a wordcase function that defaults to normal capitalization rules for English (without attempting to handle exceptions). |
||
ecs: e17e4d4 | larry++ | S32-setting-library/Str.pod: make provision for exceptions Smartmatching again leaps into action! |
|||
sorear | good * #perl6 | 17:51 | |
moritz | skids: yes. But Junctions are not suitable for this job | ||
pyrimidine | have to agree with moritz, seems like this could complicate .subst more | ||
TimToady | plus, your precedence is wrong | 17:52 | |
17:52
desertm4x joined
|
|||
skids | ah. | 17:52 | |
I was just casually punning off pmichaud's ":parallel". | |||
masak | yes, junctions have to do with boolean truth in some sense. substitutions don't. | 17:53 | |
pmichaud | wasn't my :parallel, I don't think :) | ||
GlitchMr | sub sleep($seconds = $Inf) { | ||
Infinity? | |||
pyrimidine | also, tr/// (p5) has c and d modifiers/flags. | ||
skids | oh right, pyrimidine said that. | ||
pmichaud | thus far I've been kind of careful not to say ":parallel" (and on purpose :) | 17:54 | |
masak | it would seem to me that if .subst were to be extended to do several substitutions, they should be simultaneous in the sense that .trans is now. so there's no need for ":parallel". | 17:55 | |
pyrimidine | masak: right | ||
skids | It's going to be a long time before my old brain absorbs that whole precedence map, for sure. :-) | ||
pmichaud | masak: one difference though is that .trans implies a ":global" equivalent, while .subst defaults to "one only" | 17:56 | |
GlitchMr | What is point having infinity seconds sleep? | ||
(I will even skip that in Rakudo it's 1e16 seconds, but whatever) | |||
pmichaud | GlitchMr: sleep(Inf) may be a way of saying "wait indefinitely for a signal" | 17:57 | |
moritz | GlitchMr: it *is* infinite in rakudo | 17:58 | |
nqp::sleep(1e16) while True; | |||
sorear | I guess that's almost as good as calling pause(2) | ||
GlitchMr | Oh, I see... | ||
sorear | hmm. "Pause is mad obsolete by sigsuspend(2)." | 17:59 | |
pyrimidine | pmichaud: I suppose one could default to replacing only the first match for each pattern | ||
pmichaud | pyrimidine: I fear that way lies madness. | ||
pyrimidine | I know | ||
sort of argues for splitting out the behavior | 18:00 | ||
(into another method) | |||
pmichaud | ...the :g/:ex/:ov part of .subst is the part that makes me think that .translate might not be part of .subst directly. | ||
moritz | and :nth | ||
GlitchMr | multi infix:<+>(\$a, \$b) { $a.Numeric + $b.Numeric } | ||
pmichaud | yes, and :nth and :x | ||
GlitchMr | How infix:<+> could work before being declared? | 18:01 | |
pyrimidine | but one could certainly implement .translate using .subst | ||
moritz | GlitchMr: it's in the grammar | ||
[Coke] | sorear: mad obsolete, yo. | ||
pmichaud | yeah, I like "mad obsolete". Will have to use that somewhere :-) | 18:02 | |
moritz | and as soon as the grammar knows about them, they're just normal subroutine calls, which are allowed to occur before the declaration | ||
18:02
atrodo left
|
|||
masak | pmichaud: hm, troo. | 18:05 | |
daguest | is there a way to tell the $tring.words method (or similar method) to treat quoted text as a single word? I have a for $tring.words -> $word {given $word {when /regex/{} when /regex2/{}}} now the problem is regex2 block would like to have a string that may contain spaces, but I don't find a pretty way to use this cycle-aside from spltting manually instead of with .words, dont wanna! XD-, and for other stuff the for/given (s | 18:06 | |
GlitchMr | System.IO.FileNotFoundException: Could not load file or assembly 'Perl5Interpreter' or one of its dependencies. The system cannot find the file specified. | 18:07 | |
wait... so there is Perl5Interpreter? | |||
pmichaud | daguest: perhaps something like $string.comb(/".*?" | \S+/) ? | 18:08 | |
maybe || instead of | there | |||
r: .say for 'alpha beta "quoted string" gamma'.comb(/".*?" || \S+/) | 18:09 | ||
p6eval | rakudo 3ac8c7: OUTPUT«alphabeta"quotedstring"gamma» | ||
pmichaud | oh. | ||
r: .say for 'alpha beta "quoted string" gamma'.comb(/\".*?\" || \S+/) | 18:10 | ||
p6eval | rakudo 3ac8c7: OUTPUT«alphabeta"quoted string"gamma» | ||
18:13
xinming left
18:14
atrodo joined
|
|||
GlitchMr | perl6: uniq([1, 2], '1 3', [1, 3], [1, 2], '1 2').perl.print | 18:14 | |
p6eval | niecza v19-13-g442e075: OUTPUT«===SORRY!===Undeclared routine: 'uniq' used at line 1Unhandled exception: Check failed at /home/p6eval/niecza/boot/lib/CORE.setting line 1402 (die @ 5)  at /home/p6eval/niecza/src/STD.pm6 line 1147 (P6.comp_unit @ 37)  at /hom… | ||
..rakudo 3ac8c7: OUTPUT«([1, 2], "1 3").list» | |||
GlitchMr | perl6: ([1, 2], '1 3', [1, 3], [1, 2], '1 2').uniq.perl.print | ||
p6eval | rakudo 3ac8c7, niecza v19-13-g442e075: OUTPUT«([1, 2], "1 3").list» | ||
18:15
xinming joined,
MayDaniel joined
|
|||
GlitchMr | Fixing this without huge slowdown would be... almost impossible | 18:16 | |
18:16
birdwindupbird joined
|
|||
pmichaud | GlitchMr: 'uniq' has a known bug in rakudo, I think. rt.perl.org/rt3/Public/Bug/Display...l?id=83454 | 18:16 | |
18:17
daxim left
|
|||
GlitchMr | Actually, I have feeling it will be easy to fix | 18:18 | |
Except not | 18:19 | ||
pmichaud | I suspect one could use a stringification hash as an optimizing step | 18:20 | |
GlitchMr | Now only if I would find uniq in Synopsis | 18:21 | |
pmichaud | GlitchMr: in S32, probably | ||
skids | Is there a converse to "lift" for stuff like the (broken) evals here: irclog.perlgeek.de/perl6/2012-07-18#i_5824936 ? | ||
jnthn | Why can't we use object hashes, now we have them? | ||
(for uniq) | |||
pmichaud | jnthn: do they use === semantics? | ||
GlitchMr | My solution would be 30.WHICH | 18:22 | |
perl6: say 30.WHICH | |||
p6eval | niecza v19-13-g442e075: OUTPUT«30[-7C804600]» | ||
..rakudo 3ac8c7: OUTPUT«Int|30» | |||
[Coke] | p: say 30.WHICH | ||
p6eval | pugs: OUTPUT«30» | ||
pmichaud | GlitchMr: I'm pretty sure that .WHICH won't be the right solution. | 18:23 | |
GlitchMr | Why not? | ||
Basing on spec, immutable objects should have this same .WHICH value | |||
pmichaud | but uniq isn't limited to immutables. | ||
my @a = 1,1; say @a[0] == @a[1]; say @a[0].WHICH; say @a[1].WHICH; | 18:24 | ||
r: my @a = 1,1; say @a[0] === @a[1]; say @a[0].WHICH; say @a[1].WHICH; | |||
GlitchMr | == is numeric equation | ||
p6eval | rakudo 3ac8c7: OUTPUT«TrueInt|1Int|1» | ||
jnthn | pmichaud: yes | ||
pmichaud: .WHICH iirc | |||
pmichaud | hmmmm | ||
thinking | |||
jnthn | dinner, bbs | 18:25 | |
pmichaud | r: say 1|2 === 1|2 | 18:26 | |
p6eval | rakudo 3ac8c7: OUTPUT«any(any(True, False), any(False, True))» | ||
pmichaud | r: say 1&2 === 1&2 | ||
p6eval | rakudo 3ac8c7: OUTPUT«all(all(True, False), all(False, True))» | ||
pmichaud | r: say (1&2).WHICH eqv (1&2).WHICH | ||
p6eval | rakudo 3ac8c7: OUTPUT«False» | ||
pmichaud | well, using an object hash would certainly bring us closer. | 18:27 | |
[Coke] | TimToady: why is it "tc" but "wordcase"? | 18:32 | |
TimToady | because tc is a simple operation, and wordcase isn't | 18:34 | |
18:39
kaare_ left,
snearch joined
|
|||
jnthn back | 18:44 | ||
dalek | ecs: 4d51ab7 | larry++ | S32-setting-library/Str.pod: force exceptions to lc or uc |
18:45 | |
moritz | TimToady++ tc etc. cleanup | 18:48 | |
masak | TimToady++ | 18:49 | |
18:51
thou joined
|
|||
pmichaud | TimToady: ooc, do you have some test cases already developed (e.g., while fixing up the spec)? | 18:52 | |
moritz | pmichaud: he has just proven it correct :-) | 18:53 | |
TimToady | sorry, no--I probably shouldn't even be speccing till I'm more fully recovered, but couldn't resist... :) | ||
jnthn | r: sub foo() returns int { 1 }; say foo() | 18:54 | |
p6eval | rakudo 3ac8c7: OUTPUT«Type check failed for return value; expected 'int' but got 'Int' in sub foo at /tmp/4WjEEnfuOb:1 in block <anon> at /tmp/4WjEEnfuOb:1» | ||
pmichaud | moritz: oh, I'm certain it's correct; I just wanted to steal any test cases for the roast suite so we could use those same cases in determining if Rakudo is "correct" :) | ||
TimToady | also, making other people write my tests will tend to flush out spec bugs I wouldna thoughta. | ||
jnthn | Heh...the bugs an inlining optimizer hides... | ||
TimToady | .oO(black box speccing) |
18:55 | |
moritz | TimToady: just to be clear, tc title-cases upper-case characters too, right? | 18:56 | |
TimToady | yes | ||
it's like what you might want at the beginning of a sentence | |||
we should also have an ic that puts an illiminated capital on the page, defaulting to Book of Kells style :) | 18:57 | ||
pmichaud | I call "module" for that :-P | ||
masak | +1 | 18:58 | |
moritz | p6: say 'ΣΣ'.lc | ||
p6eval | rakudo 3ac8c7: OUTPUT«σς» | ||
..niecza v19-13-g442e075: OUTPUT«σσ» | |||
moritz | rakudo++ | ||
masak submits nieczue | |||
moritz | en.wikipedia.org/wiki/Title_case#Special_cases | 18:59 | |
TimToady | the spec is assuming that "character" is interpreted liberally enough to encompass special cases | 19:00 | |
pmichaud | might want to mention that in the spec :) | ||
TimToady | but then it wouldn't be an assumption :P | ||
pmichaud | correct, it wouldn't. | 19:01 | |
TimToady | and we want people to assume concordance with Unicode | ||
masak | pmichaud++ # not going "arrrrrrrrrgh!" | ||
:P | |||
pmichaud | masak: oh, I assumed that would be TimToady++'s response :) | ||
masak | oh. | ||
clearly I'm still new at this. :) | |||
TimToady | if I went "arrrrrrrrgh!" right now it would result in a 3-minute coughing fit | 19:02 | |
pmichaud | TimToady: yes, we want people to assume concordance with Unicode; but some won't, and we can avoid the FAQ by making it explicit. :) | ||
moritz | TimToady: then don't :-) | ||
dalek | ast: 3df92ce | moritz++ | S32-str/lc.t: test lc("ΣΣΣ") |
||
pmichaud | unless we want the surprise to be a teaching moment :)( | ||
masak | "you might want to put [useful assumption] in the spec" -- "but then it wouldn't be an assumption :P" looked to me like a highly frustrating response. :) | ||
moritz | ok, I want to write some more tests. What's an example where $x.tc ne $x.ucfirst? | 19:04 | |
TimToady | anyway, it's already specced in S02: In the abstract, Perl is written in Unicode, and has consistent Unicode semantics | ||
pmichaud | masak: TimToady++ has other more powerful forms of frustration for us implementors :-) :-). Here I was trying to torment the spec author on behalf of the users. | ||
TimToady | so I was just following DRY | ||
or DRM in this case | 19:05 | ||
moritz | what is 'ß'.tc? 'Ss'? | ||
nrp: say 'ß'.ucfirst | |||
p6eval | rakudo 3ac8c7, niecza v19-13-g442e075, pugs: OUTPUT«ß» | ||
moritz | nrp: say 'ß'.uc | ||
p6eval | rakudo 3ac8c7, niecza v19-13-g442e075, pugs: OUTPUT«ß» | ||
TimToady | eval: say ucfirst 'ß' | ||
buubot_backup | TimToady: ERROR: syntax error at (eval 20) line 1, near "say ucfirst" | ||
pmichaud | nqp: say(pir::titlecase__Ss('ß')); | 19:06 | |
p6eval | nqp: OUTPUT«S␀s␀» | ||
pmichaud | icu claims it's 'Ss' | ||
sorear | n: say "\c[LATIN LARGE LETTER SHARP S]" | ||
p6eval | niecza v19-13-g442e075: OUTPUT«===SORRY!===Unrecognized character name LATIN LARGE LETTER SHARP S at /tmp/2pOrlSXk0G line 1:------> say "\c[LATIN LARGE LETTER SHARP S⏏]"Unhandled exception: Check failed at /home/p6eval/niecza/boot/lib/CORE.se… | ||
TimToady | eval: print ucfirst 'ß' | 19:07 | |
buubot_backup | TimToady: Ss1 | ||
sorear | n: say "\c[LATIN CAPITAL LETTER SHARP S]" | ||
p6eval | niecza v19-13-g442e075: OUTPUT«ẞ» | ||
TimToady | recent p5 will generally be correct on these subjects | ||
moritz | eval: $^V | 19:08 | |
buubot_backup | moritz: bless( {original => "v5.16.0",qv => 1,version => [5,16,0]}, 'version' ) | ||
moritz | that's recent enough I think :-) | ||
TimToady | that is recent enough, but 5.14 isn't :) | ||
19:09
desertm4x left
|
|||
TimToady | eval: print lcfirst ucfirst 'ß' | 19:09 | |
buubot_backup | TimToady: ss1 | ||
TimToady | note that roundtripping is not guaranteed | ||
or in this case, guaranteed not :) | 19:10 | ||
19:10
mucker left
19:11
lichtkind joined
|
|||
TimToady | eval: print uc ucfirst 'ß' | 19:11 | |
buubot_backup | TimToady: SS1 | ||
lichtkind | skillsmatter.com/podcast/home/scala...ynote-3018 <- interesting talk about lang design from guy steele | 19:12 | |
dalek | ast: 06b839a | moritz++ | S32-str/ (2 files): transmogrify ucfirst tests into tc tests |
19:13 | |
kudo/nom: a4eacdf | moritz++ | t/spectest.data: remove ucfirst/lcfirst tests they are gone or going |
19:14 | ||
ecs: a1a0394 | moritz++ | S (2 files): remove last traces of lcfirst |
19:16 | ||
ast: acd0411 | coke++ | S32-str/lc.t: pugs fudge new test |
|||
[Coke] attempts to keep the smoke clear for pugs. | 19:17 | ||
dalek | ast: 0ac9064 | moritz++ | S32-str/lcfirst.t: remove lcfirst.t "I know a dead function when I see one" |
||
ast: 8bcf6d1 | moritz++ | S32-str/tc.t: another tc test |
19:18 | ||
moritz | [Coke]: renaming ucfirst to tc will get you 99% there :-) | ||
dalek | gs.hs: daff589 | coke++ | t/spectest.data: track spectest removal |
||
19:20
larks_ is now known as larks
19:21
larks left,
larks joined
|
|||
TimToady | to me, "abstraction" is an agency by which I can speak generically and have it automatically applied to specific cases | 19:21 | |
dalek | ast: dd2f7f4 | moritz++ | S32-str/tclc.t: basic tclc tests |
||
masak | TimToady: I like that definition. | 19:22 | |
moritz | wow, TimToady is a fast backlogger :-) | ||
TimToady | multithreading... | ||
masak sees "Archetypes.pm" flash by in the make output of nqp, and has a feeling that deep in 6model there are ancient beings of terrifying power | 19:23 | ||
TimToady | encapsulation is a one-sided hierarchical view of separation-of-concerns | ||
geekosaur suddenly wonders if the convergent discussion between #p6 and #dw had more than himself in common... | |||
TimToady | which is why I speak about excapsulation from time to time | ||
I almost never think of "data hiding", but rather of "state hiding" | 19:24 | ||
masak | whatsthedifference | 19:25 | |
19:25
desertm4x joined
|
|||
TimToady | apart from the simplification of abstraction, data/information hiding is not needed for immutable objects, since it's the state changes that need private management | 19:26 | |
GlitchMr | Just wondering, how can I do something similar to perldoc.perl.org/functions/tie.html | 19:27 | |
moritz | masak: re-hasing a hash table is data hiding, not state hiding | ||
GlitchMr | I would like to have hash-like object | ||
moritz | GlitchMr: make them implement the Associative role, and override postcircumfix:<{ }> for it | ||
jnthn | GlitchMr: Write a class that implements at_key | ||
masak | moritz: huh. a member of #ruby made a similar distinction between "data" and "information". | ||
moritz | or in rakudo, method at_key | ||
masak | everyone has different definitions :) | ||
jnthn | Well, you *can* override postcircumfix too. | 19:28 | |
moritz | right | ||
postcircumfix handles stuff like slices for you | |||
jnthn | It's just that if you override at_key you get all the postcircumfix variants for free :) | ||
moritz | and then delegates to at_key | ||
GlitchMr | What about other methods. | 19:29 | |
TimToady | well, to me an object is the endpoint of a protocol (or event stream, if you will), and an immutable just gives more predictiable responses | ||
GlitchMr | oh, I see... | ||
moritz | we *should* spec {} => AT_KEY, {}:exists => EXISTS_KEY, {}:delete => DELETE_KEY | ||
TimToady | so you want immutable objects to model math, and mutable objects to model the real world. :) | ||
moritz | same for [] and s/_KEY/_POS/ | ||
masak | moritz: +1 | 19:30 | |
GlitchMr | multi sub postcircumfix:<{ }>(%hash, @keys) | ||
This way? | |||
moritz | GlitchMr: rakudo or niecza? | ||
in rakudo, postcircumfixes are methods | |||
GlitchMr | Well, I would like both | ||
moritz | i think it's a sub in niecza | ||
masak | ISTR so too. | 19:31 | |
19:32
daguest left
|
|||
sorear | it's not multi in niecza | 19:32 | |
19:32
sergot left
|
|||
masak | toqast: macro foo { my $x = 42; quasi { $x } }; my $result = foo; say $result | 19:33 | |
p6eval | toqast : OUTPUT«Cannot assign a non-Perl 6 value to a Perl 6 container in block at /tmp/A1SljIq__q:1» | ||
masak is back to looking at the cause of ^ | |||
jnthn | masak: Does it need the variable? | ||
masak | toqast: macro foo { my $x = 42; quasi { $x } }; say foo | 19:34 | |
p6eval | toqast : OUTPUT«Null PMC access in find_method('gist') in sub say at src/gen/CORE.setting:7004 in block at /tmp/uuFw5qoNKp:1» | ||
masak | something is wrong even without it, if that's what you're asking. | ||
jnthn | yeah | ||
Well, I don't need to tell you of all people how to golf. :) | 19:35 | ||
moritz | .u ῼ | ||
phenny | U+1FFC GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI (ῼ) | ||
moritz | rnp: say lc 'ῼ' | ||
p6eval | rakudo 3ac8c7, pugs: OUTPUT«ῳ» | ||
..niecza v19-13-g442e075: OUTPUT«ῼ» | |||
masak | toqast: macro foo { quasi { 42 } }; say foo | 19:36 | |
p6eval | toqast : OUTPUT«42» | ||
masak | significant finding. | ||
tests++ | |||
moritz | 'nother nieczabug | ||
masak | values survive through. | ||
19:36
GlitchMr left
|
|||
masak | it's variables that are screwed up. | 19:36 | |
19:36
thelazydeveloper joined
|
|||
moritz | rp: say uc 'ῳ' | 19:36 | |
skids | .o0(PROSGEGRAMMENI sounds like some sort of pasta) | ||
moritz | rnp: say uc 'ῳ' | ||
p6eval | niecza v19-13-g442e075: OUTPUT«ῳ» | ||
..pugs: OUTPUT«ῼ» | |||
..rakudo 3ac8c7: OUTPUT«ΩΙ» | |||
moritz | three compilers, three answers | 19:37 | |
masak .oO( ...one cup ) | |||
moritz | perl 5 agrees with rakudo | ||
pmichaud | eval: print uc 'ῳ' | ||
buubot_backup | pmichaud: ΩΙ1 | ||
masak | eval: uc 'ῳ' | ||
buubot_backup | masak: ΩΙ | ||
masak | Unicode is so full of strange wonders. | 19:38 | |
19:38
SamuraiJack left
|
|||
jnthn | heh, I googled PROSGEGRAMMENI and got "Menade du: PROGRAMMEN" :) | 19:38 | |
moritz | jnthn: google knows you :-) | 19:39 | |
masak: which I'm trying to chase, in order to write tests. D'oh. | |||
jnthn | oh heh, I hadn't even noticed the Swedish :) | ||
masak | jnthn: I don't even see the characters any more. to me it's just blonde, brunette, redhead... | ||
moritz | rnp: say lc 'Lj' | 19:40 | |
p6eval | rakudo 3ac8c7, pugs: OUTPUT«lj» | ||
..niecza v19-13-g442e075: OUTPUT«Lj» | |||
moritz | rnp: say uc 'lj' | 19:41 | |
p6eval | rakudo 3ac8c7, niecza v19-13-g442e075, pugs: OUTPUT«LJ» | ||
jnthn | masak: :P | 19:42 | |
flussence | that last one really doesn't work well in a 9px monospace font :) | ||
dalek | ast: 9fcdcd6 | moritz++ | S32-str/tc.t: test tc(LATIN SMALL LETTER LJ) |
19:43 | |
masak | jnthn: so, to summarize: there is something wrong in variable lookup from scopes stitched in per the macro application process in toqast. not in nom. | ||
jnthn | masak: Hm, OK | 19:44 | |
masak | jnthn: this was fixed as part of the D1 work by twiddling the AST objects, using a specific op even. | ||
I bet the regression is in there somewhere. | |||
masak goes a-huntin' for the op | 19:45 | ||
jnthn | masak: Sounds plausbile. | ||
masak: Also there's something related to this in world iirc | |||
masak | perl6_get_outer_ctx | ||
method add_quasi_fixups in World calls it. | 19:47 | ||
heh, and "ctx" still looks like a very weird way to abbr "context" to me... :) | 19:49 | ||
PerlJam wonders if Perl 6 will grow some set/multi-set constructor syntax like Fortress | |||
19:49
sergot joined
|
|||
masak | PerlJam: it always seemed to me to be just outside of the core concerns, syntactically. | 19:50 | |
TimToady | perl6: say 1,2,3 ∪ 2,3,4 | ||
p6eval | rakudo 3ac8c7: OUTPUT«===SORRY!===Confusedat /tmp/Wz8zGHPi7G:1» | ||
..niecza v19-13-g442e075: OUTPUT«set(1, 2, 3, 4)» | |||
masak | niecza++ | ||
TimToady | perl6: say set <a b c> | 19:51 | |
p6eval | rakudo 3ac8c7, niecza v19-13-g442e075: OUTPUT«set(a, b, c)» | ||
lichtkind | rafl ping | ||
TimToady | perl6: say bag <a b b c d e e e k> | ||
p6eval | rakudo 3ac8c7, niecza v19-13-g442e075: OUTPUT«bag("a" => 1, "b" => 2, "c" => 1, "d" => 1, "e" => 3, "k" => 1)» | ||
TimToady | perl6: say set <a b b c d e e e k> | ||
p6eval | rakudo 3ac8c7, niecza v19-13-g442e075: OUTPUT«set(a, b, c, d, e, k)» | ||
masak | jnthn: and all three macro def paths call $*W.add_quasi_fixups as appropriate. | 19:52 | |
jnthn: nothing seems to have changed, on the surface. | |||
PerlJam | {| 1,2,3 |} <-- set, [| 1,1,1,2,3 |] <-- multi-set Seem like they could work and are are almost mnemonicish | ||
masak | PerlJam: yes but please not in the core language. | ||
TimToady | well, I'd use ⟅1,1,1,2,3⟆ for a bag | 19:53 | |
masak | it's easy enough to 'use' in the syntax if you want it. | ||
PerlJam | aye, that's true | ||
masak | .u ⟅⟆ | ||
phenny | U+27C5 LEFT S-SHAPED BAG DELIMITER (⟅) | ||
U+27C6 RIGHT S-SHAPED BAG DELIMITER (⟆) | |||
masak | :⟅ | ||
PerlJam | heh | ||
TimToady: sure, I just don't know how to type them :) | 19:54 | ||
moritz | U+123456 BAG OF TEA | ||
benabik | .u TEA | ||
TimToady | perl6: sub circumfix:<⟅ ⟆> (@x) { bag @x }; say ⟅1,1,1,2,3⟆ | ||
phenny | U+273B TEARDROP-SPOKED ASTERISK (✻) | ||
p6eval | rakudo 3ac8c7, niecza v19-13-g442e075: OUTPUT«bag("1" => 3, "2" => 1, "3" => 1)» | ||
PerlJam | moritz: and then "inventory" in masak's game can say "you have no U+123456" | ||
masak .oO( scientists later found that the sharp decline in programming languages being actually produced was indirectly caused by Unicode ) | 19:55 | ||
benabik | There's no BAG OF TEA, but there is HOT BEVERAGE: | ||
PerlJam | masak: I think you're 180 degrees out of phase on that one | ||
benabik | .u HOT BEVERAGE | ||
phenny | U+2615 HOT BEVERAGE (☕) | ||
pmichaud | .oO( historians now call Perl 6 "The Modern Tower of Babel" ) |
19:56 | |
TimToady | you mean 180° surely | ||
masak | :P | ||
skids | On the brighter side, it is distiguishable from line noise, since that is usually something reserved to ascii terminal emulators. | ||
TimToady | it might be 360° out of phase if you're doing quantum programming, since you have to go around twice | ||
pmichaud | skids: ...oh, many of the terminal emulators I used that had line noise weren't ASCII. | 19:57 | |
masak | TimToady: what QC have you been reading? :) | ||
pmichaud | s/terminal emulators/terminals/ | ||
sorear | thereis U+1F375 TEACUP WITHOUT HANDLE | ||
pmichaud | line noise far predates terminal emulators :-P | ||
skids | pmichaud: EBDIC doesn't count :-) | ||
TimToady | if you don't go around twice you end up with the other electron, which is why two electrons fit into each orbital | ||
masak | oh, ok. | 19:58 | |
TimToady | spin is a weird thing | ||
PerlJam | does that make you a spin doctor? | ||
TimToady doesn't know how to fix quantum mechanics | |||
masak | to me it sounded more like the Riemann manifold required for the codomain of the sqrt function in the complex plain. where you take two complex planes and cross-join them at a Riemann cut. | ||
PerlJam | two electrons ... two turntables .... there's something deeply fundamental here ;) | 19:59 | |
moritz | and how many cups? | ||
TimToady | masak: I love it when you talk dirty, even when I don't know all those words | ||
pmichaud | perl6: say [< a b c>] # just making sure that I know what an Array is in the midst of spin, complex plains, codomains, Riemann manifolds, ... | ||
p6eval | rakudo 3ac8c7, niecza v19-13-g442e075: OUTPUT«a b c» | ||
moritz is glad that Riemann didn't know about Uincode, otherwise we'd have Rieman Unifolds too :-) | 20:00 | ||
masak | TimToady: well, I'll explain pictorially. the little dot $c on the complex plane will rotate twice as fast as the little dot sqrt($c). thus, as $c goes one rotation, sqrt($c) goes one half. that's... not very function-like, returning different outputs for the same input. | 20:01 | |
TimToady: so the fix is to glue two planes together at (-Inf, 0), and make the sqrt($c) dot teleport between the planes each time it crosses the glue line. | |||
PerlJam | masak: but it's *not* the same! :) | ||
TimToady ooh, pix, so I guess it did happen | |||
masak | :D | 20:02 | |
PerlJam: well, Riemann's plane indices are a bit like Dijkstra's program indices. they work as long as you don't have arbitrary GOTOs. :P | |||
TimToady | I think it's similar in QM, except there's no line :) | 20:03 | |
masak | well, the line is rather arbitrary, but it has to be cut somewhere. | ||
TimToady | it always cuts it where you *aren't* looking | ||
pmichaud | can the line be drawn somewhere instead? ;-P | ||
masak | let's just say I wouldn't be surprised either if there was a **2 or a sqrt in those electron equations causing the two electrons to fall out. | 20:04 | |
moritz | masak: there's a **2 that causes the positron and the electron to fall out of the same equation | ||
that's how you get the Pauli equations, iirc | |||
masak | ooh | ||
PerlJam | masak: your imagery reminds me of those Brian Greene shows on PBS | 20:05 | |
fabric of the cosmos or something like that | |||
moritz | somebody tried to solve some equation, and didn't get very far, so they squared both sides | ||
pmichaud | .oO( #perl6 is a channel where there's a lot of discussion about autopuns, linguistics, quantum physics, and occasionally some Perl 6 code ) |
||
moritz | and the squaring lead to solutions with differently signed charges | ||
and then people thought "hey, those could be real" => BOOM, anti matter | |||
masak | o.O | 20:06 | |
people should be more careful! | |||
moritz | at least that's how our theorist prof described it | ||
pmichaud | ...there was BOOM? | ||
sorear | I believe you are thinking of the Klein-Gordon equation | ||
pmichaud | *a BOOM ? | ||
moritz | experimentalists might disagree :-) | ||
pmichaud: no, the boom was there all along :-) | |||
masak | sorear! \o/ | ||
TimToady | Heisenberg might have been here discussing Perl 6, but if so, Pauli wasn't. | 20:07 | |
PerlJam | heh | ||
20:07
sjohnson is now known as sjohnson-here,
sjohnson-here is now known as sjohnson
|
|||
PerlJam | TimToady: Can you get three in one sentence? | 20:07 | |
moritz | r: nqp::say pir::titlecase__Ss('aBcD') | ||
p6eval | rakudo 3ac8c7: OUTPUT«Abcd» | ||
moritz | hm, is that expected? | ||
sorear | masak: yes, there are things resembling square roots in the spin 1/2 particle stuff | 20:08 | |
20:08
dbr left
|
|||
pmichaud | moritz: which part? | 20:08 | |
PerlJam | moritz: It's what *I* would expect. | ||
moritz | pmichaud: that it downcases the B and D | ||
pmichaud | parrot's titlecase ne perl 6's tc | ||
sorear | masak: it gets a bit ugly because you're working with rotations in 3-d space, and noncommutative Lie groups are a bit less pleasant than complex planes | ||
pmichaud | I think Parrot just delegates to ICU's titlecase, which does that. | ||
masak | sorear: I can imagine. just about. | 20:09 | |
20:09
dbr joined
|
|||
sorear | masak: however, it's a bit of a red herring | 20:09 | |
20:09
sivoais_ joined,
Pleiades` left,
sivoais left
|
|||
PerlJam | r: nqp::say pir::titlecase__Ss('aBcD eFGH'); | 20:10 | |
p6eval | rakudo 3ac8c7: OUTPUT«Abcd efgh» | ||
PerlJam | that's not quite what I'd expect though | ||
sorear | if you rotate an electron through 360 degrees, you multiply the wave function by -1, but constant multiples of the wave function don't have physical meaning | ||
moritz | pmichaud: so, rakudo's tc should really do a substr first and only apply parrot's titlecase to the first character? | ||
pmichaud | moritz: or we introduce a nqp::tc that does what we want. | ||
20:10
Pleiades` joined
|
|||
pmichaud | but yes, I don't expect Parrot's titlecase to necessarily follow Perl 6 semantics (no matter how much I wish it did :) | 20:10 | |
[Coke] | moritz: there is a titlecase_first function the C api. | 20:11 | |
masak | sorear: "constant multiples of the wave function don't have physical meaning". ooh, I actually knew that one! | ||
moritz | btw I've discovered this by doing the naive mapping, and running it agains the newly written tests | ||
sorear | multiplicity of Pauli orbitals has more to do with the absolute value of the spin | ||
masak | sorear: the Mike&Ike book (about quantum computing) said as much. | 20:12 | |
[Coke] | moritz: but I don't see it exposed via an opcode; probably need to roll an nqp opcode to get it. | ||
20:12
sivoais_ left
|
|||
sorear | an electron has spin 1/2, so when you measure the z-component of the spin, it has to come out <= 1/2 | 20:12 | |
masak | aye. | ||
20:12
sivoais joined
|
|||
moritz | so now I have local patch(es) that almost but not quite do what I want | 20:12 | |
sorear | but (quantization mumbo jumbo) it actually has to come out +1/2 or -1/2 because spin levels are always spaced by 1 | ||
masak | ah, so those are the only possible solutions. | 20:13 | |
moritz | that's usually the 'm' quantum number | ||
sorear | if you had more than two electrons in an orbital, you might measure the system and discover two in the same place | ||
pmichaud | Parrot uses u_strToTitle from ICU, which says: "Titlecasing uses a break iterator to find the first characters of words that are to be titlecased. It titlecases those characters and lowercases all others." | ||
TimToady | that's okay for the tclc function, I guess | 20:14 | |
sorear | if you had a particle with spin 3 1/2, they have the same 360 degree rotation behavior as electrons but you could fit 6 of them per orbital because they have more directional freedom | ||
which reminds me of one thing I don't get at all | |||
Bose-Einstein condensation of atoms | 20:15 | ||
[Coke] | ONE thing? | ||
sorear | [Coke]: one thing I'm reminded of, yes | ||
there are more things I don't undersgtand, but I've forgotten them :D | |||
moritz | sorear: BEC are not easy to deal with mathematically | ||
sorear: but since they are bosons, why shouldn't they all be in the lowest energy state? | 20:16 | ||
sorear | if you have a bazillion Rb-87 atoms in the same quantum state, why don't their constituent quarks and electrons interfere with each other? | ||
moritz | sorear: hah, i can answer that :-) | ||
TimToady | like Cooper pairs :) | ||
moritz | sorear: basically the spatial coordinates become good quantum numbers, because they are spatially localized | 20:17 | |
TimToady | moritz's patch(es) are spatially locallized | ||
*l | |||
[Coke] | Your MOTHER is spatially localized. | ||
TimToady | well, so far | ||
moritz | jeez, I hope she is :-) | ||
masak | :P | ||
[Coke] | heh. ;) | 20:18 | |
TimToady | she'll be 87 next month | ||
I hope I got half her good genes | |||
or something like that | |||
moritz hopes TimToady got the goold half of here genes | |||
[Coke] | happy birthday to her. mine just turned 58. | 20:19 | |
TimToady | ronja helping you type today? | ||
moritz | occasionally :-) | ||
sorear | moritz: a lattice of cold atoms, kept at a distance from each oher by exchange interactions between the electrons? so in some ways it's more like a solid than a gas? | ||
[Coke] tries to figure out what moritz was punning. There's a Goold Apple Orchard near his house, but that's probably not it. | |||
masak | r: sub postfix:<years>($n) { floor 365.25 * $n }; say Date.new('2012-08-01') - 87\ years | 20:20 | |
p6eval | rakudo a4eacd: OUTPUT«1925-08-02» | ||
masak | \o/ | ||
close enough :) | |||
TimToady | you don't have to put the space | ||
masak | r: sub postfix:<years>($n) { floor 365.25 * $n }; say Date.new('2012-08-01') - 87years | ||
p6eval | rakudo a4eacd: OUTPUT«1925-08-02» | ||
moritz | sorear: well, the atoms are so far apart that it's more like a gas | ||
sorear | moritz: but with much larger interatomic distances | ||
masak | no, but I like the space :) | ||
TimToady | r: sub postfix:<years>($n) { floor 365.25 * $n }; say Date.new('2012-08-01') - 87\years | ||
p6eval | rakudo a4eacd: OUTPUT«1925-08-02» | ||
moritz | sorear: but yes, the gas/solid terminology has always bugged me a bit | 20:21 | |
TimToady | ooh, no, she'll be 88 | ||
TimToady eeks, because that means I'll be 58 | |||
20:21
sivoais left
|
|||
sorear wonders how old quietfanatic is | 20:22 | ||
20:22
sivoais joined
|
|||
masak | TimToady: we all know you don't age. Damian told us, repeatedly. :) | 20:22 | |
TimToady | I didn't say 58 *what*. | ||
masak | o.O | ||
dalek | ast: 20327c3 | moritz++ | S32-str/tc.t: fudge tc tests for rakudo |
20:24 | |
ast: 79971ca | moritz++ | S32-str/tclc.t: another tclc test |
|||
TimToady | quietfanatic is a prime number old | ||
moritz hopes somebody reviews his roast commits for sanity | |||
TimToady | and he's not a teenager | ||
TimToady is currently a different prime number, and is also not a teenager | 20:26 | ||
diakopter is a power of 2 | |||
moritz is a power of perl | |||
masak | r: sub is_prime($n) { none ($_ %% $n for 2..^$n) }; my $q's_age = 20; $q's_age++ until is_prime $q's_age; say $q's_age | ||
p6eval | rakudo a4eacd: OUTPUT«20» | ||
masak | hrm. | ||
moritz is pretty sure that 20 is note a prime | 20:27 | ||
masak | I always mess is_prime up. | ||
r: sub is_prime($n) { !(2..^$n).grep(* %% $n) }; my $q's_age = 20; $q's_age++ until is_prime $q's_age; say $q's_age | |||
p6eval | rakudo a4eacd: OUTPUT«20» | ||
masak | hrm xx 2. | ||
diakopter | 20 can't be a prime in any base..... | ||
masak | :) | 20:28 | |
masak .oO( take half this prime as a base... ) | |||
no wait. that doesn't help. :) | |||
moritz | r: sub is-prime($n) { so $n %% none(2..$n.sqrt)) }; say 2..10.map: &is-prime | ||
p6eval | rakudo a4eacd: OUTPUT«===SORRY!===Unable to parse blockoid, couldn't find final '}' at line 2, near ") }; say 2"» | ||
moritz | r: sub is-prime($n) { so $n %% none(2..$n.sqrt) }; say 2..10.map: &is-prime | ||
p6eval | rakudo a4eacd: OUTPUT«2..1» | ||
moritz | r: sub is-prime($n) { so $n %% none(2..$n.sqrt) }; say (2..10).map: &is-prime | ||
p6eval | rakudo a4eacd: OUTPUT«True True False True False True False False False» | ||
[Coke] | huh. I am also a prime number old. | ||
moritz | r: sub is-prime($n) { so $n %% none(2..$n.sqrt) }; say (21..*).grep(&is-prime)[^20] | 20:29 | |
p6eval | rakudo a4eacd: OUTPUT«23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107» | ||
masak | r: sub is-prime($n) { so $n %% none(2..$n.sqrt) }; say (21..*).grep(&is-prime)[0] | ||
p6eval | rakudo a4eacd: OUTPUT«23» | ||
masak | \o/ | ||
TimToady: but you appear to be wrong about 57 being a prime. | 20:30 | ||
who wants to write a factoring function? :) | |||
moritz | that's divisble by 3 | ||
masak | ah, yes. | 20:31 | |
rnp: say 57 / 3 | |||
p6eval | rakudo a4eacd, niecza v19-13-g442e075, pugs: OUTPUT«19» | ||
moritz is a factoring function | |||
masak | moritz(57) | ||
sorear is an odd semiprime | |||
moritz | 3, &you'll-figger-the-rest-out-yourself ... * | ||
masak | I cannot immediately disprove that moritz is a factoring function. | 20:32 | |
but he seems a quite lazy one :) | |||
diakopter | spec,roast is a refactoring function | ||
20:34
desertm4x left
|
|||
masak | :P | 20:34 | |
by the way, I again challenge people to break my game in ways I didn't anticipate. there's a price. | 20:36 | ||
diakopter | there's a price all right | 20:37 | |
PerlJam | but is the price right? | ||
masak | it's 50 EUR in Amazon books. | ||
IIRC. | |||
yes. strangelyconsistent.org/blog/anothe...ere-i-come | 20:38 | ||
currently [Coke]++ is winning. the rest of you aren't just gonna sit down and take that, are you? | |||
here's what [Coke]++ has done so far: gist.github.com/3034482 | 20:39 | ||
dalek | p: cff22c2 | moritz++ | src/PAST/NQP.pir: add nqp::tclc op |
||
PerlJam | "wins an Amazon book worth about 50 EUR" is not the same as "wins 50 EUR" :) | ||
masak | PerlJam: hence "...in Amazon books". | 20:40 | |
[Coke] | masak: oh thank goodness, I thought I'd have to do more work to be in the lead! | ||
PerlJam | no, no, it says *an* Amazon book. | ||
dalek | kudo/nom: 4fe23e7 | moritz++ | / (5 files): implement tclc |
||
masak | PerlJam: it's much easier (and slightly more satisfying) for me to give books than to give money. | ||
PerlJam: I'm willing to be flexible on that point. | 20:41 | ||
PerlJam: if you have 100 books you want to win, each worth 0.5 EUR, we can work something out. | |||
[Coke] | If I win, I'l donate my prize to the local programming teacher at the HS. | ||
*I'll | |||
moritz | [Coke]++ | ||
masak | that's fine too. | 20:42 | |
[Coke] | need more programmers in town! my kids have no interest. ;P | ||
masak | aww | ||
moritz | ronja is currently more interested in typing than in programming | 20:43 | |
but it's a bit early to tell :-) | |||
[Coke] | my kids don't even know how to type! and one of them is 15! | ||
[Coke] is a horrible parent. :| | |||
PerlJam | My oldest daughter is going to an "engineering camp" this week. Maybe she'll pick up an interest that leads to programming | ||
masak | moritz: "more interested in typing than in programming" made me think "then teach her Haskell!". probably too mean a joke. :) | 20:45 | |
moritz | masak: :-) | ||
masak | or Simply Typed Lambda Calculus... | ||
moritz | masak: blocks on myself not knowing enough Haskell to read a file | ||
20:45
birdwindupbird left
20:47
snearch left
|
|||
geekosaur | readFile "foo" >>= putStr :) | 20:47 | |
benabik | moritz: readFile "filename" >>= putStr | ||
moritz | that's only half the truth | 20:48 | |
because, you know, types and stuff | |||
sleep and stuff& | 20:49 | ||
jnthn | 'night, moritz | ||
masak | moritz: goodnight, and stuff. | ||
benabik | Well, the nice thing about Haskell is that it infers types. :-D | ||
'night moritz | |||
masak .oO( Haskell has an infernal type system ) | 20:50 | ||
geekosaur | well, except for the person arguing with oleg on -cafe because "type inference considered harmful" | ||
20:50
sergot left
|
|||
masak | geekosaur: url? that sounds worth reading! | 20:50 | |
20:51
sergot joined
|
|||
dalek | kudo/toqast: a9af262 | jnthn++ | src/ops/perl6.ops: A couple of native type handling tweaks. |
20:51 | |
kudo/toqast: 3cc9d76 | jnthn++ | src/Perl6/Optimizer.pm: Re-instate compile time resolution of multiple dispatches, where we have sufficient type info. |
|||
benabik | Well, it's often nice to tell Haskell what you think the type is so it can tell you when you're wrong. | ||
dalek | p/toqast: 0555208 | jnthn++ | src/QAST/Operations.nqp: Be sure that invocants are boxed objects. |
||
geekosaur | haskell.1045720.n5.nabble.com/Haske...14992.html | ||
20:51
vmspb left
|
|||
jnthn | OK, I think we are now just two test files away from spectests looking good on toqast \o/ | 20:54 | |
Tene | :D | ||
Fantastic work, jnthn. | |||
masak | geekosaur: thanks. | ||
jnthn++! | |||
jnthn | We may have some module space triage too. | 20:55 | |
masak | oh yes. | ||
masak .oO( cheese ) | 20:56 | ||
masak looks admiringly at his new exception, X::Adventure::PitchBlack | |||
jnthn | It'd make a good name for a stout also. | ||
PerlJam | Isn't that a Vin Diesel movie? | 20:57 | |
ingy | [Coke]: pingy | ||
masak | .u 乒乓 | 20:58 | |
phenny | U+4E52 CJK UNIFIED IDEOGRAPH-4E52 (乒) | ||
U+4E53 CJK UNIFIED IDEOGRAPH-4E53 (乓) | |||
masak | phenny: "乒乓"? | ||
phenny | masak: "Ping-pong" (zh-CN to en, translate.google.com) | ||
masak | phenny: "阴阳"? | 20:59 | |
phenny | masak: "Yin and yang" (zh-CN to en, translate.google.com) | ||
sorear high-fives jnthn and whoever else is on the toqast tem | |||
so sorry I haven't been able to do much for p6 lately | |||
masak hugs sorear | 21:00 | ||
masak was reminded of 1000awesomethings.com/2008/11/27/88...ng-babies/ | |||
dalek | kudo/toqast: 03dfa84 | jnthn++ | src/Perl6/Optimizer.pm: Unbust line number reporting in errors generated by l'optimizer. |
||
masak | ...an association that only makes sense if Ronja is on the toqast team. | ||
[Coke] | ingy: sPONGe | ||
jnthn | OK, and now it's one. | 21:01 | |
It's a scary one though. Macro lexical craziness... | |||
ingy | [Coke]: what should I do with pugs? | ||
[Coke] | oh, just punt to masak! | ||
jnthn | I tried that. :P | ||
masak | jnthn: I'll look at it again tomorrow evening. | ||
[Coke] | ingy: can you build it? | ||
masak | jnthn: and again on my Perl 6 day on Thu if needed. | ||
jnthn | masak: Since it's the last one standing, I'm gonna poke at it a bit... | ||
masak | feel free. | 21:02 | |
I'm curious why it flared up. | |||
jnthn | Yeah, same. | ||
[Coke] | jnthn: not that I'm suggesting this, but could you cut over if macros "aren't supported yet" ? | 21:03 | |
jnthn | r: macro foo { my $x = 1; quasi { say $x } }; foo | ||
p6eval | rakudo a4eacd: OUTPUT«1» | ||
jnthn | t: macro foo { my $x = 1; quasi { say $x } }; foo | ||
p6eval | toqast : OUTPUT«Null PMC access in find_method('gist') in sub say at src/gen/CORE.setting:7004 in at /tmp/8YCXZ5_eVV:1 in block at /tmp/8YCXZ5_eVV:1» | ||
[Coke] | (I know the goal is no regressions, which is good, and I'd like to see that also. ;) | ||
21:03
skids left
|
|||
jnthn | [Coke]: Meh, if there's 23000+ tests and we're talking about being *1* of getting the goal of no regressions, I'm gonna fix the one :P | 21:04 | |
*off | |||
masak | jnthn++ | ||
[Coke] | aye, it was a hypothetical only. | ||
jnthn | r: macro foo { my $x = 1; quasi { say OUTER::.keys } }; foo | ||
p6eval | rakudo a4eacd: OUTPUT«RETURN $_ $x &?ROUTINE call_sig» | ||
jnthn | t: macro foo { my $x = 1; quasi { say OUTER::.keys } }; foo | ||
p6eval | toqast : OUTPUT«!UNIT_MARKER GLOBALish EXPORT $?PACKAGE ::?PACKAGE $_ $/ $! &foo $=pod» | ||
Tene | r: say (quasi { 1 }).perl | ||
p6eval | rakudo a4eacd: OUTPUT«AST.new()» | ||
jnthn | t: macro foo { my $x = 1; quasi { say OUTER::.keys } }; sub lol() { my $beer; foo }; lol | 21:05 | |
p6eval | toqast : OUTPUT«$_ $/ $! $beer call_sig $*DISPATCHER &?ROUTINE RETURN» | ||
jnthn | Hmm...revealing. | ||
masak | aye. | ||
and wrong. | |||
jnthn++ # constructing a test for what's wrong | 21:06 | ||
r: macro foo { my $x = 1; quasi { say OUTER::.keys } }; sub lol() { my $beer; foo }; lol | |||
p6eval | rakudo a4eacd: OUTPUT«RETURN $_ $x &?ROUTINE call_sig» | ||
masak | there you go. that's the difference. the AST doesn't get its appropriate OUTER. | ||
[Coke] lost ingy. | 21:07 | ||
ingy: if you are at the point where "perl t/run_spectests" runs the spec tests, there are a few different things you could do. Hacking on any of github.com/perl6/Pugs.hs/issues would be great and get us more tests. | 21:09 | ||
I'm just learning haskell, so I've been putting anything remotely hard for me in that list. | |||
masak | [Coke]++ # snowplow-driven development | ||
[Coke] | Alternatively, you could search for "pugs.*(todo|skip)" in t/spec (auto-checked out after trying to run the spectests) and fix things there (which might not have tickets) | 21:10 | |
jnthn | Yeah | ||
But...why? :) | |||
heh | |||
you can actually --target=pir on something with a macro in now! | |||
ingy | [Coke]: I'll try. Is it known to be busted/problematic? | ||
ingy installs haskell-platform... | |||
tadzik | oh hey | ||
[Coke] | ingy: see HACKING for notes on setup. | ||
if you have a fresh haskell-platform, and/or have touched haskell before, you'll probably be ok. | 21:11 | ||
masak: snowplow? | |||
masak | [Coke]: explicitly pushing tasks in front of oneself. | 21:12 | |
tadzik! \o/ | |||
TimToady | .u SNOWBOARDER | 21:13 | |
tadzik | s'me! \o/ | ||
masak | tadzik++ # is tadzik | ||
TimToady | you just turned him into a RUNNER | ||
tadzik | autokarma! | 21:14 | |
TimToady | tadzik++ # now he's a SURFER | ||
masak doesn't understand the sporting arithmetic | |||
tadzik | :) | ||
ingy | [Coke]: when I talked to audrey last year she pointed out that Perl6 on haskell makes sense (performance-wise) in 2011, where it seemed like a bad idea in 2006... | ||
Pugs was born too soon! | |||
tadzik | me neither | ||
phenny | TimToady: Sorry, no results for 'SNOWBOARDER'. | ||
tadzik | maybe 'cos it's late | 21:15 | |
[Coke] | ingy: it really does seem faster than the other 2 options at this point. But since it's only running about 2/5 of what rakudo is, perhaps that might have something to do with it. | 21:17 | |
I'd be very excited to get it to a point where, like rakudo, we could write more of it in perl6. | 21:18 | ||
But today, I'm just a janitor. | |||
ingy | [Coke]: otoh, it was designed to be p5 compatible from the get go :) | ||
haskell does seem to keep it out of reach from us mortals | 21:19 | ||
masak | nah, Haskell is just math. we can do math. :) | 21:21 | |
ingy | MATH IS HAAAARD | ||
sorear | MATH IS FUN! | 21:22 | |
arnsholt | I've found Haskell to be less hard than it seems for my pet project, actually | ||
ingy | sorear: who are you and what have you done with Barbie??!! | ||
benabik | That's a great tagline: Haskell: Less hard than it seems. | ||
ingy | benabik++ | ||
arnsholt | Grokking monads is kinda weird, but a basic competency with it seems decidedly feasible | 21:23 | |
ingy | [Coke]: `cabal install` fails | ||
[Coke] | what's the error? | ||
masak recommends blog.sigfpe.com/2006/08/you-could-h...s-and.html as a very approachable monad tutorial | 21:24 | ||
ingy | Please create a package description file <pkgname>.cabal | ||
shachaf | ingy: Haskell troubles again? :-) | 21:25 | |
ingy cowers in the shadow of shachaf | 21:26 | ||
[Coke] | "cabal init" perhaps? | 21:27 | |
shachaf | Huh? Shadow? | ||
shachaf barely knows what's going on. | |||
masak | sounds like you belong, then. | 21:28 | |
sorear | If you were Shachaf Ben-Bouba you'd be less intimidating. </obscure_jokey_reference> | ||
pmichaud | In three weeks I'll be a prime. :-) | ||
dalek | kudo/toqast: ee26e27 | jnthn++ | src/Perl6/Actions.pm: Fix the busted macro stuff. Long story short. :lexical(0) has gone away, and this is how its replaced. |
21:30 | |
kudo/toqast: 5a3d1f9 | jnthn++ | src/Perl6/World.pm: This is probably needed for serializing macro stuff (though maybe not sufficient); adding it since I spotted it. |
|||
shachaf wonders whether ingy is still in SEA. | |||
ingy | pmichaud: in 2012? *yawn* | ||
jnthn | Pass all the spectests! | ||
shachaf | sorear's reference may be too obscure for me. | ||
ingy was 47 for most of 2011 !! | |||
shachaf: 206ftw! | 21:31 | ||
sorear | en.wikipedia.org/wiki/Bouba/kiki_effect | 21:32 | |
[Coke] | jnthn++ ! | ||
jnthn | masak: Done. | ||
masak: It was a bit obscure. | |||
pmichaud | jnthn: eta to mergeback? | ||
masak | jnthn: ooh! do tell. | ||
jnthn | pmichaud: O(time it takes to fix any regressions in module space) | ||
masak: See the commit. | |||
shachaf is in WA for the next ~week. | |||
[Coke] hands jnthn his hipster glasses. | 21:33 | ||
ingy | shachaf: me too! wanna visit capitol hill? | ||
pmichaud | jnthn: I have some regex fixes to make, but I think they should wait until after mergeback. | ||
jnthn | pmichaud: OK | ||
ingy assumes shachaf is in pt | |||
sorear | ingy: isn't that in DC? | ||
pmichaud | e.g., the whitespace handling in regexes, and the change to ? quantification. | ||
ingy | sorear: it is also there, oui | 21:34 | |
jnthn | tadzik: If you're about/awake/able, now would be a good time to see how holy the cheese is :) | ||
masak | sorear: [re bouba/kiki effect] fascinating and not-so-surprising at the same time. | ||
jnthn | pmichaud: Yeah, probably good to merge this before you do that. | ||
shachaf | That hill is everywhere. | ||
jnthn | pmichaud: Last time tadzik++ ran the module space tests, the number of regressions was pretty small. There were still busted tests at that point. | 21:35 | |
masak sees commit | |||
tadzik | jnthn: I'm a couple of metro stations/bus stops from home | ||
shachaf is indeed in PT. | |||
jnthn | tadzik: Oh! :) | ||
masak | jnthn: what the heck was :lexical(0) anyway? :P | ||
shachaf | It's quite possible that I'll end up in Capitol Hill, either this weekend or next week. | 21:36 | |
tadzik | I'll rebuild and retest stuff as soon as I get there, it'll take about 35 minutes | ||
jnthn | masak: A "don't give me an outer" thing | ||
tadzik | or someone can do it, it's not black art | ||
jnthn | tadzik: OK. I'm currently syncing latest nqp/toqast with latest nqp/master | ||
tadzik | it's just about running two Perl 6 programs | ||
ingy | shachaf: let me know ahead of time. it would be good to see you. | ||
jnthn | Which may deal with the Zavolaj issues you saw. | ||
tadzik | or maybe one of them is even Perl 5 | 21:37 | |
masak | jnthn: glad you found it. I would not have spotted that unless given lots of clues. jnthn++ | 21:39 | |
[Coke] | if :lexical isn't around, should its use have died? | 21:40 | |
shachaf | ingy: OK. | 21:42 | |
jnthn | [Coke]: I've just been looking into that. I thought it was totally gone, but it turns out it was still in QAST::Block. The compiler paid it no attention though. | 21:45 | |
Will kill it now. That's 8 bytes off each QAST::Block... | |||
dalek | ast: 24cc87a | coke++ | S32-str/tc.t: pugs fudge |
||
Heuristic branch merge: pushed 21 commits to nqp/toqast by jnthn | 21:47 | ||
21:48
supernovus joined
|
|||
supernovus | arnsholt: are you around? | 21:49 | |
[Coke] | moritz: looks like ucfirst is still used in a few spectests. | ||
tadzik | me back home | 21:51 | |
21:53
dju left
|
|||
ingy | [Coke]: I can 'cabal install Pugs', but I can't 'cd Pugs.hs; cabal install' | 21:57 | |
I can try to fix later | 21:58 | ||
geekosaur | ? Pugs.hs would be a file, not a directory, I'd hope | 21:59 | |
benabik | I think `cabal install Pugs` pulls the module from the cabal servers. | ||
ingy | 'cabal init` fails with cabal: /home/ingy/src/Pugs.hs/syck/HsSyck: does not exist | ||
geekosaur | huh | ||
shachaf | @context ingy | 22:00 | |
ingy | hmmm | ||
sec | |||
shachaf | `cabal init` is for making a new package. | ||
I assume it's not what you want. | |||
benabik | ingy: I think you have to run cabal from inside Pugs.hs/Pugs | ||
ingy | benabik: yes, just figured that out :) | 22:01 | |
benabik | Pugs.hs pulls together several modules, of which the core pugs app is just one. | ||
ingy | seems happier now :) | ||
22:01
dju joined
|
|||
sergot | good night o/ | 22:02 | |
22:02
sergot left
|
|||
sorear | geekosaur: Pugs.hs is the name of the main pugs repo | 22:03 | |
geekosaur missed that apparently. not a really good idea that | |||
dalek | kudo/toqast: a4eacdf | moritz++ | t/spectest.data: remove ucfirst/lcfirst tests they are gone or going |
22:04 | |
kudo/toqast: 4fe23e7 | moritz++ | / (5 files): implement tclc |
|||
kudo/toqast: c23523d | jnthn++ | / (4 files): Merge branch 'nom' into toqast |
|||
kudo/toqast: a9dbdef | jnthn++ | src/Perl6/Ops.pm: Add tclc op (could go in NQP also; feel free to move). |
|||
gs.hs: e7f863c | (Ingy döt Net)++ | HACKING: Remove extraneous whitespace char. |
22:05 | ||
p/toqast: 8a9b631 | jnthn++ | src/QAST/Block.nqp: Toss unsued attribute on QAST::Block. |
|||
ingy | [Coke]: all up to date now. will hack later. | 22:06 | |
o/ | |||
22:14
supernovus left,
PacoAir left
|
|||
masak | lol! blogg'd! \o/ strangelyconsistent.org/blog/july-2...hing-water | 22:21 | |
22:21
seldon left
|
|||
lue | hello world o/ | 22:23 | |
masak | lue! \o/ just in time for today's crypt blogging. :) | 22:24 | |
lue | masak++ on the post, by the way | ||
masak | \o/ | ||
lue attempts to get soggy leaves | |||
masak | lue: I could see you winning the prize (correct spelling, yay!) by sheer exhaustion of combinations :) | ||
22:27
bluescreen10 left
|
|||
lue | Help! I can't operate the flashlight ("turn on flashlight" doesn't work) :) | 22:28 | |
masak | yeah. verb synonyms. :/ | ||
'use' works for now. | |||
lue | Ah. Never would have thought of "use" working (because, IIRC, Infocom games have never been that great with the verb "use") | 22:29 | |
22:31
Guest7389 joined
|
|||
Guest7389 | hey | 22:31 | |
22:31
Guest7389 left
|
|||
masak | hi, Guest7389. bye, Guest7389. | 22:31 | |
masak .oO( drive-by greeting ) | |||
lue considers blogging during August about making an adventure game with Adventure::Engine... | 22:35 | ||
masak | ooh! | 22:37 | |
nice way to *force* me to factor out the Adventure::Engine! :P | |||
(really, I don't mind) | 22:38 | ||
lue | I can think of one big additional module (even though in my typical IF game I'd avoid using them): NPCs! (Adventure::NPC perhaps) | ||
masak | :) | 22:39 | |
timotimo | masak: this 哈 character you use all the time. what is it? | ||
masak | timotimo: it is the sound of laughter. | 22:40 | |
timotimo | ah, that's interesting | ||
masak | using latin characters for laughter started feeling "wrong" to me a few years ago. so I use "哈哈" instead. | ||
diakopter | is there some pirop that does itoa | 22:41 | |
masak | or "呵呵", for slightly more controlled laughter. | ||
diakopter | of type int | ||
int to ascii | |||
or nqpop too | 22:42 | ||
22:42
drbean left
|
|||
jnthn | pir::set__Is(...) | 22:43 | |
er, other way | |||
pir::set__Si(...) | 22:44 | ||
22:44
drbean joined
|
|||
lue | I get the feel I can't get the water out of the helmet yet (or I'm not thinking creatively enough) | 22:49 | |
s/feel/feeling/ | |||
22:49
MayDaniel left
|
|||
masak | lue: it's entirely possibly that you can't get water out of the helmet yet. | 22:49 | |
I haven't tested that. | |||
22:50
Chillance left
|
|||
masak | feel free to pull-request a test for getting water out of the helmet, if you want. | 22:50 | |
a failing test, I should say. | |||
timotimo | "don't you dare implement code to make that test pass!" | 22:51 | |
lue considers writing the test | |||
timotimo | "i dare you, i double-dare you, my brother, pass a test one more butterfly-damn time!" | 22:52 | |
timotimo points a squirtgun at lue | |||
lue | what verb would you use for getting water out of the helmet, masak? | ||
timotimo | "empty"? | 22:53 | |
maybe also "dump" or "pour" | |||
masak | lue: "drop water", perhaps? | 22:54 | |
timotimo | "freeze! drop the water!" | ||
timotimo wraps up his comedy routine for today | |||
masak | lue: I guess I wouldn't mind "pour water in/on <something>", but that will likely be a synonym for "put ..." | ||
lue | OK. Lemme just reset my fork and (attempt to) write the test (since synonyms are NYI, I'd like to write a test that won't rely on synonyms too) | 22:55 | |
masak | aye. | ||
lue wonders how to update his fork without merging... | 22:58 | ||
geekosaur | git stash? | 22:59 | |
22:59
skids joined
|
|||
masak | lue: 'git reset --hard <some commit that masak did>', 'git pull' | 23:00 | |
then, when pushing, 'git push --force' once. | 23:01 | ||
lue | git pull just pulls my old synonym commits :/ | ||
masak | oh! 'git pull <masak's origin> master', then. | 23:03 | |
lue | \o/ | ||
masak | you can see/edit a list of your remotes in .git/config | ||
jnthn | 'night, #perl6 | ||
lue | so, "drop water" is the command to test? (and therefore testing $engine.drop('water')) | 23:07 | |
masak | aye. | ||
lue | (or maybe you'd be faster at writing the test :P) | ||
masak | probably, but if you pull-request it and I like the commit, I'll pull it in. | 23:08 | |
and then I'll make the test pass :) | |||
(and you'll get a mention in tomorrow's blog post) :) | |||
there should be plenty examples of how such a test ought to look. | 23:09 | ||
lue is writing the test | 23:11 | ||
23:14
cognominal_ left
23:15
cognominal joined
|
|||
lue | Hm. There's no Crypt::Game.drop. Either I wrote a good failing test or I did something wrong. | 23:17 | |
masak | no, it's fine. | ||
I consider "no such method" errors to be good test failures, I mean. | 23:18 | ||
I don't always in projects, but in this one I do. | |||
partly because the exceptions I get from Game::Engine are usually very informative, like "You can't pick up the helmet" | 23:19 | ||
anyway, 'night, #perl6 | |||
skids | .oO(put water in helmet, wear helmet.) |
23:27 | |
23:38
cognominal left
23:40
cognominal joined
23:42
thou left
23:44
thelazydeveloper left
|