»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, std:, or /msg camelia p6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by masak on 12 May 2015.
timotimo possibly it's trying to prevent "<unit-outer>" from appearing even though the exception comes from some inside-ish place? 00:01
actually, the --ll-exception output has <unit-outer> in the middle somewhere
grandtehftjiujit hello, I'd like to contribute to the perl6 docs on GitHub, however, when trying to build from the instructions I get an error when running htmlify.p6 02:01
grandtehftjiujit for the third build in a row I get "dot command failed! (did you isntall Graphviz?) 02:02
raydiak grandtehftjiujit: do you have graphviz installed on your system? it is used to render the type diagrams 02:05
grandtehftjiujit no, I was confused since the instructions hadn't mentioned it 02:06
that, of course, worked though :)
raydiak grandtehftjiujit: yeah I did the same thing the first time I contributed to the docs, and accidentally uploaded a version with no images :)
grandtehftjiujit I'm not sure how / if i'll be able to contribute... but I've been looking for a jumping in point 02:07
the right brew of things at the right time i suppose 02:08
raydiak yep, whatever suits you...btw, Welcome!
raydiak writing and maintaining a module or two can be an easy way to start also 02:10
grandtehftjiujit thanks, I'm not a very experienced programmer, but I do have a general exposure to html, css, python, and sheel, so maybe I can whip something up :) 02:16
*shell
raydiak nice...never too late to learn more either; perl 6 is a lot of fun when you get the hang of it 02:17
not that I'm biased :) 02:18
raydiak usually you'd get much more vocal reception, but a good portion of our contributors are asleep atm, in Europe 02:20
grandtehftjiujit ic, that's quite alright 02:23
i'm finding it quite fun already. I felt like i was grinding my teeth a bit on perl5 so when I whipped my first rakudo spin I was pleasantly surprised / relieved / excited :) 02:25
raydiak glad to hear it :) I thought parts of it were a bit odd at first when I came from a p5 background, but I'm quite happy I switched now 02:29
TimToady isn't here either :) 02:33
yoleaux 19 Jun 2015 21:24Z <jnthn> TimToady: in STD, "my $exists = @foo[0]:exists" puts the adverb on the whole scope decl, because adverbs have item assignment precedence, put the initializer preclimits to item assignment. In Rakudo we wrongly had preclimit doing exclusive, not inclusive, checking, so we never noticed until now.
19 Jun 2015 21:26Z <jnthn> TimToady: s/put/but/. Also I don't immediately see a good fix; I suspect changing adverb's prec will have bad effects, but initializer doesn't feel like the right change either. Ideas welcome. :)
raydiak wonders if TimToady's quasiabsent state too closely resembles a ghost and scared grandtehftjiujit away 02:39
TimToady .tell jnthn well, it looks to me as though initializers are already correctly parsing at i= prec, so it seems like it would be pretty easy to give adverbs a precedence "slightly tighter" than that as it says in S03:1533, maybe "i^=" or so 02:43
yoleaux TimToady: I'll pass your message to jnthn.
TEttinger someone in another channel was describing the trouble he was having designing a compiler in Java. "It's just like, you want to start with no types, like ruby or something, and only once you understand it you assign the types." I smirked inside and said "like... gradual typing?" 07:02
TEttinger so if I want to describe something in NQP that gets completely ignored after it's parsed, not even counting as a part of other parsed forms, how would I do that? 07:08
in clojure, the language feature that I want to implement is done with #_ followed immediately by the form to be ignored. something like (def myVar #_(/ 10 0) "the value I want") wouldn't ever evaluate the 10 divide by 0 07:09
TEttinger looks like I need to add it to the ws token? 07:18
xinming Just cruious, When we have ~$object Is there a way to override the default behavior so $object can return the different things in Str context? 08:00
moritz TEttinger: or you can simply not return an AST from the action method; or a null op 08:01
xinming: yes, define a method Str
xinming ah, sorry, I tried that, But I put it into the wrong class. >_< 08:02
that's what I did, I just now realized I put the method in wrong class
dalek ast: 4366d91 | usev6++ | S04-exceptions/fail.t:
Add test (fudged 'todo') for RT #115436
08:14
ast: fa9de57 | usev6++ | S02-types/lazy-lists.t:
Unfudge passing test for JVM, RT #121994
RabidGravy er, "Cannot find method 'is_composed'" that's helpful 08:22
yoleaux 19 Jun 2015 12:28Z <jnthn> RabidGravy: if rt.perl.org/Ticket/Display.html?id=125408 also seems fixed for him (I just tried it and it doesn't fail)
TEttinger oh boy, this is gonna be fun... how do I either make the existing ww method recognize more characters as valid components of names (that need spaces between tokens), or make my own equivalent to ww for a more permissive identifier char set? 08:32
the rule I have for a variable is : 08:33
token value:sym<variable> { <-[\d\c[APOSTROPHE]\c[QUOTATION MARK]\c[NUMBER SIGN]\{\}\(\)\[\]\~\,\s\/]> <-[\c[APOSTROPHE]\c[QUOTATION MARK]\c[NUMBER SIGN]\{\}\(\)\[\]\~\,\s\/]>* }
(can't start with a number, can't ever contain the other chars)
RabidGravy jnthn, nope #125408 still fails with the same error 08:35
dalek ast: 6ea448b | usev6++ | S03-operators/arith.t:
Add test for RT #123077
08:50
xinming Just curious, Is there something like lazy build feature for class attributes? 08:51
I mean object attributes 08:52
RabidGravy ah, found it 08:53
m: enum Error ( Metadata => -20); class Metadata { } 08:54
camelia rakudo-moar d47424: OUTPUT«===SORRY!===␤Cannot find method 'is_composed'␤»
RabidGravy xinming, I think someone made something experimental a while back but it's not in rakudo
timotimo right, it's supposed to go into module space, but nobody put it up yet 08:55
xinming RabidGravy: will that be something like has $.attr is lazy { }... ?
timotimo xinming: github.com/rakudo/rakudo/commit/34788bf - you can basically put the reverse of this commit into a .pm file and use that, then you can has $.attr will lazy { ... } 08:56
timotimo there should be an earlier commit that explains it in a bit more detail, i imagine 08:57
but i gotta go for now
TTYL!
RabidGravy byeeeeee
xinming Ok, Thanks 08:59
xinming waves
masak good antenoon, #perl6 09:20
jnthn o/
yoleaux 02:43Z <TimToady> jnthn: well, it looks to me as though initializers are already correctly parsing at i= prec, so it seems like it would be pretty easy to give adverbs a precedence "slightly tighter" than that as it says in S03:1533, maybe "i^=" or so
TEttinger good <time of day> jnthn, masak! 09:26
I'm not sure here, how do I either make the existing ww method recognize more characters as valid components of names (that need spaces between tokens), or make my own equivalent to ww for a more permissive identifier char set?
if I just steal nqp's ww, it only uses word chars, but I allow more than taht 09:27
moritz TEttinger: you can implement the equivalent of ww with look-ahead and look-behind assertions 09:28
TEttinger I know in JVM regexes that uss something like (?>![my thing]) 09:30
I have no idea how perl assertion regexy things do it
RabidGravy m: enum Error ( Metadata => -20); class Metadata { }; # I may RT this as a somewhat less than awesome diagnostic message, it took me ages to find it in a large enum 09:31
camelia rakudo-moar d47424: OUTPUT«===SORRY!===␤Cannot find method 'is_composed'␤»
jnthn RabidGravy: Please do, it's an easy fix 09:35
RabidGravy jnthn, in as #125441 09:46
jnthn, in regard to the RT#125408 it still appears to be doing it for me 09:48
jnthn RabidGravy: Odd, I ran the code from RT#125408 and it completed successfully, and I bumped up the thresholds and the same... :S 09:49
RabidGravy: Will have to give it another guy, mebbe will try it on another platform
RabidGravy Would it be fixed in some bump of moar that a plain rakudobrew wouldn't get? 09:51
(this on a linux x86_64 btw) 09:52
timotimo damn this guy 09:55
TEttinger timotimo: mips stuff?
timotimo no, just punning off jnthn's typo
TEttinger so, how bout them look-ahead and look-behind assertions? where would I look to learn more about those? 09:57
jnthn oh wow, "another try" :)
RabidGravy: No, I don't think there's been any relevant commits since 2015.06 09:58
jnthn yay, the TimToady++ suggestion on fake infix prec seems to help... 10:01
Though only so much...
(Helps the adverb issue, but seems there's still spectest fallout) 10:02
dalek kudo/nom: 146ad05 | usev6++ | src/core/Failure.pm:
Type check when creating Failure object with '.new'

fixes RT #115436
10:03
kudo/nom: 1cc73fc | jnthn++ | src/core/Failure.pm:
Merge pull request #442 from usev6/type_check_for_failure

Type check when creating Failure object with '.new'
jnthn m: my $pair = 'foo' => 'bar'; say $pair 10:04
camelia rakudo-moar d47424: OUTPUT«foo => bar␤»
jnthn Damm it, we've broken that one too... 10:05
TEttinger so currently my ws token is this:
token ws { <!ww> [\s | ',' | <.comment> ]* }
I'm not sure what the ! before ww means 10:06
jnthn TEttinger: "does not match here" 10:07
(And zero-width)
TEttinger good
thanks, jnthn++
TEttinger moritz++ mentioned that lookaround could be used here to replicate ww, but AFAICT the syntax is going to be different 10:08
(than other regex engines, since this isn't a regex, or is it?)
jnthn Depends how you define "regex". token/rule turn off backtracking, which means you san performantly parse, but Perl 6 regexes are using the same syntax as the rule/token stuff you're using 10:13
m: my $b = 2; my $a = $b = 3; say $a; say $b; 10:16
camelia rakudo-moar d47424: OUTPUT«3␤3␤»
jnthn .tell TimToady While that helps the colon pair case, we run into problems with pairs, as in "my $a = 'foo' => 'bar'", because those are %item_assignment too. Also chained assignments to declarators seem to go wrong (e.g. my $a = $b = 2).
yoleaux jnthn: I'll pass your message to TimToady.
lizmat waves from home 10:18
vendethiel o/ lizmat!
lizmat vendethiel o/
jnthn o/ lizmat
lizmat jnthn o/
TEttinger hallo
jnthn Hope the journey was uneventful :)
lizmat yes, smooth and uneventful
jnthn yay
lizmat first thing to do: git pull; make; make spectest 10:21
when running as part of the spectest, t/spec/S17-supply/unique.t hangs for me
runs fine by itself :-(
TEttinger I'm really sorry to keep bothering everyone, but... where would I learn more about how NQP grammar stuff works? I'm most of the way through Edument's NQP thing ( edumentab.github.io/rakudo-and-nqp-...s-day1.pdf ), even though it doesn't make that much sense yet because I'm still learning... Perl. 10:24
the Edument course didn't explain <!...> at all, so I am not thinking it will explain stuff like other regex-style matching 10:25
jnthn TEttinger: Did you read the Perl 6 regex/grammar docs yet?
TEttinger: 'cus the syntax is the same
TEttinger I have no idea where they are
I'd guess perl6.org
jnthn doc.perl6.org/language/regexes and doc.perl6.org/language/grammars 10:26
TEttinger doc.perl6.org/language.html ? ah ok
lizmat jnthn: datapoint: it hangs without using any CPU 10:28
hmmm... and now it was t/spec/S17-supply/map.t that hang
*hung :-)
TEttinger huh, lookahead is empty, it's just <?before foo> right? 10:29
jnthn TEttinger: Yes, <?before foo> or if you just have a char class <?[abc]>, or you can use any other token/rule as a lookahead with <?name>
And ! in all of those places instead for negative lookahead 10:30
TEttinger gotcha, thanks!
so if I wanted to check if there was this token, neither ahead or behind: token value:sym<variable> { ... } (there's a very long character class in there) 10:31
I would use <?!after variable> <?!before variable> 10:32
or would it need value:sym<variable>
jnthn Any time you see foo:sym<bar> it's part of an alternation (known as a "protoregex"
You can't talk about those directly
TEttinger ok, so put that in its own thing, have the protoregex reference it? 10:33
jnthn You should factor the shared stuff out to a token of its own, have your token value:sym<variable> look more like <variable>, and then use that.
Yes, you've got it.
lizmat takes a geezette nap 10:34
TEttinger oh, and <?!after variable> <?!before variable> will make it require Both of those, right?
similar to ww 10:35
jnthn TEttinger: ?! looks...odd
If you mean "not after a variable" and "not before a variable" just <!after <variable>> <!before <variable>> would do it 10:36
TEttinger doc.perl6.org/language/regexes#Look...assertions ?
huh
ok
jnthn Oddness 10:37
The ? is redundant, I thought...
TEttinger it also hasn't filled in lookahead in the section above
maybe outdated?
jnthn I suspect the lookahead bit is just "not written yet" 10:39
The docs situation has gotten loads better over the last year, but there's still gaps.
m: my $a = a => b => c; say $a.perl 10:40
camelia rakudo-moar 1cc73f: OUTPUT«5===SORRY!5=== Error while compiling /tmp/QXFMqTPXnl␤Undeclared routine:␤ c used at line 1␤␤»
jnthn m: my $a = a => b => 'c'; say $a.perl
camelia rakudo-moar 1cc73f: OUTPUT«:a(:b("c"))␤»
jnthn m: my $a = a => 'b' => 'c'; say $a.perl
camelia rakudo-moar 1cc73f: OUTPUT«:a(:b("c"))␤»
jnthn m: multi foo($a where { $_ == False } = True) { }; foo(False); 10:46
camelia rakudo-moar 1cc73f: OUTPUT«Cannot modify an immutable Block␤ in sub foo at /tmp/KKGuUn55Kc:1␤ in block <unit> at /tmp/KKGuUn55Kc:1␤␤»
dalek p: 046eb33 | jnthn++ | tools/build/MOAR_REVISION:
Bump MOAR_REVISION for updated MAST::Nodes.

The previous version was accidentally invalid NQP syntax, but a precedence limit handling bug in NQP meant we got away with it.
10:48
dalek p: 1d5165f | jnthn++ | src/HLL/Grammar.nqp:
Correct EXPR precedence limit test.

As per STD, it should be an inclusive, not exclusive, test.
10:49
RabidGravy is making a trait that "auto-handles" all the methods in the object that are marked with another trait a completely insane idea 10:52
I'm a lazy typist
timotimo sounds fine to me
jnthn RabidGravy: I'm guessing you're putting the first trait on the class itself? 10:57
dalek kudo/nom: 9ed8577 | jnthn++ | / (2 files):
Get EXPR preclim fix; cope with its fallout.

The EXPR method used to incorrectly test against the precedence limit. This commit bumps to an NQP without this bug. This entails three small changes to Perl6::Grammar. First, we undo a hack in infix:<?? !!> that worked around the precedence limit bug, bringing us in line with STD. The second two changes are needed because we previously parsed both initializers and fatarrows as intended only due to the bug that is now fixed. STD gets things incorrect in these two cases also, but since it only does syntax, not semantics, it has never been noticed until now.
There is no spectest fallout with this patch. There may be a little ecosystem fallout, possibly because we were a little too liberal. With this change, RT #123623 is also fixed.
RabidGravy something like "class Foo { method bar is delegated { .. } } class Bar { has Foo $!foo is auto-proxy }" and an object of Bar has the bar method 10:58
jnthn .tell TimToady I ended up doing github.com/rakudo/rakudo/commit/9ed8577888 which I suspect you'll want to review; as far as I can tell, STD is wrong for ages on these things and we never noticed.
yoleaux jnthn: I'll pass your message to TimToady.
jnthn RabidGravy: You do know about "handles"? 10:59
RabidGravy yes
jnthn RabidGravy: Including the forms where you don't list the method names, but use a type as the matcher? 11:00
Either that or I'm missing some aspect of your problem...
RabidGravy oh wait, no not that part
looks at the handles code again
jnthn iirc, "handles Foo" means "fall back to delegate all methods Foo can do to the attribute" 11:01
*delegating
RabidGravy yeah see that now 11:05
FROGGS[mobile] o/
TEttinger QAST::Var.new() takes a :scope like :scope('lexical') or :scope('attribute'); where's the list of the possible scopes and/or what they mean? it isn't in QAST::Var, as far as I can tell 11:08
dalek ast: 40fa9bf | jnthn++ | S (2 files):
Tests covering RT #123623.
11:09
jnthn TEttinger: The course is probably the best best for examples of that
TEttinger ok
jnthn I think it should cover most of them 11:10
RabidGravy though, the subtle difference with what I am thinking is that the delegated class can indicate which methods are thus delegated which I guess could be achieved with some matcher
jnthn You can always look into the QAST -> MAST
jnthn Phew, now our RT queue "only" goes up to page 21, not 22... 11:14
FROGGS ó.ò
jnthn: we'll get that down
jnthn Indeed
FROGGS I will do only RT tickets in near future I guess... in case there are some that I can do
jnthn I'm sure there will be :) 11:17
timotimo RabidGravy: you can build a role that "marks" all methods that you want to delegate
and then "... handles MyRole" 11:18
jnthn will do some more RTs soon...but lunch first :)
RabidGravy timotimo, ah hah! yes of course 11:19
Ven m: role A[::T] {}; sub f(A[::T]) 11:20
camelia rakudo-moar 9ed857: OUTPUT«===SORRY!===␤Could not locate compile-time value for symbol T␤»
Ven m: role A[::T] {}; sub f(A[::T]) { say T.perl }
camelia rakudo-moar 9ed857: OUTPUT«===SORRY!===␤Could not locate compile-time value for symbol T␤»
Ven I'm not sure I get that error 11:21
(I mean -- I get *why* it happens, but isn't ::T supposed to work here?)
TEttinger m: [+] ^100^3 11:24
camelia ( no output )
TEttinger m: say [+] ^100^3
camelia rakudo-moar 9ed857: OUTPUT«one(100, 3)␤»
TEttinger huh
m: say [+] ^(100^3) 11:25
camelia rakudo-moar 9ed857: OUTPUT«one(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65…»
TEttinger nooooo
Ven m: say (100 ^ 50)
camelia rakudo-moar 9ed857: OUTPUT«one(100, 50)␤»
Ven m: say so 50 == 100 ^ 50)
camelia rakudo-moar 9ed857: OUTPUT«5===SORRY!5=== Error while compiling /tmp/1vudac6KhC␤Unexpected closing bracket␤at /tmp/1vudac6KhC:1␤------> 3say so 50 == 100 ^ 507⏏5)␤»
Ven m: say so 50 == 100 ^ 50 # whoops
camelia rakudo-moar 9ed857: OUTPUT«True␤»
TEttinger is there an exponentiation op?
Ven m: say 50 ** 4
camelia rakudo-moar 9ed857: OUTPUT«6250000␤»
TEttinger m: say [+] ^100**3
camelia rakudo-moar 9ed857: OUTPUT«499999500000␤»
TEttinger nice
golf winnar
m: say [+]^100**3 # curious 11:26
camelia rakudo-moar 9ed857: OUTPUT«one(0, 1000000)␤»
TEttinger ha
timotimo jnthn: you remember my little SMOP? :) 11:31
bartolin m: class A { has @.ints }; my $one = A.new; $one.ints = [1, 2]; say $one.ints.elems 11:34
camelia rakudo-moar 9ed857: OUTPUT«1␤»
bartolin m: class A { has @.ints }; my $one = A.new( ints => [1, 2] ); say $one.ints.elems 11:35
camelia rakudo-moar 9ed857: OUTPUT«2␤»
bartolin I wonder whether that's correct 11:36
timotimo m: my @foo; @foo = [1, 2]; say @foo.elems 11:37
camelia rakudo-moar 9ed857: OUTPUT«1␤»
bartolin RT #123757 seems to state that the second evaluation shoud give 1 as well.
timotimo probably should
masak no please no
bartolin but we have a test for RT #74636 which seems to go with itemization
masak: ?
masak I fought at one point for the second evaluation giving 2.
timotimo oh
masak it still seems like an eminently good idea to me 11:38
timotimo listen to the masak with the experience
masak let's at least please discuss this first
Ven m: class A { has @.ints; submethod BUILD(:@.ints) {} }; my $one = A.new( ints => [1, 2] ); say $one.ints.elems 11:39
camelia rakudo-moar 9ed857: OUTPUT«2␤»
masak `my @foo = 1, 2; say A.new( ints => @foo ).ints.elems;` -- 1 or 2?
Ven two
masak agreed.
so `ints => [1, 2]` should also give 2
not a very solid argument, but maybe the beginning of a solid one 11:40
Ven I don't understand the argument. (1, 2) is (*currently*) different from [1,2]
masak basically, list assignment is not the same as attr initialization by constructor argument 11:41
Ven m: class A { has @.ints }; my $one = A.new( ints => (1, 2, (3, (4,))) ); say $one.ints.elems
camelia rakudo-moar 9ed857: OUTPUT«4␤»
masak if GLR makes that one into 3, I'm fine with that.
I'm talking specifically about [] DWIMming when passing constructor arguments. 11:42
I could probably dig up a very old RT ticket about this, too.
Ven m: class A { has @.ints; }; my $one = A.new( ints => $(1, 2) ); say $one.ints.elems
camelia rakudo-moar 9ed857: OUTPUT«2␤»
masak I remember discussing this in 2010 with mberends and jnthn, in the back of a car moving some of jnthn's stuff to .se
Ven (I don't have an opinion on that, FWIW. I can agree with both point of views) 11:43
bartolin masak++ # stories from the past ;-)
Ven masak: what do you think of irclog.perlgeek.de/perl6/2015-06-20#i_10777713 ? 11:44
masak I'll also try to dig up the spec change that made things more in line with what I'm arguing for now.
Ven m: class A{}; role T[A]{}; T[5]; # <- doesn't fail 11:45
camelia ( no output )
Ven m: class A{}; role T[A]{}; T[5].perl.say; # <- but does here
camelia rakudo-moar 9ed857: OUTPUT«No appropriate parametric role variant available for 'T'␤ in any specialize at src/gen/m-Metamodel.nqp:2437␤ in any specialize at src/gen/m-Metamodel.nqp:2031␤ in any compose at src/gen/m-Metamodel.nqp:2747␤ in any make_pun at src/gen/m-Metamod…»
masak Ven: I... think that's the first time I see a type capture inside a [] after a role in a type signature. 11:46
Ven: I agree it'd be lovely if that worked, but I'm not sure how realistict it is to expect it to work.
Ven: either way, please rakudobug it.
Ven I might've pasted another one like that before, not sure if that's been rakudobugged though
I think jnthn++'s answer was a bit of the same :-)
masak: well, I'm just wondering -- how could I write a polymorphic reverse? 11:47
timotimo jnthn: it could very well be that send-more-money-subs doesn't lower one of the sigs because the choose and guard subs take an &-sigiled variable and the lowerer doesn't check for that
Ven m: multi role T[5] { method f { "first" } }; multi role T[6] { method f { "second " } }; say T[6].f;
camelia rakudo-moar 9ed857: OUTPUT«5===SORRY!5=== Error while compiling /tmp/1GKegXIpAh␤Missing block␤at /tmp/1GKegXIpAh:1␤------> 3multi role7⏏5 T[5] { method f { "first" } }; multi ro␤ expecting any of:␤ new name to be defined␤»
Ven m: role T[5] { method f { "first" } }; role T[6] { method f { "second " } }; say T[6].f; 11:48
camelia rakudo-moar 9ed857: OUTPUT«second ␤»
Ven m: role T[5] { method f { "first" } }; role T[6] { method f { "second " } }; BEGIN say T[6].f;
camelia rakudo-moar 9ed857: OUTPUT«second ␤»
timotimo hm, i don't think that's it 11:49
masak bartolin, timotimo: found the relevant backlog: irclog.perlgeek.de/perl6/2010-03-07#i_2073494 11:50
<pmichaud> masak: we're still working out list issues, sadly.
(from 2010!)
yeah, good thing we managed to get past that stage! :P:P:P 11:51
bartolin masak: thanks a lot for digging!
bartolin reads
masak m: class A { has @.ints }; my @ints = 1, 2; my $a = A.new(:@ints); say $a.ints.elems; @ints.push(3); $a.ints.elems 11:53
camelia rakudo-moar 9ed857: OUTPUT«2␤»
masak m: class A { has @.ints }; my @ints = 1, 2; my $a = A.new(:@ints); say $a.ints.elems; @ints.push(3); say $a.ints.elems
camelia rakudo-moar 9ed857: OUTPUT«2␤2␤»
Ven (there's no way to access type parameters from "outside", right? like List[Int].^something
)
masak seems we got it exactly right since that backlog in 2010.
Ven: .of ? 11:54
Ven masak: in the case of List, yes :). I meant a more general "role A[::X] {}; say A[Int]::X" (or .X)
masak m: my Array[Int] $l; say $l.of
camelia rakudo-moar 9ed857: OUTPUT«(Int)␤»
masak Ven: then why ask the more specific question? I'm confused.
Ven masak: that's why my question said "type parameters", but yeah :) 11:55
masak ok.
anyway, I think the answer to your general question is "no, unfortunately not" 11:56
Ven masak: (just in case, the stuff I was trying to do lives here: github.com/vendethiel/6meta-experi...rch.pl#L18 ) 11:58
timotimo multi sub squish(*@values, |c) { @values.squish(|c) } 12:17
oh, i was about to ask "what is this", but it's just %*
basically
masak vendethiel: thank you for pushing the limits of Perl 6 implementations the way you do. I find it very interesting. 12:19
timotimo we don't lower the signature of Capture.new, which is method new(:@list,:%hash) { 12:20
vendethiel masak: you must not consider yourself an "implementor" for thanking me *g* 12:21
(but really, thank everyone who did that in other languages / papers in literature / etc. I'm barely trying to translate it to p6)
masak vendethiel: I'm actually not sure whether I consider myself an implementor. but I see what you mean ;) 12:22
vendethiel: I am invested in Perl 6 converging on solid theory in cases like this. 12:23
Ven masak: I'm very scared by all the possible interactions. But perl6 is *consistent* at its core, or cheats really well to get there :) 12:24
masak walk & 12:25
timotimo aha! 12:26
it's quite possible that the slow-path binder gets invoked because Setty's submethod BUILD (does it even get called if it comes in from a role?) doesn't get lowered 12:27
submethod BUILD (:%!elems) { self }
TEttinger I'm trying to wrap my head around some of the rubyish code from the course. github.com/perl6/nqp/blob/master/e...#L694-L704 12:29
it assigns to $var , it puts it in the block[0] , but then later it does a make on a different variable 12:30
Ven also funny that this works:
m: my role X[::T] { my T $x; method f { say $x.perl } }; say X[Int].f; 12:31
camelia rakudo-moar 9ed857: OUTPUT«Int␤True␤»
TEttinger is the make really putting an identifier into the AST, not making a new Var ?
Ven but this doesn't:
m: my role X[::T] { method create(--> T) { T.new } }; say X[Int].create; say Int.new;
camelia rakudo-moar 9ed857: OUTPUT«Type check failed for return value; expected 'T' but got 'Int'␤ in any return_error at src/vm/moar/Perl6/Ops.nqp:650␤ in method create at /tmp/abDgsxjbd5:1␤ in any at src/gen/m-Metamodel.nqp:1643␤ in block <unit> at /tmp/abDgsxjbd5:1␤␤»
timotimo TEttinger: it looks like $block.symbol is also a setter, more or less 12:32
TEttinger: also, pushing something onto a block's first child is what you do to add lexical definitions properly 12:33
and the thing it makes is a reference to the created variable
TEttinger oh ok
timotimo you can see the difference in whether or not :decl is present
TEttinger so it's returning a reference regardless, but if it isn't declared already, it declares it first? 12:34
got it
timotimo sounds sensible to me 12:36
jnthn timotimo: It's entirely possible we don't know how to compile attributive param binds, yes 12:39
timotimo yes, we bail out for that explicitly
i was thinking i could probably implement it easily
dalek kudo/nom: 6bba8ab | jnthn++ | src/Perl6/Grammar.nqp:
Fix bad error on redeclaring an enum element.

Fixes RT #125441.
12:40
ast: 7404f8c | jnthn++ | S32-exceptions/misc.t:
Test for RT #125441.
jnthn timotimo: I think it shoudln't be too bad to do, yeah
Woodi hallo #perl6 :) 12:43
dalek ast: dbf53cb | usev6++ | S12-attributes/instance.t:
Add tests for RT #118559 and RT #120059
12:44
Woodi skids: what exactly must-haves Emacs have ? maybe rest of the World could use thes too ? :) 12:45
Ven Woodi: evil-mode :P 12:47
dalek ast: f86283d | jnthn++ | S12-introspection/meta-class.t:
No longer have prefix ^ meaning "HOW".

Resolves RT #125016.
12:48
Woodi Ven: but this is vi4emacs, I thinked skids was talking about something in emacs what is missed anywhere else 12:51
dalek ast: 3a01073 | jnthn++ | S12-introspection/meta-class.t:
.^layout is spelled .REPR these days; update test.

Resolves RT #125018.
12:52
Woodi anyway I prefer to do not play with any evil(s) :)
dalek kudo/nom: a0fa1a7 | jnthn++ | src/core/operators.pm:
Add HOW(...); it's mentioned in spec and tested.

