»ö« 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:31 quietfanatic left 00:35 att left 00:36 whiteknight joined 00:37 whiteknight is now known as Guest17151 00:48 atrodo left 01:02 scott_ joined 01:03 scott_ is now known as Guest86312 01:04 xinming joined 01:29 tokuhirom joined 01:47 Guest17151 left 01:52 fgomez joined 01:55 mattp_ left 01:56 adu joined, mattp_ joined 02:06 quietfanatic joined 02:08 rsimoes left 02:13 rsimoes joined 02:27 orafu left, orafu joined 02:36 telex left 02:37 cognominal joined
sorear o/ cognominal 02:40
02:40 cog_ left 02:41 telex joined 02:50 Entonian joined 02:51 Entonian left 02:52 leprevost joined 03:03 tokuhirom left 03:04 tokuhirom joined 03:08 tokuhirom left 03:22 baest left 03:28 kurahaupo left 03:33 baest joined 03:41 am0c joined 03:42 jaldhar joined 03:43 kurahaupo joined 03:53 sudokode left 04:03 sudokode joined 04:42 [particle]1 is now known as [particle] 04:54 estrai left 04:55 estrai joined 05:14 GlitchMr joined, leprevost left
masak morning, #perl6 05:41
sorear o/ masak 05:48
05:51 kaleem joined, odoacre joined 05:52 birdwindupbird joined
masak has one more day of teaching, and then can focus on reintegrating his consciousness with that of #perl6 05:58
06:01 wtw joined
adu morning 06:16
tadzik morning
adu my consciousness will be here
sorear is struggling to work out parsing details in non-bootstrap 06:21
06:27 GlitchMr left 06:34 sisar left 06:38 sisar joined
adu sorear: what is non-bootstrap? 06:45
did you mean nom? 06:48
06:48 adu left 06:51 cog_ joined 06:55 cognominal left 07:15 kresike joined
kresike good morning all you happy perl6 people 07:15
tadzik hello kresike 07:17
07:18 fhelmberger joined
kresike hello tadzik 07:18
sorear hello tadzik and kresike.
kresike sorear, o/ 07:19
07:23 sudokode left 07:25 [particle]1 joined 07:28 [particle] left, sisar left 07:29 sisar joined
moritz \o * 07:36
kresike moritz, o/
moritz just got Finnish spam mail, and the spam filter did not recognize it 07:40
tadzik sjn: ping 07:42
jnthn morning o/
tadzik hello jnthn
sjn tadzik: pong
tadzik sjn: when do Oslo.pm meetings usually start? 18? 07:43
sjn jnthn: hey, you're one of those guys that haven't signed up for the moose hackathon yet! :)
tadzik: yeah, something like that... 18:30 most times, but sometimes earlier 07:44
jnthn sjn: I did the initial bit of the registration, just didn't get through all of the other steps :)
sjn: I'll get to it very soon.
sjn: Things have been...busy.
sjn place and time are usually announced om the mailing list a few days before (or on the same day, if we're lazy:)
jnthn: please do it today 07:45
tadzik sjn: ok, we'll be there with zby on 90%-ish chances
sjn jnthn: the sign-up deadline is hard. I *have to* send a complete list of attendees to the hotel, and can't add any new names after the cut-off date 07:46
jnthn: meaning, if you "forget" to sign up much longer now, you'll miss the boat 07:47
and there's no chance to get the next one
the finality of this final deadline is *very* final, deadly and line-shaped! :) 07:48
07:48 kurahaupo left
frettled It's an actual deadline! The line will be dead! 07:52
jnthn OK, I've done sign-up now. You can relax (at least, about me :))
kresike How does one distinguish a dead line from a live one ?
jnthn sjn: ^^ 07:53
frettled jnthn++ :)
jnthn This is the first day in a while when I have loads of free time to actually do stuff.
frettled is not an organiser or disorganiser this time. 07:54
jnthn Like, clear up my ridiculous email backlog :)
frettled jnthn: wow! Time to go out and enjoy the sunshine (if you have any) ;)
jnthn Yes, we have some :)
I'll try and do that too :)
07:55 DarthGandalf left
sjn jnthn: great! :) 07:55
07:57 am0c_ joined
sorear I... think I will probably have to pass on this. 07:57
sjn jnthn: ok, I've confirmed your attendance now 08:00
jnthn sjn: Great. :) 08:02
08:02 brrt joined
shachaf If you're golfing and you come up with a program which is correct but which no computer will ever finish computing more than a few digits of the output of, does it count? 08:02
moritz 's handicap is too bad to answer that :-) 08:15
08:19 am0c_ left, am0c_ joined 08:20 dakkar joined 08:43 sisar left, sisar joined 09:18 cog_ left 09:19 cognominal joined 09:22 cognominal left 09:24 cognominal joined 09:29 cog_ joined, cognominal left 09:47 snearch joined 09:59 yves_ joined 10:01 noam left 10:02 noam joined 10:08 Guest86312 left 10:30 ab5tract joined 10:31 daxim joined 10:47 ab5tract left 10:50 noam left 10:51 noam joined, jaldhar left 10:52 spider-mario joined, jaldhar joined 10:55 VXZ left, noam left 10:56 noam joined 10:58 noam left 10:59 noam joined, noam left, noam joined 11:00 noam left 11:01 noam joined 11:02 brrt left 11:08 GlitchMr joined 11:17 noam left
dalek kudo/nom: 0e8d1a1 | pmichaud++ | docs/ChangeLog:
Some ChangeLog updates.
11:17
11:18 noam joined 11:20 Vlavv` joined
dalek kudo/nom: e93b935 | pmichaud++ | docs/announce/2012.06:
Update announcement a bit.
11:20
11:21 jimmy1980 joined 11:24 Vlavv_ left 11:32 noam left, noam joined 11:36 spider-mario left 11:40 noam left, noam joined 11:52 skids left 11:55 noam left, noam joined 11:58 tokuhirom joined 12:09 cuckoo joined 12:11 cuckoo left 12:22 JimmyZ joined 12:39 cog_ left 12:40 cognominal joined 12:45 drbean left 12:48 sisar left 12:49 drbean joined, sisar joined 12:59 PacoAir joined 13:01 jimmy1980 left 13:02 larks left 13:07 jimmy1980 joined 13:09 Psyche^ joined 13:12 MayDaniel joined 13:13 cognominal left, cognominal joined 13:14 Patterner left, Psyche^ is now known as Patterner, daxim left 13:18 atrodo joined 13:19 daxim joined 13:23 skids joined 13:24 gfldex left
dalek kudo/nom: 65dc805 | pmichaud++ | src/core/ (3 files):
Refactor <prior> and $last_save handling for matches.
13:34
13:49 PZt left 13:52 edit_21 left, edit_21 joined 14:07 tyatpi joined
jnthn pmichaud++ # nice cleanup 14:13
14:15 [particle]1 is now known as [particle] 14:17 kaleem left 14:18 noam left, noam joined 14:21 cggoebel left
kresike bye all 14:32
14:32 kresike left 14:50 noam_ joined, noam left 14:55 kaleem joined 15:10 ggoebel joined, kaare_ joined 15:14 ggoebel left 15:16 aindilis left 15:18 aindilis joined 15:19 MayDaniel left 15:24 noam_ left, noam_ joined
harmil Something to think about for strict/debug/validation/whatever: It's very, very easy in the separated Grammar/Actions model to have a method called "exper" and a rule called "expr" and to spend a LONG time trying to figure out why you're not getting your AST built! 15:26
tadzik :) 15:27
jnthn Maybe Grammar::Debugger should have something to help with that issue. 15:28
TimToady maybe we can find a better way to bind actions to grammars...
colomon +1 +1 15:29
moritz +1 +1
harmil Well, one obvious way would be to introduce a syntactic binding such as "action expr { make … }" or "method expr is action { make … }" …if you're going to do that, then can I humbly suggest that the $/ parameter becomes implicit? 15:31
I get tired of typing ($/) ;-) 15:32
TimToady is reminded of switch statements that can tell you when you've left out one of the enum values 15:33
harmil Doing that would allow the parse method on the grammar to run-time check the actions in the :actions parameter matched existing rules. However, you still can't do anything at compile-time… and perhaps should not.
TimToady well, the real problem is binding to derived grammars
jnthn Using a grammar as a role could perhaps result in a role that requires the implementation of matching methods.
harmil TimToady: Can you give an example?
jnthn But that's...too magical. 15:34
It'd get compile time checking though :)
But a bit too much, because sometimes its legit for a grammar rule to have no action method.
15:34 thou joined
harmil jnthn: it's common, in fact. 15:34
jnthn harmil: Agreed.
harmil I very often have, for example, string bodies that I just .Str in a parent action 15:35
TimToady but we could detect an action that has nothing to bind to in the grammar
jnthn True...but then utility methods... :)
OTOH they can be written as submethods or privates. 15:36
harmil yes, if we know which things are actions (vs. utility methods in the action object)
jnthn Or subs.
TimToady and it could be a special declarator
jnthn Or alternatively, a new trait. 15:37
harmil TimToady: yeah, that's where I was going. I was just adding in extra magic for that declarator handling the default signature.
TimToady but we still have the derivation problem
jnthn class FooActions actions FooGrammar { }
TimToady now derive an anonymous grammar from FooGrammar; how do you attach it?
harmil jnthn: that still doesn't let you clearly separate actions from utility methods. It's probably easier and cleaner to put that trait on the methods. 15:38
TimToady: I think you still have to :actions it when calling .parse
jnthn TimToady: Well, the other question that always comes up in this space is slangs...
TimToady: How do they specify their actions. 15:39
harmil: Well, above I suggested you don't have utility methods but instead write the utility stuff as something else. Or somewhere else. :)
harmil: I agree that may be overly restrictive.
TimToady harmil: when you're calling into .parse, you may be calling into a largish hierarchy of (mostly) anonymous grammars, so one :actions doesn't cut it
jnthn Well, Rakudo solves this problem with: 15:40
%*LANG<MAIN> := Perl6::Grammar;
%*LANG<MAIN-actions> := Perl6::Actions;
TimToady it seems we need some kind of namespace for grammars and actions to rendezvous in 15:41
whether that's dependency injection or just something like it
15:45 JimmyZ left 15:46 majrmovies joined 15:48 noam_ left, noam_ joined 15:50 vmspb joined
harmil OK, so I'm still not sure I entirely grasp the problem. I've written up a concrete example if anyone wants to hack it up to describe what they mean… gist.github.com/2966586 15:52
Or not if you have better things to do ;-)
PerlJam harmil: what does "action" actually do? Is it just a synonym for "method"? 15:53
harmil Yes
You could also spell that "method foo is action" if you're not fond of a new alias for method
TimToady: I think the anonymous grammar problem is solved when you do the checking at run-time 15:54
And when you have a grammar take a :actions seems to be the right time to do that
*modulo all the problems with using "run time" in a Perl 6 context...
And yes, that's the world's worst AST ;-) 15:55
15:57 tokuhirom left
harmil Totally other random point: thank you to whoever came up with :parameter{:hashkey1, :hashkey2} Yes, it only saves me 2 characters over :parameter({:hashkey1, :hashkey2}), but I'm using it so often that I'm really glad to have it! 15:57
15:57 mikemol_ joined
TimToady bows 16:01
moritz :$parameter is one of my favorite shortcuts 16:12
quietfanatic I've used that one in hash definitions s well as argument lists. 16:14
harmil Yeah, I love saying "sub ast_foo($bar, $baz) { {:type<foo>, :$bar, :$baz} }" … it's just so damned clean
actually, it's usually "(:$bar, :$baz)" in the parameter list as well, but you get the idea
pmichaud good morning, #perl6 16:15
harmil howdy, pmichaud
moritz good am, pm 16:16
harmil heh
jnthn morning, pmichaud
pmichaud: Wait, weren't you up and committing like, a few hours ago? :) 16:17
moritz that was michaudbot, I think :-)
jnthn ah, my mistake! :-)
pmichaud jnthn: yes, that was me. :)
harmil Hmmm… I have a function that returns a pair… I want to pass off that pair as a named parameter. Simply a(b()) doesn't seem to work. How do I do that? 16:18
pmichaud I have some more commits to make, but they're a little too risky for a release day.
quietfanatic a(|b()) perhaps?
pmichaud harmil: a(|b())
moritz pmichaud: that's what we have branches for :-)
jnthn pmichaud: Well, could always drop 'em in a branch.
harmil Tried that, i got "No such method 'FLATTENABLE_LIST' for invocant of type 'Pair'"
quietfanatic er
moritz well, that's a rakudobug then
harmil ah, ok
jnthn That's probably fixable.
pmichaud yeah, I can do it in a branch.
16:18 am0c_ left
moritz iirc I once tried to fix that, and didn't have much luck 16:18
quietfanatic harmil: in the meanwhile, try a(|hash(b())) 16:19
pmichaud harmil: in the meantime, maybe a(|%(b()))
moritz because I didn't know much about that FLATTENABLE protocol
jnthn Should the pair be treated as a named param?
*arg
timotimo remind me again, how does one define operator precedence of self-made operators in perl6?
moritz jnthn: yes
pmichaud timotimo: is tighter, is looser
quietfanatic and is equiv
moritz timotimo: sub infix:<foo> is tighter(&infix:<+>) { ... } # NYI in rakudo
PerlJam pmichaud: I'm not releasing for another 8 or 9 hours. you've got t ime
:-)
pmichaud PerlJam: it's still a bit much 16:20
PerlJam: it's not "can I finish in time", but more of "can I be sure the result won't introduce an unwanted regression"
timotimo that's sweeter
than scala does it :)
PerlJam how does scala do it? 16:21
timotimo the first letter of the function name defines the tightness
well, not letter
PerlJam *boggle*
timotimo symbol
pmichaud the fixes are the final adjustments to eagerness, which for some reason causes a regression in :global handling... and since I'm planning to re-do :global handling anyway... it's a bit much :)
timotimo so is tighter(&infix:<+>) will put it at tighter than +, but looser than atything defined to be tighter than + before this "is tighter" is put there? 16:22
PerlJam next thing you'll tell me that variables that start with i,j,k, or l are all interger typed in scala
moritz or that h, j, k, l move the cursor left, down, up, right :-)
16:23 mtk0 joined
pmichaud timotimo: close, not precisely correct. It'll put it tighter than +, which will be the same precedence as anything else that was defined as "is tighter(&infix:<+>)" 16:23
TimToady a(|(b(),)) might also work
moritz pmichaud: I thought it's added inbetween 16:24
pmichaud moritz: it's added in between %additive and %multiplicative, yes
jnthn moritz: Trying a patch for the | with pairs.
TimToady two tighters are supposed to be equiv
pmichaud but if I have sub infix:<xyz> is tighter(&infix:<+>) { ... } and sub infix:<abc> is tighter(&infix:<+>) { ... } then both of them are the same precedence
16:24 mtk left
pmichaud which isn't exactly what timotimo said :) 16:25
but is what TimToady++ just said :)
afk for a bit 16:26
moritz ok, makes sense on second (or third) thought 16:27
PerlJam wolfs down his 10th tamale 16:28
one of the nice things about south texas is there is no shortage of people offering you food
16:29 MayDaniel joined
PerlJam (of course, there is a reason Corpus Christi is the obesity capitol of texas) 16:29
jnthn > sub foo() { :a(42) }; sub bar(:$a) { say $a }; bar(|foo())
42
\o/
moritz \o/
jnthn Guess I should spectest :)
TimToady we've also conjectured an 'is between' that produces a new level "halfway between" two other predecence levels 16:30
moritz you can always get that now already
if you a is tighter than b
and then c is tighter than a
TimToady no, that's not halfway
there's no way to create a new independent level without something like 'between' 16:31
16:31 spider-mario joined
TimToady (or by peeking at the string precedences involved and manufacturing something) 16:32
PerlJam Are the string precedences available?
TimToady not officially
maybe we were gonna do that with a combined 'is tighter() is looser()' in the same declaration 16:33
moritz: or is that what you were saying? 16:34
16:34 kaleem left
timotimo what might i be doing wrong? use.perl.org/use.perl.org/~masak/journal/39568 doesn't work for me :| 16:34
moritz timotimo: use.perl.org broken 16:35
TimToady: no
daxim use.perl.org/use.perl.org/_masak/jo...39568.html
timotimo oh no what did i do?
moritz TimToady: I think my mental picture of tighter/looser still is wrong
pmichaud daxim++
timotimo oh, that's nonstandard
thanks, daxim
dalek kudo/nom: 4d79923 | jnthn++ | / (2 files):
Make | flattening work on pairs, which flatten as named arguments.
16:36
daxim strangelyconsistent.org/blog/an-int...ate-perl-6
jnthn harmil: there you go ^^ :)
timotimo even better 16:37
moritz jnthn++ # putting it in Enum right away, not Pair
jnthn++ # fast fix
pmichaud TimToady had mentioned at yapc::na that one of the reasons for having => produce Pair instead of Enum is to support a => b => c => d => ... style chaining and still be able to mutate the results. 16:38
moritz I don't think I've ever used => chains in p6 16:39
PerlJam I know I've never used them
pmichaud iirc, it's for doing things using a lisp car/cdr style framework, as TimToady++ describes it
TimToady: when you get a chance, could you construct a use case code example for => as Pair ? 16:40
(or point us to one?)
moritz are cons mutable in lisp? 16:41
PerlJam don't think so
(but I haven't actually used lisp in well over a decade :) 16:42
pmichaud 2.5 decades here :-)
timotimo an idea when rakudo will get class Foo is also { ... }?
n: class Foo { method a() { 1 }; } class Foo is also { method b() { 2 }; }; say Foo.new().b() 16:43
p6eval niecza v18-7-ga660099: OUTPUT«===SORRY!===␤␤Strange text after block (missing comma, semicolon, comment marker?) at /tmp/nEwN2KeFQ1 line 1:␤------> class Foo { method a() { 1 }; }⏏ class Foo is also { method b() { 2 }; }␤␤Parse failed␤␤»…
timotimo n: class Foo { method a() { 1 }; }; class Foo is also { method b() { 2 }; }; say Foo.new().b()
p6eval niecza v18-7-ga660099: OUTPUT«===SORRY!===␤␤Two definitions found for symbol ::GLOBAL::Foo␤␤ first at /tmp/PPb0cw4T_7 line 1␤ second at /tmp/PPb0cw4T_7 line 1 at /tmp/PPb0cw4T_7 line 1:␤------> method a() { 1 }; }; class Foo is also ⏏{ method b() { 2 …
jnthn timotimo: It's not been spelt "is also" for ages
16:43 mtk0 left
timotimo aaw :( 16:43
[Coke] b: class Foo { method a() { 1 }; } class Foo is also { method b() { 2 }; }; say Foo.new().b()
p6eval b 922500: OUTPUT«===SORRY!===␤Confused at line 22, near "class Foo "␤»
jnthn It's augment class Foo { ... } now
timotimo i read it in masaks post about labyrinths and i thought it was kind of cute
jnthn And Rakudo implements it.
16:44 mtk0 joined
pmichaud (need MONKEY_TYPING?) 16:44
PerlJam The Internet's memory is long even of things that should be forgotten
timotimo :)
jnthn Yes, you have to use MONKEY_TYPING TO DO IT
er, *to do it
pmichaud oh dear, it looks like MONKEY_TYPING CAUSES EVERYTHING ELSE TO BE ALL CAPS
:-P
jnthn No, it just makes people want to shout :P 16:45
PerlJam as long as they don't start throwing things
masak good evening, #perl6. from a train! \o/ 16:46
16:47 dakkar left
TimToady moritz: yes, see stackoverflow.com/questions/170931/...ommon-lisp and stackoverflow.com/questions/869529/...ommon-lisp 16:47
jnthn What a life...training all day, then training for more hours in the evening. :P
timotimo is there no event loop like library for perl6 yet? 16:48
is probably quite hard to do it right, isn't it? 16:49
[Coke] tcl does it. :) 16:50
masak what's that supposed to mean? :)
jnthn timotimo: I think tadzik++ did the few bits of work in this area that we have so far. 16:51
pmichaud Two people asked me in the hallway track about non-blocking (socket) I/O, said they would really like to do some stuff with Rakudo and Perl 6 when we had that working. Do we have it working? ;-)
jnthn timotimo: MuEvent, iirc.
dalek kudo/nom: 61f6f14 | jnthn++ | src/Perl6/Grammar.pm:
<arglist> happily parses empty space here, then we could get nasty errors if whitespace fell in the wrong place rather than good errors or the module being loaded. Add a check against it.
16:52
sorear good * #perl6 16:53
timotimo oh, MuEvent sounds pretty nice 16:55
harmil As long as it's not Muvent, I'm cool 16:56
timotimo "i like to muvent, muvent"?
harmil ugh
;)
PerlJam throws a talking lion at harmil
timotimo hm, why can't i tell an IO::Socket::INET what SOCK_ type i want when instantiating it? will there be a way in the future? 17:07
(until now i can use the numbers in the PIO module, but that feels dirty
moritz timotimo: probably just NYI
17:07 daxim left
timotimo ah, indeed, can't create a SOCK_DGRAM socket 17:08
i'll see if there's anything i can do about that 17:11
moritz ++timotimo
17:13 Chillance joined
pmichaud r: my $undefined; my $x = $undefined ~ '... and so forth'; say $x; 17:13
p6eval rakudo 65dc80: OUTPUT«use of uninitialized value of type Any in string context in block <anon> at /tmp/2a1kc8mbRW:1␤␤... and so forth␤»
pmichaud the REPL gives me
use of uninitialized value of type Any in string contextMethod 'message' not found for invocant of class 'Any'
that "Method 'message' not found for invocant of class 'Any'" seems LTA 17:14
moritz it means the exception printer was triggered even though there was no exception
pmichaud shall I file a rakudobug for it? 17:15
jnthn pmichaud: oops, I didn't see you had taken RT#113590 and I accidentally a patch...
Well, if it spectests
masak pmichaud: please do.
pmichaud jnthn: no problem, if your patch works :)
jnthn pmichaud: It fixes the bug :) 17:16
And probably others.
pmichaud I tried a patch last week and got failures.
(and then halted work on it because of yapc::na)
jnthn OK, we'll see what this one does in spectest...
pmichaud jnthn: can you nopaste the patch, ooc?
jnthn pmichaud: gist.github.com/2967127 17:17
pmichaud: spectest running now
pmichaud: I suspect the colonpair handling wants some twiddles overall there, but this is less wrong at least. 17:18
No failures by S04 17:19
pmichaud jnthn: that patch doesn't look like what I tried... so I suspect it might work :)
(I don't remember exactly what I tried... but that wasn't it :-) 17:20
jnthn Also (unrelated to this patch) we seem to have some passing todos.
pmichaud exception bug is RT#113776 17:21
masak pmichaud++ 17:22
timotimo doesn't see where the error originates :|
dalek kudo/nom: d5f39a2 | jnthn++ | src/Perl6/ (2 files):
Canonicalize regex names properly so that they will properly participate in protoregex dispatch and <sym> will get set properly.
17:23
timotimo well, i can, but i can't find Parrot_io_socket, which i think is where the error comes from ... 17:24
vmspb Hello, question about precedence:
pmichaud jnthn++ # fix for french angles
vmspb if L1 is tighter(L0) {} and Lx is looser(L1) {}
jnthn moritz: Is rt.perl.org/rt3/Ticket/Display.html?id=112586 sufficiently dealt with by now?
vmspb then Lx == L0 or L0 < Lx < L1 ?
jnthn moritz: If so, resolve or testneeded?
timotimo there it is
harmil rn: my $x={:a, :b}; given "a" { when $x { given $_{"a"} { when True { say $_ } } } }
p6eval niecza v18-7-ga660099: OUTPUT«Potential difficulties:␤ Smartmatch against True always matches; if you mean to test the topic for␤ truthiness, please use :so or *.so or ?* instead at /tmp/W7bT3Omw1p line 1:␤------> en "a" { when $x { given $_{"a"} { when ⏏True { say $_… 17:25
..rakudo 61f6f1: OUTPUT«postcircumfix:<{ }> not defined for type Str␤ in method gist at src/gen/CORE.setting:9439␤ in sub say at src/gen/CORE.setting:6970␤ in block <anon> at /tmp/JRcQhe6gzf:1␤ in block <anon> at /tmp/JRcQhe6gzf:1␤ in block <anon> at /tmp/JRcQhe6gzf:1␤␤»
moritz jnthn: looking...
pmichaud vmspb: L0 < Lx < L1
moritz jnthn: yes, testneeded
harmil OK, so ignoring the True matching thing…. why is Rakudo getting an indexing eror?
jnthn moritz: done
pmichaud harmil: strings don't have a postcircumfix:<{ }>
harmil But… I'm not indexing a string 17:26
ever
moritz yes you do
PerlJam harmil: you are. $_{"a"}
jnthn Huh?
moritz $_{"a"}
pmichaud is when $x { ... } supposed to topicalize $x ?
jnthn No
harmil Oh hell
jnthn given sets $_
harmil OK, I reversed the case of my test and never noticed
doh
Thepart that made it hard to see is that in my real code (which isn't all one line) Rakudo got all lazy and reported the error inside the when. 17:27
pmichaud harmil: which when ? ;-)
harmil Theinner one 17:28
So when I was saying, "say $_" that's when it was executing the postcircumfix:<{}>
17:29 birdwindupbird left
harmil which is valid laziness, but made it really hard to understand what was going on 17:29
pmichaud correct, because $_{"a"} returns a Failure
which doesn't throw until you use it.
harmil right
pmichaud the Failure probably needs to record the point of its creation (if it doesn't already) and to report it (which it doesn't already)
moritz we need to store the original error location, and make that available in the backtrace 17:30
pmichaud I suspect Failures already have the original error location
&fail creates an exception using "die" and builds a Failure object from that. 17:32
moritz maybe we .throw it instead of .rethrow-ing it 17:33
pmichaud well, I think there are two exceptions involved here. 17:34
17:34 mikemol_ left
pmichaud we want to throw one at the point of the fail, and another at the point where the Failure is used. 17:34
that way we end up with the dual backtraces
I'm fine if rethrowing would handle that as well, though.
method Int(Failure:D:) { $!handled ?? 0 !! $!exception.throw; } 17:35
method Num(Failure:D:) { $!handled ?? 0e0 !! $!exception.throw; }
method Numeric(Failure:D:) { $!handled ?? 0e0 !! $!exception.throw; }
multi method Str(Failure:D:) { $!handled ?? '' !! $!exception.throw; }
multi method gist(Failure:D:) { $!handled ?? $.perl !! $!exception.throw; }
maybe those should be .rethrow ?
(src/core/Failure.pm)
timotimo i'm suggesting the following amendment to IO/Socket/INET.pm: add a constant PROTO_AUTO = 0;, use it as the default value. reason: if the socket function gets 0 as the protocol, it will figure out what protocol to use by itself, saving rakudo the trouble of opening /etc/protocols (and whatever's the equivalent on windows)
moritz pmichaud: maybe, yes 17:36
timotimo additionally, i would probably try to make parrot get the actually used protocol number and set it on the socket object or something 17:37
jnthn afk for a bit 17:38
17:39 sudokode joined 17:47 birdwindupbird joined
timotimo tries compiling 17:47
17:48 mikemol_ joined
dalek ast: ffe1467 | moritz++ | S (2 files):
unfudge some tests for rakudo; fix one
17:55
17:57 fhelmberger left
moritz that should remove the passing TODOs 17:57
timotimo hum, i don't even need udp sockets, still i'm improving perl6s support for them 18:02
fun times
afk for a bit 18:03
flussence
.oO( we should have built in sctp sockets just to be different )
18:04
masak looks at moritz' ufo branch 18:15
harmil r: sub a(List $l=List) { say "List $l" if $l.defined } ; a($(1,2,3)) 18:16
p6eval rakudo d5f39a: OUTPUT«Nominal type check failed for parameter '$l'; expected List but got Parcel instead␤ in sub a at /tmp/AYQiMQlZxY:1␤ in block <anon> at /tmp/AYQiMQlZxY:1␤␤»
harmil Hmm… is there any way to make that work?
masak `List $l=List` better written `List $l?`, not that that solves your problem. 18:17
pmichaud a(@(1,2,3))
harmil That is, to say, can I define a sub that says, "Parcels past as this parameter should be converted to List"
pmichaud: that would be nice, but my parameter is coming out of a Match object 18:18
masak List(Parcel) $l
pmichaud List(Positional) $l
harmil oh, interesting. I'll try that
pmichaud Positional $l as List
masak doesn't work yet.
pmichaud r: sub a(Positional $l as List) { say $a.WHAT; }; a((1,2,3)); 18:19
p6eval rakudo d5f39a: OUTPUT«===SORRY!===␤Variable $a is not declared␤at /tmp/YC4lLzg5hW:1␤»
pmichaud r: sub a(Positional $l as List) { say $l.WHAT; }; a((1,2,3));
p6eval rakudo d5f39a: OUTPUT«Unable to coerce value for '$l' from Parcel to List; no coercion method defined␤ in sub a at /tmp/53hlCBanIf:1␤ in block <anon> at /tmp/53hlCBanIf:1␤␤»
harmil Well, at least it's *trying* to coerce ;) 18:20
masak I think there should be such a coercion method.
pmichaud r: sub a(Positional $l as Array) { say $l.WHAT; }; a((1,2,3));
p6eval rakudo d5f39a: OUTPUT«Array()␤»
pmichaud the Array() coercer exists.
so, perhaps add 18:21
method List() { self.list }
to src/core/Any.pm
although it somewhat begs the question... why not just use 18:24
masak moritz: could you tell me what changing '::' to ':' in github.com/masak/ufo/commit/c94c69...3abeea6304 means? 18:25
(be ause I don't know and I'm curious)
pmichaud r: sub a(@l) { say "List @l[]" if @l.defined }; a((1,2,3))
p6eval rakudo d5f39a: OUTPUT«List 1 2 3␤»
masak s/be ause/because/
moritz masak: compatibility with non-GNU make
masak moritz: in GNU make, what does '::' mean?
rn: say Module
p6eval rakudo d5f39a: OUTPUT«===SORRY!===␤CHECK FAILED:␤Undefined routine '&Module' called (line 1)␤»
..niecza v18-7-ga660099: OUTPUT«===SORRY!===␤␤Undeclared name:␤ 'Module' used at line 1␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1401 (die @ 5) ␤ at /home/p6eval/niecza/src/STD.pm6 line 1147 (P6.comp_unit @ 37) ␤ at /home/…
moritz masak: I'm not sure either 18:26
harmil pmichaud that might be the better approach
18:27 PacoAir left
masak moritz: if we're aiming for compatibility with non-GNU make, do you have a particular make in mind? is there someone who will maintain that compatibility? do we know it's worth aiming for? 18:27
18:27 PacoAir joined
masak has grown wary with age :) 18:27
pmichaud I think we have to consider nmake, at least.
jnthn If ufo and/or panda worked on Windows, I'd be less of a sad panda :)
pmichaud (for windows)
or whatever the Windows 'make' is. 18:28
harmil Windows make is gmake, given Cygwin...
pmichaud in 2009 someone patched Rakudo's makefile to use a bunch of ::'s, and I immediately reverted it.
masak I'm fine with considering nmake. but that requires someone to actually make sure it works. 18:29
ooh, delegating dependency handling to the Makefile, instead of manually topo-sorting. why didn't I think of that? :) moritz++ 18:30
pmichaud without going into the details of "which make to target", I think we have to ultimately fix:
18:27 <jnthn> If ufo and/or panda worked on Windows, I'd be less of a sad panda :)
Windows is a huge target, especially for newcomers. 18:31
masak aye.
harmil rn: my $s = "foo, "; $s.subst(/\s*<[,]>\s*$/, ""); say $s
p6eval rakudo d5f39a, niecza v18-7-ga660099: OUTPUT«foo, ␤»
pmichaud if we're not doing so already, we also need to be packaging up binaries for windows.
harmil am I missing something? does subst just return the substituted value?
pmichaud harmil: inplace modifications are almost always done using .= 18:32
harmil ah
ok
masak I'm fine with targeting nmake. I'm not sure how to best do it, and make sure ufo stays nmake-compatible.
pmichaud .= is a much more generic pattern than having some methods that do inplace modifications and others that do not.
masak if some Windows user wants to step up and help ufo target nmake, that would be -Ofun.
harmil is it possible for subst to notice its return value is being ignored and whine? 18:33
pmichaud note that we manage to successfully keep rakudo and nqp's makefiles windows compatible :)
harmil: if/when we have sink context implemented, it might be possible to have .subst return a value that carps on that, yes. 18:34
moritz masak: I want compatiblity with every make 18:37
masak: which is why I want ufo to generate rather simple makefiles
masak: ie only use normal dependencies, variable interpolations and non-parameterized rules 18:38
pmichaud moritz: +1 +1
[Coke] can help with windows makefile targetting.
just not during work hours for a bit.
moritz currently ufo shells out to 'find', which is why it won't work on windows
masak [Coke]: nice!
moritz but the generated makefiles are much closer to run on windows now 18:39
masak moritz: your ufo branch has been rebased on top of master, merged, and culled.
I think we can do without `find`. mini-tote emulates `find`.
moritz: oh, and thank you for your contributions. it's nice to see someone make ufo saner for once. 18:40
moritz masak: :-) you're welcome 18:43
[Coke] really would like to hack on something not java for a while. :P 18:50
18:52 snearch left
timotimo flussence: i'd love to use sctp for something some day. it seems so ridiculously cool and useful 18:52
19:00 MayDaniel left 19:03 sudokode is now known as sudokode|echo, sudokode|echo is now known as sudokode 19:06 birdwindupbird left 19:08 birdwindupbird joined 19:11 colomon left, GlitchMr left
tadzik good evening 19:15
19:16 colomon joined
moritz \o tadzik 19:17
19:18 fridim_ joined 19:20 mtk0 left 19:21 mtk joined 19:23 not_gerd joined
not_gerd hello, #perl6 19:23
phenny not_gerd: 15 Jun 20:50Z <pmichaud> tell not_gerd no, and I had forgotten about it. Thanks for the ping/reminder. I'd be happy if a bug was filed and I was made the owner of the bug.
not_gerd masak: I did do a (partial) ufo port to pure perl6 -- gist.github.com/2891292
it was unusabbly slow due to parsing speed (1.5s on my machine) 19:24
^unusably
masak not_gerd: interesting exercise. one day it might even be fast ;) 19:29
not_gerd to clarify: it still relies on make (but only uses portable syntax), but does not use shell commands (rm, find) but invokes a perl6 script instead 19:31
which translates to a 1.5s delay on every command invoked by make :( 19:32
19:34 MayDaniel joined
not_gerd the find replacement could probably be used with current ufo ( gist.github.com/2942255 ) 19:36
moritz yes, looks good 19:37
masak yes, I believe so. 19:38
I find &f.() somewhat unidiomatic compared to &f()
moritz just write f()
no need to ues the sigil 19:39
masak I don't mind the & when it's a parameter. that adds a kind of clarity/parallel.
but the dot is superfluous.
moritz I often like the dot when the expression before it is something more complicated than a mere variable 19:41
masak oh, then it adds visual distance, I guess. 19:42
yeah, I can see that. the dot somehow says "treat the lhs as an object that can be invoked"
not_gerd I'm still at the cargo-culting phase where using perl6 is concernced 19:44
masak r: multi sub infix:<+>(&f, &g) { -> { f; g } }; ({say "OH"} + {say "HAI"}).()
p6eval rakudo d5f39a: OUTPUT«OH␤HAI␤»
masak \o/
that is *awesome*.
moritz is that, like, monadic nonesense?
jnthn No, it's overloading operators with unrelated meanings :P 19:45
masak no, it's just subverting addition to mean sequencing.
colomon yeah, that's exactly the problem with it
masak I promise not to do it in production code.
jnthn masak: Surely there's something nicer in unicode for sequencing? :)
masak bloody prudes. :P
flussence r: multi sub infix:<·>(&f, &g) { ... } # ? 19:46
p6eval rakudo d5f39a: ( no output )
TimToady see rosettacode.org/wiki/Function_composition#Perl_6
though maybe you want to overload ; for this instead, oh wait 19:47
masak ;) 19:48
colomon TimToady++
masak I bet there is some reason ; is a terminator and not an operator. 19:49
though I can't think of it immediately.
sorear I might have to hurl if someone makes ; overridable. :D 19:50
colomon sorear++ 19:51
;)
huf meh, surely you can always define 􏿽xCD􏿽xBE to be an operator
even if you cant use ; 19:52
tadzik eeeeek
btw, we were discussing today at $work how is it that so many programmers can't write fibonacci on the interview
atrodo I'd like to make ; an operator and make STOP the operation separator 19:53
tadzik and I showed them the one with 10 characters in Perl 6 :)
the reaction was quite positive :)
colomon :)
atrodo: wait, like a telegram? say "Hello" STOP for 1.. 10 { .say } STOP 19:56
atrodo colomon: Exactly
harmil Why am I wrong for expecting this to work: 19:57
colomon atrodo: there's a certain style to that....
sorear tadzik: If I were an interviewer, I would probalby respond "Now, can you do that WITHOUT the ... operator?"
harmil r: say "".HOW.methods
p6eval rakudo d5f39a: OUTPUT«too few positional arguments: 1 passed, 2 (or more) expected␤ in any methods at src/gen/Metamodel.pm:377␤ in block <anon> at /tmp/f8bVHXMrLL:1␤␤»
moritz harmil: because that's not how calls to the MOP work
harmil More to the point, what's the correct way to say, "what methods do you support"?
moritz r: say ''.^methods
p6eval rakudo d5f39a: OUTPUT«BUILD Int Num chomp chop substr pred succ ll-match match-list ords lines samecase samespace trim-leading trim-trailing trim words encode capitalize trans indent WHICH Bool Str ACCEPTS Numeric gist perl comb match subst split␤»
harmil oh right, I think I asked that before. Thanks moritz++ 19:58
moritz harmil: thing is, several classes can share the same meta-object
masak so you have to supply the class to .methods
moritz harmil: which is why .^methods passes the invocant to the class on the meta object
harmil yep, I just forgot
masak .^ hides that. 19:59
or folds it in, rather.
harmil I switch between Perl 5, Perl 6 and Python so often at work and at home, it's hard to remember details sometimes, and meta-model details are the most diverent.
*divergent
masak indeed. 20:00
it'll get easier with time :)
harmil rn: say "".elems, "/", "a".elems; 20:01
p6eval rakudo d5f39a, niecza v18-7-ga660099: OUTPUT«1/1␤» 20:02
harmil ur… really?
huf "" is one empty string, i guess?
harmil I meant .chars, thanks 20:03
Interesting that .elems works at alll
r: "".^methods
p6eval rakudo d5f39a: ( no output )
harmil r: say "".^methods 20:04
p6eval rakudo d5f39a: OUTPUT«BUILD Int Num chomp chop substr pred succ ll-match match-list ords lines samecase samespace trim-leading trim-trailing trim words encode capitalize trans indent WHICH Bool Str ACCEPTS Numeric gist perl comb match subst split␤»
harmil some deep magic going on there, converting my Str to a … something that has a .elems?
flussence r: say Str.^mro 20:05
p6eval rakudo d5f39a: OUTPUT«Str() Cool() Any() Mu()␤»
flussence r: say Cool.^methods
p6eval rakudo d5f39a: OUTPUT«abs conj sqrt sign rand sin asin cos acos tan atan atan2 sec asec cosec acosec cotan acotan sinh asinh cosh acosh tanh atanh sech asech cosech acosech cotanh acotanh cis log exp roots log10 unpolar round floor ceiling truncate bytes chars fmt substr uc lc ucfirst l…
flussence r: say Cool.^methods(:local)
p6eval rakudo d5f39a: OUTPUT«abs conj sqrt sign rand sin asin cos acos tan atan atan2 sec asec cosec acosec cotan acotan sinh asinh cosh acosh tanh atanh sech asech cosech acosech cotanh acotanh cis log exp roots log10 unpolar round floor ceiling truncate bytes chars fmt substr uc lc ucfirst l…
huf so .^methods only lists the ones it has directly?
flussence r: say Str.^methods(:all) 20:06
p6eval rakudo d5f39a: OUTPUT«BUILD Int Num chomp chop substr pred succ ll-match match-list ords lines samecase samespace trim-leading trim-trailing trim words encode capitalize trans indent WHICH Bool Str ACCEPTS Numeric gist perl comb match subst split abs conj sqrt sign rand sin asin cos aco…
moritz huf: it stops at Cool by default 20:07
huf ah.
Cool.
jnthn Well, that's not quite true.
huf aha!
jnthn Any and Mu are excluded by default.
huf so why isnt Cool in "".^methods' output? 20:08
sorear harmil: perl 6 tries to hide the difference between items and singleton lists
jnthn huf: Oh, maybe Cool is in the exclude list too... 20:09
huf i see
makes a sortof perlish sense
jnthn Ah, yeah 20:10
Metamodel::ClassHOW.exclude_parent(Cool);
Yes, it's excluding Cool also.
20:17 kaare_ left
harmil sorear: that's probably wise 20:19
Meta-question about IRC: when people say they're "backlogging" does that just mean "reviewing the logs" or is there a more sophistimicated filter that can be used? 20:20
dalek Heuristic branch merge: pushed 221 commits to nqp/toqast by jnthn 20:21
[Coke] harmil: my irc session pauses where last I was, I have to manually scroll forward to catch up. (but I call that backscrolling)
[Coke] imagines some people let their session roll forward, but mark the last place they read, so they really have to backscroll. 20:22
dalek p/toqast: f19813a | jnthn++ | t/qast/qast.t:
Correct test count and switch over to use QAST; now that QAST is broken out into a separate library post-qbootstrap.
geekosaur xchat has markers you can place (or it can try to place them automatically based on idle time)
[Coke] NQP TOAST!
jnthn ... :) 20:23
20:25 fridim_ left
dalek p/toqast: ea9ceea | jnthn++ | src/HLL/Grammar.pm:
Override FAILGOAL in HLL::Grammar and get it to delegate to panic, so we get a line number.
20:26
p/toqast: d82864d | pmichaud++ | CREDITS:
Fix CREDITS to reflect that usernames are for GitHub.
p/toqast: b1226fb | jnthn++ | src/6model/serialization.c:
Try to unbust things on big endian platforms. Untested, but should do the trick.
p/toqast: b5930e1 | moritz++ | tools/build/PARROT_REVISION:
bump parrot version to 4.5 release
jnthn OK, toqast is now sync'd up with the post-qbootstrap NQP world. :) 20:27
harmil OK, I suspected there was something else going on where you could request that the server replay "items of interest" or something
sorear harmil: the server itself doesn't hold on to any items, other than the TCP send buffer stuff 20:28
harmil: there are a large number of clients in use, many of them provide conveniences for dealing with a backlog of messages received while away
"backlogging" comes from the concept of a person or bureaucracy being backlogged with things it hasn't been able to handle yet 20:29
why do I keep trying to write that word starting with beau-
jnthn ...'cus it sure ain't beautiful :) 20:30
20:40 MayDaniel left 20:46 sisar left 20:47 cog_ joined 20:50 cognominal left 20:56 birdwindupbird left 20:58 skids left
[Coke] did p5's named capture regexs come from p6? 21:00
21:01 mikemol_ left
sorear [Coke]: I want to say they came from .net 21:01
harmil Really? I was pretty sure P5 originated those... 21:02
dalek p: 46cf8f8 | jnthn++ | src/PAST/NQP.pir:
Start getting some more of the 6model primitives into the nqp:: namespace.
21:05
p: bc64ed0 | jnthn++ | src/how/NQP (5 files):
Use nqp::setwho and nqp::newtype.
21:14 ggoebel joined
ggoebel sub merge_sort ( @a ) { 21:14
return @a if @a <= 1;
my $m = @a.elems div 2;
my @l = merge_sort @a[ 0 ..^ $m ];
my @r = merge_sort @a[ $m ..^ @a ];
return @l, @r if @l[*-1] !after @r[0];
return gather {
take @l[0] before @r[0] ?? @l.shift !! @r.shift
while @l and @r;
take @l, @r;
}
}
my @data = 6, 7, 2, 1, 8, 9, 5, 3, 4; 21:15
say 'input = ' ~ @data;
say 'output = ' ~ @data.&merge_sort;
perl6: sub merge_sort ( @a ) {
p6eval niecza v18-7-ga660099: OUTPUT«===SORRY!===␤␤Unable to parse block at /tmp/cKNLVWxQVq line 1 (EOF):␤------> sub merge_sort ( @a ) {⏏<EOL>␤Couldn't find final '}'; gave up at /tmp/cKNLVWxQVq line 1 (EOF):␤------> sub merge_sort ( @a ) {⏏…
..pugs: OUTPUT«*** ␤ Unexpected end of input␤ expecting "use", statements or "}"␤ at /tmp/jsOvL6_qBq line 2, column 1␤»
..rakudo d5f39a: OUTPUT«===SORRY!===␤Unable to parse blockoid, couldn't find final '}'␤»
ggoebel return @a if @a <= 1;
my $m = @a.elems div 2;
my @l = merge_sort @a[ 0 ..^ $m ];
my @r = merge_sort @a[ $m ..^ @a ];
return @l, @r if @l[*-1] !after @r[0];
return gather {
take @l[0] before @r[0] ?? @l.shift !! @r.shift
while @l and @r;
take @l, @r;
}
}
my @data = 6, 7, 2, 1, 8, 9, 5, 3, 4;
say 'input = ' ~ @data;
say 'output = ' ~ @data.&merge_sort;
sorry folks
benabik ggoebel: p6eval accepts URLs to gists 21:16
sorear and I show up too late to kick. sorry folks. 21:19
masak also, there are IRC clients out there that can intercept and prevent paste mishaps.
sorear: I wouldn't kick if there isn't malicious intent.
well, maybe if the paste went on for minutes.
sorear 14:14 < ggoebel> sub merge_sort ( @a ) { 21:20
14:15 < ggoebel> sorry folks
21:20 sergot joined
sergot hi o/ 21:20
phenny sergot: 20 Jun 14:20Z <moritz> tell sergot < sjn> btw, if you bump into sergot, would you mind reminding him about sending his receipts and tickets and stuff?
PerlJam that's like 1 minute-ish :)
sorear seconds required for a paste to complete = (lines - 10) / 2
ways to interrupt a paste, completeish list: kick, kill, setting moderation 21:21
masak .oO( How do I silence thee? let me count the ways... ) 21:23
21:23 not_gerd left
[Coke] sorear: it's annoying, but is it /that/ annoying? 21:30
hugme: hug ggoebel,sorear
hugme hugs ggoebel,sorear
21:43 erkan joined, erkan left, erkan joined 21:44 sergot left 21:47 kurahaupo joined 21:48 noam_ left, noam_ joined
pmichaud /lastlog pmichaud 5 21:52
oops
21:59 cog__ joined 22:00 mikemol left 22:01 mikemol joined 22:02 cog_ left, spider-mario left
timotimo do you think i can commit the incomplete code for using 0 as protocol argument to the socket constructor for sockets, even though it doesn't yet set the protocol that was actually assigned to the socket? 22:04
22:05 mtk left 22:27 majrmovies left 22:29 adu joined
dalek p: 01558df | jnthn++ | src/how/NQPClassHOW.pm:
Eliminate a pir::isa usage.
22:30
p: 73ebd23 | jnthn++ | src/stage0/ (8 files):
Update bootstrap.
masak 'night, #perl6 22:32
colomon \o 22:34
sorear o/ 22:36
22:37 cog__ left, cog__ joined 22:38 vmspb left
adu \o 22:41
jnthn Figure I'll sleep too. o/ 22:50
22:57 PacoAir left 23:20 mtk joined 23:24 Vlavv` left 23:29 noam_ left 23:30 noam_ joined, tyatpi left 23:42 leprevost joined 23:47 kurahaupo left 23:55 tyatpi joined