»ö« 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! | feather will shut down permanently on 2015-03-31
Set by jnthn on 28 February 2015.
skids grondilu: all sized types are currently faking it and stored as an int64. They just have some magic surrounding assigments; apparently that magic is broken when the high bit is set. 00:13
labster j: say any("foo","bar") ne ""; 00:21
camelia rakudo-jvm 8b639b: OUTPUT«cannot connect to eval server: Connection refused␤»
dalek pan style="color: #395be5">perl6-examples: 9fad392 | (Nathan Brown)++ | categories/cookbook/01strings/01-00introduction.pl:
Double quoted string example should use qq//
01:15
nbdsp Greetings! Could someone advise please how to call base class method from a derived one using WALK (not with callsame) ? 01:19
class B { method meth() { say "Base meth" } } class D is B { method meth() { my @cands := self.WALK( :super, :name<meth> ); self.*@cands(self); say "Derived meth" } }
my $d = D.new; $d.meth;
TimToady WALK is not implemented 01:20
you can use .can to find all the candidates though
nbdsp ohh.. only callsame?
TimToady m: 42.^methods 01:21
camelia ( no output )
TimToady m: say 42.^methods
camelia rakudo-moar 8b639b: OUTPUT«Int Num Rat FatRat abs Bridge chr sqrt base polymod expmod is-prime floor ceiling round lsb msb narrow Range sign conj rand sin asin cos acos tan atan atan2 sec asec cosec acosec cotan acotan sinh asinh cosh acosh tanh atanh sech asech cosech acosech cotan…»
nbdsp thanks! will try .can() 01:22
TimToady m: say 42.can('gist')
camelia rakudo-moar 8b639b: OUTPUT«gist gist␤»
TimToady m: say 42.can('perl')
camelia rakudo-moar 8b639b: OUTPUT«perl perl␤»
TimToady m: say 42.can('perl')[0](42) 01:23
camelia rakudo-moar 8b639b: OUTPUT«42␤»
TimToady m: say (-42).can('abs')[0](-42)
camelia rakudo-moar 8b639b: OUTPUT«42␤»
TimToady m: say Int.can('abs')[0](-42)
camelia rakudo-moar 8b639b: OUTPUT«42␤»
TimToady m: say Int.can('abs')[1](-42)
camelia rakudo-moar 8b639b: OUTPUT«42␤»
nbdsp TimToady: thanks! 01:24
nbdsp Greetings! Could someone advise please is there a way to specify as a default value for a subroutine parameter, the name of the calling subroutine? 03:01
m: sub bar( Str $s = CALLER::<&?ROUTINE>.name ) { say "Function: bar, Caller: $s" }; sub foo () { bar() }; foo;
camelia rakudo-moar 8b639b: OUTPUT«Function: bar, Caller: bar␤»
adu nbdsp: yes 03:04
yoleaux 9 Apr 2015 07:45Z <timotimo> adu: __FILE__ and __LINE__ don't quite compare to querycodeinfo, because we already have $?FILE and $?LINE, and also it doesn't go via the stack at all, so you don't need a stack frame and you don't need to invoke the thing you want info about
adu that was a week ago, it really has been too long 03:05
nbdsp adu: the snippet I pasted doesn't determine the caller's name (it prints the callee name) 03:07
raydiak m: sub bar( Str $s = CALLER::CALLER::<&?ROUTINE>.name ) { say "Function: bar, Caller: $s" }; sub foo () { bar() }; foo; 03:11
camelia rakudo-moar 8b639b: OUTPUT«Function: bar, Caller: foo␤»
raydiak adu! \o
nbdsp raydiak: thanks!
raydiak nbdsp: yw :) I imagine the explanation is something along the lines of the default value being it's own little implicit closure with its own CALLER 03:12
adu raydiak! 03:14
nbdsp raydiak: it seems so 03:15
adu The spec says that a CallFrame object should have a caller method, but I got "No such method 'caller' for invocant of type 'CallFrame"
adu raydiak: how goes? 03:16
raydiak adu: it's a mess but I won't complain :) you? 03:17
adu I'm good, I just got back from Florida 03:18
well, a week ago
raydiak oh cool; what for? vacation? 03:19
adu vacation
the sun was warm :)
raydiak very nice, can't wait till it migrates further north :)
adu yup, tell me about it 03:20
I've also been shifting my focus from crypto back to http, I wonder, how are Perl6 http libs coming along? 03:21
raydiak hmmm; idk to be honest...there are a few server modules but not sure how complete/maintained each one is 03:22
adu raydiak: have you heard much news about NativeCall? 03:26
or what was it, Inline::C?
raydiak some about nativecall...don't know much about inline::c 03:27
actually scanning the weekly is probably better than my memory :) 03:29
adu lol 03:30
ok
raydiak is rw for native types like int (vs Int) is a good one
which basically just treats it like a pointer 03:31
a lot of progress on unsigned types, and more things you can put in a CStruct but I don't recall what precisely 03:32
adu cool 03:33
raydiak oh you can pass a Buf to a nativecall sub, dunno if you knew that one already
adu I did not
raydiak oh you can pass a sub to is native() to generate the name of the library at runtime, so you can e.g. check different paths and versions 03:36
leedo st0nss 03:39
eep, sorry 03:40
raydiak :)
leedo changes password ;_;
raydiak hm now that we know what it was we can race to see if you used it on any of your other accounts... 03:41
adu: a few of the nativecall bindings in the ecosystem use that 'is native(&)' to support windows with included .dlls if they aren't already installed, like zlib and gtk 03:43
afkish, eating 03:44
adu lol 03:50
adu www.bash.org/?244321 03:53
dalek ast: b4e6405 | TimToady++ | S03-operators/arith.t:
exact error testing considered harmful
04:23
kudo/nom: 9a29d99 | TimToady++ | src/ (2 files):
don't just tell me you couldn't bind Failure!!!
04:24
adu who is supernovus?
dalek ast: 7fea29f | TimToady++ | S03-sequence/basic.t:
mark test with RT

fixes #114326
04:30
synbot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=114326
tony-o .tell supernovus is supernovus 04:46
yoleaux tony-o: I'll pass your message to supernovus.
tony-o oops
.tell adu supernovus is supernovus
yoleaux tony-o: I'll pass your message to adu.
labster tell tony-o longcat is long 04:54
and tautologies are tautologies :)
nbdsp Greetings! Could someone advise please how to export enumerations with the same name from different classes? 05:46
m: class B { enum E is export <A B C> }; class D is B { enum E is export <A D F> };
camelia rakudo-moar 9a29d9: OUTPUT«5===SORRY!5=== Error while compiling /tmp/0lxuHOzMa3␤A symbol 'E' has already been exported␤at /tmp/0lxuHOzMa3:1␤»
PerlJam nbdsp: From the inside, I think the answer is "don't do that". Or, if you must export them both, rename one of them. 06:04
moritz nbdsp: don't export, use B::E and D::E to access the enums instead 06:05
raydiak yes what would you expect E to mean in a context which imports both? better to export neither and always...what moritz++ said :) 06:06
PerlJam Though, there is the isomorphic situation where "I'm trying to use these two modules (that I have no control over) together, but they both export a symbol of the same name" 06:11
nbdsp moritz: thanks! will use D::E 06:13
moritz raydiak: it could open an interactive prompt asking which was meant each time it's used :-) 06:14
TimToady note that it's not fatal if the individual enums conflict, they just poison each other
(on import, at least) 06:15
masak I always liked that part. 06:30
morning, #perl6
masak m: enum A <g h i j>; enum B <d e f g>; say g 06:31
camelia rakudo-moar 9a29d9: OUTPUT«Potential difficulties:␤ Redeclaration of symbol g␤ at /tmp/X5uopa1NJc:1␤ ------> 3enum A <g h i j>; enum B <d e f g>7⏏5; say g␤Cannot use poisoned alias g, because it was declared by several enums.␤Please access it via explicit pa…»
masak oh, maybe it's just for import.
masak oh wait -- it does the right thing, I think. 06:32
I was thrown off by the redeclaration warning :)
TimToady m: my $fale = 3 % 0; $fale.abs 06:42
camelia rakudo-moar 9a29d9: OUTPUT«Earlier error:␤ Divide by zero using infix:<%>␤ in file Who Knows? at line Beats Me!␤␤Type check failed for return value; expected 'Int' but got 'Failure'␤ in any return_error at src/vm/moar/Perl6/Ops.nqp:639␤ in sub infix:<%> at src/gen/…»
TimToady now is someone will just figure out how to pass a file and line through along with the failure... 06:44
s/is/if/ 06:45
masak "Who Knows?" and "Beats Me!"? really?
TimToady those are...placeholders :)
masak I don't think a compiler should try to be witty in the face of lack of knowledge...
arnsholt I was amused by those, but probably LTA for actually helpful error messages, yeah =)
TimToady well, motivation for someone to fix it :) 06:46
masak before release.
mathw o/ 07:18
masak \o 07:23
sjn o7 07:25
masak ᕕ( ᐛ )ᕗ 07:28
tadzik (☞゚ヮ゚)☞ 07:29
sjn .u ᕕ( ᐛ )ᕗ 07:31
yoleaux U+0020 SPACE [Zs] ( )
U+0028 LEFT PARENTHESIS [Ps] (()
U+0029 RIGHT PARENTHESIS [Pe] ())
tadzik so simple
sjn good to know :)
jnthn TimToady: WALK is implemented: github.com/rakudo/rakudo/blob/nom/...Mu.pm#L514
TimToady interesting, I've never seen it used... 07:33
jnthn Me either, but it's there and tested, I believe 07:35
You can probably get file/line numbers out of the Exception contained inside of the Failure. 07:36
Snarky placeholders are worse than just leaving them out.
TimToady I tried getting a backtrace out and failed miserably
but I figured something was better than nothing 07:37
and I was working on my taxes, which will make anyone snarky... :) 07:38
dalek kudo/nom: 7ae1e89 | (Jonathan Stowe)++ | src/core/Process.pm:
Crude implementation of $*HOME

Currently we get:
ecaf8ea | lizmat++ | src/core/Process.pm: We don't need to check for definedness anymore
07:39
lizmat sorry dalek 07:39
jnthn TimToady: From what I understand of taxes in your part of the world yes... :) 07:39
jnthn has lived in Sweden for the last several years, had a simple income structure, and so "doing the taxes" has boiled down to "send an SMS to the tax office saying I agree with their numbers" :) 07:40
xiaomiao jnthn: be glad it's that simple for you 07:41
I had my tax form rewritten wrongly three times by german bureaucrats
if I had been closer to their office I would have asked them in person why they think that inventing income for me makes any sense at all
jnthn Urgh 07:42
jnthn sees he has been spoiled 07:42
xiaomiao oh. and they double-taxed me 07:43
which means about 120% peak tax load
that should have been impossible with the unique tax id, of which I was asigned two
which should have been impossible ... but ... hmm ... FUUU ;)
jnthn Germany. It's so darn efficient they give you *two* unique IDs! 07:44
mathw That sounds annoying.
Haven't they heard of relational database theory?
xiaomiao jnthn: I'm a foreigner
thus most simple forms tend to not be able to capture me properly 07:45
jnthn Ah. I'd say "me too in Sweden", but maybe me only being an EU-foreigner helps there. :) 07:46
psch hey #perl6 \o 07:48
[Tux] tadzik, is it still needed to RT the precompilation error? Did you inform jnthn ? 07:49
tadzik [Tux]: yeah, there is, no I did not :) 07:50
[Tux] I have no idea how to describe it other than "precomp fails (segfault)" 07:50
psch boxed "0" is apparently still False on jvm 07:55
psch which, i think, means that Str still uses MODE_UNBOX_STR_NOT_EMPTY_OR_ZERO? 07:55
i can't find anything that looks like it sets that, though
jnthn [Tux]: Please RT things as well as / rather than telling me; my memory isn't *that* good :) 07:57
[Tux] I just realized that we didn't. It was not on purpose
lizmat psch: I'm not seeing that? 07:58
perl6-j -e 'say ?"0"'
True
jnthn [Tux]: Wasn't sayin' it was, just requesting an RT when you get chance :)
psch lizmat: oh, right, i was imprecise 07:59
psch lizmat: i'm seeing test failures in S04-statement-modifiers/values_in_bool_context.t 07:59
lizmat ah, ok, will look at them
psch lizmat: i.e. "0" in statement_mod if
lizmat: e.g. «say 1 if "0"» doesn't print 08:00
on jvm
lizmat confirmed 08:02
psch FROGGS++ had patched it, but that broke stage0 or so iirc
and jnthn++ fixed that, but not it's not working quite right 08:03
FROGGS hmmm
dalek rakudo/newio: 7ae1e89 | (Jonathan Stowe)++ | src/core/Process.pm: 08:29
rakudo/newio: Crude implementation of $*HOME
rakudo/newio:
rakudo/newio: Currently we get:
rakudo/newio:
lizmat sorry again, dalek 08:29
afk&
masak at some point I would like to get a handle on and catalogue how different languages handle the unification (or lack thereof) of methods vs subroutines. 09:31
strategies like bound methods etc.
maybe compare Python, JavaScript, Perl 5 and Perl 6. 09:32
dalek p: 2f20465 | paultcochrane++ | examples/rubyish/ (23 files):
Remove executable bit on rubyish example text files
09:40
|Tux| jnthn, rt.perl.org/Public/Bug/Display.html?id=124298 09:52
jnthn |Tux|: Thans. 10:02
*Thanks
Ven masak: js' eta-expansion is completly broken 10:18
(other languages have it rough... scala's is broken as well, mostly due to multiple argument lists) 10:19
DrForr I've lost my link to the grammar debugging tools, any idea? 10:22
jnthn Top hit on google for "grammar debugger" :) 10:27
Timbus have you checked your pockets. or the kitchen table
DrForr thanks. I've been assuming Google has the same problem with perl6 as it does with perl5 :)
itz_ I'm generally finding better perl search results with DDG 10:28
jnthn itz_: Thanks for getting my blog on pl6anet :)
itz_ np 10:29
jnthn tries to work out how to say "pl6anet" out loud :)
itz_ yeah it works better written :)
RabidGravy pluh-six-a-net 10:30
DrForr Hrm, it'd be nice if panda warned me that I skipped 'install' on the CLI. 10:31
Ven jnthn: wow, it actually is, even without any prior perl6 searchings! 10:46
itz_: they're biased :P 10:47
Ven says "pl6anet" very successfully out loud.. in french :P
jnthn
.oO( French spoken loudly enough will be successful anywhere... )
cdc pronounces "planet 6" 10:49
dalek ecs/newio: 438163b | (Stéphane Payrard)++ | S99-glossary.pod:
bundle, Task::Star, irc related infos
11:13
ecs/newio: ecda04f | (Stéphane Payrard)++ | S21-calling-foreign-code.pod:
S21: removing now obsolete mentions of zavolaj