And is consistent with having WHAT and VAR.
12:56
Ven jnthn: shouldn't that "Wants" become "Want" them? 12:57
Woodi masak: "model refactoring" looks a bit like ORM layer and it would be simplest way for some tool. I think Positional role is step in such direction. now we need a meta roles that know how to automatically convert things :)
jnthn Like I know how to English... 12:57
timotimo now i've changed the output of my "failure to lower signature" complain sub so that vim understands it 12:58
dalek ast: 4ee860b | jnthn++ | S12-introspection/meta-class.t:
Unfudge test for HOW(...).
colomon imagines Englishing involves walking around saying “What, what” and “Sorry old chap”
Ven m: macro MYHOW($x) { quasi { {{{$x}}}.HOW } }; say MYHOW(3);
camelia rakudo-moar 9ed857: OUTPUT«Perl6::Metamodel::ClassHOW.new␤»
Woodi so <?foo> is zero-width lookahead and it do not moe cursor... what it do ? marks some bit in engine and allows to construct some if(<?foo>) then { ... } ? 13:00
*move 13:01
timotimo what engine?
jnthn: are you aware we seem to bail out of every method defined in a role because type_captures is set? at least it seems to be that way 13:03
um 13:05
or maybe that's the signature of the role itself? 13:06
jnthn Probably that of the role itself 13:08
[ptc] colomon: there's probably a lot of "quite", "indeed" and "rather" as well ;-)
jnthn I think we'd be seeing a lot more bails otherwise.
timotimo yes, you are right 13:09
Woodi timotimo: the thingie that moves corsor :) I assumed it's about grammars
timotimo Woodi: that's correct. where does "if(<?foo>) then { ... }" come from? that doesn't seem like anything in perl6
jnthn: what's tricky about doing method new(:@list,:%hash) { 13:10
Woodi no 'if's. just description how it could work...
timotimo it seems like it's a bail because we don't have a default value for @list
jnthn timotimo: Not sure without looking. Is it perhaps optional array/hash args?
timotimo yeah 13:11
i just put a ! at the end to see if the bail disappears :)
timotimo hm. i have no idea what nominal_generic does 13:15
"this can happen in (::T, T)" 13:16
hm. we quite often have ::?CLASS:D in signatures just because we want the :D, but don't necessarily know the class 13:18
that keeps the binder lowerer from lowering
bind_accessor being set in %info is never the reason for a bail 13:20
dalek kudo/nom: 936ef82 | jnthn++ | src/Perl6/Grammar.nqp:
Allow invocant colon at EOF.

