»ö« 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 failed␤FAILED 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 block␤at /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:104␤␤use 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:104␤␤use 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:104␤␤use 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 found␤sh: 2: Land: not found␤sh: 3: Land: not found␤sh: 4: Heimat: not found␤sh: 5: Volk,: not found␤sh: 6: vielgerühmtes: not found␤sh: 7: vielgerühmtes: not found␤sh: 9: Heiß: not found␤sh: 10: liegst: not found␤sh: 11: einem: not found␤sh: 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«andara␤ash␤azawawi␤coke␤cygx␤diakopter␤drain␤flussence␤infinoid␤japhb␤moritz␤p6eval␤runpugs␤snarkyboojum␤sorear␤szabgab␤tene␤tewk␤tryrakudo␤0␤»
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 directory␤512␤»
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!===␤Confused␤at /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 &amp; 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«alpha␤beta␤"quoted␤string"␤gamma␤»
pmichaud oh.
r: .say for 'alpha beta "quoted string" gamma'.comb(/\".*?\" || \S+/) 18:10
p6eval rakudo 3ac8c7: OUTPUT«alpha␤beta␤"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 1␤␤Unhandled 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«True␤Int|1␤Int|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!===␤Confused␤at /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