Introducing nl-reading/nl-saying, comments welcome
Earlier versions of the spec and the implementation used only the rather verbose "input-line-separator". This was later shortened to "nl", but we lost the inputness of the separator. Since we only use the new line separator on "say", I thought it would be approriate to name that case "nl-saying". Consequently, extending "nl" to "nl-reading" seemed appropriate.
lizmat
.oO( loving dalek means never having to say sorry )
11:13
moritz
.oO( extermi..love )
11:23
lizmat masak moritz others: comments ? ^^^
jnthn reading and saying aren't really opposites... 11:29
Givne we have .ins and .outs for counting, maybe nl-in and nl-out
lizmat do we have .outs ?
jnthn I dunno :)
moritz we have not
lizmat we only have .ins 11:30
jnthn I was assuming we may given we have .ins :)
lizmat do we really want to keep counting the number of new lines, or the number of says ???
moritz iirc the reason for not having .outs is the possible confusion about what it means if you do $fh.say("abc\nde") (1 or two outs)?
lizmat: no
nwc10 surely we also need to count all the .shake-it-all-abouts ? 11:31
jnthn If you want it you can wrap the IO ahndle object I guess
lizmat nwc10: that's easy
jnthn but you could argue that for .ins too :)
lizmat indeed
moritz well, for ad-hoc parsing it's very handy 11:32
moritz next if $handle.ins == 0; # ignore title row 11:32
lizmat seems to me that could be done with a once block :-)
lizmat once next 11:33
lizmat m: sub a { once return; say "a" }; a; a; a 11:35
camelia rakudo-moar ecaf8e: OUTPUT«a␤a␤»
Ven :o
Ven lizmat++ # tricks! 11:35
lizmat jnthn: I would be against "nl-out" because that could give the impression that $*OUT.print would also do an nl-out 11:37
jnthn lizmat: Hmm
OK
lunch and shopping time here...bbiab 11:38
[ptc] domidumont: only just realised you are one of the Debian Rakudo maintainers. Doh! Sorry, if I've been talking more nonsense than usual! 11:52
domidumont [ptc]: no problem :-) 11:54
dalek kudo-star-daily: fe043b2 | coke++ | log/ (2 files):
today (automated commit)
11:56
nwc10 does debian have MoarVM packaged yet? Or is it going to be a bunch of pain? 11:59
domidumont nwc10: moar is packaged and under review by ftp-masters (the gatekeepers that inspect new packages), see ftp-master.debian.org/new/moarvm_2015.03-1.html 12:01
nwc10 ooooooh
but just amd64?
domidumont Many thanks to Daniel for the work
nwc10 anyway, amd64 alone is wonderful. Please pass on my thanks
domidumont nwc10: the build will be tried on all available archs. We'll see which one will make it ... 12:02
nwc10 should pass on i686
will fail some tests on power64 and power32
er, wait 12:03
that's Rakduo failing tests on those architectures
nwc10 sould work, dammit, on i686, power32, power64 and hopefully still arm 12:03
and hopefully anything else, as that's most of big and little endian, 32 and 64 bit, various alignments, signed and unsigned char 12:04
domidumont minor update: many thanks to nebuchadnezzar for the work (just realised he's also on this channel ;-) ) 12:06
nwc10 nebuchadnezzar++
(then)
dalek kudo/nom: 2d379e4 | peschwa++ | src/Perl6/Metamodel/BOOTSTRAP.nqp:
Set the correct boolification spec for Str.

Moar apparently handles this somewhat different than JVM, but this passes S04-statement-modifiers/values_in_bool_context.t again.
12:09
itz_ 12:10
Guest16638 is there any per6 cpan in the works? 12:14
moritz Guest16638: well, there's modules.perl6.org, and panda, which can install those modules
Guest16638: and there's work in progress to be able to upoad Perl 6 modules to CPAN
Guest16638 so trying to make a new repository for perl 6 is sort of redundant? 12:15
Guest16638 is CPAN going to be the offical place to store P6 modules? 12:16
nwc10 CPAN
it feels like it ought to be. PAUSE already has some idea how not to get confused by them
FROGGS++
[ptc] Guest16638: afaik the short answer is: yes
Guest16638 if I wanted to help with the perl6 on CPAN, is there a project page on it or a working group? 12:17
[ptc] domidumont: so once moarvm is in, will the rest follow, or do you want to make a complete moar, nqp, rakudo set of packages at the same time? 12:18
domidumont: what is the best way to feed changes back to you? Can one submit patches to the Debian git repo?
domidumont [ptc]: the rest will follow as separate packages. parrot will be dropped 12:19
[ptc] domidumont: very good :-) 12:19
domidumont: so is it even worthwhile us keeping the Debian stuff in os-build?
domidumont: probably not, right?
itz I think I actually prefer github (although vendor lock in bad) to CPAN :)
domidumont [ptc]: I think not. I'd rather you spend you energy directly contributing to Debian repo by joining the rakudo team 12:20
I mean debian-rakudo team
[ptc] domidumont: ok
nwc10 I like the *A* and *N* bits. 12:21
I wonder how much code history is going to be lost when gitorious and google code both turn off.
domidumont [ptc]: by joining the team, you get commit right to Debian repo. I review package and upload them in Debian. We did this for moarvm package 12:22
nwc10 (not *massive* amounts, but I think that both are canonical upstreams for various dormant-but-useful projects)
domidumont [ptc]: See ddumont.wordpress.com/2014/07/18/l...or-debian/ and alioth.debian.org/projects/pkg-rakudo/ 12:23
FROGGS Guest16638: there is no project page, but I can try to supply information about that topic...
[ptc] domidumont: thanks! 12:24
FROGGS Guest16638: in the meantime you can check usev5.wordpress.com/ (which mentions the CPAN work, though is dated june 2014), and this: github.com/tadzik/panda/tree/CPAN
[ptc] domidumont: great to have you around. The Debian perl* maintainers have been doing a fantastic job 12:25
domidumont [ptc]: thanks. perl5 team is much more active. pkg-rakudo has only 2 more or less active members (I count myself on the "less" side) 12:26
lucasb IO::Path is not allowed here in restricted setting. In my old rakudo, I get my homedir with this: perl6 -e 'say IO::Path.new("")' 12:30
Is this supposed to be so? 12:31
moritz with an empty string?
that sounds... weird
lucasb Yes, an empty string
What did you get?
moritz I haven't tried 12:32
lucasb Oh :)
[ptc] domidumont: request to join maintainers submitted :-)
domidumont great ! welcome aboard :-D
nwc10 ++[ptc]
Guest16638 itz: are you talking about CPAN pulling modules from GitHub? 12:33
lucasb I was thinking about HOME env var being tested for truth instead of definedness. I think an env var can be set to an empty string before invoking the process. 12:34
Since this is at user resquest, then maybe it should be respected, and the value should be tested for definedness? 12:35
FROGGS Guest16638: panda should allow to install from github and/or CPAN 12:36
Guest16638 FROGGS: it would be cool if there was an easy way to import a module from GitHub into CPAN... and have CPAN run checks on it before. I find uploading to CPAN a pain in the ass. 12:39
Python is annoying because modules are stored all over the place... CPAN rules because they're all in one spot 12:40
DrForr Guest16638: Dist::Zilla has some wonderful hooks for that. 12:41
DrForr muses on 6::Zilla.
FROGGS Guest16638: aye, though we have to take small steps...
Guest16638: what you imagine might work some day, but we have to make it work at all first :o) 12:42
Guest16638: the current "blocker" is the not so small dependency chain we have to put into panda in order to work with CPAN
moritz maybe we need a bootstrapping minipanda, and that can install the "real" panda 12:44
FROGGS moritz: that idea ain't bad...
Guest16638 FROGGS: yeah that's why I was wondering if there was a P6CPAN being built from the ground up. If possible I'd like to help with that. :)
FROGGS moritz: we might just 'try require' the stuff needed for CPAN... 12:45
FROGGS Guest16638: my way of thinking is: use PAUSE+CPAN (the storage/servers) to deploy the dists, and build up our own metabase.org/search.cpan.org website 12:46
masak thinks with a name like 'minipanda', how could we not do it that way? :) 12:51
.u panda 12:52
yoleaux U+1F43C PANDA FACE [So] (🐼)
nwc10 um, but surely if you're running from CPAN you've got a fully featured bootstrapping language available :-) 12:53
moritz Guest16638: help would certainly be appreciated 12:57
Guest16638 why's everybody on freenode and not irc.perl.org? 13:04
[ptc] has wondered that for a while, but was too shy to ask 13:05
moritz well, when au++ started this channel, she wanted to lower the bar for non-perl folks to join 13:06
Guest16638 smart move :) 13:06
moritz I mean, *everyone* else is on freenode; it's just those p5 folks that stick to their own servers
(ok, that was exaggerated; the Debian folks also aren't on freenode)
Guest16638 I just mean there are like 10 people on the perl IRC server and way way more on freenode 13:07
taking a lot of the simplicity around Python and adopting it to Perl 6 would go a long way 13:08
it would get a lot more kids trying it
grondilu did not even know irc.perl.org existed. 13:11
Ulti I didnt realise the freenode one existed 13:12
the official one is irc.perl.org right?
[ptc] Ulti: to a certain degree, yes. Just not for perl6 13:12
moritz I don't think there's an "official" community :-) 13:13
Ulti there is another #perl6 on irc.perl.org?
moritz Ulti: only one to send people over here 13:14
nwc10 no, there's just an official test suite.
moritz declares himself official
Ulti moritz there are official IRC channels though in the sense they are linked from perl.org
dalek p: c229bc7 | paultcochrane++ | examples/ (2 files):
Purge trailing whitespace in examples/ dir
moritz there, you have it!
timotimo o/ 13:19
nwc10 raw.githubusercontent.com/iblech/t...slides.pdf 13:42
Ven timotimo++ # weekly 13:44
Ven I'm a little bit "worried" about Str.chars being 40% faster when on its own class – is it being it calls one less method? (say, .Stringy) 13:46
or is the inheritance mechanism slow
nwc10 which is public, given it's linked from here mail.pm.org/pipermail/augsburg-pm/2...00052.html
moritz Ven: afaict it's just that two method calls are slower than one 13:50
Ven fair enough. levels of indirection are always slow :)
moritz Ven: inheritance doesn't make method calls slower; it's all just a lookup in the method cache
Ven isn't it built on-demand? 13:51
moritz no, it's built at class composition time 13:52
which makes it possible to make the cache authorotative in some cases (that is, a method missing from the cache can't ever be found, and so the MOP doesn't need to be consulted to generate the exception)
Ven so you need to mark in the cache that you have a FALLBACK method somewhere in the inheritance chain? 13:54
moritz right 13:55
arnsholt Makes the methodcache non-authoritative, I guess? 13:57
moritz aye 13:58
arnsholt The 6model design makes a lot of sense to me. It's just a shame it's not a good fit for the Python object model =) 14:01
Ven September 23, 2014 14:07
timotimo what about it? 14:16
PerlJam timotimo: en.wikipedia.org/wiki/September_23 :-) 14:24
[ptc] PerlJam: still not understanding the point 14:26
PerlJam I didn't think there was a point. Seemed totally random to me. 14:27
[ptc] ok... 14:28
timotimo maybe accidentally pasted something somewhere? 14:42
dalek p: 13212ec | paultcochrane++ | src/NQP/ (4 files):
Purge trailing whitespace in src/NQP
14:51
[Coke] I would suggestion nl-in/nl-out instead of -reading/-saying
[ptc] would it annoy the nqp people if I did some basic source code cleanup? Just non-functional stuff, nothing major 14:53
[Coke] we try not to be as strict about code cleanup as parrot was. 14:54
I think it would depend on how invasive the cleanups were before anyone minded.
jnthn [ptc]: Just say what you're intending to do and see how pepole feel. "cleanup" is a bit too generic for me to have a good feel for :) 14:57
timotimo ohai jnthn 15:01
[Coke] I am remided that I want to make a CF grammar for rakudo so I can use it to pretty print my evil work code. 15:02
jnthn hi timotimo 15:03
[ptc] jnthn: that's why I thought I'd ask in the channel before I start wildly changing stuff 15:04
[ptc] jnthn: I'm a bit picky about trailing whitespace, tabs in source code etc., so cleanup means doing stuff like that 15:05
timotimo [Coke]: you think i should try to get a job in developing ColdFusion? :P
[ptc] jnthn: maybe I'll look into the docs if I stumble across something
jnthn [ptc]: Tabs to spaces I'm fine with, we should really be using spaces consistently except makefiles...
[ptc] jnthn: I really don't mind cleaning around people to try and keep some of the entropy down. Just so long as the changes don't annoy people, as I know this is possible 15:06
PerlJam [ptc]: The only comment I have is (and this may be completely obvious, but I'm a fan of being explicit) that the "cleanup" commits be atomic and clearly labeled.
[ptc] PerlJam: will try to keep them small and clearly labelled :-)
FROGGS yes, a tiny patch (bugfix or whatever) that removes a hundred trailing space chars is not the best thing one could do :o) 15:08
jnthn I don't get the desire to clean up trailing whitespace. On lines with content it should be rare already. On space-only lines, who cares.
PerlJam
.oO( What happened here? This commit touched every line of the source! )
15:09
FROGGS jnthn: some ppl just configure their editors to clean them up, though that will result in a mess with 3k loc files
[ptc] jnthn: also git likes to clean such things up. For me it's just a bad habit that I change stuff like that, it feels sort of "messy" 15:10
jnthn: anyway, that's why I wanted to ask in the channel before I start annoying people
jnthn [ptc]: Yes, it makes life suck for those of us hunting problems using "git blame". 15:10
I guess there's a way to tell it "ignore whitespace only changes" though.
[ptc] I thought git handled whitespace-only changes... 15:11
there's an option somewhere that allows git blame to ignore such commits 15:12
[ptc] jnthn: git blame -w (just so you know) :-) 15:14
[Coke] timotimo: CF is an ok language to do web stuff in. I don't prefer it. 15:15
timotimo mhh
PerlJam [Coke]: I bet you can find a BNFish grammar for coldfusion out there somewhere that you could relatively easily turn into a Perl 6 grammar 15:16
[Coke] PerlJam: pretty sure the state of the art for cf parsing is antlr. 15:19
[ptc] another way of putting what I'm saying is: would it be useful for me to make changes a la the way the Cage Cleaners used to? 15:22
timotimo i didn't know "the Cage Cleaners" was a thing that actually exists
hoelzro good morning, #perl6! 15:23
[Coke] [ptc]: I don't think anyone working on nqp would find it particularly helpful, nope.
what would be helpful is running the doc tests and documenting more nqp opcodes.
[ptc] [Coke]: ok, that's a clear answer :-) Thanks. Good to know
[Coke] gist.github.com/coke/ac078396e8f21...nqp-opcode 15:24
PerlJam [Coke]++
timotimo i just recently added one, jnthn added a bunch 15:25
[Coke] timotimo++ jnthn++ 15:26
timotimo i mean
we added new opcodes
at least mine was added without the documentation
[Coke] Hey, someone broke the tests. :)
t/docs/opcodes.t .. No registered operation handler for 'substr2'
wonder if we relied on a parrot backend before to run the tests. 15:27
timotimo huh
jnthn I think substr2 was actually an implementation detail (a badly hidden one, mind)
timotimo could very well be
dalek p: 622e465 | coke++ | t/docs/opcodes.t:
substr2 doesn't exist everywhere; use substr
15:29
timotimo am i the only one who can't install JSON::Fast via panda
[Coke] Failed 288/1685 subtests 15:30
timotimo wow
TimToady timotimo: even the pattern doesn't have to be flipped, it's just offset: .after('foo') just means .before('foo',-3) 15:40
timotimo oh! 15:41
TimToady it's in the variable case that *both* the pattern and the text have to be flipped
timotimo i bet nobody else notices and it'll turn out all right
TimToady crosses his fingers and hopes real hard 15:42
timotimo i'm afraid i'm going too much into details for "outsiders" anyway :( 15:44
TimToady well, there has to be a balance, and I think you come pretty close to the optimal 15:45
timotimo why, thank you very much :) 15:46
TimToady please don't think I'm unappreciative of how much effort this is
timotimo my latest "style" of writing is heavily borrowed from lizmat
i wasn't thinking that at all :)
if you didn't appreciate it, i'm sure you wouldn't even mention it 15:47
TimToady thing is, our lawns are all drying out in California, so I have to be grumpy about something else insted...
abraxxa doesn't even have a lawn in his garden ;_( 15:48
TimToady lawns make some sense in, oh, England, where it's wet all the time, but in a desert, not so much... 15:50
abraxxa Top Gear lawn++
colomon ’s lawns have verged on being wetlands…
huf yes, england declares drought conditions and everything is still vibrant and green...
Ven timotimo: talking about balance of what to say in the weekly?
timotimo yes 15:51
you know the feeling, right? from the learnxinyminutes?
Ven yes 15:52
I even got feedback at salzburg from tim bunce on that
timotimo i recall 15:52
Ven "yak shaving!" 15:53
timotimo: maybe, say, "Uni" should link to *something* to explain what it is (or a parenthesized sentence)
timotimo mhh 15:54
Ven timotimo: I find that sentence to have the perfect balance: "TimToady improved [...] for a regexp match."
I know what it changed technically if I actually want to look it up, but I also know what's it's about if I'm a complete newcomer 15:55
timotimo i'll try to keep that in mind
timotimo but usually i write the weekly very late in the evening and when my brain is already asking for bedtime :P 15:56
Ven timotimo: it didn't struck me when I first read it, so I came back to it, and it seems okay to me. I know what "push/pop, elems" etc are (or at least should be if I'm interested in p6 :).). Maybe only "reprops" could be explained
timotimo maybe i should start improving the weekly by not writing it so late in the night
Ven (then again, it seems obvious it's the JIT's ops from name/talking about JIT right after)
timotimo that'll also give the benefit of appearing on a monday even to the USians
timotimo the nqp repo is HUEG 16:00
almost 100 megabytes
i'm suffering from that right now 16:01
arnsholt One of the SVN repos I work with is almost 8 gigs
If you add more extras, I've had it clock in at 20 =)
timotimo oh my lord
at least you don't have to clone 100% of it to work locally ...
[Coke] timotimo: how is it making you suffer?
arnsholt No, that's the size of the checked out copy 16:02
I don't want to know the size on the server...
timotimo building lots of rakudos under perl6-bench
oh god
[Coke] timotimo: ok. at least bench (i think) has a local copy it uses as a master so you don't need to clone it every time over a network
timotimo this one time i didn't use perl6-bench's built-in deduplication feature
right
i'm only getting 100 kilobyte/s from github 16:03
arnsholt timotimo: Yeah, it's a bit insane 16:04
timotimo the moarvm build stage ought to learn about --git-reference, too 16:05
at least under petl6-bench
"updating submodules"
timotimo damn, version bumpage made things harder than necessary 16:09
timotimo AFK
bobkare What is eqv between arbitrary objects supposed to do? I'm not sure what's meant by canonical representations in design.perl6.org/S03.html#Comparison_semantics 16:15
moritz bobkare: two objects can only be equvialent if they are of the same type 16:16
bobkare It would be quite handy to be able to easily test the AST generated by my parser by comparing it with a set of hand-built objects using is_deeply
I have something where the .perl output for both sides is identical but is_deeply say they are different 16:17
moritz bobkare: and you can write multi candidates for infix:<eqv> for user-defined types
moritz bobkare: if nothing is defined for a type, it uses object identity (===) 16:18
bobkare OK, so it's not meant to work like that out of the box
moritz nope
eli-se hi 16:19
bobkare I don't have the link any more, but I found an article about p6 testing saying is_deeply would by default compare all attributes for objects. Guess that's outdated information then. 16:20
TimToady arguably the degenerate case should be serialize both sides to something like JSON and see if those match, but not everything is serializable
the point of eqv is "Would these produce the same serialization if we were stupid enough to actually implement eqv that way?" 16:24
[Coke] is bitten by having an object with a same name as a builtin, which is then cached somewhere in the object model so a complete restart is the only way to fix it. <coldfusion problems> 17:00
preyalone Will Perl 6 be packaged like python3, with a dedicated perl6 binary? 17:07
nwc10 for the next decade or so, probably yes
literal can Rakudo's error messages be made a little more...parsable? I'm writing a syntax checker, and parsing the error messages from "perl6 -c" is a bit tedious since it always uses color codes even when output is not a terminal, and the column number has to be derived in a very roundabout way 17:08
nwc10 unlike Python, new Perl 5 versions will keep coming out as long as people want to work on it (or someone wants to organise paying people to work on it)
ugexe literal: --ll-exception ?
psch literal: any reason you can't catch the Exceptions and get line numbers and all from those? 17:09
nwc10 that feels like a work around. I think that literal's request is reasonable
(may not be totally reliably easy)
PerlJam psch: he might be parsing them with some non-perl thing.
psch nwc10: oh, it's definitely a workaround
psch PerlJam: true, but there's still rounding-it-with-perl6 somewhere, and that could wrap with a CATCH etc. 17:10
literal ugexe: --ll-exception is even worse, it does not indicate line or column number of the original source file, and prints a terser error (i.e. no "I was expecting this instead") 17:11
nine nwc10: I still believe it possible to have one binary for both Perl 5 and Perl 6 as S01 talks about
PerlJam nine: the desire for that should fade into irrelevance with time :)
psch eh, s/rounding/running/ 17:12
nine PerlJam: why wait? 17:12
literal psch, PerlJam: yes, this is non-perl, for showing syntax errors in a text editor 17:13
psch literal: Perl6/Grammar.nqp is a bit under-equipped for supporting something like that 17:14
literal: e.g. we don't have a "keep parsing, reset on the next sensible token"-mode
(that's of course not saying that efforts to use the existing capabilities are discouraged, they're just harder)
literal only catching the first error is good enough, but it would be nice if I could get the the column number as a number, and not have to skip over terminal color codes 17:15
nwc10 nine: pmichaud thinks that it's hard to get the comamnd line option parsing to work reliably
Perl 5 has different rules
I've not "studied" this in detail to see if it's really insurmountable 17:16
but there is a problem
psch literal: RAKUDO_ERROR_COLOR="" should turn color escapes off i think
PerlJam literal: set RAKUDO_ERROR_COLOR
what psch said
literal ah, nice
PerlJam literal: that's an environment variable btw 17:17
psch that's a spot where «"0" is True» kinda sorta bites us, i think
'cause env vars are Stringy, apparently 17:18
psch m: say %*ENV.pairs.map: { $_.value.WHAT } 17:20
camelia rakudo-moar 2d379e: OUTPUT«(Str) (Str) (Str) (Str) (Str) (Str) (Str) (Str) (Str) (Str) (Str) (Str) (Str) (Str) (Str) (Str) (Str) (Str) (Str)␤»
psch so RAKUDO_ERROR_COLOR=0 doesn't turn them off 17:20
literal it does on my rakudo (star 2015.03) 17:21
psch star-m: say so "0" 17:22
camelia star-m 2013.03: OUTPUT«False␤»
psch m: say so "0"
camelia rakudo-moar 2d379e: OUTPUT«True␤»
psch literal: ^^^
literal I see
psch changed on april 9th according to git log
it's more consistent now, i think 17:23
preyalone How do I get the script's own name in Perl 6? $0 no longer seems to work
literal m: say $*PROGRAM_NAME 17:23
camelia rakudo-moar 2d379e: OUTPUT«/tmp/MoIHWQaCX3␤»
preyalone literal: Thanks!
[Coke] m: say $0; 17:24
camelia rakudo-moar 2d379e: OUTPUT«Nil␤»
[Coke] I was kind of expecting a warning there.
psch "Match variable used with unset $/"? 17:25
lucasb m: say $42.foo.bar; say 'oh yeah'
camelia rakudo-moar 2d379e: OUTPUT«Nil␤oh yeah␤»
lucasb .say for $_, $/
m: .say for $_, $/
camelia rakudo-moar 2d379e: OUTPUT«Nil␤Nil␤»
lucasb Wasn't an idea about making $_ starting out as Any?
psch m: say $<ident>
camelia rakudo-moar 2d379e: OUTPUT«Nil␤»
psch lucasb: yeah, $_ and $/ should be Any 17:26
it's on RT somewhere...
lucasb m: /o/ 17:26
camelia ( no output )
lucasb m: /o/; 1
camelia rakudo-moar 2d379e: OUTPUT«Cannot call match(Nil: Regex); none of these signatures match:␤ (Cool:D: Any $target, *%adverbs)␤ in method Bool at src/gen/m-CORE.setting:16620␤ in block <unit> at /tmp/Vw_PDR2RFu:1␤␤»
lucasb m: /o/ // 1
camelia ( no output )
lucasb m: /o/ || 1
camelia rakudo-moar 2d379e: OUTPUT«Cannot call match(Nil: Regex); none of these signatures match:␤ (Cool:D: Any $target, *%adverbs)␤ in method Bool at src/gen/m-CORE.setting:16620␤ in block <unit> at /tmp/sdywne9x1H:1␤␤»
psch m: given Any { /o/ || 1 } 17:27
camelia rakudo-moar 2d379e: OUTPUT«No such method 'match' for invocant of type 'Any'␤ in method Bool at src/gen/m-CORE.setting:16620␤ in block <unit> at /tmp/IqlFqdb0jF:1␤␤»
preyalone Does Perl 6 have an equivalent to main unless caller;, the Perl 5 way to write modulinos? 17:37
psch preyalone: stackoverflow.com/questions/2928130...o-in-perl6
liztormato psch: making $_ Any will disallow Nil being passed around currently 17:38
hernan604 modulino ?
psch liztormato: yeah, i suspected there's some hangup. i'm fairly sure it's above what i'd want to touch :)
preyalone hernan604: A modulino is a script that can be run as a self-contained CLI program, or imported as a library into other scripts. 17:39
liztormato psch: I recall making it typed Nil specifically
hernan604 oh, never seen such thing
psch liztormato: RT #123175 is still open, so i suspect it's still supposed to be initialized as Any 17:40
synbot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=123175
psch liztormato: maybe that can work in some implicit BEGIN?
psch is mostly guessing there 17:41
liztormato No, $_ and friends are initialized deep in the nqp bowels, if I remember correctly
preyalone psch: cheers! 17:42
liztormato Thinking about this more, I think it was needed to have a failed match return Nil, as per speculation 17:44
arnsholt The automatics like $_ and $/ are initialized by the Rakudo NQP code, no? 17:45
psch according to the ticket we want it as "my Mu $_ = Any;" 17:46
i might misremember $/ to be initialized as Any, though
it doesn't seem sensible to have it like that, so i probably am
jnthn m: say $_; sub foo() { say $_ }; foo; 17:50
camelia rakudo-moar 2d379e: OUTPUT«Nil␤Nil␤»
jnthn ah, it is consistent there at least
FROGGS o/
jnthn But yeah, I'm a tad surprised, but maybe we don't need it for match
psch o/ FROGGS
jnthn These days
liztormato jnthn: psch will look at it when returned from cycling 17:51
jnthn No hurry, enjoy the ride :)
jnthn has just about finished cooking dinner :)
liztormato Unless someone beats me to it ;-)
&
psch has to start cooking dinner about now 17:52
psch hrm 17:53
i'm getting a SEGV in isDEPRECATED.t on moar
FROGGS is there still inconsistent boolness of "0" on jvm?
psch in MVM_coerce_istrue
FROGGS: no, but my patch that fixed it is probably the cause for the SEGV
FROGGS but you are talking about moar
psch yes
psch i fixed jvm by setting the boolification spec to 3 instead of 4 in BOOTSTRAP.nqp 17:54
and moar did the right thing before that
so the change of the boolspec mode did something breaky on moar
but fixed jvm
FROGGS ahh
psch (3 is MODE_UNBOX_STR_NOT_EMPTY, 4 is ~_OR_ZERO
) 17:55
psch back in ~20
nine psch: 20 seconds are over :) 17:55
psch back in ~20 minutes 17:56
:P
tadzik pictures nine with a timer, grinning "you won't get away this time..." 17:57
preyalone How do I append an array to a matrix in Perl 6? I used to push @($matrix), \@array; 18:00
pippo o/ #perl6 18:03
hoelzro preyalone: $matrix.push: @array.item # should do it, I think 18:04
FROGGS preyalone: $matrix.push( [@array] ) # same 18:05
hoelzro that .item call may be redundant, as well
pippo m: my enum date <Date>; my date = Date.today;
camelia rakudo-moar 2d379e: OUTPUT«5===SORRY!5===␤Type 'date' is not declared. Did you mean 'Date'?␤at /tmp/_mJXM3IeHW:1␤------> 3my enum date <Date>; my date 7⏏5= Date.today;␤Malformed my␤at /tmp/_mJXM3IeHW:1␤------> 3my enum date <Date>; my date 7⏏5= Date.today;…»
nwc10 OK, so on ARM
t/04-nativecall/03-simple-returns.t
# Failed test 'returning char works'
# at t/04-nativecall/03-simple-returns.t line 18
# expected: '-103'
# got: '153'
pippo How can I tell perl6 which date to use?
nwc10 oh, 1 more line than you needed
nwc10 same error on Power32 18:05
nine m: my @matrix; my @array = 1, 2; push @matrix, $@array; push @matrix, @array; say @matrix.perl;
camelia rakudo-moar 2d379e: OUTPUT«[[1, 2], 1, 2]<>␤»
nwc10 but not Power64
which is a bit strange
pippo m: my enum date <Date>; my $date = Date.today; 18:06
camelia rakudo-moar 2d379e: OUTPUT«No such method 'today' for invocant of type 'date'␤ in block <unit> at /tmp/TInzEdOgeD:1␤␤»
nwc10 but Power32 and ARM are both 32 bit plaforms with unsigned char
FROGGS nwc10: that's known
err
FROGGS nwc10: I am mistaken, I thought this is about the other test (which is marked as todo) 18:07
preyalone How can I reuse $i for several, unrelated loops in the same scope? 18:07
FROGGS m: my enum date <Date>; say Date.WHAT
camelia rakudo-moar 2d379e: OUTPUT«(date)␤»
FROGGS pippo: it is not the Date type from the setting you got there 18:08
FROGGS preyalone: use a pointy block for example... for @array -> $i { ... }; for @array2 -> $i { ... } 18:08
preyalone: or declare $i before these loops, if you mean something else then I showed 18:09
preyalone FROGGS: I'm not iterating over a pre-defined collection, I'm using the loop semantic
yeah
pippo m: my enum record <Date>; say Date.WHAT;
camelia rakudo-moar 2d379e: OUTPUT«(record)␤»
FROGGS ahh, C-style loops
pippo: Date is just a string of the enum 18:10
m: my enum record <Date>; say Date.perl # more explicit
camelia rakudo-moar 2d379e: OUTPUT«record::Date␤»
FROGGS m: my enum record <Date>; say Date()
camelia rakudo-moar 2d379e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/unHLD4F0pa␤Variable '&Date' is not declared␤at /tmp/unHLD4F0pa:1␤------> 3my enum record <Date>; say 7⏏5Date()␤»
FROGGS err
m: my enum record <Date>; say +Date
camelia rakudo-moar 2d379e: OUTPUT«0␤»
FROGGS right 18:11
pippo FROGGS: I know. But how can I tell perl6 to use the Date that returns a date after I defined the enum?
FROGGS m: my enum record <Date>; say record(0)
camelia rakudo-moar 2d379e: OUTPUT«Date␤»
[Coke] FROGGS: no, that's getting the date he just defined. :) 18:11
m: Date.WHAT.say # he wants this one.
camelia rakudo-moar 2d379e: OUTPUT«(Date)␤»
FROGGS I know
[Coke] ok. the code you were giving seemed to indicate otherwise, apologies. 18:12
pippo m: my enum record <Date>; my $date = Date.today;
camelia rakudo-moar 2d379e: OUTPUT«No such method 'today' for invocant of type 'record'␤ in block <unit> at /tmp/q60TJxb5Fi:1␤␤»
FROGGS pippo: can't you just have other enum values?
pippo Of course yes. :-)) Was only curious
FROGGS m: my constant CopyOfDateBecauseIMessWithIt = Date; { my enum record <Date>; my $date = CopyOfDateBecauseIMessWithIt.today; } 18:13
camelia ( no output )
FROGGS pippo: ^^
it is lexical...
pippo FROGGS: Thank you!!
[Coke] enums only poison other enums, not classes.
m: class Foo { sub new() { say "class"}}; enum Foo <Frob>; say Foo.WHAT; 18:14
camelia rakudo-moar 2d379e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/ve247xYWUo␤Redeclaration of symbol Foo␤at /tmp/ve247xYWUo:1␤------> 3oo { sub new() { say "class"}}; enum Foo7⏏5 <Frob>; say Foo.WHAT;␤»
FROGGS and like everything it poisons your namespace
[Coke] Seems like a bug that the enum declaration where you override a class should give that same message. 18:15
(even if that class isn't user defined)
FROGGS hmmm, I don't see a bug there
[Coke] but also dihwidt
er, to be clearer, I think pippo's code should give the error "redeclaration..." as my example with Foo did. 18:16
FROGGS [Coke]: you only redeclare something if it is in the same scope 18:17
m: class Foo { sub new() { say "class"}}; { enum Foo <Frob>; say Foo.WHAT; }
camelia rakudo-moar 2d379e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/hfgKk8e0uW␤Redeclaration of symbol Foo␤at /tmp/hfgKk8e0uW:1␤------> 3 { sub new() { say "class"}}; { enum Foo7⏏5 <Frob>; say Foo.WHAT; }␤»
FROGGS err
ahh, they are our-scoped by default 18:18
m: class Foo { sub new() { say "class"}}; { my enum Foo <Frob>; say Foo.WHAT; }
camelia rakudo-moar 2d379e: OUTPUT«(Foo)␤»
pippo [Coke]: it will be better. The example I gave is from one of my programs that was not working. That error message would have been more helpful.
preyalone Am I supposed to loop from $i = 0; to $i <= @array.end? In most programming languages, I would use $i < array.length or similar 18:21
moritz you can do that too
though we call it .elems
or you can iterate over @array.keys 18:22
pippo or +@array
arnsholt preyalone: Basically "length" is a discouraged term in Perl 6, it's just too ambiguous 18:22
FROGGS m: my @a = 'a' .. 'z'; for @a.kv -> $k, $v { say "$k => $v" } # preyalone 18:23
camelia rakudo-moar 2d379e: OUTPUT«0 => a␤1 => b␤2 => c␤3 => d␤4 => e␤5 => f␤6 => g␤7 => h␤8 => i␤9 => j␤10 => k␤11 => l␤12 => m␤13 => n␤14 => o␤15 => p␤16 => q␤17 => r␤18 => s␤19 => t␤20 => u␤21 => v␤22 => w␤23 => x␤24 => y␤25 => z␤»
FROGGS preyalone: .kv gives you the index and the value...
which is what I miss in other languages 18:24
preyalone FROOGS: cool
moritz iteritems in python2, items in python3 18:25
masak moritz: but only on dicts. in Perl 6, both arrays and hashes have .kv 18:27
moritz masak: aye 18:28
and I never understood why only on dicts 18:29
or wtf "iteritems" was supposed to mean
masak moritz: it's an iterator which gives you items
"item" is, I think, Python's word for Pair
moritz oh. 18:29
masak the original method .items in py2 predates the iterator model 18:30
FROGGS psch: I've got a patch but that break nqp pretty hard 18:37
RabidGravy is there any facility whatsoever to do something like "as 'nobody' { ... } " sort of like start but with a setuid?
psch FROGGS: that's curious 18:38
moritz RabidGravy: uhm, can threads even have separate permissions? 18:39
RabidGravy: I thought that only works on the process level
timotimo there's "enumerate" in python
which is my friend
FROGGS psch: gist.github.com/FROGGS/6dde2440e37351c834fe 18:41
psch FROGGS: what's confusing me is that moar did «if "0" { ... }» even though Str had the wrong boolification mode 18:42
FROGGS: and jvm only did «if nqp::unbox_s("0") { ... }» correctly
preyalone How can I import a subroutine meaning_of_life() defined in a sister file, ScriptedMain.pl? use ScriptedMain; doesn't seem to work. 18:43
psch FROGGS: so i'd assume there might be an unbox somewhere between Op::if and MVM_coerce_true
*an *additional* unbox
moritz preyalone: iirc require has an option to specify a file name 18:43
moritz preyalone: though the better style is to put the common subroutine into a modulle 18:43
dalek c: a24d845 | moritz++ | lib/Language/syntax.pod:
Talk about identifiers
18:44
preyalone Declaring a module name prevents my MAIN function from running >(
ugexe declare it as a class 18:45
ugexe preyalone: see github.com/ugexe/zef/blob/master/l...ef/App.pm6 and github.com/ugexe/zef/blob/master/bin/zef 18:46
TimToady wonders what "column" means in the age of Unicode...
geekosaur "wishful thinking"
preyalone ugexe: Thanks, I'll check those out. Should I be using .pm6, .pl6 as my file extensions, by the way? 18:47
FROGGS preyalone: that's up to you 18:48
preyalone ugexe: I'm used to sub MAIN { ... }, but in a module, should I use something else like multi MAIN { ... } ? 18:49
ugexe you dont have to declare sub or method for MAIN if you use multi 18:50
ShimmerFairy TimToady: reminds me of the idea I've had before of a monospace font that's actually designed as a "discrete font", to avoid squishing/stretching various characters too badly.
TimToady has wished for such a thing himownself
preyalone Do I have to say 'is export' for every method I want to expose? 18:51
ugexe i believe so
masak um you shouldn't need to export methods.
methods sit on objects, no?
RabidGravy :)
ugexe MAIN is built at a different time than normal methods and stuff
i think is the reason
preyalone I need to learn the syntax for defining static, class-level methods. 18:52
ShimmerFairy (and obviously variable-width fonts could be considered "continuous fonts" ☺) 18:52
masak m: class C { method foo { say "OH HAI" } }; C.foo
camelia rakudo-moar 2d379e: OUTPUT«OH HAI␤»
TimToady so it would know how to deal with a character like 𒁃
masak preyalone: ^^
preyalone: so easy! :)
ugexe m: class C { multi MAIN { say "OH HAI" } }; C.MAIN 18:53
camelia rakudo-moar 2d379e: OUTPUT«No such method 'MAIN' for invocant of type 'C'␤ in block <unit> at /tmp/_mXN8xfoOF:1␤␤»
masak ugexe: you forgot 'methgod'
er, method*
gah, lag
RabidGravy preyalone, they're just normal methods just can't access the object attributes in the same way
masak .oO( Heisenberg is the methgod ) 18:54
TimToady m: my enum date <Date>; my $date = OUTER::Date.today; 18:56
camelia rakudo-moar 2d379e: OUTPUT«No such method 'today' for invocant of type 'Any'␤ in block <unit> at /tmp/mpdCY6ZCKj:1␤␤»
TimToady m: my enum date <Date>; my $date = OUTERS::Date.today;
camelia ( no output )
TimToady m: my enum date <Date>; my $date = OUTERS::Date.today; say $date
camelia rakudo-moar 2d379e: OUTPUT«2015-04-14␤»
TimToady m: my enum date <Date>; my $date = SETTING::Date.today; say $date 18:57
camelia rakudo-moar 2d379e: OUTPUT«No such method 'today' for invocant of type 'Any'␤ in block <unit> at /tmp/WSrGuFHd5D:1␤␤»
preyalone My syntax isn't quite right. gist.github.com/mcandre/05d70f5871247078cb9b
TimToady m: my enum date <Date>; my $date = CORE::Date.today; say $date
camelia rakudo-moar 2d379e: OUTPUT«2015-04-14␤»
FROGGS psch: I think I found it
FROGGS ahh, the CORE:: pseudo package... of course 18:57
TimToady pippo: ^^
there's a reason we made all these things outer lexical scopes, and not a "prelude" 18:58
ugexe preyalone: try the way i showed and it will work
psch FROGGS: an extra unbox? neat, that'd mean my hunch wasn't totally off :) 19:00
RabidGravy and in the second case "use lib '.';" will fix
FROGGS psch: no, the P6Str in moar had the old boolspec
ugexe MAIN_HELPER or whatever builds the MAIN stuff doesnt happen at the same time as the rest of object construction. or something 19:01
psch FROGGS: ah! i hadn't thought to look for that. jvm doesn't declare P6Str, only P6str which is the native wrapper, afaiu
TimToady wonders how difficult it would be to teach irssi about characters outside the BMP...
FROGGS psch: err P6str, yes
FROGGS psch: I just managed to break nqp build by fixing the segfault 19:02
psch oh, i see it. bootstrap.c:604 has MVM_BOOL_MODE_NOT_EMPTY_OR_ZERO
FROGGS though that means I need to bump stage 0 again :/
stage0*
aye
psch i'm a bit surprised only isDEPRECATED.t segfaulted with that bool spec mode, though 19:03
which means there's weird code paths all around, i suspect
FROGGS psch: I can tell you why
psch FROGGS: do tell :)
FROGGS MVM_coerce_istrue with the MVM_BOOL_MODE_NOT_EMPTY case was an unused code path until you changed the boolspec in rakudo 19:04
preyalone Code updated. ScriptedMain.pm now runs, but test.pl can't import its code. gist.github.com/mcandre/05d70f5871247078cb9b 19:05
FROGGS so rakudo still used the MVM_BOOL_MODE_NOT_EMPTY_OR_ZERO boolspec, which did what MVM_BOOL_MODE_NOT_EMPTY should have done
ugexe because it needs to find its symbol. see github.com/rakudo/rakudo/blob/49f1...s.nqp#L309 19:05
nwc10 Files=973, Tests=38912, 3762 wallclock secs (83.44 usr 13.34 sys + 14199.48 cusr 322.47 csys = 14618.73 CPU) 19:06
psch FROGGS: i'm still wondering. changing the bool spec mode is what got me the right behavior for jvm in e.g. «if "0" {...}», but moar passed the file that tests for that
nwc10 Result: FAIL
ugexe i keep dreaming of MAIN as a trait 19:07
nwc10 t/spec/S02-types/isDEPRECATED.rakudo.moar and t/spec/S04-exceptions/pending.rakudo.moar seem to have SEGVd
FROGGS psch: yes, because I accidently made the old boolspec do what the new should
nwc10 FROGGS++ perl6-valgrind-m
FROGGS :o) 19:08
nwc10 valgrind+- # disInstr(arm): unhandled instruction: 0xEE073FBA cond=14(0xE) 27:20=224(0xE0) 4:4=1 3:0=10(0xA)
RabidGravy preyalone, "use ScriptedMain;" in the script
FROGGS nwc10: we are about to push a fix
(after spectest)
nwc10 FROGGS++ # after spectest
those two are known SEGVs right now?
psch FROGGS: oh, i see
FROGGS nwc10: I just knew about the former 19:09
nwc10 the latter was
psch i didn't investigate pending.t, but saw it fail too
nwc10 30 return s->body.num_graphs;
(gdb) p s
$1 = (MVMString *) 0x0
FROGGS but: t/spec/S04-exceptions/pending.rakudo.moar ..................... ok
nwc10 OK, this is ARM
FROGGS nwc10: yes, that sounds very much related
nwc10 so I don't know for sure if it's someting differently funky
nwc10 aha, same place, same NULL 19:10
30 return s->body.num_graphs;
FROGGS aye
nwc10 anyway, will take a while to re-run spectest
SpaceX will launch (or scrub) by then
T-3600s 19:11
preyalone RabidGravy: When I code "use ScriptedMain;", Perl 6 can't find the pm sitting in the same directory as test.pl. gist.github.com/mcandre/05d70f5871247078cb9b 19:11
moritz preyalone: you need a use lib '.'; for that to work
DrForr Because you haven't added '.' to your path. -I. or -Ilib depending upon where the module is.
RabidGravy which was there before :-\ 19:12
preyalone Do I type use lib '.'; before use ScriptedMain;, or do I pass that to the perl6 shebang?
DrForr Or the 'use lib...' method, I guess :) I prefer the latter as it's less fuss.
dalek rl6-roast-data: 625b657 | coke++ | / (9 files):
today (automated commit)
19:13
DrForr gets ready to file YA grammar bug...
preyalone Thanks all! Works! github.com/mcandre/scriptedmain/tr...ster/perl6
FROGGS k, spectest passes 19:15
DrForr How am I failing in 19:18
Guh, one sec.
gist.github.com/drforr/65c0664143cfccbb7a79 # The 'ok' tests are failing. 19:19
dalek p: 5a13871 | FROGGS++ | / (12 files):
bump moar and stage0 for boolspec fixes
kudo/nom: c2c8dcb | FROGGS++ | tools/build/NQP_REVISION:
bump nqp/moar for boolspec fixes
19:20
preyalone rakudo-star doesn't seem to offer a cpan6. How do I install something like LectroTest for testing Perl 6 code? 19:24
DrForr panda. 19:25
preyalone Oh, neat. panda!
So no quickcheck-like unit test library on panda yet?
ugexe what exactly is 'quickcheck-like unit test library' 19:27
DrForr 'use Test;' doesn't do what you want?
Can't get much quicker in my book than 'use Test; ok $g.parse("fo");' 19:28
preyalone QuickCheck is a unit test library that can generate random test cases, and check properties (lambdas) against them.
hoelzro preyalone: I was thinking about writing a generative testing library for Perl 6, but ENOTIME/ETAKINGONTOOMUCHALREADY 19:29
preyalone lol
vendethiel hoelzro: that's actually a very interesting idea 19:30
preyalone I've written basic ports of QuickCheck to a few languages, maybe Perl 6 would be an easy new port. www.yellosoft.us/quickcheck
psch osfameron++ was pondering porting hypothesis as hypothe6
vendethiel would be much more amazing with ADT though
DrForr Any comments on my gist, or should I just file another bug?
hoelzro psch: hehe, I like that name
masak preyalone: there was talk the other day about porting Python's new library, *mumble mumble*
hoelzro my thoughts on it were inferring generators to used based on the signature, and automatically generating properties based on PRE/POST and friends 19:31
RabidGravy use Test; for MyClass.^methods -> $meth { ok(MyClass.can($meth), "can $meth"); }
;-)
masak Hypothesis, it's called.
vendethiel RabidGravy: that seems totally useless :P 19:32
"the things you told me you have... do you have them?"
RabidGravy er, of course
it's called "a joke" 19:33
vendethiel hence the ":P"!
hoelzro: that's interesting, but you need to build the instance as well 19:34
psch DrForr: sigspace is messing with you somehow
hoelzro vendethiel: yeah, I just have some vague ideas at this point
vendethiel so, you need to introspect the class's members' types, then check the .^methods, check the signature for that, and generate arguments for those?
do we have *any way* to access PRE/POST? (that doesn't rely on nqp)
hoelzro vendethiel: I believe they're in the MOP
psch DrForr: changing 'rule' to 'token' in your gist passes 19:35
vendethiel hoelzro: alright
psch (i don't remember if rule is ratchet, if it is that could be it as well i suppose)
*isn't
DrForr psch: Nod, I'll look. Incidentally this is a fragment of github.com/drforr/perl6-ecmascript
hoelzro vendethiel: I think it's in &code.phasers? 19:36
psch DrForr: mind, that's not saying it's not a bug, just that one thing i could think of helps :)
DrForr Right, backtrack on HexDigit.
vendethiel m: sub f{PRE{$_ > 5;}; say 1}; f(5); say &f.^phasers; # maybe .^?
camelia rakudo-moar 2d379e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/lWiyxkWU1K␤Whitespace required after keyword 'PRE'␤at /tmp/lWiyxkWU1K:1␤------> 3sub f{PRE7⏏5{$_ > 5;}; say 1}; f(5); say &f.^phasers␤»
preyalone Yuck, I have to explicitly {2..2} in Perl 6 regexes. 19:37
vendethiel m: sub f($a){PRE {$_ > 5;}; say 1}; f(5); say &f.^phasers; # ouch; that segfaults
camelia rakudo-moar 2d379e: OUTPUT«(signal SEGV)use of uninitialized value of type Nil in numeric context»
psch m: say "aa" ~~ / a ** 2 /
camelia rakudo-moar 2d379e: OUTPUT«「aa」␤»
vendethiel segfaults are bad :[
masak ...mmkay? 19:37
psch preyalone: you don't, the ** quantifier takes integer constants as well 19:38
TimToady and bare ranges without braces
vendethiel m: sub f{PRE{$_ > 5;}; say 1}; f(5); say &f.phasers; # sig?
camelia rakudo-moar 2d379e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/xygvxyf8vd␤Whitespace required after keyword 'PRE'␤at /tmp/xygvxyf8vd:1␤------> 3sub f{PRE7⏏5{$_ > 5;}; say 1}; f(5); say &f.phasers;␤»
vendethiel m: sub f{PRE {$_ > 5;}; say 1}; f(5); say &f.phasers; # sig? 19:38
camelia rakudo-moar 2d379e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/N3cH1irBW0␤Calling f(int) will never work with declared signature ()␤at /tmp/N3cH1irBW0:1␤------> 3sub f{PRE {$_ > 5;}; say 1}; 7⏏5f(5); say &f.phasers; # sig?␤»
DrForr psch: Yeah, confirmed here. I do want this to handle whitespace on its own globally though, I'll look into the :sigspace adverb.
psch DrForr: fwiw, the rakudo grammar only defines those regexen that need to handle whitespace implicitly as rules 19:41
DrForr: and i don't imagine you want "0 x f \n A" parsed as one hex int literal
(unless ECMAscript is *that* crazy..?)
moritz
.oO( perl 5 )
19:42
DrForr Quite correct. I guess the name 'token' in this case is apt. 19:43
vendethiel .u ⋄
yoleaux U+22C4 DIAMOND OPERATOR [Sm] (⋄)
vendethiel how would you register "Arbitrary" instances for quick6check? 19:46
kbenson m: sub pmap(Code $func, @items) { await @items.map: { start { $func($_) } } }; pmap { .say }, (1,2,3,4); 19:48
camelia rakudo-moar c2c8dc: OUTPUT«2␤4␤3␤Unhandled exception: Cannot invoke this object (REPR: Null)␤ at <unknown>:1 (/home/camelia/rakudo-inst-1/share/perl6/runtime/CORE.setting.moarvm:throw:4294967295)␤ from src/gen/m-CORE.setting:23653 (/home/camelia/rakudo-inst-1/share/per…» 19:49
kbenson That a known error? 19:50
lizmat jnthn psch: the commit that made $_ default to Nil is b6e89999 from 13 Aug 2013 19:52
psch lizmat: RT #123175 is newer 19:54
synbot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=123175
psch is trying to bring his tr/// PR back to mergeable
kbenson: i'm also building perl6-j on the side to see what it says to your code. our evalbot doesn't run it at the moment 19:55
preyalone Do I have to do anything special in order to send custom -e, -d, -q -w -r -t -y flags to my Perl 6 scripts?
skids kbenson: that actually works for me locally.
kbenson psch: FYI it doesn't cause an error every run, and sometimes the error is different (for MVM)
psch preyalone: you can put named parameters onto MAIN, if you type them as Bool they don't accept values either 19:56
masak www.spacex.com/webcast/ 19:56
kbenson I've also gotten: Cannot call say(Int); none of these signatures match: 19:57
()
(Obsolete:D \o)
(Str:D \x)
(Any \x)
(Any |)
at <unknown>:1
colomon masak++
skids kbenson: Ah yes about half the time on my r-m it just hangs. And once in a while I get the backtrace.
psch dimly remembers a recent gist that showed similar behavior 19:58
but that one seems much golfederer
RabidGravy masak++
kbenson skids: sometimes for me it just works, maybe 20% of the time
vendethiel if I were to create a quickcheck lib in Perl6 -- should you register how to instantiate types in an object?
RabidGravy (had forgotten)
vendethiel "Obsoselete:D \o" amazing sig
masak it's a person waving to someone grinningly obsolete 19:59
lizmat m: say $*OS # that's what we need that for 20:01
camelia rakudo-moar c2c8dc: OUTPUT«opensuse␤Saw 1 call to deprecated code during execution.␤================================================================================␤$*OS called at:␤ /tmp/BRr7t6h0gt, line 1␤Deprecated since v2014.9, will be removed with release v2015.9!␤…»
lizmat *why
FROGGS m: my \a = any set <1 2 3>; EVAL "say 1 ~~ a" 20:03
camelia rakudo-moar c2c8dc: OUTPUT«===SORRY!===␤Object of type Junction in QAST::WVal, but not in SC␤»
lizmat is testing a fix for $_ becoming Any by default
preyalone How do I test for string non-equivalence? 20:04
lizmat ne
lizmat m: say "foo" ne "bar" 20:04
camelia rakudo-moar c2c8dc: OUTPUT«True␤»
lizmat m: say "foo" ne "foo"
camelia rakudo-moar c2c8dc: OUTPUT«False␤»
nwc10 T-6 min
(attention space cadets) 20:05
pippo TimToady: thank you very much. Now that I see it I can definitely say that it is what I was looking for. :-))
nwc10 particualrly as I seem to be lagged
lizmat is checking some spectest fallout 20:06
grondilu off topic: F9 launch in 5 minutes: youtu.be/csVpa25iqH0
lizmat T-4 mins here 20:07
preyalone How do I format an integer as a lowercase, two-zero minimum width hexadecimal number? Perl 6 doesn't like unpack("H*, 255)
sprintf? 20:08
grondilu or fmt
PerlJam m: say 1234.fmt("%h");
camelia rakudo-moar c2c8dc: OUTPUT«'h' is not valid in sprintf format sequence '%h'␤␤»
PerlJam m: say 1234.fmt("%x");
camelia rakudo-moar c2c8dc: OUTPUT«4d2␤»
arnsholt r-m: printf "%02x", 1
camelia rakudo-moar c2c8dc: OUTPUT«01»
skids kbenson: just 'await (1,2,3,4).map: { { start { .say } } }' also fails for me, just less often. 20:09
arnsholt Or %03x, if you want at least two leading zeroes
FROGGS m: printf "%#02x", 1 20:10
camelia rakudo-moar c2c8dc: OUTPUT«0x1»
FROGGS m: printf "%#03x", 1 20:10
camelia rakudo-moar c2c8dc: OUTPUT«0x1»
arnsholt In general, if you want to print stuff, printf can do it
FROGGS m: printf "%#04x", 1 # I'm not sure that this is right
camelia rakudo-moar c2c8dc: OUTPUT«00x1»
kbenson skids: making w/jvm to test more, so I can't help golf it down lower for a few more minutes
timotimo launch prep looks very good so far
masak T-30 seconds 20:11
nwc10 masak: you're lagged
(This time it's you, not me)
colomon buffering!
masak oh!
timotimo GOD DAMN IT
"three! too! one! buffering"
retupmoca up and away
timotimo no joke
arnsholt One of the neatest printf formats is %g, for rounding to significant digits
masak o.O
masak cries 20:12
colomon We actually skipped from T-10 to T+24 with buffering. :(
masak I may be lagged, but at least I'm not buffering
TimToady so another few minutes we should know about the landing try?
nwc10 yes 20:13
retupmoca 7m or so
nwc10 (or buffering...)
I'm bufferring now
retupmoca (T+8.5m I think for the landing)
nwc10 so I guess I miss stage separation :-(
TimToady hopefully the rocket buffering works :)
colomon dunno if they tell us what happened right away, though.
masak why the strange star-like shape of the exhaust fire? 20:14
TimToady probably get a tweet fist
*first!!
nwc10 wow. can see first stage
TimToady watch out for that tweet fist though
colomon masak: I presumed that had something to do with having 9 (?) engines?
kbenson is the first stage what's supposed to land back at the platform?
nwc10 kbenson: yes 20:15
kbenson or a barge, this time
masak colomon: that would explain it
the Earth looks so pretty from up here
colomon stage one boost-back startup, that’s good.
boost-back shutdown, dunno if that’s bad or not. :\ 20:16
retupmoca normal, I think
nwc10 IIRC there are 3 burns on stage 1
3rd burn is the actual landing 20:17
colomon hope you guys are right
retupmoca right, next is the reentry burn
nwc10 I don't care if *I'm* right. I hope that *they* get it right :-)
colomon that too. :)
yes!
“stage one entry burn has started"
nwc10 aha, you're less lagged than I am 20:18
labster go for it, stage one!
preyalone Does ~= concatenate with self?
FROGGS preyalone: it appends to the left hand side
masak m: my $s = "yes"; $s ~= ", it does"; say $s 20:19
camelia rakudo-moar c2c8dc: OUTPUT«yes, it does␤»
TimToady landing burn started
colomon fingers-crossed
errr, s/-/ /
go newfoundland! ;) 20:21
masak lag..g...g.. 20:22
bobkare yeah, I'm stuck at T+10m 20:23
colomon T+12 here
TimToady I have to ^R every 10 seconds or so
masak moved closer to his wifi router, and that helped
nwc10 masak: proving that the future is not yet evenly distributed? :-) 20:24
TimToady dragon has wings now
geekosaur raar
colomon yeah, that part of the mission is “nomial”
preyalone What's the correct syntax for matching two decimal numbers followed by hexadecimal digits?
masak nwc10: proving that these Linux wifi drivers leave a lot to be desired.
moritz preyalone: \d\d <xdigit>* 20:25
preyalone moritz: Thank you! How could I do this using quantifiers?
kbenson yoda-speak - remember us to follow online 20:26
preyalone And if I wanted to capture these as groups? /^(\d**2)(<xdigit>+)/) 20:27
psch was buffering every 10-30 seconds on a wired connection to the router
kbenson psch: Somebody needs to teach those people at Google how to scale their services. ;) 20:28
psch kbenson: livestream.com is google? i didn't know that 20:28
geekosaur oddly, once I got it to load at all it was pretty stable --- and my local network is being more of a notwork today
bobkare mine was fairly stable until about T+10m. And now I guess we just have to wait and see where they announce what happened with the landing 20:29
kbenson psch: Oh, was it? It looked just like a youtube embed for me at the space x site. It said livestream, but I tbhrough that was a youtube branding thing
kbenson s/tbhrough/thought/ 20:30
psch kbenson: i think it was embedded from livestream.com/spacex
bobkare @elonmusk on twitter: Rocket landed on droneship, but too hard for survival.
kbenson webcas 20:31
masak aww 20:32
kbenson psch: I don't doubt it, but I followed masak's link to www.spacex.com/webcast/
RabidGravy bobkare, yeah saw that :(
masak keep trying, SpaceX. you're heroes. 20:33
preyalone How do I parse hexadecimal strings into numbers? No such method 'hex' for invocant of type 'Str' :/ 20:34
masak m: my $s = "DEADBEEF"; say :16($s)
camelia rakudo-moar c2c8dc: OUTPUT«3735928559␤»
masak preyalone: ^^
psch kbenson: yeah, that's where i watched too 20:36
psch also just remembered why he put his tr/// PR aside again
there's something wrong with getlexcaller and proto methods
gist.github.com/peschwa/4fe16e5c5aa2e5b8370c
masak 'night, #perl6
psch m: gist.github.com/peschwa/4fe16e5c5aa2e5b8370c
camelia rakudo-moar c2c8dc: OUTPUT«Nil␤==========␤「b」␤»
psch that Nil should also be 「b」 20:37
g'night masak \o
kbenson psch: Looking at the highlights reel there now, it doesn't remind me too much of youtube, so if it looked like that, I guess I just assumed and let my mind fill in the details I wasn't paying attention to.
pippo o/ #perl6!
colomon :( 20:38
dalek kudo/nom: 9862a14 | lizmat++ | src/Perl6/ (2 files):
Make $_ default to Any (fixes #123175)
synbot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=123175
bobkare Is there an easy way to see what multi dispatch candidates are considered for an operator? 20:39
psch m: class A { proto method f { callframe.say; {*} }; multi method f { callframe.say } }; A.f
camelia rakudo-moar c2c8dc: OUTPUT«CallFrame.new(level => 2, annotations => {:file("/tmp/QGPBVra9JQ"), :line("1")}<>, my => EnumMap.new(:RETURN(Mu), "\$!" => Mu, "\&*CURRENT_DISPATCHER" => Mu, :CURRENT_DISPATCH_CAPTURE(Mu), "\&?ROUTINE" => Mu, "\$_" => Mu, "\%_" => Mu, :self(Mu), "\$*DISPAT…»
psch ehh... 20:40
m: class A { proto method f { callframe.level.say; {*} }; multi method f { callframe.level.say } }; A.f
camelia rakudo-moar c2c8dc: OUTPUT«2␤2␤»
kbenson skids: interestingly, wrapping the await in a "for 1..1 {}" seems to prevent the problem
dalek ast: 4499063 | lizmat++ | S (2 files):
Fix faulty tests now $_ default to Any
ast: 6afe651 | lizmat++ | S0 (3 files):
Skip tests that fail now $_ defaults to Any

These were previously either todo or working for the wrong reason, I think, since calling *any* (even non-existing methods) on Nil, will give you Nil and not blow up.
lizmat $ 6 '.say' 20:41
(Any)
psch lizmat++
preyalone Yay! Here's a Cisco password encrypter/decrypter in Perl 6: github.com/mcandre/ios7crypt/blob/...S7Crypt.pm 20:42
skids kbenson: Got just 'await (1,2,3,4).map: {start { 1; }}' to fail. So it isn't IO. 20:43
FROGGS preyalone: nice collection of languages :o) 20:46
lizmat m: .WHAT .say # I wonder how hard it would be to *not* make this a TTIAR but instead just say (Any) 20:47
camelia rakudo-moar c2c8dc: OUTPUT«5===SORRY!5=== Error while compiling /tmp/glSas6RhKI␤Two terms in a row␤at /tmp/glSas6RhKI:1␤------> 3.WHAT7⏏5 .say # I wonder how hard it would be t␤ expecting any of:␤ infix␤ infix stopper␤ statement end…»
FROGGS though I probably would: my $encrypted = $password.chars.map: (*.ord +^ @xlat[($seed++) % $xlat_len]).fmt("%02x"); 20:48
lizmat: implicit unspace?
lizmat yes
FROGGS you'd probably pleas [Tux] but perhaps not many others :o) 20:49
lizmat I mean, that's the only real big thing, grammar wise, I don't like about Perl 6
m: .WHAT . say # we handle this already differently
camelia rakudo-moar c2c8dc: OUTPUT«5===SORRY!5=== Error while compiling /tmp/ImRkTdX7Nz␤Unsupported use of . to concatenate strings; in Perl 6 please use ~␤at /tmp/ImRkTdX7Nz:1␤------> 3.WHAT . 7⏏5say # we handle this already differentl␤»
psch that's the same bump as «$foo\n .bar\n .baz» isn't it? 20:50
lizmat yup, it would be
std: .WHAT .say
camelia std 28329a7: OUTPUT«5===SORRY!5===␤Method call found where infix expected (change whitespace?) at /tmp/KD8Qmrr28I line 1:␤------> 3.WHAT7⏏5 .say␤ expecting any of:␤ infix or meta-infix␤ infixed function␤Parse failed␤FAILED 00:00 136m␤»
FROGGS I can see that breaking up method call chains might make the code look nicer, though I dunno about the consequences 20:51
lizmat std: .WHAT . say 20:52
camelia std 28329a7: OUTPUT«5===SORRY!5===␤Unsupported use of . to concatenate strings; in Perl 6 please use ~ at /tmp/3hm5exE4Eb line 1:␤------> 3.WHAT . 7⏏5say␤Parse failed␤FAILED 00:00 135m␤»
lizmat the former is not up to std, in any case :-)
psch i suspect it'd be in EXPR, which is scary :P 20:53
kbenson skids: same here, and on the very latest version, rebuilt after lizmat's commit 20:54
japhb Greetings, gentlebeings ... 20:55
psch o/ japhb
japhb returns from nice (but short) vacation
vendethiel will try to write some kind of quickcheck lib in perl6 tomorrow, given enough time between classes 20:56
kbenson O/
japhb o/
So what have you broken this time, kbenson? :-)
vendethiel \o japhb
kbenson japhb: oh, just await...
japhb Nothing important then ... ;-)
kbenson hehe 20:57
japhb In all seriousness, what's the break? Link? 20:57
kbenson m: await (1,2,3,4).map: { start { .say } } 20:59
camelia rakudo-moar c2c8dc: OUTPUT«1␤3␤2␤4␤Unhandled exception: Cannot invoke this object (REPR: Null)␤ at <unknown>:1 (/home/camelia/rakudo-inst-2/share/perl6/runtime/CORE.setting.moarvm:throw:4294967295)␤ from src/gen/m-CORE.setting:23653 (/home/camelia/rakudo-inst-2/share…»
japhb Ewww. Yeah, I've seen that.
Sadly, that particular snippet is rather behavior-dense (meaning, there's actually quite a bit of code that gets executed to run it), making it easy to show and hard to debug. :-( 21:00
kbenson but it's not consistent, so it's some race condition
japhb Yeah. 21:01
I started work a while ago to add tests in nqp for the concurrency primitives, but I did not complete the task. Worth continuing with that, methinks.
Also perl6-bench needs more concurrency stress tests.
lizmat_ removing the .say seems to not break stuff anymore 21:02
lizmat_ hmmm.... break it less often 21:02
kbenson lizmat_: It does, just much less often 21:03
lizmat_ indeed :-(
[Coke] m: 42\ .say 21:04
camelia rakudo-moar c2c8dc: OUTPUT«42␤»
kbenson skids++ btw for the golfed version that causes the error 21:05
japhb skids++ # Bug repro golf is best golf 21:06
kbenson japhb: yes on tests :)
brrt i'm positively surprised by the quality of doc.perl6.org
lizmat seems to happen inside reification 21:08
[ptc] brrt: you should mention that to moritz++, he's the driving force behind doc.perl6.org 21:10
lizmat m: await (1,2,3,4).map: { start { sleep .05; .say } }
camelia rakudo-moar c2c8dc: OUTPUT«(signal SEGV)34␤␤»
brrt .tell moritz that doc.perl6.org is awesome. moritz++
yoleaux brrt: I'll pass your message to moritz.
lizmat this golf seems to consistently segfault 21:11
m: await (1,2,3,4).map: { start { sleep .05; .say } } # segv?
camelia rakudo-moar c2c8dc: OUTPUT«1␤3␤2␤4␤»
lizmat m: await (1,2,3,4).map: { start { sleep .05; .say } } # segv?
camelia rakudo-moar c2c8dc: OUTPUT«(signal SEGV)»
grondilu m: say (my @ = []).perl; # what
camelia rakudo-moar c2c8dc: OUTPUT«[[]]<>␤»
lizmat m: await (1,2,3,4).map: { start { sleep .05; .say } } # segv?
camelia rakudo-moar c2c8dc: OUTPUT«(signal SEGV)»
lizmat m: await (1,2,3,4).map: { start { sleep .05; .say } } # segv?
camelia rakudo-moar c2c8dc: OUTPUT«13␤␤4␤2␤»
lizmat m: await (1,2,3,4).map: { start { sleep .05; .say } } # segv?
camelia rakudo-moar c2c8dc: OUTPUT«42␤␤3␤1␤Unhandled exception: Cannot invoke this object (REPR: Null)␤ at <unknown>:1 (/home/camelia/rakudo-inst-2/share/perl6/runtime/CORE.setting.moarvm:throw:4294967295)␤ from src/gen/m-CORE.setting:23653 (/home/camelia/rakudo-inst-2/share…»
grondilu m: say (my @ = []).perl; # what's with the <> ??
camelia rakudo-moar c2c8dc: OUTPUT«[[]]<>␤»
lizmat m: await (1,2,3,4).map: { start { sleep .05; .say } } # segv?
camelia rakudo-moar c2c8dc: OUTPUT«3␤4␤2␤1␤Unhandled exception: Cannot invoke this object (REPR: Null)␤ at <unknown>:1 (/home/camelia/rakudo-inst-2/share/perl6/runtime/CORE.setting.moarvm:throw:4294967295)␤ from src/gen/m-CORE.setting:23653 (/home/camelia/rakudo-inst-2/share…»
lizmat ah well... :-(
psch grondilu: it's the generic zen-slice/decont 21:12
m: say (my $ = []).perl
camelia rakudo-moar c2c8dc: OUTPUT«[]␤»
psch grondilu: there's some controversity about using <> for that
PerlJam psch: nah, I think TimToady invoked rule #1 on it. :) 21:13
psch PerlJam: oh. it seemed to me that he went with it because it already worked
PerlJam: i don't mind it though
lizmat m: await (1,2,3,4,5).map: { start { sleep .05; .say } } # segv? 21:14
camelia rakudo-moar c2c8dc: OUTPUT«3␤4␤2␤5␤1␤»
PerlJam it already worked and no one came up with a better idea that TimToady liked.
lizmat grrr, that consistently segfaults for me
psch PerlJam: fair 'nuff :)
grondilu m: say [1, 2] Z* [3, 4] 21:15
camelia rakudo-moar c2c8dc: OUTPUT«4␤»
grondilu ^is that ok?
lizmat has done enough damage today and tries to sleep more than .05 before driving to Berlin tomorrow 21:16
PerlJam lizmat: locally I get one of four outcomes so far 1) it works 2) SEGV 3) "Unhandled exception: Cannot call say(Int); none of these signatures match" and 4) "Unhandled exception: Cannot invoke this object (REPR: Null)" 21:17
[Coke] sleep good.
psch doesn't think lizmat++ did damage
also, good night lizmat \o
RabidGravy is this related to the 21:19
m: (1,2,3,4,5).map: { return } 21:20
camelia rakudo-moar 9862a1: OUTPUT«Unhandled exception: Cannot look up attributes in a type object␤ at src/gen/m-CORE.setting:9642 (/home/camelia/rakudo-inst-1/share/perl6/runtime/CORE.setting.moarvm::116)␤ from src/gen/m-CORE.setting:9632 (/home/camelia/rakudo-inst-1/share/perl6/ru…»
RabidGravy that someone pointed out last night?
PerlJam dunno, but I'd guess not. 21:21
psch m: { return }()
camelia ( no output )
TimToady m: say [1, 2]<> Z* [3, 4]<>
camelia rakudo-moar 9862a1: OUTPUT«3 8␤»
PerlJam (no rationale, just my gut)
TimToady grondilu: your Z* is just adding the .elems of the two arrays 21:22
grondilu indeed, but I was not sure that was ok with spec
it does make sense though
TimToady yes, they are list infixes, which pay attention to containerization
unlike hypers, which are on objects rather than lists 21:23
grondilu it was not used in rosettacode.org/wiki/Cholesky_decom...on#Perl_6, I fixed it.
cognominal m: my $rx-a = rx/a/; say 'a' ~~ m/$a/ # how to use a regex as part of another one? I expected this to match 21:24
camelia rakudo-moar 9862a1: OUTPUT«5===SORRY!5=== Error while compiling /tmp/Ns8vxnzxoB␤Variable '$a' is not declared␤at /tmp/Ns8vxnzxoB:1␤------> 3my $rx-a = rx/a/; say 'a' ~~ m/$a7⏏5/ # how to use a regex as part of anoth␤»
cognominal oops
grondilu TimToady: don't you think there should be a basic support for linear algebra in the core, eventually?
grondilu at least matrix algebra and inversion that is. 21:24
cognominal it does, tripped by the non strict :(
TimToady m: my @a = 1,2; my @b = 3,4; say @a[0,1] Z* @b[0,1] 21:25
camelia rakudo-moar 9862a1: OUTPUT«3 8␤»
TimToady I don't think you need the [] in that RC entry
grondilu I tried without and got wrong numerical results.
TimToady slices are already deconted, as far as Z* is concerned
well, see ^^, which shows slices are not conted 21:26
grondilu but in the RC the arrays are itemized.
it's more like my @a = [ 1, 2] ; ...
TimToady oh, wait, that's AofA there
so yeah, you need the extra [], nevermind 21:27
TimToady grondilu: it can perhaps be more clearly written as (@L[$i;*] Z* @L[$j;*]) 21:32
grondilu is not used to the semicolons there yet. 21:33
grondilu it looks better indeed 21:33
TimToady unfortunately that notation doesn't work on all the other [][], just the first @L lvalue 21:35
dunno whether that's a bug or not, but seems likely 21:36
I could understand it not autovivifying right, but why the @L[$j][$j] can't turn into @L[$j;$j] is a puzzler
cognominal m: my $rx = rx/(a)/; say 'a' ~~ $rx; say '--'; say 'a' ~~ m/$rx/; 21:46
camelia rakudo-moar 9862a1: OUTPUT«「a」␤ 0 => 「a」␤--␤「a」␤»
TimToady grondilu: @L[$i;0..$j] Z* @L[$j;0..$j] or so, and then you can lose the subscript slice 21:47
cognominal I nailed my problem. The captures from the included regex is not carried over into the composed regex. I don't know what the specs say. 21:47
psch m: my $rx = rx/(a)/; say 'a' ~~ $rx; say '--'; say 'a' ~~ m/<$rx>/;
camelia rakudo-moar 9862a1: OUTPUT«「a」␤ 0 => 「a」␤--␤「a」␤»
psch hm, that's not it 21:48
TimToady m: my $rx = rx/(a)/; say 'a' ~~ $rx; say '--'; say 'a' ~~ m/<inner=$rx>/; 21:49
camelia rakudo-moar 9862a1: OUTPUT«「a」␤ 0 => 「a」␤--␤「a」␤ inner => 「a」␤ 0 => 「a」␤»
cognominal yea
grondilu TimToady: I wrote that first, but not factoring the 0..$j seemed very inelegant.
psch related to #111518? 21:50
synbot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=111518
TimToady well, either size can take the 0..$j, and the other side * 21:50
*side
grondilu oh yeah
TimToady but I don't think it's inelegant to repeat that
DRY is just a rule of thumb
sometimes it's better to show the parallisms 21:51
and I think that overrules DRY here
cognominal TimToady++
grondilu DRY?
TimToady or say my \range = 0..$j;
PerlJam S99:DRY
synbot6 Link: design.perl6.org/S99.html#DRY
TimToady Don't Repeat Yourself
grondilu ok
PerlJam huh ... S99 doesn't mention DRY' 21:52
TimToady well, not our concept originally
cognominal The necessity of <inner=$rx> makes composition quite complex though. 21:53
PerlJam still, S99 mentions lots of thigns we didn't come up with, but use all the time.
grondilu well, that' LTA
:)
TimToady it's TLA at any rate...
cognominal: most of our composition is not run-time composition 21:54
in which case it just looks like <inner>
so don't use <$rx> unless you're forced to; inheritance and mixins work much better 21:55
dalek ecs: 5b1cef7 | PerlJam++ | S99-glossary.pod:
Add DRY
cognominal ok. still slightly disappointed. probably don't get the big picture. 21:56
TimToady m: my regex inner { (a) }; say 'a' ~~ m/<inner>/;
camelia rakudo-moar 9862a1: OUTPUT«「a」␤ inner => 「a」␤ 0 => 「a」␤»
cognominal probably a case where the implementor did not want to suffer in place of the user :) 21:57
TimToady or you don't have to use grammars, with a lexically scoped regex method
we tend to optimize for declarations over operations, but the declarations are really just operations underneath that usually happen at compile time, but don't have to 21:58
cognominal I agree on that. 21:59
TimToady m: my $f = 3 % 0; say $f.exception.backtrace
camelia rakudo-moar 9862a1: OUTPUT«Earlier error:␤ Divide by zero using infix:<%>␤ in file Who Knows? at line Beats Me!␤␤Type check failed for return value; expected 'Int' but got 'Failure'␤ in any return_error at src/vm/moar/Perl6/Ops.nqp:639␤ in sub infix:<%> at src/gen/…»
atweiden i have a main Nightscape class that stores an instance of Nightscape::Config in the variable $conf: github.com/atweiden/nightscape/blo...cape.pm#L9 22:00
during parsing, I want to access $Nightscape::conf
i am able to run an unqualifed Nightscape.perl from within my parser's Action.pm class, which i take to mean the Nightscape class has been imported successfully
however, i am unable to access the value of $conf from Actions.pm (here): github.com/atweiden/nightscape/blo...ons.pm#L67
TimToady er, I wanted to call .exception on the failure
cognominal But is there a rational for my initial expression not to work as expected (by me)?
atweiden $conf is being set, because I print its contents to console before parsing
TimToady cognominal: we never capture a subrule unless it begins with alphanumeric 22:01
cognominal anyway, TimToady solved my particular problem. But I always tend it to think as a particular instance of a more general one. 22:02
TimToady so <$rx> will never capture
it's a simple rule that prevents you from having to memorize a list of which assertions will capture
cognominal ok, so, at least, that's a deliberate thing. 22:03
psch atweiden: Nightscape might be imported, but $conf isn't exported by it
cognominal TimToady, thx 22:04
TimToady m: my \inner = rx/(a)/; say 'a' ~~ inner; say '--'; say 'a' ~~ m/<inner>/;
camelia rakudo-moar 9862a1: OUTPUT«「a」␤ 0 => 「a」␤--␤No such method 'inner' for invocant of type 'Cursor'␤ in method match at src/gen/m-CORE.setting:7665␤ in block <unit> at /tmp/gAmBvDrOnb:1␤␤»
psch m: module A { our $foo = "bar" }; class A::B { method quux { say $A::foo } }; A::B.quux # as here
camelia rakudo-moar 9862a1: OUTPUT«bar␤»
psch atweiden: note that $foo is qualified there
TimToady m: module A { our $foo = "bar" }; class A::B { method quux { package A { say $foo } } }; A::B.quux 22:05
camelia rakudo-moar 9862a1: OUTPUT«5===SORRY!5=== Error while compiling /tmp/u2dVnAeBWj␤Variable '$foo' is not declared␤at /tmp/u2dVnAeBWj:1␤------> 3::B { method quux { package A { say $foo7⏏5 } } }; A::B.quux␤ expecting any of:␤ postfix␤»
atweiden psch: it isn't? how can i access its value here github.com/atweiden/nightscape/blo...ape.pl#L31
but not in Actions.pm 22:06
cognominal whoa, TimToay provides the rule and the way to defeat it even if that eventually defeats the compiler
TimToady m: module A { our $foo = "bar" }; class A::B { method quux { package GLOBAL::A { say $foo } } }; A::B.quux
camelia rakudo-moar 9862a1: OUTPUT«5===SORRY!5=== Error while compiling /tmp/MzX0xAMyOY␤Redeclaration of symbol A␤at /tmp/MzX0xAMyOY:1␤------> 3s A::B { method quux { package GLOBAL::A7⏏5 { say $foo } } }; A::B.quux␤ expecting any of:␤ generic role␤»
psch atweiden: you're qualifying it there
m: module A { our $foo is export = "bar" }; class A::B { import A; method quux { say $foo } }; A::B.quux # an alternative
camelia rakudo-moar 9862a1: OUTPUT«bar␤»
TimToady m: module A { our $foo = "bar" }; class A::B { method quux { package A { our $foo; say $foo } } }; A::B.quux
camelia rakudo-moar 9862a1: OUTPUT«(Any)␤»
psch atweiden: note there it «is export»
TimToady m: module A { our $foo = "bar" }; class A::B { method quux { package GLOBAL::A { our $foo; say $foo } } }; A::B.quux
camelia rakudo-moar 9862a1: OUTPUT«5===SORRY!5=== Error while compiling /tmp/7trUaadlTF␤Redeclaration of symbol A␤at /tmp/7trUaadlTF:1␤------> 3s A::B { method quux { package GLOBAL::A7⏏5 { our $foo; say $foo } } }; A::B.quux␤ expecting any of:␤ generic role␤»
psch atweiden: and it's imported explicitly as well, in my last example 22:07
atweiden psch: i see
is it because Actions.pm doesn't directly `use Nightscape`?
TimToady m: module A { our $foo = "bar" }; class A::B { method quux { module GLOBAL::A { our $foo; say $foo } } }; A::B.quux
camelia rakudo-moar 9862a1: OUTPUT«5===SORRY!5=== Error while compiling /tmp/E_A2aqqQqz␤Redeclaration of symbol A␤at /tmp/E_A2aqqQqz:1␤------> 3ss A::B { method quux { module GLOBAL::A7⏏5 { our $foo; say $foo } } }; A::B.quux␤ expecting any of:␤ generic role␤»
TimToady modules shouldn't care if they're re-opened, I don't think
psch atweiden: that's my understanding, yes 22:08
TimToady std: module A { our $foo = "bar" }; class A::B { method quux { module GLOBAL::A { our $foo; say $foo } } }; A::B.quux
camelia std 28329a7: OUTPUT«5===SORRY!5===␤Illegal redeclaration of symbol 'GLOBAL::<A>' (from line 1) at /tmp/rt18pNMeWC line 1:␤------> 3s A::B { method quux { module GLOBAL::A 7⏏5{ our $foo; say $foo } } }; A::B.quux␤Check failed␤FAILED 00:00 139m␤»
TimToady hmm
cognominal I probably need to write a code fuzzer that feed camelia as a way to probe TimToady process of thinking. :)
timotimo t.h8.lv/p6bench/2015-04-15-virtual_...props.html - i wonder if i did anything wrong to get such a terrible result :\ 22:09
TimToady fuzzes into a nap & 22:10
atweiden psch: adding `is export` to $conf in Nightscape.pm didn't make a difference 22:11
psch atweiden: you'd still have to «use Nightscape» 22:12
cognominal In fact the rule makes sometimes a lot of sense, I do a grep then a map using the same $rx. I need the capture(s) in the second but not in the first
psch atweiden: although i think qualifying your access might look neater, e.g. «Nightscape::<$conf>» or somesuch
atweiden if i `use Nightscape` from Actions.pm, i get "Circular module loading detected involving module 'Nightscape'" 22:13
i believe Nightscape is already imported, because i can do say Nightscape.perl
psch oh, right. so it's not only neater but also workier to qualify there
m: module A::B { sub f { say A.perl } }; A::B::f()
camelia rakudo-moar 9862a1: OUTPUT«Could not find symbol '&f'␤ in method <anon> at src/gen/m-CORE.setting:16122␤ in any find_method_fallback at src/gen/m-Metamodel.nqp:2908␤ in any find_method at src/gen/m-Metamodel.nqp:1052␤ in block <unit> at /tmp/qDVkYnASp1:1␤␤»
psch hrmpf
m: module A::B { sub f { say A.perl } }; A::B.f 22:14
camelia rakudo-moar 9862a1: OUTPUT«No such method 'f' for invocant of type 'A::B'␤ in block <unit> at /tmp/FoOasDeXw9:1␤␤»
psch m: class A::B { sub f { say A.perl } }; A::B.f
camelia rakudo-moar 9862a1: OUTPUT«No such method 'f' for invocant of type 'A::B'␤ in block <unit> at /tmp/quF6rRoBWO:1␤␤»
psch arg
m: class A::B { method f { say A.perl } }; A::B.f
camelia rakudo-moar 9862a1: OUTPUT«A␤»
psch atweiden: B knows A, but B doesn't know what's in A
atweiden: except if it's our and you qualify with the package name 22:15
m: module A { our $foo = "bar" }; class A::B { method f { say A.perl; say A::<$foo> } }; A::B.f;
camelia rakudo-moar 9862a1: OUTPUT«A␤bar␤»
psch (OUTER shenannigans not withstanding)
m: module A { our $foo = "bar" }; class A::B { method f { say A.perl; say $foo } }; A::B.f; # this dies 22:17
camelia rakudo-moar 9862a1: OUTPUT«5===SORRY!5=== Error while compiling /tmp/u9Cq2s7P2y␤Variable '$foo' is not declared␤at /tmp/u9Cq2s7P2y:1␤------> 3s A::B { method f { say A.perl; say $foo7⏏5 } }; A::B.f; # this dies␤ expecting any of:␤ postfix␤»
psch atweiden: i hope i'm being helpful. i'm trying to track down a bug on the side :)
atweiden i'm still a bit confused. would Actions.pm get its own instance of Nightscape? 22:32
i can set $Nightscape::conf from Actions.pm
it's empty if i don't do that, even though i set its value and printed its value to console before parsing with Actions.pm
psch m: class A { our $f; method set-f { $f = "foo" } }; class A::B { method say-f { say A::<$f> } }; A.set-f; A::B.say-f 22:34
camelia rakudo-moar 9862a1: OUTPUT«foo␤»
psch atweiden: fwiw, i don't see any occurence of the string "conf" in Nightscape/Parser/Actions.pm 22:35
atweiden: so i'm having a bit of trouble following what exactly you're trying
japhb .ask TimToady What was the purpose of rakudo commit 872d74cd2c320217894a3b0d5331b4c625b13022 (don't cache Rat literals)? 22:35
yoleaux japhb: I'll pass your message to TimToady.
atweiden psch: ix.io/hT9 22:36
psch atweiden: TOML doesn't have a provides section in its META.info, which i think is why i can't try Nightscape locally 22:46
(i don't know if that's your module, though)
atweiden it's at github.com/mouq
psch ah, ok
psch .tell Mouq TOML doesn't have provides yet, FYI 22:47
yoleaux psch: I'll pass your message to Mouq.
psch atweiden: i don't immediately see the problem, tbh 22:47
atweiden: afaict you mkconfig and then mkjournal, and the latter needs $conf set somewhere in its calls 22:50
but it's not set when you get where it's needed?
fwiw, i'm not sure «our»-scope variables are the right idea there 22:53
but that's probably just a style difference, and not really cause for concern 22:54
m: class A { our $f }; class A::B { method foo { A::<$f> = "bar" } }; class A::C { method bar { say A::<$f> } }; A::B.foo; A::C.bar # this is what i think should happen 23:06
camelia rakudo-moar 9862a1: OUTPUT«bar␤»
psch 'cause an action class isn't really different than a normal class
but maybe grammars mess with that somehow :/
psch atweiden: fwiw, the code as-is on github "works" with an empty journal (if that can be called "works") 23:06
psch atweiden: i'm also not really making sense of the ~40 commented lines in the paste you posted 23:07
(which is probably partly cause by the local time and partly by me having very little insight into what you're trying)
atweiden: the commented lines in your paste seem to be unsure about what Nightscape::<$conf> actually is 23:15
i.e. there's quite a few lines that treat it as a hash and want to access keys, but Nightscape::Config doesn't do Associative 23:16
aside from that i can't really make sense of it without test data 23:18
atweiden psch: yea, it's pseudo code 23:21
psch atweiden: right, removing those lines runs fine, but that's probably because the actions don't get called because i don't have anything to parse :) 23:22
atweiden oh, point it to examples/sample.transactions
PERL6LIB=lib bin/nightscape.pl examples/sample.transactions 23:23
psch atweiden: right, that gets me far enough that i'd have to guess what your pseudocode should do :) 23:28
atweiden: i'm not sure if subparse works with :actions, but i have a hunch it does 23:29
atweiden: i'd write tests for your bottom-rules with their actions and see if that gets you further
(and maybe implement stuff like Nightscape::<$conf>.prices.lookup too ;) ) 23:30
i definitely need sleep, good luck further :) 23:31
psch &