Fixes RT #125440.
13:21
dalek ast: 8724f14 | jnthn++ | S12-methods/indirect_notation.t:
Test for RT #125440.
13:21
jnthn timotimo: Hm, the ::?CLASS:D one is probably fixable 13:22
timotimo i thought it would be, but i'm not 100% sure how. just detecting it's ::?CLASS and as such we don't actually set the value of ::?CLASS
and also ::?CLASS: is never actually worth a type check
hm. actually ... not never 13:23
jnthn It can matter
timotimo like if we .^find_method for example
jnthn Well, it's more that we should emit code to look up the type var
(lexically)
timotimo fair enough
jnthn There's even a typevar scope iirc
So that spesh would know that it can cache the lookup if it's specializing on invocant type 13:24
Which means it could even eliminate the type check
timotimo i'm more worried about the reason why :%!config, for example, bails out because of "no default value, but we have a % sigil"
that means it doesn't properly set bind_accessor in the %info hash 13:25
oh, hold on
bind_accessor is for %.config
bind_attr is for ! twigils
and we do support that 13:26
AlexDaniel timotimo: p6monthly :(
:)
timotimo i've been a bit tuitdrained and i - for some reason - didn't ask lizmat for assistance 13:27
jnthn errands & 13:31
dalek line-Perl5: 54672b6 | (Stefan Seifert)++ | t/from.t:
Simplify test code a bit by using "new" features.
13:38
line-Perl5: db5dff2 | (Stefan Seifert)++ | README.md:
Major documentation update.

