»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by sorear on 25 June 2013.
ren1us anyone feel like helping me golf down a segfault? i found the line that pitches a fit, but it just makes no sense that it would be causing a problem (line: $.age++;) 00:01
segfault in parrot* 00:02
timotimo ren1us: can you try --optimize=off? 00:12
carlin m: use Test;loop {my @a=1;@a=?(@a.pick eq any 1);my $x=().pick;my @b=@a;@b.pick(2);@b.pick(4);@a.pick(*).sort.Str;@a=1..9;my @v;push @v,@a.pick(*) for ^9;@a xx 9;ok ?(~[1].pick eq any(*));ok ?(~[9].pick eq '1'|'4');@a=1..100;@b=pick(*,@a);is @b.elems,100;is ~@b.sort, ~(1..100);is ~@b.grep(Int).elems,100;sub w($f){my %s;%s{$_}=1 for (1..$f*100).pick(50);is %s.keys.elems,50,$f;ok (so 1 <= all(%s.keys) <= 100),'';};w(1);w(3);w(1);w(1000)} 00:18
camelia rakudo-moar 41574a: OUTPUT«(signal )not ok 1 - ␤not ok 2 - ␤ok 3 - ␤ok 4 - ␤ok 5 - ␤ok 6 - 1␤ok 7 - ␤ok 8 - 3␤not ok 9 - ␤ok 10 - 1␤ok 11 - ␤ok 12 - 1000␤not ok 13 - ␤»
carlin that's a golf of the S32-list/pick.t explosion 00:19
Mouq carlin++
ren1us timotimo: still segfaults 00:20
timotimo i'm not to blame in that case :3 00:22
ren1us lol.
i want to report it but i feel like i need something a little more specific than a project a few hundred lines long that takes 3 minutes just to get to the segfault 00:23
timotimo golfing is a high art :( 00:24
ren1us and i'm no tiger woods
nor have i had as much success with girls as tiger woods, but that's a different problem
Mouq lue: github.com/perl6/Pod-To-HTML/commit/e6549f616 00:27
ren1us: Success with girls is a higher art :P 00:28
depending on how you go about it.. 00:29
..or rather, one's definition of 'success' :P 00:30
ren1us Mouq: I define success as falling for someone who doesn't look at me as 'just friends' 00:32
at this point i'd be thrilled to fall for one who hates me, the whole 'just friends' thing is getting kinda boring
and any pointers on golfing? i actually keep bumping into things that i try to pinpoint the problem in, but can't. memory leaks in moar, segfaults in parrot, etc etc 00:33
Mouq ren1us: I'm sorry, been there many times :/ 00:36
hugme hug ren1us
hugme hugs ren1us
ren1us ._. thanks hugme. not gonna question it. 00:37
Mouq
.oO( Actually, every time except twice, and one she said she just wated to be friends but stopped talking to me once she got back with her ex 9_9 )
00:38
Aaanyway, I'm going to try torturing my Pod::To::HTML refactor until it works 00:40
ren1us actually, someone tell me i'm not crazy: for %.hash.keys { # stuff # }; <--- once this loop completes an iteration, assuming no variables outside the loop are changed, all objects defined inside the loop should be garbage collected, right? 00:45
gtodd "completes an iteration" or "completes" ... 00:50
ren1us completes an iteration 00:51
so if i did something like for 0..9 { my $a = A.new; doSomething(); }; where doSomething defines a gazillion objects and such, it's not going to wait until the entire loop is finished before garbage collecting $a and everything created by doSomething() 00:54
Mouq std: class :: { has $.foo }.new 01:12
camelia std 0f2049c: OUTPUT«ok 00:01 124m␤»
Mouq m: class :: { has $.foo }.new
camelia rakudo-moar 41574a: OUTPUT«===SORRY!=== Error while compiling /tmp/VE6vnpQXbW␤Two terms in a row␤at /tmp/VE6vnpQXbW:1␤------> class :: { has $.foo }⏏.new␤ expecting any of:␤ scoped declarator␤ constraint␤ p…»
Mouq Hmm
dalek ast/S26-WHY: 1a417fe | (Rob Hoelz)++ | S26-documentation/why- (2 files):
Stop skipping test that now no longer segfaults
02:05
ast/S26-WHY: 87aa7e3 | (Rob Hoelz)++ | S26-TODO:
More things TODO for S26...
lue Mouq: cool, just know that instead of "does Pod::Walker", it should really be "is Walker::Callees" :) 02:12
lue decides to finally add Pod::Walker to ecosystem 02:15
dalek osystem: 8a01b34 | lue++ | META.list:
Add Pod::Walker
02:17
Mouq lue: github.com/Mouq/pod-walker/commit/...4b06f4b112 02:18
lue: I wouldn't be surprised if that's the completely wrong approach 02:20
lue: But I'm close to having a copy of Pod::To::HTML that runs locally with that, even if incorrectly in many places
s/runs/compiles :P 02:21
lue Any particular reason you want to stuff the subs in the role too, ooc? 02:22
Mouq Mmm, no reason in particular, though I want to be able to add a multi-candidate to pw-recurse in PTH and I guess putting them in the role made me feel that it was more likely to work :P 02:23
lue Are classes a necessity for a Pod::To:: module anyway, or would your role-based solution suddenly force its user to make a class? :) 02:24
Mouq They're not necessary but it sure cleans things up. Right now my hackity solution is to have method render (PTH :U: |a) call self.new.render(|a) 02:26
Which means that leakage between documents shouldn't be the problem it has been in the past 02:27
But perhaps a class is needed for the documents, and PTH should really just be a collection of subs 02:28
Or maybe it'll just die with "Bytecode validation error at offset 136, instruction 23: truncated stream" 02:30
lue My idea is that you'd have an object to hold all of your functions in, and then a collection of multi subs in the module to help you use it. Still feels more classy than roley to me, but I can't say I know for sure what's best :) 02:31
Mouq lue: Classy would work too :) The main issue I'm haven't gotten around to addressing is that P2H switches between an 'html', 'inline', and 'raw or html-escaped text' mode 02:33
The only difference I can see about inline, though, is that Paras aren't rendered with <p>s 02:34
(Note that this is an issue regardless or sub/role/class structure of Pod::Walker) 02:35
*of
lue wonders if he should put everything under module Pod::Walker; so Pod::Walker::Callees.new(), Pod::Walker::pod-walk() ... 02:36
lue Mouq: yeah, that sounds like you need a ~slightly~ more structured object than a plain string; something like class PodString { Str $.text; EnumTypeThing $.txtstate }, where $.txtstate lets you know whether its "html" or "inline" or... 02:37
Mouq lue: The issue is that the things that need to be processed as 'inline' are processed before they're known to need to be processed as inline. And sometimes a single function needs to process them as 'inline' or 'rawtext' 02:39
lue How's that able to work at all? O_o 02:40
Mouq lue: Well, that's what'll need to be resolved once I get it running. The way it used to work was because you manually called node2inline or whatever, but here the preprocessed text is handed to you. Which I still think is a good idea 02:41
lue Mouq++ for working on it (and make sure to "lose" the enforced stylesheet while you're in there, eh? :P) 02:43
Mouq lue: Haha, what stylesheet? I have no clue what you're talking about 02:44
lue Yeah, sorry. Don't know what I was thinking there. :) 02:44
Mouq I really hate that the 'Cannot call X, none of these signatures match:' doesn't show the capture its matching against 02:48
At the same time, a .perl of an arbitrary call can be crazy verbose, so.. 02:49
lue I also don't like how warning messages won't show a backtrace on -j and -m like it does on -p, meaning every UVOTA just stands to infuriate you. I looked at it earlier, and I don't immediately see how to change that, though :/
Mouq That too :|
Mouq Ahh, I see 02:52
Mouq The problem is that my multi sub pw-recurse isn't getting called. Which is kind of expected 02:52
hoelzro so I'm working on getting S26 working correctly with Rakudo, and I came across this: 02:53
github.com/rakudo/rakudo/blob/nom/....nqp#L2302
does anyone know why var traits are NYI?
Mouq m: my $x is docs("abcd"); 02:56
camelia rakudo-moar 41574a: OUTPUT«===SORRY!=== Error while compiling /tmp/llQmo5kGXq␤Can't use unknown trait 'is docs' in a variable declaration.␤at /tmp/llQmo5kGXq:1␤------> my $x is docs("abcd")⏏;␤ expecting any of:␤ TypeObject…»
lue hoelzro: what do you mean by "getting S26 working correctly"? Just making the parsing more correct, I assume? 02:57
Mouq m: my $x; trait_mod:<is>($x, :docs<xyz>)
camelia rakudo-moar 41574a: OUTPUT«No such method 'set_docee' for invocant of type 'Str'␤ in sub trait_mod:<is> at src/gen/m-CORE.setting:275␤ in block at /tmp/TUc9ZSHTei:1␤␤»
hoelzro well, for example, the current impl uses #= for leading comments, rather than the correct #|
lue hoelzro: aren't they both valid forms though? 02:58
hoelzro trailing comments are NYI
they are
but #| is leading
and #= is trailing
Mouq hoelzro++
hoelzro #= is currently treated as leading
lue Oh, didn't know there was a distinction. Glad to hear that some better sense has been made there then :)
Mouq Should we deprecation cycle that? I know there's a lot of code that wrongly uses #= 02:59
.oO( Does a deprecation cycle even make sense here? )
lue could see #^ for leading and #$ for trailing instead of the current ones :P 02:59
isBEKaml hoelzro: maybe I'm missing something here. What's the distinction between leading and trailing comments?
isBEKaml Are they separated by where they are placed? That is, above or below a sub/method? 03:00
hoelzro someone thought of #< and #>
isBEKaml: correct
hang on
hoelzro isBEKaml: github.com/perl6/roast/blob/S26-WH...why-both.t 03:00
hoelzro I wish it would be #< and #>, or even #↑ and #↓ 03:02
I've been working on this for nearly a week and I still get them mixed up =/
lue hoelzro: #^ and #$ would offer some correlation with regexes :)
hoelzro lue: oh, true
Mouq: I would be happy to start filing PRs against "broken" modules
at least this change shouldn't alter behavior (unless someone's depending on WHY) 03:03
lue hoelzro: different symbols would make "deprecating" sooo much easier too. How do you know when #= is being deprecatingly used as a leading comment, anyway?
isBEKaml hoelzro: I can understand #| as a leading comment. Other languages such as Scala and Haskell use it for setting fixed spacing in doc strings.
hoelzro interesting, I didn't know that
isBEKaml hoelzro: I believe it's similar to python's """
lue r: my $a = #`"""testing embedded""" 5; say $a; 03:04
camelia rakudo-jvm 41574a: OUTPUT«(timeout)»
..rakudo-{parrot,moar} 41574a: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Malformed initializer␤at /tmp/tmpfile:1␤------> $a = #`"""testing embedded""" 5; say $a;⏏<EOL>␤ expecting any of:␤ scoped declarator␤ …»
lue boo. 03:04
isBEKaml hoelzro: though not the exact #|, the | is used for setting fixed spacing. Haskell uses "--|", scala "/**" and pipes in every subsequent line. 03:05
Mouq It ran! Woo!
lue I personally think we're but a few steps away from a "comment" sublanguage by this point :P
hoelzro lue: isn't that POD? =P 03:06
isBEKaml: I never knew about --|
isBEKaml lue: too bad we can't turn into .lp6. :D
hoelzro that's not new, is it?
isBEKaml: hmm...a custom grammar for literate Perl 6? 03:07
lue hoelzro: no silly, that's the Pod sublanguage, not the comment sublanguage :)
hoelzro interesting idea
lue: heh
isBEKaml hoelzro: yep, haddock does it.
hoelzro: I'm not sure how far we can push .lp6. With separate comment formats like this one, I don't think we can see any literate forms - like lue said, at best it's a comment sublanguage. :D 03:09
hoelzro I suppose
still, it's an interesting idea 03:10
lue isBEKaml: not that you couldn't write a Literate slang to do that (once we know what it would look like to work in that realm of madness, that is ☺)
isBEKaml Currently, comments are read in tandem with code. With these forms, it'll feel like reading two books at once. :P 03:11
isBEKaml lue: exactly - let's see where that descends into madness. :-) 03:11
Frankly speaking, a lot of ideas in Perl6 spec feel like moonshots. 03:12
lue I think it's called "extensible programming", though I don't much like that name, particularly considering how much of P6 you can extend already. The ultimate goal is to change what the compiler is doing. Perhaps "cooperative programming"? :P
isBEKaml lue: hmm, isn't that what "extensible" stands for? 03:15
isBEKaml doesn't like to see it in non-lisp languages *ducks*
lue Yeah, though I really think manipulating the grammar and ASTs and whatnot of the language is far different from the *other* extensible aspects of Perl 6 that are implemented already, hence the desire for a distinct name :) 03:16
isBEKaml: the nice thing about a non-Lisp language is that it should be easier to tell what stuff is modifying the compiler's behavior :) 03:18
Mouq lue: Lookie what I made gist.github.com/Mouq/b04e9408cd0e83cf62bc 03:19
lue Lisp's macros and such have a nasty habit of not looking different, which on the one hand is the point of Lisp's syntax, and on the other hand makes it bleeding impossible to know what the distinction of a macro is.
Mouq (some obvious bugs)
Mouq really likes Rust's macros
lue Mouq++
isBEKaml lue: Right, it stands out in non-lisp languages. But if you read through a wide swath, it's easy to pick macros in lisp too. I just count defmacros, progns and some quirky naming conventions for macros in lisp. 03:20
lue Mouq: yes, I remember finding a (I think) Rust doc on macros that was quite interesting. Need to look at them more, 'cos they are quite possibly the only non-lisp language to have done Proper Macros™ thus far.
isBEKaml: my point is that it's kinda hard to tell what a (defmacro) does different from a (defun), because the code tends to look really similar. I remember reading some elisp documentation on it once, and although it did explain the difference, it was hard to believe that it's a necessary one. 03:21
Mouq doc.rust-lang.org/guide-macros.html
isBEKaml lue: I should have added this: Otherwise, I agree. :D 03:22
lue Mouq: looks nice, makes me think our macros should really be some sort of grammar/action rule pair that gets injected into the current language. Still needs some sort of ast manipulation thing though. 03:30
zengargoyle hrm, #| comments the thing below and #= comments the thing the left made perfect sense to me... 03:44
#^ seems like it should comment the thing above.
zengargoyle what i'm not sure i get is how documents like MyModule::Cookbook.pod would work out 03:46
is there supposed to be an empty CompilationUnit holding nothing but doc? 03:47
Mouq zengargoyle: p6doc is currently just searches through @*INC. It's not particularly sophisticated 03:53
zengargoyle: github.com/perl6/doc/blob/master/bin/p6doc
zengargoyle maybe it's changed by now. i thought @*INC was moving to using CompUnitRepoLocal things. 03:55
Mouq zengargoyle: It is, but it can (apparently) still be used the old fashioned way
zengargoyle which does more of looking up and loading modules rather than just a list of paths things. (at least last i looked CURL didn't have a .path type method.) 03:56
Mouq m: say @*INC[0].WHAT 03:57
camelia rakudo-moar 41574a: OUTPUT«CompUnitRepo::Local::File␤»
Mouq m: say @*INC[0].WHAT.Str
camelia rakudo-moar 41574a: OUTPUT«Nil␤»
Mouq m: use lib <abcd>; say @*INC[0].WHAT.Str
camelia rakudo-moar 41574a: OUTPUT«Nil␤»
Mouq Huh
zengargoyle with the idea that maybe eventually the modules would be stored in a db or zip or such rather than files on the filesytem
Mouq m: say @*INC.WHAT 03:58
camelia rakudo-moar 41574a: OUTPUT«(Array)␤»
zengargoyle due to all of the use Module:ver<x.y.z>:author<zengargoyle> type of capabilities
Mouq zengargoyle: I no very little about this :)
*know
Mouq
.oO( I also no vary litle abot speling )
03:59
zengargoyle me neither. just remembering when CURL came about and made p6doc not work for a while because @*INC entries no longer strinified to paths... 04:00
zengargoyle and if there's a MyModule:ver<1> and MyModule:ver<2> then the cookbook type pod needs the same sort of versioning info.. MyModule::Cookbook:ver<1> MyModuleCookbook:ver<2> 04:04
and i'm all fuzzy on how that's eventually supposed to work. :)
R0b0t1 Are there any plans for perl6 to support sentience?
Mouq R0b0t1: There's no date set but I believe it's in the spec somewhere 04:05
zengargoyle probably NYI like all the other good parts. 04:06
R0b0t1 :D 04:07
hoelzro the amount of Perl 6 that's NYI is getting pretty low
at least for the stuff I care about
=
=)
isBEKaml Funny, the guy was looking for himself in asking for sentient support in Perl6. :-) 04:09
hoelzro bed time for me 04:20
'night #perl6 04:21
dalek ast/S26-WHY: 202f49a | (Rob Hoelz)++ | S26-documentation/why-preceding.t:
Fix attribute lookup test
04:39
sergot morning o/ 06:31
atroxaper sergot: morning o/ 06:48
yoleaux 8 Jul 2014 19:23Z <lue> atroxaper: just so you know, I've already followed that hint in Pod::To::HTML (here it is: github.com/lue/pod-walker), and AFAIK Mouq is using it to reimplement Pod::To::HTML too. I'll be interested in seeing what your solution to that hint is! :)
atroxaper lue: ping 08:02
How can I live a message for lue? I mean witch command for yoleaux? 08:03
moritz .tell atroxaper like this
yoleaux moritz: I'll pass your message to atroxaper.
atroxaper moritz: Thanks!
yoleaux 08:03Z <moritz> atroxaper: like this 08:04
atroxaper Works))
.tell lue hello, my not finished yet solution is github.com/atroxaper/Pod-SAX. You can see Pod::SAX::Reformer class and its test. Main feature that my Callees makes a calls for start of Pod object, end of Pod object, and 'in' Pod object that trigger if .content has not Pod object like String. And for each Pod type we can make many callbacks for many cases. Like only for L<> but not for C<>, I think it is more flexible and maintenanc[fu
l] :) And you can share some storage with data between callbacks. And when we have start, in, and stop calls then we have something like Automata (en.wikipedia.org/wiki/Automata_theory) with states. And one more think. System of Anchors (i'm not sure with name yet) that objects contains a code that should be executed after all work and push its result to result represenation (like HTML). It can be used for crossrefs of many other things
.
yoleaux atroxaper: I'll pass your message to lue.
jack_rabbit I have my $arr = (1,2,3,4). How do I get that interpreted as an array rather than a scalar, say, in for $arr -> $x { say "hello, ", $x; } 08:05
Obviously I could just declare my @arr = ..., but that's not the point.
atroxaper r: my @arr = (1,2,3,4); say $_ for $arr.list 08:06
camelia rakudo-{parrot,jvm,moar} 41574a: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Variable '$arr' is not declared. Did you mean '@arr'?␤at /tmp/tmpfile:1␤------> y @arr = (1,2,3,4); say $_ for $arr.list⏏<EOL>␤ expecting any of:…» 08:07
atroxaper r: my $arr = (1,2,3,4); say $_ for $arr.list
camelia rakudo-{parrot,jvm,moar} 41574a: OUTPUT«1␤2␤3␤4␤»
jack_rabbit r: my $arr = (1,2,3,4); for $arr.list -> $x { say "hello, ", $x; };
camelia rakudo-{parrot,jvm,moar} 41574a: OUTPUT«hello, 1␤hello, 2␤hello, 3␤hello, 4␤» 08:08
jack_rabbit thanks.
atroxaper Wow, it is my first contributed answer on #perl6 ! 08:08
jack_rabbit: wellcome! 08:09
jack_rabbit $atroxaper++;
moritz also
m: my $arr = [1..4]; .say for @$arr
camelia rakudo-moar 41574a: OUTPUT«1␤2␤3␤4␤»
jack_rabbit ooh, very nice. 08:10
atroxaper moritz: because [1..4] is Array and (,) is a Parcel? 08:11
r: my $arr = (1,2,3,4); say $_ for @$arr # it works to... 08:12
camelia rakudo-{parrot,jvm,moar} 41574a: OUTPUT«1␤2␤3␤4␤» 08:12
Timbus @$ would work on both, it's just @() is shorthand for .list
the sigils provide context 08:13
atroxaper Timbus: yes. I see already :)
jack_rabbit I'm reading docs that say parcels are immutable, but can contain mutable containers, so my $x = 1; my $parc = (0, $x, 2); $parc[1] = 3; works, but $parc[0] is immutable. 08:17
How can I put the *value* of $x into the parcel to make the second element immutable, rather than putting the container itself? 08:18
moritz jack_rabbit: with binding
wait 08:19
uhm
moritz m: my $x = 42; my $p = (0, $x, 2); $p[1] := $x; $p[1] = 23; say $p 08:19
camelia rakudo-moar 41574a: OUTPUT«No such method 'bind_pos' for invocant of type 'Parcel'␤ in sub postcircumfix:<[ ]> at src/gen/m-CORE.setting:2469␤ in block at /tmp/5bNDxercIn:1␤␤»
FROGGS m: my $arr = [1..4]; .say for $arr[] 08:20
moritz m: my $x = 42; my $p = (0, nqp::decont($x), 42); $p[1] = 23; say $p
camelia rakudo-moar 41574a: OUTPUT«1␤2␤3␤4␤»
rakudo-moar 41574a: OUTPUT«Cannot modify an immutable Int␤ in method assign_pos at src/gen/m-CORE.setting:1772␤ in sub postcircumfix:<[ ]> at src/gen/m-CORE.setting:2465␤ in block at /tmp/wTj7zUmDLI:1␤␤»
moritz jack_rabbit: I don't think there's a perl 6 level primitive for decontainering :(
jack_rabbit :/ disappointing. 08:21
my first disappointment. Perl 6 has otherwise been pretty impressive.
moritz well
FROGGS m: my $x = 42; my $p = (0, $x.VAR, 42); $p[1] = 23; say $p 08:22
camelia rakudo-moar 41574a: OUTPUT«Cannot assign to a readonly variable or a value␤ in method assign_pos at src/gen/m-CORE.setting:1772␤ in sub postcircumfix:<[ ]> at src/gen/m-CORE.setting:2465␤ in block at /tmp/cX4zKEfCmw:1␤␤»
FROGGS m: my $x = 42; say $x.VAR
camelia rakudo-moar 41574a: OUTPUT«42␤»
FROGGS is that what I think it is?
moritz m: my $x := 42; my $p = (0, $x); $p[0] = 42
camelia rakudo-moar 41574a: OUTPUT«Cannot modify an immutable Int␤ in method assign_pos at src/gen/m-CORE.setting:1772␤ in sub postcircumfix:<[ ]> at src/gen/m-CORE.setting:2465␤ in block at /tmp/05_lBSdIVu:1␤␤»
moritz m: my $x = 42; say $x.VAR.^name
jack_rabbit r: my $x = 42; my $p = (0, $x.VAR, 43); say $p;
camelia rakudo-moar 41574a: OUTPUT«Int␤»
rakudo-{parrot,jvm,moar} 41574a: OUTPUT«0 42 43␤»
jack_rabbit Cool, that seems to work. 08:23
moritz FROGGS: if it is, it's totally uninituitive
m: my $x = 42; say $x.VAR.name
camelia rakudo-moar 41574a: OUTPUT«$x␤»
moritz because .VAR returns the variable object :-)
m: my $x = 42; say $x.VAR.^name
camelia rakudo-moar 41574a: OUTPUT«Int␤»
moritz eeks
sergot m: class A { method new(Int $sth?, Bool :$a = False) { say $a; self.bless } }; A.new(:a);
camelia rakudo-moar 41574a: OUTPUT«True␤»
jack_rabbit So what exactly is the variable object? 08:24
similar to .HOW?
moritz jack_rabbit: it's an object that lets you introspect the variable; but it also behaves transparently in most cases, and acts as if it were the value inside the variable 08:25
jack_rabbit well that sounds like exactly what I want. It looks like it's immutable, though, right?
r: my $x = 2; my $y = $x.VAR; say $x, " ", $y; 08:26
camelia rakudo-{parrot,jvm,moar} 41574a: OUTPUT«2 2␤»
jack_rabbit r: my $x = 2; $x.VAR = 4; say $x;
camelia rakudo-{parrot,jvm,moar} 41574a: OUTPUT«Cannot assign to a readonly variable or a value␤ in block at /tmp/tmpfile:1␤␤»
FROGGS I grepped in rakudo/src... the is nothing Perl 6ish that provides nqp::decont 08:27
jack_rabbit bummer. I would think that'll be added eventually? 08:28
moritz maybe we need an unitem() function 08:32
oh
m: my $x = 42; my $p = (0, $x.list, 43); say $p; $p[1] = 23;
camelia rakudo-moar 41574a: OUTPUT«0 42 43␤Cannot modify an immutable Int␤ in method assign_pos at src/gen/m-CORE.setting:1772␤ in sub postcircumfix:<[ ]> at src/gen/m-CORE.setting:2465␤ in block at /tmp/BOT6rxSe97:1␤␤»
moritz jack_rabbit: .list is what you want
jack_rabbit: a bit unintuitive at first, but it does remove scalar containers 08:33
jack_rabbit interesting.
would .VAR be bad practice? Are there implications of using that method?
moritz IMHO .VAR is just wrong for that use case 08:34
I don't understand why it works, so I wouldn't use it 08:35
jack_rabbit sure.
jack_rabbit m: my $x = 2; say $x.VAR.^name; 08:36
camelia rakudo-moar 41574a: OUTPUT«Int␤»
jack_rabbit m: my $x = 2; say $x.VAR.^mro;
camelia rakudo-moar 41574a: OUTPUT«(Int) (Cool) (Any) (Mu)␤»
jack_rabbit Also, what is this thing: ␤ 08:49
I think it might not be showing right (probably bad encoding on my end) 08:50
atroxaper new line.
jack_rabbit ahh
atroxaper Is I understand it is for better visibility for irc 08:51
jack_rabbit makes sense.
FROGGS perl6-m -e 'say uniname("␤")' 08:52
SYMBOL FOR NEWLINE
FROGGS and the perl6 bot here converts it to proper newlines 08:52
FROGGS so you can feed it multi line code in a single line :o) 08:52
m: say uniname("␤")
camelia rakudo-moar 41574a: OUTPUT«LINE FEED (LF)␤»
jack_rabbit ho ho! fancy. 08:53
FROGGS m: my %a = a => 1; my %b = b => 2; %a<b> = %b; %b = %a<b> 08:55
camelia rakudo-moar 41574a: OUTPUT«Saw 1 call to deprecated code during execution.␤================================================================================␤%b = { ... } called at:␤ /tmp/MhDSfkwxKc, line 1␤Please use %b = ... instead.␤--------------------------------------…»
atroxaper FROGGS: btw, I read some first Perl6 Advent and saw >> operator by in one symbol. And author said that it better for him. How can i write that symbols as fast as just >> ? :)
FROGGS .tell lizmat that feels weird: m: my %a = a => 1; my %b = b => 2; %a<b> = %b; %b = %a<b>
yoleaux FROGGS: I'll pass your message to lizmat.
FROGGS it is right alt + y on my keyboard 08:56
atroxaper FROGGS: is it comfortable?)) 08:57
FROGGS atroxaper: maybe it is equally comfortable, but » looks nicer :o)
atroxaper FROGGS: I've tried to find exactly that sybbol, but there are about 5 >> with different names. Which of that versions is >> 08:58
FROGGS m: say uniname('»')
camelia rakudo-moar 41574a: OUTPUT«RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK␤»
FROGGS m: say '»'.ord 08:59
camelia rakudo-moar 41574a: OUTPUT«187␤»
FROGGS m: say '»'.ord.fmt('%#x')
camelia rakudo-moar 41574a: OUTPUT«0xbb␤»
atroxaper FROGGS: nice!
FROGGS :o)
atroxaper FROGGS: my wife likes runes. I'm going to write some program for her mostly consisting of Runes :-) 09:01
FROGGS atroxaper: ohh, that sounds very nice indeed :o) 09:02
FROGGS I dunno why but that makes me think of rosettacode.org/wiki/Draw_a_clock#Perl_6 09:02
nwc10 .tell jnthn I made you a test case (slightly smaller): paste.scsys.co.uk/407345 09:03
yoleaux nwc10: I'll pass your message to jnthn.
atroxaper FROGGS: Cool! Nice clock! 09:04
FROGGS TimToady++ for that
lizmat good *, #perl6 09:19
yoleaux 08:55Z <FROGGS> lizmat: that feels weird: m: my %a = a => 1; my %b = b => 2; %a<b> = %b; %b = %a<b>
lizmat FROGGS: weird because it generates a deprecated warning? 09:20
the alternative would be fail (as we decided to not allow %h = {}
)
jack_rabbit What is the function of 'X-' here: my @x = DateTime.now.Str.substr(11,8).ords X- ord('0'); 09:28
atroxaper jack_rabbit: I think perlcabal.org/syn/S03.html#List_infix_precedence infix:<X> 09:35
jack_rabbit weird. That looks like what it's doing. 09:37
r: my @x = DateTime.now.Str.substr(11,8).ords X- ord('0'); 09:38
camelia ( no output )
jack_rabbit m: my @x = map { $_ - ord('0') }, DateTime.now.Str.substr(11,8).ords; say $x; 09:39
camelia rakudo-moar 41574a: OUTPUT«===SORRY!=== Error while compiling /tmp/R_XHeIxnAf␤Variable '$x' is not declared. Did you mean '@x'?␤at /tmp/R_XHeIxnAf:1␤------> teTime.now.Str.substr(11,8).ords; say $x⏏;␤ expecting any of:␤ post…»
jack_rabbit m: my @x = map { $_ - ord('0') }, DateTime.now.Str.substr(11,8).ords; say @x; 09:39
camelia rakudo-moar 41574a: OUTPUT«0 9 10 3 9 10 2 5␤»
FROGGS lizmat: yes, feels weird because of that message, but I guess one must get used to it 09:40
and I guess this behaviour was the reason to explicitly allow %h = {} 09:41
lizmat I'm open to suggestions to improve the message :-)
you could argue that %a<b> = %b should also be disallowed 09:42
it should be %a<b> = $%b
it's the automatic itemizing that's making it a unclear 09:43
jnthn It's not surprising if you stop to think for a moment
yoleaux 09:03Z <nwc10> jnthn: I made you a test case (slightly smaller): paste.scsys.co.uk/407345
jnthn %h<a> is clearly a scalar
And so provided you know what $s = %h does, %h<a> = %h2 follows fairly natural 09:44
lizmat ok, so from wider to narrower, we will allow transparently ($ = %), but narrower to wider is / will be an error (% = $) 09:45
is that something we can put in the spec ?
jnthn Doesn't hold up for @a = $b though 09:46
lizmat indeed
:-(
jnthn I think this particular case just has to be understood in terms of hashes
lizmat yup, indeed 09:47
regarding a shortcut / sugar for nqp::decont, I was playing with: 09:48
m: sub prefix:<=>(\x) { x.VAR }; my $x = 42; =$x = 43
camelia rakudo-moar 41574a: OUTPUT«Cannot assign to a readonly variable or a value␤ in block at /tmp/MK6ifdXLUe:1␤␤»
jnthn x.VAR doesn't decont, it returns a Scalar...
m: my $a; say $a.VAR.WHAT 09:49
camelia rakudo-moar 41574a: OUTPUT«(Scalar)␤»
lizmat m: sub prefix:<=>(\x) { nqp::decont(x) }; my $x = 42; (1,2,=$x,4).say # improved?
camelia rakudo-moar 41574a: OUTPUT«Cannot modify an immutable Int␤ in block at src/gen/m-CORE.setting:17319␤ in block at /tmp/wG4gcS070I:1␤␤»
lizmat but with using decont this way, why doesn't this work? 09:50
jnthn ,= is a longer token? 09:51
lizmat std: sub prefix:<=>(\x) { nqp::decont(x) }; my $x = 42; (1,2,=$x,4).say # improved?
camelia std 0f2049c: OUTPUT«===SORRY!===␤Undeclared routine:␤ 'nqp::decont' used at line 1␤Check failed␤FAILED 00:01 138m␤»
lizmat yup, that's it
m: sub prefix:<=>(\x) { nqp::decont(x) }; my $x = 42; (1,2, =$x,4).say # improved?
camelia rakudo-moar 41574a: OUTPUT«1 2 42 4␤»
jnthn We had a prefix:<=> for something else entirely once. I was in the meeting where we killed it. :) 09:52
masak good noon, #perl6 09:53
lizmat r: 'sub prefix:<±>(\x) { nqp::decont(x) }; my $x = 42;my $p = (1,2,±$x,4); say $p; $p[2] = 23 09:54
camelia rakudo-{parrot,jvm,moar} 41574a: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Unable to parse expression in single quotes; couldn't find final "'" ␤at /tmp/tmpfile:1␤------> ;my $p = (1,2,±$x,4); say $p; $p[2] = 23⏏<EOL>␤ …»
lizmat r: sub prefix:<±>(\x) { nqp::decont(x) }; my $x = 42;my $p = (1,2,±$x,4); say $p; $p[2] = 23
camelia rakudo-jvm 41574a: OUTPUT«1 2 42 4␤Cannot modify an immutable value␤ in method assign_pos at gen/jvm/CORE.setting:1772␤ in sub postcircumfix:<[ ]> at gen/jvm/CORE.setting:2465␤ in block at /tmp/tmpfile:1␤␤»
..rakudo-moar 41574a: OUTPUT«1 2 42 4␤Cannot modify an immutable Int␤ in method assign_pos at src/gen/m-CORE.setting:1772␤ in sub postcircumfix:<[ ]> at src/gen/m-CORE.setting:2465␤ in block at /tmp/tmpfile:1␤␤»
..rakudo-parrot 41574a: OUTPUT«1 2 42 4␤Cannot modify an immutable value␤ in method assign_pos at gen/parrot/CORE.setting:1776␤ in method assign_pos at gen/parrot/CORE.setting:1774␤ in sub postcircumfix:<[ ]> at gen/parrot/CORE.setting:2469␤ in sub postcircumfix:<[ ]> at…»
jnthn Also, I think a method or sub would fit better than an operator 09:56
Dunno what to call it, though :)
lizmat im() ? 09:57
short for immutable?
or maybe Parcel creation should decont automatically ? 09:58
I guess not: S07:56 09:59
synopsebot Link: perlcabal.org/syn/S07.html#line_56
jnthn oh, no, then you could never write a list assignment :P
lizmat indeed.. 10:00
lizmat headdesks
jnthn What was the actual use case? 10:01
lizmat well, making sure that a Parcel only contained immutables
while initializing it from variables
lizmat re deprecation message for %h = {}: 10:08
FROGGS, jnthn: is this better:
$ 6 'my %h = {}'
Saw 1 call to deprecated code during execution.
================================================================================
%h = itemized hash called at:
-e, line 1
Please use %h = %(itemized hash) instead.
timotimo whoa, so much backscroll 10:11
jnthn lizmat: Seems OK 10:12
dalek kudo/nom: 9a8470c | (Elizabeth Mattijsen)++ | src/core/Hash.pm:
Alter %h = {} deprecation message
10:13
ast: 32730f7 | (Elizabeth Mattijsen)++ | S02-types/deprecations.t:
Adapt test for %h = {} deprecation message
10:17
atroxaper How can I describe a regex 'any but not a something' ? like any but not ':' I need to get scheme of url :) 10:25
jnthn <-[:]> 10:26
lizmat re: immutability in parcels:
jnthn <-[:]>+ for many
lizmat m: my $x = 42; my $p = (1,2,+"$x",4); say $p; say $p[2].WHAT; $p[2] = 43
camelia rakudo-moar 41574a: OUTPUT«1 2 42 4␤(Int)␤Cannot modify an immutable Int␤ in method assign_pos at src/gen/m-CORE.setting:1772␤ in sub postcircumfix:<[ ]> at src/gen/m-CORE.setting:2465␤ in block at /tmp/7njPnv8eJ3:1␤␤»
lizmat so +"$x"
if it is a Num, just "$x" if it is a Str
atroxaper jnthn: yes! Thanks. I forgot about it again :-) 10:27
timotimo FROGGS: are you here right now? 10:31
what's the status regarding NativeCast and function pointers?
is it in our reach now or can it actually already be done?
atroxaper timotimo: there is like weekly scram :)
timotimo: btw many Thanks for your weekly post about current status of Perl 6. I read it every time. 10:32
timotimo thank you! :) 10:33
FROGGS timotimo: I am 10:46
timotimo hey :)
FROGGS timotimo: NativeCall exports a sub nativecast which works on all backends 10:47
timotimo Mouq, atroxaper: which of you is working on which part of the Pod::Walker and Pod::To::HTML based on the walker?
timotimo FROGGS: i got that much 10:47
FROGGS and also OpaquePointer is extended to let you do math
timotimo i've got that, too
FROGGS okay
timotimo i'm only missing information about the state of function pointers
FROGGS ahh, sorry
FROGGS we need to fix 'has &.bar:(Int)' in Perl 6 actions, it already is parsed correctly 10:48
then we can hook it up
timotimo ah, good
FROGGS but I guess it will take like three weeks or more until we have i
t
timotimo will the return type be put inside the (..) with a -->? 10:49
FROGGS I think so 10:50
timotimo OK
FROGGS errm, we could also allow trait 'returns' on methods without much fuzz I guess
err attributes
timotimo all right 10:51
atroxaper timotimo: Mouq works on Pod::Walker and Pod::To::HTML as I understand. 10:59
timotimo OK 11:00
raiph wrote that you're working on the walker, that's probably just read from the wrong row in the irclog or something?
atroxaper timotimo: yes, I think so. I'm working on 'another' walker for Pod. [Coke] proposed Pod::SAX name :) 11:02
timotimo ah! 11:03
thanks
atroxaper timotimo: ;)
timotimo wp.me/p4kqoE-35 11:13
lizmat timotimo: I actually reverted the method is cached 11:15
because it was unclear what semantics to be used for self
otherwise timotimo++ 11:17
FROGGS timotimo: perhaps you can state that rakudo@parrot is finally in a good shape again (due to jnthn and me), it failed 1800 spectests until recently 11:18
jnthn "jnthn has started working on making MoarVM’s bytecode specializer throw away guards" - it actually does this by now :) 11:19
FROGGS wow, how time flies :P 11:22
m: say DateTime:FormatMySQL("2014-07-09T13:24:00") # sport the error 11:24
camelia rakudo-moar 41574a: OUTPUT«(DateTime)␤»
FROGGS that's horrible 11:25
lizmat :++ ?
FROGGS sergot had that also (he found it already), here: github.com/sergot/openssl/blob/mas...SL.pm6#L43
lizmat: yeah
hard to spot 11:26
lizmat I think this is one more reason not to be silent about eating named params that we don't know what to do with
FROGGS good that this only can be caused by our scoped subs
lizmat: +1
at least a type object should not eat them 11:27
lizmat hmmm.... isn't it the say that eats them?
FROGGS m: Int:blarg(1)
camelia ( no output )
FROGGS I dunno 11:28
m: sub foo(*@p, *%h) { say %h }; foo Int:blarg(1) 11:29
camelia rakudo-moar 41574a: OUTPUT«().hash␤»
FROGGS so the type gets it 11:30
FROGGS m: sub foo(*@p, *%h) { say @p }; foo Int:blarg(1) 11:30
camelia rakudo-moar 41574a: OUTPUT«(Int)␤»
FROGGS yeah
Ven gist.github.com/Nami-Doc/f45190f52fcbbb183fd6 < C++ is the next Perl 6, y'know 11:31
FROGGS Ven: :P 11:31
Ven (text macros :'(.) 11:32
lizmat m: class A { has $.a = "a"; method b { "aaa".subst(/$!a/,"b") }}; say A.new.a; say A.new.b # why isn't the .subst working ? 11:33
camelia rakudo-moar 41574a: OUTPUT«a␤aaa␤»
lizmat m: class A { has $.a = "a"; method b { my $x = $!a; "aaa".subst(/$x/,"b") }}; say A.new.b # putting it into a lexical first works 11:34
camelia rakudo-moar 41574a: OUTPUT«baa␤»
lizmat rakudobug?
lizmat FROGGS, jnthn: ^^^ 11:35
jnthn m: /$!foo/ 11:36
camelia rakudo-moar 41574a: OUTPUT«===SORRY!=== Error while compiling /tmp/GrGGxT5ir_␤Variable $!foo used where no 'self' is available␤at /tmp/GrGGxT5ir_:1␤------> /$!foo⏏/␤»
FROGGS m: class A { has $.a = "a"; method b { "aaa".subst(/"$!a"/,"b") }}; say A.new.a; say A.new.b
camelia rakudo-moar 41574a: OUTPUT«a␤use of uninitialized value of type Any in string context␤baaa␤»
FROGGS that seems to be the runtime lexpad problem thingy masak++ had described in his blög 11:37
jnthn Um
Ven class variables are in lexpads ?
jnthn Wait...a regex is method-ish, and has its own self...
FROGGS eww 11:37
m: class A { has $.a = "a"; method b { "aaa".subst($!a,"b") }}; say A.new.a; say A.new.b 11:38
lizmat aha... the plot thickens... rakudobug it ?
camelia rakudo-moar 41574a: OUTPUT«a␤baa␤»
FROGGS yeah
jnthn: is right
jnthn lizmat: Um, at this point all we have is "it looks odd" rather than "it should do X"
FROGGS m: class A { has $.a = "a"; method b { "aaa".subst(/{say self}/,"b") }}; say A.new.a; say A.new.b
camelia rakudo-moar 41574a: OUTPUT«a␤A.new(a => "a")␤baaa␤» 11:39
FROGGS I have no idea
m: class A { has $.a = "a"; method b { "aaa".subst(/"{say self}"/,"b") }}; say A.new.a; say A.new.b
camelia rakudo-moar 41574a: OUTPUT«a␤A.new(a => "a")␤A.new(a => "a")␤A.new(a => "a")␤A.new(a => "a")␤aaa␤»
jnthn m: class A { has $.a = "a"; method b { "aaa".subst(/:my $ = say $!a; ./, b') } }; A.new.b 11:40
camelia rakudo-moar 41574a: OUTPUT«===SORRY!=== Error while compiling /tmp/TCkwyckpg_␤Unable to parse expression in argument list; couldn't find final ')' ␤at /tmp/TCkwyckpg_:1␤------> b { "aaa".subst(/:my $ = say $!a; ./, b⏏') } }; A.new.b␤ …»
jnthn m: class A { has $.a = "a"; method b { "aaa".subst(/:my $ = say $!a; ./, 'b') } }; A.new.b
camelia rakudo-moar 41574a: OUTPUT«(Any)␤»
lizmat m: say "aaa".subst(/a$/,"b") # the reason I ran into this
camelia rakudo-moar 41574a: OUTPUT«aab␤»
jnthn m: class A { has $.a = "a"; method b { "aaa".subst(/:my $ = say self.WHICH; ./, 'b') } }; A.new.b
camelia rakudo-moar 41574a: OUTPUT«Cursor|139834212483800␤»
jnthn m: class A { has $.a = "a"; method b { "aaa".subst(/:my $ = say self.WHICH, $!a; ./, 'b') } }; A.new.b 11:42
camelia rakudo-moar 41574a: OUTPUT«Cursor|139900812459976(Any)␤»
jnthn m: class A { has $.a = "a"; method b { "aaa".subst(/:my $ = say self.WHICH, $!pos; ./, 'b') } }; A.new.b
camelia rakudo-moar 41574a: OUTPUT«===SORRY!=== Error while compiling /tmp/DBWEyB7Zo2␤Attribute $!pos not declared in class A␤at /tmp/DBWEyB7Zo2:1␤------> $ = say self.WHICH, $!pos; ./, 'b') } }⏏; A.new.b␤ expecting any of:␤ postfi…»
jnthn m: class A { has $!dummy; has $.a = "a"; method b { "aaa".subst(/:my $ = say self.WHICH, $!a; ./, 'b') } }; A.new.b 11:42
camelia rakudo-moar 41574a: OUTPUT«Cursor|140307760568368Cursor|140307760671904No such method 'gist' for invocant of type 'ParseShared'␤ in sub say at src/gen/m-CORE.setting:13805␤ in method match at src/gen/m-CORE.setting:6280␤ in method subst at src/gen/m-CORE.setting:6355␤ in…»
jnthn Wow.
Yes, that's quite a mis-compile. 11:43
I know what it's doing.
jnthn I don't know we can make it DWLM though... 11:43
Because self in a /.../ thing really is Cursor
FROGGS L is for lizmat? :o) 11:44
jnthn Yes.
FROGGS true... and in a code somebody might really want the Cursor
jnthn Right
lizmat ok
jnthn Well, it's clearer with tokens and so forth.
All the same, we shouldn't compile it to stuff that looks up a random attribute on the wrong object. :)
lizmat I guess it should at least complain about it being an attribute that doesn't exist on the Regex ? 11:45
jnthn lizmat: Yeah.
lizmat so rakudobug it ?
jnthn Should just not compile
Yes, now we know the expected behavior, it's a resolvable ticket :) 11:46
So go for it :)
lizmat m: class A { has $.a = "a"; method b { "aaa".subst(/$.a/,"b") }}; say A.new.b # using the $.a form is much clearer 11:49
camelia rakudo-moar 41574a: OUTPUT«No such method 'a' for invocant of type 'Cursor'␤ in method match at src/gen/m-CORE.setting:6280␤ in method subst at src/gen/m-CORE.setting:6355␤ in method subst at src/gen/m-CORE.setting:3713␤ in method b at /tmp/NMYRHZsulC:1␤ in block at …»
hoelzro morning #perl6
lizmat hoelzro o/
anyway: #122253
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=122253
lizmat still it feels wrong: I mean, you can interpolate attributes in strings, and those are Str objects 11:51
(yes, I know it works differently underneath, but from a language point of view it feels weird) 11:52
I guess it is just another way of finding out that regexen are code, and not strings
hoelzro I've been working on improving declarator docs, so I've been doing some digging around in src/core/traits.pm. It made me wonder: why are docs implemented by applying an anonymous role against the object? 11:54
Not trying to be critical, just curious =)
also I want to know if I should preserve that or if I can change it if I feel I have a better solution 11:55
lizmat hoelzro: I see what you mean: especially since the mixing roles for Routine and Mu are the same ? 12:01
hoelzro right, that's part of it
the other part is with what I'm working on, where a docee can have either leading or trailing docs, or both
also, a docee can have *multiple* leading/trailing docs, which should be concatenated 12:02
timotimo jnthn: does throwing away guards cause great improvements yet? :)
lizmat well, git blame points to me for the Routine version, but I'm pretty sure that I didn't think up that :-)
seems like tadzik and jnthn are the other suspects for this code 12:03
lizmat heolzro: I have no particular opinion: if you think you can make it better, I would say: go for it 12:04
hoelzro rather :-) ^^^
jnthn timotimo: It was another meassurable bit off a benchmark I tried...
timotimo \o/
hoelzro lizmat: well, I'll certainly try =) 12:04
rGeoffrey The OSCON lightning talks are going to be with the State of the Onion on Wednesday night. If you will be there, do you want to speak about something? Any chance someone here is in a position to offer up the State of Perl6 (from a more hands on view than Larry's)? 12:18
lizmat well, I'll be at the OSCON, and willing to give a lightning talk 12:20
but to give a handson State of Perl6 ... wow, I would have to think about that (a lot) 12:21
rGeoffrey lizmat, thanks. If you want to focus a bit, remember what Larry spoke of at YAPC. So some updates on where the project is from a "can I use it yet" point of view would be good. And I expect it will be hard to hold woolfy back from giving one. 12:29
lizmat jnthn: is it possible to obtain the original extension from a precompiled module?
lizmat fwiw, woolfy thinks lightning talks at OSCON should be about Perl, not about marketing or finding jobs 12:30
lizmat jnthn: in other words: if I load a precompiled module, can I find out the original path of the module? 12:31
rGeoffrey I have to work with what I have. Last year there was only 3 days from when OSCON said we would to the lightning talks and them happening. This year they gave me 3 weeks notice. Some year they will actually accept them on time and I will have 3 months to twist arms. 12:32
dalek ast/S26-WHY: adf0914 | (Rob Hoelz)++ | S26-documentation/why-following.t:
Fix why-following attribute comment test
12:38
dalek kudo/nom: 9044339 | (Elizabeth Mattijsen)++ | src/core/CompUnit.pm:
Add crappy CompUnit.compile

And some assorted support methods
12:38
woolfy I really would like to see TimToady or jnthn give a talk about the state of Perl 6. But Larry is already doing the state of Perl in general... And I am afraid jnthn has other plans. 12:42
woolfy lizmat would be a good choice too, but she is hesitant, since she thinks she does not know enough... :-) 12:43
(hiding now)
lizmat wonders where woolfy went
woolfy :-) 12:44
nwc10 have you checked behind the sofa?
woolfy o0O(sitting next to lizmat, in plain sight, so she does not see me)... 12:45
lizmat looks under the desk
rGeoffrey There are two weeks to the big event, and 209 people 'reading' this. It may take a whole village, but I am sure enough words can be put onto someone's slides, even if the speaker thinks she does not know enough.
woolfy Ehm, I am afraid my 200x "Perl 6 is awesome and can be used already for many things" would not help much. 12:46
lizmat signal(SIGINT).tap( {die} ); { LEAVE "say left"; END say "ENDed"; 1 while 1 } # press Ctrl-C to exit 12:48
will say "ENDed", but not "left"
dalek kudo-star-daily: 8b178b8 | coke++ | log/ (14 files):
today (automated commit)
lizmat jnthn: I would have thought it would also need to say "left"., or am I wong? 12:49
signal(SIGINT).tap( {die} ); { LEAVE say "left"; END say "ENDed"; 1 while 1 } # fixed "" oops 12:50
FROGGS :o) 12:51
lizmat still not working though :-( 12:51
lelf Is Str.graphs not implemented anywhere or is it no longer here? 12:52
[Coke] r: say "barf".graphs 12:53
camelia rakudo-jvm 9a8470: OUTPUT«(timeout)»
..rakudo-{parrot,moar} 9a8470: OUTPUT«No such method 'graphs' for invocant of type 'Str'␤ in block at /tmp/tmpfile:1␤␤»
[Coke] can't really tell between removed and NYI, but I think NYI. 12:54
FROGGS lelf: NYI 12:54
since we do not yet grapheme level strings 12:55
have*
jnthn lizmat: I can't think of a way to do that off hand. 12:56
lizmat: Unless UNIT already gets a $?FILE installed 12:57
lizmat: And making it do so is probably the right solution 12:58
m: say $?FILE
camelia rakudo-moar 9a8470: OUTPUT«/tmp/GdqDYdE0nl␤»
jnthn m: say UNIT::.keys
camelia rakudo-moar 9a8470: OUTPUT«$! $/ $_ GLOBALish EXPORT $?PACKAGE ::?PACKAGE $=pod !UNIT_MARKER␤»
jnthn Hm, wonder where $?FILE comes from :)
dalek ast/S26-WHY: 934073d | (Rob Hoelz)++ | S26-TODO:
Document more edge cases for S26
12:59
jnthn lizmat: Anyway, does that give you enough hints how to make it available? 13:00
sergot timotimo++ # new p6weekly post 13:07
[Coke] m: say EVAL("'møp'".encode('UTF-8')) 13:16
camelia rakudo-moar 9a8470: OUTPUT«Cannot call 'EVAL'; none of these signatures match:␤:(Str $code, Any :lang($lang) = { ... }, PseudoStash :context($context))␤ in block at /tmp/BnX2LIfssT:1␤␤»
[Coke] finds that spec where EVAL is defined as taking a Str|Buf. Ah well. 13:18
lizmat [Coke]: LHF ? 13:19
[Coke] maybe? " If $code is of type Buf, the same decoding techniques are applied as a compiler for $lang would usually do to input files."
That seems like the tricky bit. 13:20
jnthn [Coke]: Well, we try to treat them as utf-8, I think... :) 13:20
[Coke] test is in S29-context/eval.t if that's LHF for ya. 13:21
lizmat m: say EVAL("'møp'".encode('UTF-8').Str) # could be as simple as this ? 13:22
camelia rakudo-moar 9a8470: OUTPUT«møp␤»
[Coke] oh, even easier, it's defined as a multi sub (spec says it's a macro) 13:23
can we remove 'eval' now, also? it's been a while.
timotimo sergot++ # gsoc work :) 13:25
[Coke] -> meetings 13:26
atroxaper If i have a grammar match object and $match<token-name><part-name> is optional (with ?) then <part-name> will be defined in any way. How can i recognize that <part-name> has data? Just check start and end indexes? 13:40
timotimo isn't it supposed to be nil? 13:41
raiph timotimo: I'm pretty sure s/nativecast/nativecallcast/ 13:41
atroxaper timotimo: no. it's defined. 13:41
timotimo raiph: it's a sub called "nativecast" 13:42
raiph timotimo: k. i got the impression FROGGS renamed it 13:43
jnthn In Rakudo's grammer, we have: 13:44
token infix:sym<(|)> { <!before <sym> <infixish> > <sym> <O('%junctive_or')> }
This is what is thwarting (|)= from working.
Does anybody know why we have taht !before in there?
atroxaper Apocalypse? 13:49
lizmat no, just a net split 13:50
lizmat oddly enough, none of this is visible on irclog 13:54
raiph timotimo++ # p6weekly (only just realized the link wasn't to a draft) 13:56
timotimo :) 13:57
atroxaper lizmat: indeed 13:59
lizmat moritz: you still here ?
moritz lizmat: yes-ish 14:01
lizmat moritz: is it correct that irclog.perlgeek.de is not logging any of this ? 14:06
jnthn guesses it's on the other side of a netsplit... 14:07
moritz lizmat: well, the only thing I could do is kill the bot and restart it, and hope that it ends up on "our" side of the netsplit 14:08
(CAP: IRC favors A over C) 14:09
timotimo "new ticket: remove eval from Will Coleda" reads very weird :)
moritz :-) 14:10
jnthn haha :) 14:11
FROGGS moritz: the logger does not log 14:11
moritz FROGGS: see above :-) 14:11
FROGGS moritz: confirmed :o) 14:12
[Coke] m: say EVAL(88); 14:13
camelia rakudo-moar 904433: OUTPUT«===SORRY!=== Error while compiling /tmp/liQsKGEJ5W␤Calling 'EVAL' will never work with argument types (int)␤ Expected any of: :(Str $code, Any :lang($lang) = { ... }, PseudoStash :context($context))␤at /tmp/liQsKGEJ5W:1␤---…»
[Coke] Also in a spectest - Should EVAL be spec'd to take a Cool in that case?
lizmat maybe we need an EVAL(Any x) { EVAL x.Str } ? 14:14
[Coke] Isn't that what Cool is for?
so, s/Any/Cool/ in your example.
lizmat does Cool include Buffer ?
[Coke] r: say Str ~~ Cool; 14:15
FROGGS m: say Buf ~~ Cool
camelia rakudo-jvm 904433: OUTPUT«(timeout)» 14:16
..rakudo-{parrot,moar} 904433: OUTPUT«True␤»
rakudo-moar 904433: OUTPUT«True␤»
[Coke] I suspect Buf shouldn't be in Cool these days.
moritz ilbot3 is back from the dead. 14:17
[Coke] the EVAL(88) test was added by FROGGS++ 5 months ago. 14:18
FROGGS O.o 14:19
are you sure?
[Coke] no. :) 14:22
5bab36fd (Tobias Leich 2014-01-01 22:37:33 +0100 69) is EVAL(88), 88,
ah, no, just eval/EVAL 14:23
FROGGS see :o) 14:24
masak_grr there should be a version of git-blame which asks "who *added* this code" rather than "who last *changed* this code"
also, grr!
lizmat [Coke]: so are you saying we should remove eval() ?
is 6 months enough for a deprecation cycle ?
dalek kudo/nom: b764567 | jnthn++ | src/Perl6/Grammar.nqp:
Restructure infixish to be more in line with STD.

This just aids parsing; the now-enabled extra cases will need some AST generation improvements too.
14:25
masak_grr m: sub foo(&mystery) { &mystery q[say "OH HAI"] }; foo(&EVAL) 14:26
camelia rakudo-moar 904433: OUTPUT«===SORRY!=== Error while compiling /tmp/juEAcZku3L␤Two terms in a row␤at /tmp/juEAcZku3L:1␤------> sub foo(&mystery) { &mystery ⏏q[say "OH HAI"] }; foo(&EVAL)␤ expecting any of:␤ postfix␤ …»
masak_grr m: sub foo(&mystery) { &mystery(q[say "OH HAI"]) }; foo(&EVAL)
camelia rakudo-moar 904433: OUTPUT«OH HAI␤» 14:27
[Coke] lizmat: (eval) yes, we need to remove it eventually. Doesn't have to be today, but needs to happen before 6.0
original "eval numbers should work" was added Tue Jul 21 17:33:37 2009 by kyle
[Coke] Given current spec, I wouldn't expect it to work. 14:28
masak_grr m: sub foo(&mystery) { my $x = 42; &mystery(q[$x = "escape analysis, pfah!"]); say $x }; foo(&EVAL) 14:29
camelia rakudo-moar 904433: OUTPUT«escape analysis, pfah!␤»
carlin github.com/perl6/roast/commit/62f3b9305ece is where that test was first added 14:30
[Coke] carlin: yes, that one. 14:31
carlin github.com/perl6/roast/commit/ea4d...a30f5374R1
that's where it was changed
masak_grr I just read shop.oreilly.com/product/9780596101992.do a bit more carefully, and it says "eval() in JavaScript should have been a keyword -- that would have solved so many static analysis headaches" 14:32
[Coke] masak_grr: any thoughts on EVAL being a macro as per spec? (right now it's a multi)
masak_grr [Coke]: EVAL being a macro sounds odd -- what compile-time effects is it trying to have? EVAL has *runtime* effects. 14:34
[Coke] Iunno. Spec says macro, 'sall. 14:35
moritz masak_grr: it has weird scoping
jnthn I think it's only macro in so far as the compiler is specially aware of it
Already the optimizer looks for the name EVAL to show up
masak_grr moritz: so do attributes, and they're not macros.
jnthn And if it doesn't, goes optimizing.
masak_grr jnthn: did you see the evaluation I did above? any opinions on that? 14:36
jnthn I think passing EVAL around is erroneous.
Unless we make it a macro 14:37
masak_grr I wonder if EVAL shouldn't be a statement prefix, then. 14:37
jnthn In which case it *can* work, 'cus the macro can replace it with some primitive that is not first class, but still optimizer recognizable. :)
But oh, it'd not know it was a macro
So back to square one :)
masak_grr yep.
jnthn I'll stick with "erroneous, on your own head be it" :) 14:38
masak_grr I can accept/agree with that. 14:38
I just wonder if instead of the useless capitalization, we should actually limit the power of EVAL somehow. 14:39
for example by making it a keyword.
then you *can't* assign it.
jnthn True :)
jnthn So far as escape analysis goes, anything in a lexical must be considered as escaping in absence of proof otherwise. 14:40
masak_grr well, my point was that anything might go on inside of the EVAL, and we don't even know it's an EVAL. 14:41
I'd much rather the language have a "nope" attitude to bad stuff, than an "on your head be it" attitude.
the *only* use case I can think of for assigning/rebinding &EVAL to other things, is to mess up static analysis. 14:42
FROGGS timotimo: what happened to that? irclog.perlgeek.de/moarvm/2014-05-11#i_8709334 14:47
I get that right now :o(
timotimo that's with my spesh dump sorting thingie? 14:48
FROGGS eww, shutting down my windows vm helps >.< 14:49
timotimo yeesh :\ 14:50
FROGGS this virtualbox tends to make trouble on my box... :/
timotimo i'm afraid the current state of the spesh-diff script may not reflect the actual contents of the spesh output any more
FROGGS timotimo: I'm not using that script, I'm just using shell() 14:52
timotimo oh, ok
atroxaper I have a difficult question... If a have 'my $a = 1; sub b() {say $a;}; $a = 5; b()' than i will have '5'. What should i do to have '1'? I mean how can i customize a sub while its definition? 15:03
I know that in JavaScript I will get '1' in that case. 15:04
nwc10 I see "moar" in the filename of the failing thing t/spec/S06-advanced/wrap.rakudo.moar
masak_grr atroxaper: first off, no you won't. 15:05
nwc10 is there an analagous JVM and Parrot failing thing?
masak_grr atroxaper: > var a = 1; function b() { console.log(a) }; a = 5; b() 15:06
atroxaper: 5
masak_grr atroxaper: secondly, the way 5 comes out is pretty sane and the semantics you suggest doesn't make much sense at all. 15:06
atroxaper masak_grr: ok. It's my mistake :)
timotimo m: my $a = 5; sub b($a = $a) { say $a }; $a = 1; b(); 15:07
camelia rakudo-moar 904433: OUTPUT«Type check failed in binding $a; expected 'Any' but got 'Mu'␤ in sub b at /tmp/zuz521jt7_:1␤ in block at /tmp/zuz521jt7_:1␤␤»
timotimo huh, what?
m: my $a = 5; sub b($ia = $a) { say $ia }; $a = 1; b();
camelia rakudo-moar 904433: OUTPUT«1␤»
timotimo hm. 15:07
masak_grr Perl 6 isn't Python. 15:08
timotimo oh, you caught me! :)
masak_grr that is, that default param isn't evaluated once at function definition time.
atroxaper masak_grr: my example is bad i know. I want to pass a sub as argument to another sub. And i'm not sure will it works or not)
masak_grr atroxaper: oh, that bit works.
atroxaper: but you didn't do that :0
m: sub twice(&action) { &action() for ^2 }; twice( sub { say "OH HAI" } ) 15:09
camelia rakudo-moar 904433: OUTPUT«OH HAI␤OH HAI␤»
atroxaper masak_grr: but what if "OH HAI' is some $var 15:09
masak_grr atroxaper: talk about an XY problem! you want to pass a sub to another sub, and you end up asking about crazy lexical behaviors?! was there a missing step in the middle that you omitted? :P 15:10
atroxaper: then that var will be evaluated in the context of the passed sub.
the anonymous one, in this case.
m: my $greeting = "mblhf!"; sub twice(&action) { &action() for ^2 }; $greeting = "yo"; twice( sub { say $greeting } ) 15:11
camelia rakudo-moar 904433: OUTPUT«yo␤yo␤»
masak_grr m: my $greeting = "mblhf!"; sub twice(&action) { &action() for ^2 }; $greeting = "yo"; twice( sub { say $greeting; $greeting = "you rock, bot!" } )
camelia rakudo-moar 904433: OUTPUT«yo␤you rock, bot!␤»
[Coke] m: my $grt; say $grt; $grt = "hi"; 15:12
camelia rakudo-moar 904433: OUTPUT«(Any)␤»
[Coke] so why does that say Any, but your two examples give the value that was set after the variable was used? 15:13
er, your -first- example.
masak_grr which example? could you re-run the one you mean?
[Coke] ... nevermind. the set to "yo" happens outside the def of twice, so it's all fine. would be less confusing with newlines. :) 15:14
atroxaper masak_grr: ok. Thank you. I'll try to review my code :)
masak stopped being _grr :)
atroxaper: no prob. lexical scoping and closures fascinate me. 15:15
I find them very beautiful.
dalek ast: fa5ded7 | coke++ | S29-context/eval.t:
Refer to ticket.
15:16
atroxaper masak: yes. If i'm not mistaken you wrote a post about that recently :)
dalek kudo/nom: 57d8f39 | jnthn++ | src/Perl6/Actions.nqp:
Re-arrange infixish actions to support [[*]]= etc.
15:17
masak atroxaper: maybe strangelyconsistent.org/blog/lexpad...eed-fixups ?
atroxaper masak: yes! 15:18
masak atroxaper: I also wrote about closures as far back as 2008: strangelyconsistent.org/blog/ill-call-you-back
[Coke] j: eval "1"
camelia rakudo-jvm 904433: OUTPUT«Saw 1 call to deprecated code during execution.␤================================================================================␤Sub eval (from GLOBAL) called at:␤ /tmp/elsrZKJenB, line 1␤Please use 'EVAL' instead.␤-------------------------------…»
jnthn masak: Aww, you didn't make it "call be back maybe"? :P
masak jnthn: too early? 2008? 15:19
jnthn m: my @foo = [>>+<<] ([1..3],[1..3],[1..3]); say @foo
camelia rakudo-moar 904433: OUTPUT«Type check failed in binding op; expected 'Any' but got 'Mu'␤ in sub METAOP_REDUCE_LEFT at src/gen/m-CORE.setting:17409␤ in block at /tmp/DK_JtE0jH_:1␤␤»
jnthn Neato, I accidentally fixed that too. :)
[Coke] ^^ that might mean it's safe to remove these skips: #?rakudo.jvm skip 'tracebacks in deprecations'
dalek ast: a47a750 | jnthn++ | S03-metaops/reduce.t:
Untodo a now-passing [>>+<<] test for Rakudo.
15:20
raiph Does host07.perl6.com:8080/report use Rakudo / NQP / MoarVM HEADs ? 15:24
dalek ast: 11b5f96 | jnthn++ | S03-operators/assign.t:
Add tests for [+]=, [[+]]=.
15:26
jnthn m: my $s = set(1,2); $s (|)= set(1, 3); say $s; 15:33
camelia rakudo-moar 904433: OUTPUT«===SORRY!=== Error while compiling /tmp/UtwRbEaxBI␤Two terms in a row␤at /tmp/UtwRbEaxBI:1␤------> my $s = set(1,2); $s ⏏(|)= set(1, 3); say $s;␤ expecting any of:␤ postfix␤ infix stopper…»
brrt nqp revision is wrong 15:35
jnthn ?
brrt that was cryptic, i'm sorry, i'll explain; i can't build nqp master on moar-jit, because moar-jit misses nativecallcast 15:36
but configure.pl thinks moarvm is recent enough
jnthn Uh, yeah
That's the trouble with the incrementing number :)
It's merging...it's merging time!
brrt oh, ok, this is expected :-)
jnthn > my $s = set(1,2); $s (|)= set(1, 3); say $s; 15:37
set(1, 2, 3)
Well, that works if I just delete stuff... :)
Now let's spectest and see if said stuff had a raisan d'etre... 15:38
Uh, raison...but the mental image was pretty good as I had it... :)
rurban rakudo p+m spectests: gist.github.com/rurban/d05e77ae0369a53861d6 15:39
FROGGS rurban: the passed todo's are due to RELEASE_6_5_0-12-gb1b4b87? 15:44
masak by the way, this is what it was like programming on Rakudo in 2008: strangelyconsistent.org/blog/rakudo...ugly-weird 15:45
FROGGS rurban: that seems to be a regression perhaps: gist.github.com/rurban/d05e77ae036...e1-txt-L28
FROGGS rurban: at least when I compare to: github.com/coke/perl6-roast-data/b....out#L2905 15:45
masak smiles at his younger self rejoicing at the 'given' keyword but sorrowfully wishing he could do list assignment
you young'uns don't know how good you have it. 15:46
FROGGS A good deal of basic things that you as a Perl 5 user might expect to work, mostly do. This includes $_, my declarations, if/while/for, sub, scalars, arrays[...]
that sounds a bit like my posts about v5 :o)
masak: when I think about my first patches to rakudo/nqp it gets really funny :o) 15:47
FROGGS like that when you had a grammar and you matches something in an outer token, the inner tokens kept the captures :o) 15:47
stuff like that
masak oh ouch
FROGGS or that our scoped vars could not be initialized when you declare them 15:48
and, that was just about 1.5 years ago I think
dalek kudo/nom: 178c8e7 | jnthn++ | src/Perl6/Grammar.nqp:
Remove hack that kept (|)= & co from working.

It's not clear why these <!before ...>s were there; perhaps they were to work around a historical bug. Removing them causes no new spectest fails, and makes (|)=, (&)= and so forth work.
15:49
jnthn Anybody wants to volunteer to find the RT about this and mark it testneeded, or better, turn it into a test or two? :) 15:50
masak 15:51
er, I volunteer to the "find" part, because I'm good at that
jnthn Surely you can write two tests? :) 15:52
masak (and because I wrote 50% of the subject lines of open tickets in RT)
jnthn my $s = set(1,2); $s (|)= set(1, 3); # there, that's half of one ;) 15:52
masak I'll find the RT ticket for you, and then we'll see :) 15:53
knowing myself, I generally don't get as far as actually producing the tests.
it's not so much "I don't wanna" and more "these are the things I do well" 15:54
jnthn Aye, I guess you're still learning testing, given how much time you spend in TDD courses... ;) 15:55
masak :P
jnthn r: class C { my $.x = 42; }; C.x.say 15:57
camelia rakudo-{parrot,jvm} b76456: OUTPUT«42␤»
..rakudo-moar b76456: OUTPUT«(Any)␤»
masak jnthn: rt.perl.org/Ticket/Display.html?id=117103 15:59
masak marks it "testsneeded" 16:00
masak RT++ # in the end, I found it by searching for '(|)' in RT 16:02
timotimo jnthn: way cool! 16:03
colomon_ Has anyone heard more from TimToady? 16:23
dalek kudo/nom: 95f540d | jnthn++ | src/Perl6/Actions.nqp:
Fix class A { my $.x = 42 } scoping on MoarVM.
kudo/nom: 7b27642 | jnthn++ | src/Perl6/Actions.nqp:
Fix install_method to look at scope consistently.
timotimo oh, huh? 16:25
how was that broken?
dalek ast: 030b17a | jnthn++ | S12-attributes/class.t:
Add test for RT#122087.
16:28
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=122087
jnthn cd ..
tssk
carlin how many people actually run the full S32-temporal/local.t test? It looks like it might have been wrong for a while and few noticed it 16:33
because it unless your /etc/timezone is America/New_York most of the tests are skipped
eg. coke's autoroasting skips them 16:34
dalek kudo/nom: 31404a4 | (Elizabeth Mattijsen)++ | src/core/CompUnit.pm:
Default from is 'Perl6' nowadays
16:37
dalek ast: 89c59e3 | (Elizabeth Mattijsen)++ | S22-package-format/localfile/NanooNanoo.pm:
Create necessary source files while testing
16:47
ast: 16320f1 | (Elizabeth Mattijsen)++ | S (4 files):
Merge branch 'master' of github.com/perl6/roast
ast: 62446ba | (Elizabeth Mattijsen)++ | S22-package-format/local.t:
Some more CompUnit testing
dalek ast: 6429cf8 | (Elizabeth Mattijsen)++ | S06-advanced/wrap.t:
De-tab and get indenting right
17:15
[Coke] carlin: happy to take a mini patch for: github.com/coke/perl6-roast-data/b...rot.sh#L19 and friends to add env vars that are needed. 17:23
good catch.
dalek rl6-roast-data: d9915a5 | coke++ | / (6 files):
today (automated commit)
17:28
dalek ast: d9f950a | (Elizabeth Mattijsen)++ | S06-advanced/wrap.t:
Fudge tests for RT #122259
17:48
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=122259
carlin m: $*TZ / 60 / 60 17:57
camelia ( no output )
carlin m: say $*TZ / 60 / 60 17:58
camelia rakudo-moar 31404a: OUTPUT«0␤»
carlin m: say $*TZ
camelia rakudo-moar 31404a: OUTPUT«0␤»
carlin those tests in S32-temporal/local.t seem to rely on .local being able to convert to DST based on the date 17:59
carlin is that supposed to work? 18:00
dalek kudo/nom: 3bd00dd | (Elizabeth Mattijsen)++ | src/core/control.pm:
eval() is no more, long live EVAL()
18:01
flussence > say $*TZ / 60 / 60␤1
guess the p6eval server is in UTC.
carlin yeah 18:01
dalek kudo/nom: 95e3ca4 | (Elizabeth Mattijsen)++ | src/core/ (2 files):
Make EVAL() and .EVAL really Cool
18:22
carlin if I do `DateTime.new("2014-02-01T10:00:00").local` is it really supposed to know I was in DST in February and adjust the timezone accordingly? 18:23
dalek ast: 6e71b0b | (Elizabeth Mattijsen)++ | S (2 files):
Track disappearence of Cool.eval and eval()
18:24
kudo/nom: e9fad62 | (Elizabeth Mattijsen)++ | docs/ChangeLog:
Note that Cool.eval and eval() are now gone
18:26
vendethiel wow, that's a hell of a busy week ...
jnthn so progress... 18:27
timotimo vendethiel: hm? 18:28
hm. it occurs to me that i didn't mention anything ven did in my weekly; what did i miss? 18:29
vendethiel "<masak_grr> Perl 6 isn't Python." <- oh, I must've misread the channel name :-P 18:30
jnthn NO LOL 18:31
timotimo NO EULOL 18:33
masak NO PROJECT EULER 18:34
vendethiel timotimo: I started working on my beginner tutorial and on a learnXinYminutes. 18:35
(sadly, I got caught up by time, as last week was <IRL> in full caps, and I have med appointments for the whole week, but I'll try to get stuff done :).)
dalek ast: 4af01d7 | (Elizabeth Mattijsen)++ | S29-context/eval.t:
Unfudge now passing EVAL tests (and add .EVAL)
18:36
timotimo oke
looking forward to report on some nice stuff in the future :)
vendethiel I'll change the way I did the learnXinYminutes tho, because starting with the operators is ... hehe :P
timotimo well, perl is an operator-driven language or how did that quote go? 18:37
vendethiel It is. That's why I should try and not show it directly ... 18:40
FROGGS operator-rich is the right term I think
lizmat FROGGS: regarding 'perl6' and 'Perl6' 18:41
if I change the default language of EVAL to 'Perl6'
I get: No compiler available for language 'Perl6'
timotimo lizmat: aye, it needs a corresponding nqp::regcomp call somewhere
FROGGS yeah, rakudo/nqp use 'perl6' internally 18:42
lizmat having them differently, is asking for problems in the future, I would say
FROGGS true
lizmat so shall we try to standardize on 'perl6' or 'Perl6' ?
FROGGS I'd like to see Perl6
lizmat jnthn: do you have an opinion? ^^^ 18:43
FROGGS we talked about this when the JVM bindings were made
FROGGS and IIRC I "won" that time 18:44
(writing that language name correctly, that is)
because :from and friends are about a language, not about a compiler or interpreter
jnthn I think as far as regcomp goes it may be a bit of a hodge podge already 18:45
FROGGS and c or jvm feels odd
jnthn I'm pretty srue it's QAST not qast :)
lizmat ok, I'll try to get it changed to Perl6 then ? 18:46
jnthn doesn't feel strongly on it
I think let what you put in :from<...> drive it. 18:47
FROGGS exactly what I think, yes
vendethiel FROGGS: yeah, but I don't want the whole tutorial to be about nq, ff and friends :P
FROGGS vendethiel: yeah :o) 18:48
vendethiel
.oO( nq - "not quite" operator )
[Coke] lizmat++ 18:58
as long as it isn't Perl<nonbreakingspace>6
jnthn Uh, yes, don't do that. :) 18:59
vendethiel which reminds me ... isn't [>>+<<] a hyper²-operator ?
[Coke] so, my strategy of "flip randomly to a skipped test in roast" seems to make other people quite effective. :) 19:00
I call it the Cartman operator.
vendethiel should I explain operator categories early on ? (ie infix etc) 19:02
and right/left/non-associativity
FROGGS categories perhaps yes, associativity maybe not so 19:03
vendethiel well, it's still learnXinYminutes, so ... but yeah 19:05
dalek ast: 320794d | (Elizabeth Mattijsen)++ | S29-context/eval.t:
Add test for Buf.EVAL
19:13
dalek p: 346e6e9 | jnthn++ | src/vm/moar/QAST/QASTOperationsMAST.nqp:
Use a fresh register for decont'd callee.
19:17
ren1us in keeping with my unfortunate tradition of being truly useless other than breaking everything, quick operator question: 19:53
masak :) 19:54
FROGGS hehe
masak ren1us++ # breaking everything
vendethiel (recognizing breaking stuff is good)++
ren1us m: multi sub infix:<<|>>(Any $lhs, Any $rhs) { say $lhs; }; 5<|>2;
timotimo you cannot learn from nonfailure, can you?
camelia rakudo-moar e9fad6: OUTPUT«===SORRY!=== Error while compiling /tmp/qULQipLfXb␤Two terms in a row␤at /tmp/qULQipLfXb:1␤------> (Any $lhs, Any $rhs) { say $lhs; }; 5<|>⏏2;␤ expecting any of:␤ postfix␤ infix stopper␤…»
vendethiel well, breaking what's broken but we don't know it's (yet)
timotimo m: multi sub infix:['<|>'](Any $lhs, Any $rhs) { say $lhs }; 5 <|> 2;
camelia rakudo-moar e9fad6: OUTPUT«===SORRY!===␤Cannot find method 'ast'␤»
masak ren1us: if you don't do whitespace after the 5, it's not an infix, it's a postfix. 19:55
timotimo m: multi sub infix:<< <|> >>(Any $lhs, Any $rhs) { say $lhs }; 5 <|> 2;
camelia rakudo-moar e9fad6: OUTPUT«5␤»
timotimo i think infix:<<|>> still refers to only | 19:55
vendethiel yea
ren1us timotimo: yeah, that's what i was fighting with
vendethiel it's just << and >> (interpolating <>)
timotimo infix:<< ... >> doesn't interpolate actually
FROGGS m: multi sub infix:('<|>')(Any $lhs, Any $rhs) { say $lhs; }; 5<|>2;
camelia rakudo-moar e9fad6: OUTPUT«===SORRY!=== Error while compiling /tmp/tkwb_4wMbe␤Two terms in a row␤at /tmp/tkwb_4wMbe:1␤------> (Any $lhs, Any $rhs) { say $lhs; }; 5<|>⏏2;␤ expecting any of:␤ postfix␤ infix stopper␤…»
FROGGS m: multi sub infix:('<|>')(Any $lhs, Any $rhs) { say $lhs; }; 5 <|> 2; 19:56
camelia rakudo-moar e9fad6: OUTPUT«===SORRY!=== Error while compiling /tmp/LHjAbEZgbN␤Preceding context expects a term, but found infix | instead␤at /tmp/LHjAbEZgbN:1␤------> (Any $lhs, Any $rhs) { say $lhs; }; 5 <|⏏> 2;␤»
timotimo i'm not sure why infix:['...'] doesn't work at the moment
i *think* it used to work at some point
FROGGS m: multi sub infix:«<|>»(Any $lhs, Any $rhs) { say $lhs; }; 5 <|> 2; 19:56
camelia rakudo-moar e9fad6: OUTPUT«5␤»
vendethiel m: my %a = foo => 2; my $b = 'foo'; say %a<<$b>>;
camelia rakudo-moar e9fad6: OUTPUT«2␤»
vendethiel timotimo: ^ ?
oh, you mean infix:<< stuff here >> to declare an op. 19:57
timotimo vendethiel: that's a different << >> 19:57
:)
ren1us so there's just a whole pile of symbols that can be used to enclose the actual operator, and it doesn't really matter which pair i use as long as it's not the same as the symbol in the actual op? 19:58
timotimo well, the closer must'nt be part of the operator 19:59
xfix Well, there is infix['[\'><«»]'] for declaring insane operators.
Not that you will ever need it.
(seriously, why anyone would want ['><«»] operator?) 20:00
rn: sub infix:<perl 6 is best language ever, it allows defining new operators>($a, $b) { say "$a this works$b" }; "Well," perl 6 is best language ever, it allows defining new operators "..." 20:03
camelia rakudo-{parrot,jvm,moar} e9fad6, niecza v24-109-g48a8de3: OUTPUT«Well, this works...␤» 20:04
xfix rn: sub infix:<perl 6 is best language ever, it allows defining new operators>($a, $b) { say "$a this works$b" }; "Well," perl 6 is best language ever, it allows defining new operators "..."
camelia rakudo-{parrot,jvm,moar} e9fad6: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Two terms in a row␤at /tmp/tmpfile:1␤------> $b) { say "$a this works$b" }; "Well," ⏏perl 6 is best lang␤ expecting any of:…»
..niecza v24-109-g48a8de3: OUTPUT«===SORRY!===␤␤Confused at /tmp/tmpfile line 1:␤------> is works$b" }; "Well," perl 6 ⏏is best language ever, it ␤␤Parse failed␤␤»
xfix I'm almost sure it once worked.
Well, whatever.
Also, perlcabal.org is lagging...
Not anymore. 20:05
Well, it seems there are multiple tests running using 100% of CPU total. They are all stuck on t/01-file-find.t. 20:06
xfix gist.github.com/xfix/e39d7a8baf31f0ea45e5 20:07
Sure something went wrong.
ren1us huh. pasting in « and » has a tendency to break the moar repl, it seems. hooray for utf-8. 20:10
FROGGS :/ 20:11
ren1us whatever, i'm just using the repl for fiddling anyway. 20:12
FROGGS I never use it 20:14
vendethiel unicode-- # unicode hater ! 20:15
ren1us i like using it on the side as i write my actual code in another window, just because i often need to do some fiddling to get the syntax right
vendethiel unicode++ #it's cool, though
ren1us vendethiel: i like widescale unicode support as a concept, but i'd like it more if it didn't imply the need to memorize character codes 20:16
psch evening #perl6 o/ 20:23
perigrin didn't realize that #perl6 was uneven ... should have though ... knowing how many people in here are odd. 20:24
masak ahoj psch
psch successfully un-broke the "missing OUTER on jvm"-thingy in the debugger just now o/
now for "doing it properly"... :)
lue ren1us: it doesn't, there are codepoint-less input methods. I use compose keys, for example :) 20:25
yoleaux 08:04Z <atroxaper> lue: hello, my not finished yet solution is github.com/atroxaper/Pod-SAX. You can see Pod::SAX::Reformer class and its test. Main feature that my Callees makes a calls for start of Pod object, end of Pod object, and 'in' Pod object that trigger if .content has not Pod object like String. And for each Pod type we can make many callbacks for many cases. Like only for L<> but not for C<>, I think it is more …
flexible and maintenanc[fu
psch hey masak :)
FROGGS psch++ # \o/ 20:26
ren1us lue: ah, that works too. 20:27
lue « is just <Multi> + < + < , and ☃ is just <Multi> + & + s + n + o + w, and... :) 20:28
(there's also the OSX-y solution of setting up third/fourth/etc. levels for your keyboard) 20:29
ren1us m: multi sub circumfix:<? ?>($in) { say $in; }; ?5?; # is this just breaking because there are prefix/postfix operators taking higher precedence? also lue++ 20:31
camelia rakudo-moar e9fad6: OUTPUT«===SORRY!=== Error while compiling /tmp/tRLsq8dntm␤Two terms in a row␤at /tmp/tRLsq8dntm:1␤------> ub circumfix:<? ?>($in) { say $in; }; ?5⏏?; # is this just breaking because there␤ expecting any of:␤ …»
lue m: multi sub circumfix:<☃ ☄>($in) { say $in; }; ☃5☄;
camelia rakudo-moar e9fad6: OUTPUT«5␤»
lue ren1us: seems like it. 20:32
ren1us i almost feel like circumfix should have the highest precedence, since it's the least likely to be triggered and most likely to trigger false positives on other prefix or postfix captures 20:34
jnthn Yes, termish is prefix* term postfix*, roughly.
And a circumfix is a kind of term
It's not that they compete, it's that the circumfix doesn't even get a chance.
Mouq p: say await start { 1 + 1 } 21:40
camelia rakudo-parrot e9fad6: OUTPUT«===SORRY!=== Error while compiling /tmp/uSyZHa_ZZu␤Undeclared routines:␤ await used at line 1␤ start used at line 1. Did you mean 'spurt', 'sqrt', 'sort'?␤␤»
PerlJam q!
Mouq I kinda wish they were defined syncronously for Parrot, so you could write code for all three compilers 21:41
rje_ perl6: say "hello, world!" 21:49
camelia rakudo-{parrot,jvm,moar} e9fad6, niecza v24-109-g48a8de3: OUTPUT«hello, world!␤»
[Coke] fixed feather. 22:46
looks like I had the rakudo-star-daily process still running there, and the last few weeks it was hanging on that test file. probably been getting slower for a while. killed the cronjob, killed all procs running. 22:50
dalek kudo/lex2loc2: f4fc6d4 | jnthn++ | src/vm/moar/Perl6/Ops.nqp:
Fix a .DEFINITE code-gen bug.

Should not blindly re-use registers that may belong to locals.
22:52
lizmat Mouq: well volunteered :-) 22:58
Mouq lizmat: Would that be acceptable behavior though? 23:02
p: Channel.new
camelia rakudo-parrot e9fad6: OUTPUT«===SORRY!=== Error while compiling /tmp/M8sdlq9p_V␤Undeclared name:␤ Channel used at line 1␤␤»
Mouq m: Channel.new
camelia ( no output )
lizmat maybe the CurrentThreadScheduler could provide some inspiration? 23:03
well, that was disappointing :-( 23:11
lizmat 4-2 :-( 23:11
jnthn Yeah :/
lizmat on the brighter side: more time for hacking now :-) 23:12
jnthn yay :) 23:17
The lex2loc branch build agaisnt latest Moar master seems clean to me. Testing welcome. 23:19
jnthn Will bump revisions and merge it tomorrow evening, if all looks good. 23:19
lizmat looks at s/perl6/Perl6/ and decides to sleep on it 23:20
gnight, #perl6! 23:21
Mouq 'night lizmat!
jnthn sleeps also 23:22
'night all
dalek ast: af01013 | coke++ | integration/advent2013-day14.t:
this test is marked as requiring concurrency

  ... so parrot won't even try to run it now.
23:25
kudo/nom: 4cad54f | coke++ | t/spectest.data:
Mark this test as requiring concurrency
woolfy1 lizmat does not fully realise that the Dutch team still has to play one more game, against Brazil, this Saturday. And if the Dutch lose that, they're real losers. Grr. 23:28
bedtime
Mouq 'night jnthn, woolfy 23:32
dalek ast: 58c8aea | coke++ | S17-channel/winner.t:
this test is marked as requiring concurrency

  ... so parrot won't even try to run it now.
23:33
cognominal woolfy1: the real loosers are the brazilians citizens. That circus costs a lot of money and any money made goes in already deep pockets. 23:37
[Coke] we have a uniname that takes an int, but it's not spec'd. 23:48
also: uninames is NYI, and that looks like LHF.
dalek ast: 3c9bf20 | coke++ | S (2 files):
use standard "NYI" text
23:52
[Coke] down to 906 rakudo fudges that aren't ticketed or marked NYI 23:53
.tell lizmat is S03-metaops/hyper.t:659:#?rakudo skip 'EVAL(Buf)' easily fixable? (I tried unskipping it, no love)
yoleaux [Coke]: I'll pass your message to lizmat.
Mouq [Coke]++ 23:55
retupmoca m: my $s = Supply.new; my $m = $s.grep({ $_ == 1}).map({ say $_; (x => $_).hash }); $m.tap({say 'a'}); $m.tap({say 'b'}); $s.more(1) 23:58
camelia rakudo-moar e9fad6: OUTPUT«1␤a␤b␤1␤a␤b␤1␤a␤b␤1␤a␤b␤»
retupmoca ^ if that is correct, then I really don't understand supplies