Added documentation for all implemented features. Updated examples to reflect the development of the past months. Document more details like return values.
13:40
timotimo m: sub test(:@arr) { say @arr.perl }; test();
camelia rakudo-moar a0fa1a: OUTPUT«[]<>␤»
timotimo m: sub test(:@arr) { say @arr.DUMP }; test(); 13:41
camelia rakudo-moar a0fa1a: OUTPUT«Array<1>(␤ :$!flattens(True),␤ :$!items(▶Mu),␤ :$!nextiter(▶Mu)␤)␤»
timotimo m: say Array.new().perl
camelia rakudo-moar a0fa1a: OUTPUT«[]<>␤»
timotimo m: say Array.new().DUMP
camelia rakudo-moar a0fa1a: OUTPUT«Array<1>(␤ :$!flattens(True),␤ :$!items(▶Mu),␤ :$!nextiter(ListIter<4>(␤ :$!list(=Array<1>),␤ :$!reified(▶Mu),␤ :$!nextiter(▶Mu),␤ :$!rest(BOOTArray<5>())␤ ))␤)␤»
dalek ast: 21babba | usev6++ | S04-exceptions/fail.t:
Unfudge test for RT #115436
13:43
timotimo ah, i know what i have to do: 13:47
m: use nqp; my $a := nqp::create(Array); nqp::bindattr($a, List, '$!flattens', True); say $a.dump; 13:48
camelia rakudo-moar a0fa1a: OUTPUT«Method 'dump' not found for invocant of class 'Array'␤ in block <unit> at /tmp/OJ33USE0Ix:1␤␤»
timotimo m: use nqp; my $a := nqp::create(Array); nqp::bindattr($a, List, '$!flattens', True); say $a.DUMP;
camelia rakudo-moar a0fa1a: OUTPUT«Array<1>(␤ :$!flattens(True),␤ :$!items(▶Mu),␤ :$!nextiter(▶Mu)␤)␤»
timotimo m: use nqp; my $a := nqp::create(Array); say $a.DUMP;
camelia rakudo-moar a0fa1a: OUTPUT«Array<1>(␤ :$!flattens(▶Mu),␤ :$!items(▶Mu),␤ :$!nextiter(▶Mu)␤)␤»
timotimo right.
timotimo m: use nqp; my $a := nqp::bindattr(nqp::create(Array), List, '$!flattens', True); say $a.DUMP; 13:55
camelia rakudo-moar 936ef8: OUTPUT«True␤»
timotimo damn, it doesn't return its first param :(
timotimo commutes 14:05
brrt \o
ugexe ultimately should a package/module manager only build/test/install items listed in the `provides`? 14:13
as in, it shouldnt walk the directories looking for files 14:14
ugexe also regarding `provides`, is having 2 unit names point to the same file OK? A => lib/module.pm, B => lib/module.pm 14:16
brrt ugexe: counterargument: source code should be authorative over some configuration file 14:22
ugexe the source code doesnt link to files 14:23
you need to map the source's use/require whatever to a file name somehow
brrt hmm
i see what you mean
having the full fileset in a module explicit would be a big advantage in precompilation / packaging scenario 14:24
skids jnthn++ RT slaughtering 14:27
ugexe brrt: the other thing is you still need to find which files are part of a package. In the best case scenario you just look at the provides in META.info. The other way is to do a recursive file search for all .pm/.pm6 files from a base directory and try to precompile them... maybe this is ok, but if extra stuff ends up in that directory later it may try to precompile/run code that doesnt belong belong to the c 14:31
rusty old repo you thought you were installing
brrt hmmm 14:33
yes
RabidGravy can I reliably do this:
m: my $a = sub foo() returns Bool {} ; my $b = $a.signature.returns; say $b(0)
camelia rakudo-moar 936ef8: OUTPUT«False␤»
RabidGravy for all built in types?
ugexe i hope so, thats nifty 14:34
timotimo m: say Bool(0); say Int(0); say List(0) 14:42
camelia rakudo-moar 936ef8: OUTPUT«False␤0␤0␤»
timotimo m: say Bool(0).perl; say Int(0).perl; say List(0).perl
camelia rakudo-moar 936ef8: OUTPUT«Bool::False␤0␤(0,)␤»
moritz no 14:50
you can't create a Code object like that, for example 14:51
RabidGravy sorry, not quite sure what you mean 15:00
timotimo m: Code(0).perl.say
camelia rakudo-moar 936ef8: OUTPUT«(signal SEGV)»
timotimo ^- he means that
RabidGravy oh, I see
cognominal jnthn empties RT faster than masak can pour :) 15:03
RabidGravy but for a given type $a and type $b where $b.can($a.perl) one can do $a($b) 15:07
I think that's safe
lizmat timotimo: I will do the P63W next Monday then?
timotimo for 63 weeks? 15:08
wow, ambitious!
but yeah, i'd appreciate it
nwc10 I think it's the Perl 3 for 6 weeks. Or something like that :-)
timotimo %) 15:09
lizmat nononono It's the new Perl 63 :-) that's 9 * 7 to you :-) 15:11
brrt perl 61 would be prime 15:15
timotimo a prime example 15:17
huf why restrict yourself to just traditional numbers? what about perl galoshty-four?
jnthn FROGGS: Didn't you implement ignoremark already? If so, is rt.perl.org/Ticket/Display.html?id=116256 resolvable? 15:23
jnthn m: say "ü" ~~ /:ignoremark 'u'/ 15:36
camelia rakudo-moar 936ef8: OUTPUT«Nil␤»
jnthn m: say "ü" ~~ /:m 'u'/ 15:37
camelia rakudo-moar 936ef8: OUTPUT«Nil␤»
jnthn hm, mebbe not
bartolin m: say "ü" ~~ m:ignoremark/ u / 15:39
camelia rakudo-moar 936ef8: OUTPUT«「ü」␤»
dalek kudo/nom: bbc369b | jnthn++ | src/Perl6/Optimizer.nqp:
Do not inline blocks with exit handlers.

Otherwise, we'll miss running any LEAVE, POST, etc. Fixes RT #113950.
15:40
dalek ast: f15b126 | jnthn++ | S04-phasers/enter-leave.t:
Unfudge test for RT #113950.
15:41
jnthn Another one down.
bartolin jnthn++ 15:42
jnthn Hm, and now let's see if I can fix one that goes all the way back to 2010...
brrt \o/ 15:43
jnthn Filed by masak, of course...
:)
FROGGS m: say "ü" ~~ /:ignoremark 'u'/
camelia rakudo-moar 936ef8: OUTPUT«Nil␤»
FROGGS m: say "ü" ~~ /:m 'u'/ 15:44
camelia rakudo-moar 936ef8: OUTPUT«Nil␤»
FROGGS ahh
hmmm
jnthn heh, glad the ticket found an actual bug
FROGGS jnthn: yes, should be doable without much fuzz 15:45
jnthn Yeah, I figured you already did the hart part :)
uh, hard
bartolin well, schwierig :-)
FROGGS jnthn: will fix it this evening, dont wanna switch branches right now 15:49
jnthn m: class A { submethod m() { } }; class B is A { }; B.m 15:49
camelia rakudo-moar 936ef8: OUTPUT«Method 'm' not found for invocant of class 'B'␤ in block <unit> at /tmp/uxkvnmpXLh:1␤␤»
jnthn m: class A { submethod m() is default { } }; class B is A { }; B.m 15:49
camelia ( no output )
moritz m: say "ä" ~~ /:m a/ 15:52
camelia rakudo-moar 936ef8: OUTPUT«「ä」␤»
moritz m: say "ä" ~~ /:m zkya/ 15:53
camelia rakudo-moar 936ef8: OUTPUT«Nil␤»
moritz we can't do the index search when :m is in scope
dalek kudo/nom: a59d812 | usev6++ | src/core/Mu.pm:
Use nqp::decont on attributes passed with .clone

Fixes RT #120059
kudo/nom: f658992 | lizmat++ | src/core/Mu.pm:
Merge pull request #443 from usev6/clone_attributes

Use nqp::decont on attributes passed with .clone
FROGGS moritz: good catch
m: say "ä" ~~ m:m/zkya/
camelia rakudo-moar 936ef8: OUTPUT«False␤»
moritz wonders if he did that optimization in rakudo or in nqp 15:54
FROGGS m: say "ü" ~~ m:ignoremark/ au /
camelia rakudo-moar 936ef8: OUTPUT«False␤»
FROGGS I thought that gets tested...
zostay m: sub x { }; GLOBAL::<&x>.perl.say 15:56
camelia rakudo-moar 936ef8: OUTPUT«Any␤»
zostay m: sub x { }; GLOBAL::.perl.say 15:57
camelia rakudo-moar 936ef8: OUTPUT«{}<>␤»
zostay are the symbol tables not being populated yet or am i missing something?
jnthn Subs are lexical by default.
dalek kudo/nom: be122ad | lizmat++ | lib/Test.pm:
Fix 2 throws_like omissions
15:58
zostay m: our sub x { }; GLOBAL::.perl.say
camelia rakudo-moar 936ef8: OUTPUT«{"\&x" => sub x () { #`(Sub|44146728) ... }}<>␤»
zostay thx
moritz the index_s optimization already checks for 'ignorecase', 'ignoremark' and 'ignorecase+ignoremark' 16:07
RabidGravy okay going, going back to the earlier casting thing,is there a generalised way of testing whether one can cast the value of variable $a to type $b? my previous assumption doesn't work for enums 16:34
itz_ :p for pipe seen at: src/gen/m-CORE.setting, line 18605 Deprecated since v2015.6, will be removed with release v2015.9! Please use pipe($path,...) instead. 16:36
timotimo itz_: yeah, we saw that :S
FROGGS is dilligently at work in that area
and i believe this issue is already on his radar
itz_ ah yes sorry I should have checked scrollback 16:37
timotimo no worries
dalek kudo/nom: 784ce58 | jnthn++ | / (4 files):
Add Perl6::Metamodel::Configuration.

Lets us factor out various bits of configuration we do on the MOP so we can share the data easily amongst various meta-objects. Use it to clean up the stash type handling.
16:40
kudo/nom: 425679e | jnthn++ | src/Perl6/Metamodel/ (3 files):
Fix fragile submethod testing.

We would fail to consider a submethod with a role mixed in to be a submethod.
ast: b99ebea | jnthn++ | S14-traits/routines.t:
Test submethods and traits interaction.

Covers a (seemingly unreported) bug discovered while investigating a different RT.
ast: a63aa1d | jnthn++ | S05-grammar/methods.t:
Don't be case-sensitive in text test.
jnthn shoppin n cookin &
timotimo is enter-leave failing for other people as well? 16:50
ah, i probably just got that in via rebase 16:53
dalek line-Perl5/fix_precomp: be6e160 | (Stefan Seifert)++ | / (3 files):
WiP
16:54
dalek kudo/nom: 70c5bc5 | timotimo++ | src/Perl6/Actions.nqp:
we can now lower signature binding with optional @ and % vars.
17:11
dalek line-Perl5: fdc218f | (Stefan Seifert)++ | / (3 files):
Support P6 objects with overloaded stringification

A Perl 6 object's Str() method will now be called when the object is used as string in Perl 5 code. This is for example most helpful when a Perl 6 exception is cought by Perl 5 code that just tries to print the error message.
17:16
tony-o m: use MONKEY-TYPING; augment class Mu { method ddump { "ddump".say; } }; my Int $a = 5; $a.ddump 17:23
camelia rakudo-moar be122a: OUTPUT«Method 'ddump' not found for invocant of class 'Int'␤ in block <unit> at /tmp/23lpzqhIxK:1␤␤»
timotimo known problem; we don't propagate changes down the inheritance chain yet 17:29
flussence m: 'hello world'.encode('ASCII').index(Buf.new(0x20)) 17:32
camelia rakudo-moar be122a: OUTPUT«Method 'index' not found for invocant of class 'Blob[uint8]'␤ in block <unit> at /tmp/XAdWxbWsU7:1␤␤»
tony-o timotimo: ty 17:36
flussence wishes Bufs had all the string methods that could be made to work sensibly...
tony-o m: 'hello world'.encode('ASCII').index(Buf.new(0x20).decode('ascii'))
camelia rakudo-moar be122a: OUTPUT«Method 'index' not found for invocant of class 'Blob[uint8]'␤ in block <unit> at /tmp/d5dHVCe8DM:1␤␤»
tony-o oops 17:37
flussence that one in particular is LHF, because it could just call strstr 17:39
dalek ast: cad696a | usev6++ | S12-attributes/instance.t:
Unfudge test for RT #120059
17:47
bartolin is it just me or is the jvm build broken atm?
bartolin (I get a NullPointerException in 'add_method' (from src/Perl6/Metamodel/MethodContainer.nqp)) 17:50
xinming I saw that in ::= the example does something like { my $*OUT ::= open(...); dosomething... } <--- Isn't this example contradicting with the dyanmic scoped var with 'temp'??? 17:58
xinming Just curious what are the differences between the { my $*OUT .. } and { templ $*OUT ... } in this case. 17:59
xinming It's in design.perl6.org/S03.html under the introduction about ::= 18:01
And another question, Why is andthen uses $_ but orelse uses $! Doesn't make much sense to me. seems to be inconsistent. Just to indicate orelse is "error" ? 18:10
RabidGravy is there any way of knowing whether a type object is *really* Mu , obviously $type ~~ Mu is always True 18:17
hoelzro =:= should do it, right?
m: Any =:= Mu
camelia ( no output )
hoelzro m: Mu =:= Mu
camelia ( no output )
hoelzro m: say(Any =:= Mu)
camelia rakudo-moar be122a: OUTPUT«False␤»
hoelzro m: say(Mu =:= Mu) 18:18
camelia rakudo-moar be122a: OUTPUT«True␤»
RabidGravy perfect
hoelzro camelia: y u no print output?!
RabidGravy so many operators
;-)
poor little brane not big enuff
xinming Anyone here would answer my question? :-) 18:21
hoelzro I think that Perl 6's operators are pretty consistent; =:= follows :=
hoelzro xinming: I don't know about your first question, but I think your assumption about orelse is correct 18:21
xinming Ok, Thanks. Will ask when the next time I re-read the doc from start. :-) 18:25
dha So, is pod syntax changing in Perl 6? 18:31
yoleaux 17 Jun 2015 23:34Z <b2gills> dha: I sure hope you aren't trying to re-implement the Test::Builder module from Perl 5, which they are currently trying to replace with a better model
timotimo yeah, we have "pod6" now 18:32
dha In answer to that question, Test::Builder seems to have been implemented already. I'm working on Test-Simple stuff. But I'm probably going to take a break from that to expand heavily on the 5to6 translation docs. 18:33
timotimo - great! Where are those changes documented? 18:34
(see comment about writing docs above :-) 18:35
dha It suddenly occurs to me that github will be made ill from p6 pod. :-/ Which I guess raises the question: would it be better to just write in p5 pod or plain text and convert to p6 pod later? 18:37
timotimo design.perl6.org has a document on it
dha How fixed is the information in that document? 18:39
timotimo relatively, i suppose 18:40
dha And, I guess for my purposes, is p6 pod a superset of p5 pod, or are there conflicts?
timotimo i don't know, i never did any perl5 18:41
dha Ah, so I guess what I'm working on is not really of use to you. :-) 18:42
timotimo pod5 to pod6 converter? :) 18:44
dha I'm sure that would be handy. :-) 18:47
RabidGravy dha: at minimum your p5 pod needs a =begin pod .. =end pod round it and drop =over .. =back for lists 18:48
most of the rest will work
dha What do you use for lists in p6?
Just use =item ? 18:49
RabidGravy yeah
dha And does the requirement of =begin...=end hold for documents that are entirely pod?
RabidGravy yes (it is still parsed as perl 6) 18:50
dha *nod* Thanks RabidGravy
Oh, that's you. Didn't recognize the new handle. ;-) 18:51
Although I probably should have...
RabidGravy :) 18:52
japhb Oooh, someone (usev6?) fixed a 2-year old RT of mine, nice! 18:53
RabidGravy it was just an accident, I'd been using IRC for the radio station
dha Ah. 18:53
dalek kudo/nom: 37ab741 | timotimo++ | src/Perl6/Actions.nqp:
elaborate more on generic archetypes and uncuddle else
19:05
kudo/nom: 020b2f2 | hoelzro++ | docs/release_guide.pod:
Remove myself from upcoming releases
19:09
dha Ok, so I put a bunch of stuff in @array. then I go "say @array". It prints out the elements with spaces in between them. a) this is the behaviour of 'say "@array"' in p5, so does p6 say autoquote its arguments? Or is there some other thing going on here? b) Is it necessarily space separated, or is there a way of changing that, a la p5's $" var? 19:32
masak (b) no way, at least not currently. 19:33
dha Also, my brain hurts.
ok, that's definitely helpful.
masak m: my @array = 1, 2, 3; say @array
camelia rakudo-moar be122a: OUTPUT«1 2 3␤»
masak m: my @array = 1, 2, 3; say @array.list
camelia rakudo-moar be122a: OUTPUT«1 2 3␤»
masak m: my @array = 1, 2, 3; say(|@array)
camelia rakudo-moar be122a: OUTPUT«123␤»
masak m: say(1, 2, 3) 19:34
camelia rakudo-moar be122a: OUTPUT«123␤»
dha I should probably at some point figure out what that pipe character is doing. 19:34
masak this is one way in which (argument) lists and arrays differ.
dha: that pipe character flattens the array into the argument list.
dha: happens automatically in Perl 5 if you pass in a non-reference array. 19:35
dha Right. ok.
dha I see the difference, but still not clear why the @array, rather than the argument list, gets the behaviour it does. 19:36
masak the proximal reason is that Array has a Str method which puts in the spaces. 19:37
dha So... basically... "Arrays just do that now." 19:38
masak m: my @array = 1, 2, 3; say @array.has("Str"); my $s = @array.Str; say $s
camelia rakudo-moar be122a: OUTPUT«Method 'has' not found for invocant of class 'Array'␤ in block <unit> at /tmp/s9NkyVZAY1:1␤␤»
masak m: my @array = 1, 2, 3; say @array.can("Str"); my $s = @array.Str; say $s
camelia rakudo-moar be122a: OUTPUT«Str Str Str␤1 2 3␤»
masak m: my @array = 1, 2, 3; say ?@array.can("Str"); my $s = @array.Str; say $s
camelia rakudo-moar be122a: OUTPUT«True␤1 2 3␤»
masak dha: you'll have to ask TimToady for a deeper reason than that. 19:39
dha: but one difference between Perl 5 and Perl 6 is that arrays *don't* autoflatten. this at least forms the basis for the different behavior in the first place, if not a complete rationale. :)
dha So, if I'm understanding this right, @array's Str method is automatically invoked when it's used in a context that expects a string, and that stringifies it with the spaces? 19:40
masak aye. you are understanding this right.
dha The irony here is that I don't know why I'm trying so hard to understand this, since what I was really looking for was whether $" had a p6 equivalent... :-) 19:41
Oh good. I like understanding things right. :-)
masak hits S28 to look for a $" analog
yeah, S28 says there is none :/ 19:42
dha Does it say there will never be?
masak I'm not sure it has the authority to say that. :) but it doesn't look like there are plans for any. 19:42
dha For context, I've decided we need more info for people going from p5 to p6, so I'm starting that by going through all the special variables and pointing to what you would use instead in p6. 19:43
masak then S28 is definitely for you.
dha So, for $" the answer is "You're screwed."
masak the answer was literally "-" in S28.
dha How fixed is the information in S28? or any of those documents, for that matter? 19:44
masak it varies. S28 can sometimes get out-of-date with respect to more current documents.
(in this case I have no reason to believe it is, though)
dha ok. I guess I'll just have to live with that. Thanks for the pointer, though. 19:45
masak S02..S06 and S12 are "core" in some sense, and almost always the most current. 19:46
(and they thankfully don't change much these days)
RabidGravy dha, currently List.Str is literally: "multi method Str(List:D:) { self.join(' ') }" 19:47
dha Gesundheit. :-)
Actually, most of that makes sense. clearly I'm starting to ingest the Kool-Aid.
RabidGravy so if one cared one could augment Array with some different implementation or something 19:48
masak wishes the IT world hadn't landed on a metaphor which involves suicide cults :/
RabidGravy masak, depends which origin you go for. It could be (and *I* tend to think of it more as, ) Ken Kesey and the Merry Pranksters rather than Jonestown :) 19:54
bartolin m: my %hash = (a => 42); for %hash.pairs -> $p { $p.value += 100 }; say %hash<a>
camelia rakudo-moar be122a: OUTPUT«42␤»
bartolin m: my $pair = (a => 42); for $pair.pairs -> $p { $p.value += 100 }; say $pair<a>
camelia rakudo-moar be122a: OUTPUT«142␤»
bartolin ^^ is there a reason for % and $ behaving differently here? 19:55
dha Yeah, I'm going to go with the pranksters.
masak RabidGravy: interesting. that seems to also be the origin of the term "acid test" (of CSS fame). unless that term is much older, which is not at all unlikely, come to think of it. 19:56
colomon pretty sure “acid test” goes way way back 19:57
“Any decisive test or ordeal; from the former use of nitric acid to test a metal for its gold content.”
www.thefreedictionary.com/acid+test
masak oh! I stand corrected. 19:58
that makes a whole lot of sense.
colomon “Acid test is American English, 1892, from the frontier days, when gold was distinguished from similar metals by application of nitric acid.” www.etymonline.com/index.php?term=acid
masak in other words, as most computer terminology, it comes out of California :P 19:59
dha Of course, in the case of the Pranksters, the use of "acid test" was punny.
Ew. $*PROGRAM does not what I expect. 20:00
oh. You *have* to explicitly stringify it to get what I was expecting. 20:01
masak $*PROGRAM_NAME 20:02
dha Oh. That's what I get for paying attention to S28, then... :-/ 20:08
masak dha: yes, that should clearly be updated in S28. 20:09
dha: care to supply a patch?
(in either case, thanks for discovering it)
dha Sure. What's the patch process for those documents? 20:10
masak usually we just give people commit access. what's your github id?
dha dha
masak invitation sent. 20:11
dha I note that stringification of $*PROGRAM gives you what $*PROGRAM_NAME gives you, which is what S28 says now. 20:12
thanks.
Is there any reason to put both in there? Or just equate $0 to $*PROGRAM_NAME and be done with it?
ugexe $*PROGRAM returns an IO object. you do IO on it 20:13
dha Well, ok, but if you stringify it, it *does* give you the program name. 20:13
masak dha: my opinion: put $*PROGRAM_NAME as the primary suggestion, but mention $*PROGRAM too 20:14
(as $*PROGRAM_NAME is the closest analog of $0)
dha ok, as I said, stringification of $*PROGRAM is how it is in s28 now. So I guess it doesn't hurt to put both on that line.
masak I don't think stringification of $*PROGRAM is all that important to mention. 20:15
if someone wants the stringified form, they'd more likely use $*PROGRAM_NAME
RabidGravy I think it's just there to make "say $*PROGRAM.slurp" really eay ;-)
masak for all we know, the note about stringification predates $*PROGRAM_NAME 20:15
RabidGravy easy
dha True. 20:16
ugexe it also keeps you from doing "-e".slurp
masak which would even count as a security risk. 20:17
ugexe looks like IO coerces "-e" to "", i.e. "-e".IO.say gives "".IO But of course you can actually have a file/folder named "-e" on windows 20:20
ugexe maybe on linux too... but at least its trying to make it hard for me 20:21
dalek kudo/nom: de76003 | timotimo++ | src/Perl6/Actions.nqp:
we can now lower binding to @ and % + "is copy"

sadly, we only hit this 4 times in all of CORE.setting
20:30
ugexe ah, i take that back after seeing the difference in .IO.perl and .IO.gist 20:32
dalek ecs: 1a69575 | (David H. Adler)++ | S28-special-names.pod:
Changed equivalent of Perl 5's $0 from C<$*PROGRAM> to C<$*PROGRAM_NAME>
20:43
RabidGravy dha++
masak dha++ 20:44
dha Decided not to put in the bit about stringification of $*PROGRAM as a) it's probably confusing and b) wouldn't fit on the line well. :-)
Thanks. :-)
dha So I have added FIVE WHOLE CHARACTERS to a p6 design document! ;-D 20:44
RabidGravy perfect 20:45
ugexe dynvars escaped name kabobing 20:45
masak am I the only one who thinks PROGRAM_NAME is both a little less ugly than PROGRAM-NAME, and easier to type on most keyboard layouts? 20:46
timotimo i have the least keyboard layouts 20:47
masak I've mostly come to peace with calling my identifiers things like `program-name`, even when vim gets the syntax highlighting wrong.
ugexe i like underscores asthetically for all uppercase stuff
masak but I would still go for `PROGRAM_NAME`, at least in my own code.
masak m: my %h = foo => 42; %h does role { method bar { say "OH HAI" } }; %h.bar 21:02
hello? camelia?
camelia rakudo-moar be122a: OUTPUT«OH HAI␤»
dalek kudo/nom: 6481e24 | timotimo++ | src/Perl6/Actions.nqp:
let the binding lowerer cope with ::?CLASS and role parameters
21:16
masak stormy on the IRCs tonight. 21:20
AlexDaniel masak: yup, but it's even worse on other channels 21:22
masak huh. 21:26
even with regards to netsplits, #perl6 is unusually nice? :)
AlexDaniel masak: netsplits? It is an attack, as far as I can see 21:27
RabidGravy boo! 21:42
masak_ jumps 21:43
RabidGravy has some one already RT'd that 21:43
m: Code(0) 21:44
camelia rakudo-moar be122a: OUTPUT«(signal SEGV)»
RabidGravy thing
masak RabidGravy: don't think so. please do.
jnthn Add it to the Code.new ticket 21:45
Which also SEGV'd and is almost certainly the same thing
masak ah, good idea. 21:46
RabidGravy I've concluded that rather than trying to guess whether SomeRandomType($some-value) will work is a mugs game, just trying it is best
RabidGravy but a SEGV somewhat militates against that approach ;-) 21:47
dalek href="https://perl6.org:">perl6.org: 78e2927 | Austin++ | source/style.css:
nav menu mobile overlap fix
href="https://perl6.org:">perl6.org: 65c5460 | ab5tract++ | source/style.css:
Merge pull request #18 from grandtheftjiujitsu/master

Navigation Menu Entries Overlap in Mobile View
RabidGravy I think that one was mine too :-\ serial Code abuser innit 21:48
dalek kudo-star-daily: 5f7875c | coke++ | log/ (2 files):
today (automated commit)
21:51
kudo-star-daily: 21c2945 | coke++ | log/ (2 files):
today (automated commit)
rl6-roast-data: dfb8e7e | coke++ | / (9 files):
today (automated commit)
rl6-roast-data: 73b9e32 | coke++ | / (9 files):
today (automated commit)
dalek ast: 8b5aeb6 | usev6++ | S26-documentation/09-configuration.t:
Use existing ticket number RT #124970
21:59
ast: 3d4f970 | usev6++ | S (2 files):
Use unique ticket numer for RT #124640
RabidGravy jnthn, was it #125376 you meant? 22:00
jnthn yes but *sigh* 22:01
RabidGravy If so it's slightly different 22:02
jnthn Fixing a VM level SEGV by papering over it in Rakudo is just plain stupid.
RabidGravy I'll re-open and update
jnthn Thanks.
Will see if I can hunt it down tomorrow 22:03
masak should I revert the fix?
jnthn masak: The Rakudo patch may still be the best way to give a good message there. 22:04
masak ok, leaving it in.
bartolin ha, I closed that one too early? 22:04
jnthn It's not that the patch is bad in itself, it's just sweeping a SEGV under the carpet is only asking for trouble later. 22:05
masak bartolin: no, it's fixed according to the letter of the law :)
bartolin g 22:05
masak (which is what a ticketing system should run on)
jnthn *nod*
Please do try and make sure SEGV-ing things get fixed deeply. 22:06
jnthn I'm jumping on those I can. In the worst case, they can be exploitable security issues. 22:06
bartolin okay, I'll keep that in mind.
masak that is indeed worth remembering. 22:07
RabidGravy in my mind the VM should never segfault
jnthn RabidGravy: Mine too, which is why I want us to fix those places it does. 22:08
masak in my mind software should never behave not to spec. 22:09
RabidGravy looking at the BT of the Code(0), I think it may be completely different though
masak,aye but nobody every puts "must not segfault/must not GPF" in a spec, 'cause y'know .... 22:11
masak maybe they should. :> 22:12
'night, #perl6 22:13
japhb RabidGravy: People do put "must be warnings- and sanitizer-clean" in specs though.
o/ masak
bartolin o/
RabidGravy true 22:14
also difficult to test 22:17
well a pain to test as you'd have to run each potential failure in a seaparate process and see how it exited 22:19
not sure you can even do that properly on windows
RabidGravy mebbe a Test::NoSegfault would be useful to module developers though 22:28
jnthn wonders if a "SEGV report" on testers.perl6.org would be do-able easily 22:30
RabidGravy It reports the exit code of the tests, this could be munged to determine whether there was a segfault (on Unux-like operating systems anyway) 22:33
dha s28 indicates that $( and $) are replaced in p6 with $*GID and $*EGID, but the docs on Variables only shows $*GROUP which, I'm guessing, is the real GID? Does this mean p6 actually has no $EGID equivalent? 22:36
RabidGravy not presently, $( is $*GROUP.Int IIRC 22:37
RabidGravy (that is I put those things in the Varaiables page but drank a lot of beer since ;-) 22:39
dha nope, Int isn't doing that, although since $*GROUP in numeric context is supposed to return the group number, I'm not sure why. $*GROUP.Str *does* return the group name.
RabidGravy let me look
dha $*GROUP.perl gives me IdFetch.new 22:40
RabidGravy ah $*GROUP.Numeric
dha Ugh. 22:41
And $EGID is currently not a thing?
[Coke]_ wishes irssi
nevermind. 22:42
dha Well, I'm certainly glad you gave me that commit bit on the design docs. Looks like I'll be using it a bit... :-) 22:43
And, oddly, $( in Perl 5 is giving me a whole bunch of numbers. weird. 22:45
RabidGravy actually, IdFetch is probably odd, I think those things are broken and should be IdName objects 22:47
dha So... Obviously s28 should be amended with respect to $*GID/$*GROUP. Should I leave $*EGID alone there or indicate non-implementation? 22:48
RabidGravy I'd leave it for the time being. I don't believe the population of $*USER/$*GROUP is doing what it is intended to do 22:51
dha ok, I won't mess with s28 on user and group vars. FOR NOW. 22:52
RabidGravy (in src/core/Process.pm in rakudo at least )
RabidGravy with my code archaeology hat on, I think someone forgot the .fetch in the BUILD of the IdFetch and some one implemented the rest of the code as if that was deliberate 23:03
RabidGravy will do patch in morning 23:06
dha Ok, moving on... $a and $b: no longer special at all, or does "Just params to anonymous block" (from s28) really mean something?
lizmat_ dha: there is no special meaning 23:07
dha ok. Should that line be taken out of s28, then? 23:07
dalek ecs: bbb0e90 | lizmat++ | S28-special-names.pod:
Clarify lack of special meaning of $a,$b in Perl 6
23:09
lizmat dha: yes ^^^ :-)
RabidGravy :)
lizmat calls it a day (again)
.oO( sleeping in on my own bed for a change )
23:10
dha Yay!
RabidGravy yaw, bed time for me too 23:19
dha What? You can't go to bed! Who will answer all my annoying questions?? 23:32
timotimo i'm going to bed soon as well, so ... i might not :\ 23:35
timotimo i mean: i might not answer your annoying questions 23:36
dha Right. :-) 23:37
maybe I'll take a break, then.