»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by sorear on 4 February 2011.
00:01 Chillance left, cognominal left 00:04 cognominal_ left 00:06 adu joined
skids Probably it's more useful to throw the user's failure, whether the throw is immediate on typecheck, or whether the failure is passed through lazily, either way. 00:10
diakopter pmichaud: on the latest rakudo, I'm getting some failed spectests, and some loop forever eating all my memory 00:13
owait. 00:14
[Coke] +# 07/31/2012 - rakudo++ (22941); niecza (89.88%); pugs (40.99%)
diakopter I'm still on toqast branch..... oops.
[Coke] huh. the pugs failures on the specrun... vanished.
p: say 40.99/89.88 00:15
p6eval pugs: OUTPUT«0.4560525144637294170004450378282153983089␤»
[Coke] niecza: 8 failures; rakudo: 3
p6eval niecza v19-15-g051783d: OUTPUT«===SORRY!===␤␤Two terms in a row at /tmp/q0Y6oAArXq line 1:␤------> 8 ⏏failures; rakudo: 3␤␤Parse failed␤␤»
skids
.oO(evalbot gets the colon)
00:18
[Coke] I think that's the 2nd time I've done that. whoops. 00:19
dalek ecs: 12ee078 | larry++ | S05-regex.pod:
relationship of :sigspace with %

The rules follow from the way sigspace is enabled by previous matcher. fixes #22
00:21
diakopter TimToady: signicant typo 00:22
diakopter slowly races to fix.. 00:23
TimToady now I have to figure out how to implement it in STD as specced 00:25
basically ms/ <atom> * / needs to turn into / [<atom><.ws>]* / 00:26
adu woah 00:27
TimToady and ms/ <atom>* / turns into / <atom>* <.ws> 00:28
adu I would expect the latter
the former is unexpected
TimToady well, it's either that or force everyone to write [<atom> ]+ % ',' al over the place 00:29
*all
dalek ecs: 00da791 | u11++ | S05-regex.pod:
S05 - insignicant typo
TimToady I think <atom> +% ',' works better
diakopter hrm. how am I now named u11
oh. 00:30
TimToady but it means overhauling STD not to treat sigspace as its own atom 00:32
std: / :s <ident> * / 00:33
p6eval std f43a358: OUTPUT«ok 00:00 41m␤»
TimToady I'm a little surpised that parses
00:33 UncleFester6 joined
diakopter nqp: my @a := [[]]; say(@a); 00:34
p6eval nqp: OUTPUT«1␤»
benabik r: my @a = [[]]; say(@a) 00:35
p6eval rakudo c1bfbb: OUTPUT«␤»
diakopter r: my @a := [[]]; say(@a.perl); 00:36
p6eval rakudo c1bfbb: OUTPUT«Array.new([])␤»
diakopter r: my @a := [[[]]]; say(@a.perl);
p6eval rakudo c1bfbb: OUTPUT«Array.new([[]])␤»
diakopter heh
[Coke] r: r: my @a = [[]]; say(+@a);
p6eval rakudo c1bfbb: OUTPUT«===SORRY!===␤Confused␤at /tmp/OJK4HLivLg:1␤»
[Coke] r: my @a = [[]]; say(+@a);
p6eval rakudo c1bfbb: OUTPUT«1␤»
00:38 tokuhiro_ joined
diakopter uses 3 nested gathers/take for something; whee 00:42
colomon diakopter++ 00:46
00:47 cognominal_ joined
[Coke] colomon,sorear: gist.github.com/3222097 00:47
I cannot remember current fudging rules, so I leave it to you.
colomon oh, right, forgot to finish those changes....
diakopter r: say join(" a ", gather { for [1,2] { take join(" $_ ", gather { for [3,4] { take join(" $_ ", gather { for [5,6] { take "$_" } }) } }) } }) # halp 00:49
p6eval rakudo c1bfbb: OUTPUT«5 6␤»
diakopter r: say join(" a ", gather { for (1,2) { take join(" $_ ", gather { for (3,4) { take join(" $_ ", gather { for (5,6) { take "$_" } }) } }) } }) # halp 00:50
p6eval rakudo c1bfbb: OUTPUT«5 3 6 1 5 4 6 a 5 3 6 2 5 4 6␤»
00:52 raiph joined
diakopter doesn't seem right to me 00:52
oh hm, it's right 00:53
nm; sry
dalek ast: 88d6e1d | (Solomon Foster)++ | S32-str/substr.t:
Fudge for niecza.
00:55
ast: fedb957 | (Solomon Foster)++ | S05-interpolation/regex-in-variable.t:
Fudge for niecza.
01:01
01:03 scott___ joined
TimToady course now I've *really* broken STD: Unrecognized regex metacharacter < (must be quoted to match literally) 01:07
01:07 tokuhiro_ left
diakopter uh oh; do we now have to go through gimme5 again? 01:08
dalek ast: f5b1f2e | (Solomon Foster)++ | S02-lexical-conventions/comments.t:
Fudge for niecza.
ecza: ddf93f9 | (Solomon Foster)++ | t/spectest.data:
Turn off obsolete lcfirst and ucfirst tests.
01:09
TimToady nah, it's not that broken
TimToady crosses his fingers 01:10
diakopter std: /a***/ 01:16
p6eval std f43a358: OUTPUT«Can't bless non-reference value at CursorBase.pm line 1163.␤FAILED 00:00 41m␤»
diakopter O_O 01:17
std: /a/ 01:30
p6eval std f43a358: OUTPUT«Can't bless non-reference value at CursorBase.pm line 1163.␤FAILED 00:00 41m␤»
diakopter :J
01:44 cognominal_ left 01:46 Entonian joined
diakopter sorear: what makes you think the nobootstrap branch has failed? I'm curious what insurmountable difficulties you've struck 01:54
sorear diakopter: I can't think of any way to move the parser forward
01:55 Entonian left
diakopter forward.. on what axis 01:56
(I mean, I assume you don't mean forward in the input) 01:58
(or do you merely mean make progress on the parser?) 02:01
sorear I merely mean progress 02:02
there are ... issues ... because the parser is written in Perl 6
diakopter my first thought is the hardest problem will be mimicking the continuable RxFrame 02:03
.. or were you planning to use RxFrame 02:06
(and the trampoline) 02:07
02:08 lucas_ left
pmichaud TimToady: thanks for speedy issue #22 update 02:09
now I have to implement it also :)
sorear diakopter: I was kind of thinking of using RxFrame 02:10
something broke in my head and I started ranking designs in a non-transitive way
design 2 beats 1, 3 beats 2, 4 beats 3, 5 beats 4, 6 beats 5, but 6 is identical to 1 02:11
I stopped when I realized I was going in circles
diakopter oh.
I've experienced that a few times 02:12
except I usually don't notice I'm looping until a few times around the cycle
sorear: why would niecza not have a future just because the nobootstrap branch currently appears ill-fated 02:15
(I mean, what hope were you pinning on the nobootstrap branch?) 02:16
sorear diakopter: macros, slangs, fast startup
diakopter sorear: I suspect at least one of the "beats" in "design 2 beats 1, 3 beats 2, 4 beats 3, 5 beats 4, 6 beats 5, but 6 is identical to 1" has another interpretation 02:17
I'd be curious to hear about those designs 02:18
pmichaud I think I should stop asking questions; every time I do, the spec changes. :) 02:20
on the other hand, when people ask "why is Perl 6 taking so long", I guess we can say "it's Pm's fault." :-P
diakopter Perl 6: where our standards are so high, we keep tweaking the standards. 02:22
sorear diakopter: ok 02:24
diakopter: this will be a bit rambly, I apologize in advance 02:25
there are two major goals here:
- .net metadata is demand-loaded using C code and is generally a lot more efficient than trying to load our Perl6 metadata, so reducing the amount of P6 code in the compiler will speed up starting 02:26
- using a Perl 6 compiler requires isolating the compiler from user code in order to make bootstrapping not explode; the isolation layer makes it impossible for things like slangs and 'is parsed' macros to link directly into the parser, and is itself a large amount of awkward to maintain code 02:27
in the nobootstrap branch, I've already moved almost all of the compiler midend to C# 02:28
the parser, however-
we need the parser to be implemented using RxFrame/Cursor in order for it to integrate with user macros
there are then a couple choices
* hand written RxFrame/Cursor parser 02:29
* use STD, but write a MiniParser that can parse about the same fraction of Perl6 as gimme5
* use STD, and do bootstrapping just for STD
* translate a minimal subset of STD to C# and have it dynamically parse the rest of itself as augments 02:30
complicating issues include coping with binary-incompatible changes to the runtime support code
__END__ 02:31
diakopter hm
what are the detriments to option #2 02:33
slash relative costs 02:34
er, option #2, 1-indexed 02:35
02:36 Psyche^ joined 02:38 mikemol joined
sorear having to design a parser, mostly 02:39
02:39 UncleFester6 left
sorear questions like whehter to bring in something like 'jay' and how much to reuse the regex mident 02:39
EBRAINOVERFLOW
02:40 Patterner left, Psyche^ is now known as Patterner
diakopter goes to read a bit about Jay 02:40
sorear all I really know about jay is that mcs uses it 02:41
[Coke] pmichaud: I'd blame larry, not you. If he'd just get the spec right /first/, we could go much faster. ;) 02:42
02:42 cognominal joined, crab2313 joined
[Coke] ... I think my stomach just made an angry birds noise. wtf? 02:43
02:44 gongyiliao joined
diakopter sorear: oh. berkeley yacc to C# 02:44
sorear: I asked about option #2 because it was the option I preferred and planned to use ... several times (in several abortive projects) 02:48
like, the minimal subset of P6 in which STD *can be* reasonably readably/concisely written 02:50
... as strongly-typed as possible 02:51
strongly/primitively
'course, that'd be a lot of work. 02:52
(to get an edition of STD like that) 02:53
benabik diakopter: something like NQP?
02:53 sftp left
diakopter benabik: NQP will be quite close once it gets native/primitive locals/lexicals 02:53
and compact arrays 02:54
it already has native attributes (yay) 02:55
02:57 orafu left 02:59 orafu joined
diakopter benabik: I assume you mean NQP's subset of P6, not the NQP implementation. .. because we're talking about writing a parser for a language implementation written in C#.. (not looking for an existing parser) 03:00
03:01 cognominal left
sorear nqp: my int $x; 03:01
p6eval nqp: ( no output )
sorear nqp: my int $x := 1; my int $y := 0; while ($y < 20) { say($x); $x := $x * 1000; $y := $y + 1; } 03:03
p6eval nqp: OUTPUT«1␤1000␤1000000␤1000000000␤1000000000000␤1000000000000000␤1000000000000000000␤1000000000000000000000␤1000000000000000000000000␤1000000000000000000000000000␤1000000000000000000000000000000␤1000000000000000000000000000000000␤1000000000000000000000000000000000000␤100000000000000…
sorear wonders if nqp ints are bigints now
diakopter ah, I didn't know it got them
sorear: does option #3 involve viv? 03:05
sorear probably not, that's an idea I had not considered 03:08
diakopter one of the options I considered was to write a (C in my case) emitter in viv
03:10 crab2313 left
diakopter (but alas, merely pipe dreams..) 03:13
03:14 crab2313 joined 03:25 lue joined
benabik diakopter: Just meant to point out the similarities. :-) 03:34
03:54 crab2313 left
skids What's the specced behavior of something like int8(256)? A failure, or does that constitute "treating it as an object" and result in an Int? 03:55
sorear skids: per spec it has to coerce to int8, and native types don't support failures 04:00
so it either coerces to int8 somehow, or dies 04:01
I don't think the actual method of coercion is specced
it probably shouldn't be, for the same sorts of reasons that led C to not spec signed overflow
skids sorear++. That sounds like an interesting dilemma :-) 04:03
04:15 kaare_ joined 04:23 telex left, telex joined 04:29 skids left 04:34 telex left 04:36 telex joined 04:51 SamuraiJack joined 04:56 alc joined 05:11 alc left 05:26 alc joined 05:43 SamuraiJack left
moritz \o 05:43
05:46 adu left 05:52 wtw joined 05:59 birdwindupbird joined 06:09 telex left 06:10 telex joined 06:11 kaleem joined
arnsholt o/ 06:12
06:21 kaare_ left 06:30 alc left 06:34 thou left, cognominal joined 06:36 cognominal left
masak morning, #perl6 06:40
sorear o/ masak 06:44
masak final blog post in place now: strangelyconsistent.org/blog/july-3...ished-game 06:45
oh, and I found a MAIN-related bug yesterday when splitting things up into modules. reported it now: rt.perl.org/rt3/Ticket/Display.html?id=114354 06:53
sorear RFC period starts. 06:57
dalek ecza: 2d14b99 | sorear++ | docs/announce.v20:
Add v20 announce
masak reads 07:09
07:10 GlitchMr joined
masak sorry to hear about non-bootstrap running into a dead end. it seemed like an interesting direction. 07:10
shachaf ingy: Ping? 07:11
masak sorear: announcement looks good. 07:13
07:15 fhelmberger joined 07:16 crab2313 joined 07:18 crab2313 left
moritz aye, it does 07:19
sorear: why did non-bootstrap run into a dead end? tuit starvation? or technical problems? or both? 07:20
seedmagazine.com/content/article/se..._the_dark/ woah, subconscious-only seeing after a stroke damaged the visual cortex 07:22
sorear moritz: I guess you could call it technical problems 07:23
moritz: the technical problems mounted to a point where I lost all motivation to continue. So my weekend tuits went to other things.
moritz sorear: that does sound like a good time to rething the direction, yes 07:25
07:28 xinming left 07:29 xinming joined
sorear looks like niecza's makefile is not best friends with BSD cp 07:30
dalek ecza: 7f550a2 | sorear++ | Makefile:
Fix package generation with BSD cp
07:35
07:38 cognominal joined 07:40 cognominal left
moritz r: say Block.^mro 07:45
p6eval rakudo c1bfbb: OUTPUT«Block() Code() Any() Mu()␤»
07:51 alc joined 07:55 alc left
masak rn: say "\x2028 \x2029" 07:55
p6eval rakudo c1bfbb, niecza v19-15-g051783d: OUTPUT«
 
␤»
masak .u 
 
 07:56
phenny U+2028 LINE SEPARATOR (
)
U+0020 SPACE ( )
U+2029 PARAGRAPH SEPARATOR (
)
masak JavaScript considers "\u2028" and "\u2029" to be line terminators.
I was thinking of things like .lines; how should it behave in the face of such characters? 07:57
GlitchMr \u2028?
I remember this. It's reason why JSON isn't subset of JavaScript.
masak er? how can JavaScript's support of \u2028 be a reason JSON isn't a subset? 07:58
sorear masak: I think because JSON allows \u2028 to appear unescaped in a string 07:59
masak ah. 08:00
GlitchMr But, I guess it's just small detail that Crockford hasn't noticed 08:02
moritz rn: say Routine ~~ Block
p6eval rakudo c1bfbb, niecza v19-15-g051783d: OUTPUT«True␤»
masak GlitchMr: probably. 08:06
rn: say Method ~~ Routine
p6eval rakudo c1bfbb, niecza v19-15-g051783d: OUTPUT«True␤»
masak I noticed today that S06 says that MAIN should be a Routine, which implies that it can be a Method. which I think isn't so.
moritz I think it must be a Sub 08:08
masak: and I might have a patch for MAIN being executed in modules 08:10
unles $*W.is_precompilation_mode { ... }
oh wait, that's not quite enough
sorear yay, looks like my message went through 08:13
08:14 jdrab joined
masak sorear++ # v20 08:18
08:20 fgomez left
masak moritz: 'unles' is not quite enough, no. it's missing an 's' :P 08:21
moritz masak: I meant, a simple use MyModule; doesn't put MyModule in precompilationi mode 08:23
jnthn: or does it? 08:24
08:24 dakkar joined
masak "the compilation unit was directly invoked rather than by being required by another compilation unit" -- this is what we want to test. 08:25
if that's called $*W.is_precompilation_mode or not, I don't know. 08:26
moritz unfortunately for patching rakudo, I need to know if it's spelled that way :-)
or how to spell it
jnthn moritz: No, is_precompilation_mode just means "Rakudo was run with --target=pir" I think. 08:27
moritz I've now tried if !$*W.is_precompilation_mode && +@*MODULES == 0 && $unit.symbol('&MAIN') { ... } 08:28
and now it never runs MAIN :/
I need to debug which of those conditions failed
08:30 xinming_ joined
moritz it seems that +@*MODULES is always at least 1 08:31
masak .oO( 412 ) 08:32
08:32 xinming left
moritz which is very odd, given that the only place that adds to @*MODULES is the module loader 08:33
masak what does it contain? 08:35
moritz the module loading backtrace, so to say
jnthn moritz: Does it pop off again? 08:36
moritz jnthn: there's code for popping off it
jnthn: not sure if I've tested it properly
08:36 mscha joined
jnthn Yeah. It looks right at least. 08:37
08:38 SamuraiJack joined
moritz I'm now trying to create a new my @*MODULES in the loader instead 08:39
which should be more robust
my current theory is that loading the setting populates @*MODULES somehow
and doesn't clean up properly 08:40
08:40 cognominal joined 08:42 cognominal left
moritz ok, that seems to fix things 08:43
oh, I now see why
for the first module, there are *two* hashes pushed onto @*MODULES
one for the calling location, one for the module itself 08:44
jnthn The setting does use Perl6::BOOTSTRAP or so.
dalek kudo/nom: 558ea68 | moritz++ | src/core/IO.pm:
remove IO::Path and IO::Dir

as the deprecation notice predicted
09:02
kudo/nom: 85b7789 | moritz++ | src/core/IO.pm:
fixup
kudo/nom: 2cdf1c6 | moritz++ | src/Perl6/ (2 files):
Only run MAIN in the mainline. Closes RT #114354

Includes a small refactoring of @*MODULES handling, which avoids leaving traces in @*MODULES after the first module load (which is always the setting)
moritz forgot to rebase -i before committing. Sadface :(
I'm now trying to write tests for that patch 09:19
and it's surprisingly hard 09:20
I don't know how to propagate state through 'use' or 'require' boundaries
I've tried package variables and dynamic variables
masak dynamicals?
oh, of course you tried that already.
even package vars don't work? :/ 09:21
moritz and I got a dispatch failure for ++$*tracker in the module
masak did you declare it?
moritz in the caller, sure
masak r: sub foo { say ++$*tracker }; my $*tracker = 0; foo
p6eval rakudo c1bfbb: OUTPUT«1␤»
masak my intuition tells me dynamicals should survive a 'use' or 'require'. 09:22
moritz ok, one more idea 09:23
I die() in sub MAIN
and do a lives_ok { require TestMOdule; }
\o/ that works 09:24
masak moritz++
arnsholt "Like the famous mad philosopher said, when you stare into the void, the void stares also; but if you cast into the void, you get a type conversion error. (Which just goes to show Nietzsche wasn’t a C++ programmer.)" 09:25
Figured that quote might amuse some of you =)
moritz :-)
dalek ast: 95987ec | moritz++ | / (2 files):
sub MAIN in modules should not run. RT #114354
09:26
masak moritz: I can get dynamicals and require to work locally. 09:28
moritz: my guess is you couldn't get 'use' to work because you used BEGIN blocks and the dynamical went out of (lexical) scope.
moritz I did not 09:29
masak I should know better than to underestimate you :)
anyway, dynamicals+'require' works here. 09:30
moritz well, I did do something wrong 09:33
hm, I might have an idea 09:34
maybe MAIN ran *after* the require
so the dynvar wasn't in scope anymore at all
masak maybe. :)
moritz but I thought it didn't run at all :/
masak is again reminded of HPMoR today
moritz no new episode so far :( 09:35
just a new episode of the podcast
masak too early in the day yet.
09:37 cognominal joined 09:44 daxim joined
mscha perl6: say reverse 0..Inf; 09:53
p6eval rakudo c1bfbb: OUTPUT«Cannot reverse an infinite list␤ in method gist at src/gen/CORE.setting:9624␤ in sub say at src/gen/CORE.setting:7024␤ in block at /tmp/oCOFAIOTpZ:1␤␤» 09:54
..niecza v19-15-g051783d: OUTPUT«(timeout)»
mscha (My copy of Rakudo Star 2012.4 said "Cannot reverse and infinite list", which has apparently been fixed. 09:55
)
masak X::Infinite::YouKnowWhatIMean 09:56
GlitchMr Reversing infinite list would require knowing its last position 09:58
moritz but we know it. It's Inf :-) 09:59
GlitchMr So, reverse 0 .. Inf should return infinite list of Inf
masak this is the danger of confusing actual numbers with concepts representing limits.
Inf isn't a natural number.
moritz nr: say Inf.WHAT 10:00
p6eval rakudo c1bfbb, niecza v19-15-g051783d: OUTPUT«Num()␤»
masak it's the limit towards which natural numbers tend.
moritz rakudo and niecza agrees that it's not a natural number :-)
GlitchMr gather for ^Inf { take Inf }
Is there better way of representing such list?
jnthn 1..* 10:01
moritz GlitchMr: Inf xx Inf
jnthn Oh, you wanted all Infs...
moritz or Inf xx *
GlitchMr > Inf xx Inf
moritz shorter :-)
GlitchMr Cannot coerce Inf to an Int
huh
jnthn Sorry, I thought we were doing useful things :)
moritz yes, xx wants an Int on the RHS
GlitchMr Inf xx * seems to work
Actually, reversing infinite list would be possible, but it's impossible 10:03
10:03 Bzek joined
GlitchMr or something 10:04
The list 0 xx * could be easily reversed
Just wondering, does reverse return iterator? 10:05
moritz a lazy list
iterators aren't exposed to the user
GlitchMr > pop 0 xx *
.pop from an infinite list NYI
huh?
So, if somehow .pop will be implemented on infinite list, reverse will be possible too 10:06
But... why .pop on infinite list would be possible?
moritz I guess I just wasn't sure if it might be possible oneday 10:07
feel free to submit a patch for a better error message 10:08
GlitchMr Wouldn't getting last element from infinite list require getting every element before?
I can see it possible with shift or unshift... but with pop() 10:11
(by the way, push() on infinite list could be nop)
But error is better
arnsholt I don't really see how pop on an infinite list would be impossible 10:13
moritz it's possible for a potentially-infinite list 10:14
but for a really infinite list?
masak I think it's a bad idea.
GlitchMr paste.uk.to/22f651a2
So, I have unshift() for infinite arrays 10:15
moritz unshift is already implemented 10:16
GlitchMr oh, ok
moritz and it's the same for finite and infinite lists
because it just works on the reified part
10:17 cognominal left
moritz r: my @a = 1, 2; @a.unshift: <a b>.list: @a[0] = 4; say @a 10:18
p6eval rakudo c1bfbb: OUTPUT«Too many positional parameters passed; got 2 but expected 1␤ in method list at src/gen/CORE.setting:4614␤ in block at /tmp/8zypWOWaui:1␤␤»
moritz r: my @a = 1, 2; @a.unshift: <a b>.list; @a[0] = 4; say @a 10:19
p6eval rakudo c1bfbb: OUTPUT«4 b 1 2␤»
moritz has no idea where the container in @a[0] comes from
masak arrays provide containers. 10:22
arnsholt fails to spot the difference between moritz's two snippets
masak arnsholt: colon vs semicolon 10:23
moritz just a few pixels
masak yes, it was subtle :)
arnsholt Oh, now I see it =)
GlitchMr pop and push should be errors on infinite lists 10:25
pop because it's impossible
push because it's useless
10:25 cognominal joined
arnsholt Durr, of course. I had things confused >.< 10:27
Of course pop is impossible =)
Coleoid But what if it's only infinite in the middle?
GlitchMr Infinite in the middle? 10:28
Coleoid :D
GlitchMr What?
But, well, I don't think we plan infinite reverse lists.
Timbus 1 .. Inf .. 1 10:29
GlitchMr (read: end is known, but beginning isn't)
arnsholt But there's a different problem. We can't detect all possible infinite lists, so sometimes we'll just have to be satisfied with an infinite loop/recursion
10:29 cognominal left
GlitchMr This list looks interesting 10:29
10:29 cognominal joined
GlitchMr (aside of that Inf .. 1 won't work in Perl 6) 10:30
10:30 scott___ left
Timbus i wanted perl 6 to just assume lists were infinite unless provably finite, but it went the other way =/ 10:30
arnsholt Depends on which is worse I suppose. Not being able to do something on a list that you can do it on, or hanging because you're asking for something infinite 10:31
Coleoid Timbus: That surprises me--are there many benefits to infinite lists that we'd gain from their... pervasivity? Defaultitude? 10:33
masak GlitchMr: and aside from that infix:<..> doesn't chain.
s/from/from the fact/ 10:35
Coleoid No problem--If I ever need such behavior, I can write a class. Technically I see no hitches, the hard part will be naming it. 10:36
Timbus Coleoid, i guess the benefit is mostly that there are no surprises. if everyone knows lists are lazy there's no issues. if the computer knows the list is finite, or you know the list is finite, you can force finiteness. 10:39
it means you can avoid hanging yourself ;] 10:40
10:45 Bzek left 10:52 JimmyZ joined
Coleoid That makes some sense. I haven't worked in an area where I didn't know (at coding time) whether a list was infinite or not... 10:55
Timbus i think its more likely if the language enables it. gather/take for example. I am predicting that libraries will be returning infinite lists from time to time 10:59
Coleoid So I don't expect them to look as similar as they do--in a way I still don't 'get' how one can say "infinite list", instead of "infinite sequence generator". 11:00
Timbus by making them look the same :p
Coleoid :D
11:04 cognominal left 11:14 SamuraiJack left 11:18 eiswar joined, SamuraiJack joined 11:25 cognominal joined 11:30 sergot joined
sergot hi o/ 11:30
masak sergocie! \o/ 11:31
sergot masaku \o/
11:33 bruges left 11:35 fhelmberger left, mtk joined 11:36 sergot1 joined, sergot left 11:37 mtk left 11:38 mtk joined 11:42 jdrab left 11:43 sergot joined 11:45 sergot1 left 11:46 sftp joined 12:00 cognominal left 12:01 kaleem left 12:02 fhelmberger joined 12:10 gongyiliao left 12:18 jaldhar left
felher r: say "BLAR" ~~ /:ignorecase blar/ 12:23
p6eval rakudo c1bfbb: OUTPUT«q[BLAR]␤␤»
felher r: say "BLAR" ~~ /:ignorecase [blar | blubb]/
p6eval rakudo c1bfbb: OUTPUT«#<failed match>␤»
felher Is it supposed to work that way?
moritz it's supposed to match 12:24
r: say "BLAR" ~~ /:ignorecase [blar || blubb]/
p6eval rakudo c1bfbb: OUTPUT«q[BLAR]␤␤»
moritz seems it's an NFA issue
jnthn Hm
moritz nqp: say('BLAR' ~~ /:ignorecase [blar || blubb]/)
jnthn Yeah, guess the NFA builder doesn't know anything about :i
p6eval nqp: OUTPUT«BLAR␤»
moritz nqp: say('BLAR' ~~ /:ignorecase [blar | blubb]/)
p6eval nqp: OUTPUT«␤»
moritz felher: please submit rakudobug 12:25
jnthn
.oO( well, this'll be fun to fix... )
felher moritz: will do :)
12:28 spider-mario joined
masak submits rakudobug 12:28
oh, felher is on it.
masak unsubmits :)
12:29 mucker joined
pmichaud ...nfabuilder is supposed to know about :i 12:32
I mean, there's an ignorecase opcode for it (or at least, I thought there was!)
anyway, I'll look at it a bit, since I'm already in the regex engine guts working on sigsp 12:33
jnthn ++pmichaud
I don't remember seeing such a thing, but maybe I suppressed memories of the NFA builder... :) 12:34
moritz what strikes me is that we didn't have tests for it
jnthn Aye, that is a bit surprising. 12:36
12:37 jaldhar joined
moritz nqp: say('BLAR' ~~ /:ignorecase blar | blubb/) 12:37
p6eval nqp: OUTPUT«␤»
moritz is the :i scoped to the left branch in this case? 12:38
jnthn Don't think so
%*RX is localized per nibbler.
moritz nr: say so 'a' ~~ /:i b | A/ 12:39
jnthn oh, it's possible it still is...
p6eval rakudo c1bfbb: OUTPUT«False␤»
..niecza v19-15-g051783d: OUTPUT«True␤»
moritz nr: say so 'a' ~~ /:i b || A/
p6eval rakudo c1bfbb, niecza v19-15-g051783d: OUTPUT«True␤»
12:39 cognominal joined
jnthn Yeah, think that's right. 12:39
(the || result, taht is)
moritz and niecza in both cases
jnthn yeah
gfldex p6: sub foo(Str $s){ return "$s</$s>" }; say foo 'abc'; 12:40
p6eval niecza v19-15-g051783d: OUTPUT«Unhandled exception: Cannot use hash access on an object of type Str␤ at <unknown> line 0 (ExitRunloop @ 0) ␤ at /home/p6eval/niecza/lib/CORE.setting line 354 (Any.at_key @ 9) ␤ at <unknown> line 0 (ExitRunloop @ 0) ␤ at /tmp/RSUkojt_Zn line 1 (foo @ 3…
..rakudo c1bfbb: OUTPUT«postcircumfix:<{ }> not defined for type Str␤ in method Str at src/gen/CORE.setting:9623␤ in method Stringy at src/gen/CORE.setting:717␤ in sub foo at /tmp/9lE75RDJra:1␤ in block at /tmp/9lE75RDJra:1␤␤»
12:42 kaleem joined
dalek ast: ca2353f | moritz++ | S05-modifier/ignorecase.t:
test LTM + :ignorecase
12:42
pmichaud nqp: say('BLAR' ~~ /:ignorecase [ blar | blubb]/) 12:43
p6eval nqp: OUTPUT«␤»
pmichaud nqp: say('BLAR' ~~ /:ignorecase [ blar || blubb]/)
p6eval nqp: OUTPUT«BLAR␤»
pmichaud nqp: say('blar' ~~ /:ignorecase [ blar | blubb]/) 12:44
p6eval nqp: OUTPUT«blar␤»
pmichaud yeah, okay.
I remember; I didn't do a lowercase nfa opcode; the idea is to generate a node containing x|X
moritz that approach won't scale for :ignoremark 12:45
there might be only two or three cases for each letter, but there can be quite many marked variants of a letter 12:46
pmichaud well, until we have an opcode that can handle ignoremark'ed comparisons, it's a moot point anyway :) 12:50
12:50 tokuhiro_ joined
pmichaud regardless, ignorecase (or cases with small numbers of options) is far better handled by multiple nodes that can do codepoint (integer) compares than by (sub)string compares 12:51
moritz wonders how far one can get to :ignoremark by converting to NFD and comparing base characters only 12:52
pmichaud that may be possible also
anyway, time to leave here; bbiaw
12:52 PacoAir joined 12:56 pdurbin joined
pdurbin moritz: i enjoyed this article of yours. thanks. From Iterative to Functional Perl 6 Code - perl6maven.com/from-iterative-to-fu...perl6-code 12:57
jnthn walk &
moritz pdurbin: nice to hear, thanks 12:59
pdurbin: what other Perl 6 related topics would you like to read about?
that question goes out to everyone else too 13:00
pdurbin hmm, well, i'm only a beginner. i was trying to do a couple katas. parsing json for example. i have perl5, ruby, and python working. but i was having trouble with perl6. as if it was hung or something...
moritz you'll get an infinite loop when quantifying a rule that can match zero characters 13:02
pdurbin huh. ok
moritz pdurbin: do you realize that the "Using Perl 6" book has a JSON parser as an example of the grammar chapter? 13:03
(it's not meant to be that way, it's just something that's not easy to guard against in the regex engine)
pdurbin nope
moritz github.com/perl6/book/downloads
and yes, I do value input from beginners on what to write 13:04
pdurbin moritz: i used this as a starting point for how to parse json with perl6: github.com/moritz/json/blob/master...tructure.t 13:05
moritz ah yes, that repo served as a template for the book chapter too
pdurbin but i'm not really interested in (or experienced enough) to write a grammar. i'm more interested in using your json library 13:06
moritz ah 13:07
that's easy
13:07 nightlord joined
moritz star: use JSON::Tiny; say to-json({ nick => 'pdurbin', state => 'advancing'}) 13:07
p6eval star 2012.07: OUTPUT«{ "nick" : "pdurbin", "state" : "advancing" }␤»
moritz star: use JSON::Tiny; say from-json('{ "nick" : "pdurbin", "state" : "advancing" }')<state> 13:08
p6eval star 2012.07: OUTPUT«advancing␤»
pdurbin just "advancing"? is there supposed to be more output from from-json()? 13:09
13:10 bruges joined
JimmyZ star: use JSON::Tiny; say from-json('{ "nick" : "pdurbin", "state" : "advancing" }') 13:10
p6eval star 2012.07: OUTPUT«("nick" => "pdurbin", "state" => "advancing").hash␤»
tadzik note the <state> at the very end
moritz pdurbin: I only print the value of the 'state' key
JimmyZ star: use JSON::Tiny; say from-json('{ "nick" : "pdurbin", "state" : "advancing" }').perl
moritz star: use JSON::Tiny; say from-json('{ "nick" : "pdurbin", "state" : "advancing" }').perl
p6eval star 2012.07: OUTPUT«{"nick" => "pdurbin", "state" => "advancing"}␤»
JimmyZ oh my
pdurbin ah, i see what you mean. thanks 13:11
13:13 crab2313 joined 13:15 bluescreen10 joined, atrodo joined
pdurbin hmm, having a bit of trouble getting a rakudo-star rpm to build on centos 6 but i'm planning on switching to fedora anyway, where the rpm installs fine. admin.fedoraproject.org/pkgdb/acls...akudo-star 13:18
13:19 GlitchMr left 13:20 sergot1 joined, wtw left, GlitchMr joined
moritz just compiles from source 13:21
13:21 Chillance joined 13:22 skids joined
JimmyZ too 13:22
13:22 sergot left
PerlJam is compiling from source right now. 13:23
13:25 GlitchMr left
dalek kudo/nom: e3d4092 | moritz++ | docs/ChangeLog:
update ChangeLog with IO::{File,Dir} removal
13:26
pmichaud back again, for another morning of perl 6 hacking in the park :) 13:29
[Coke] pmichaud: sounds like fun!
pmichaud it'd be more fun if it was just slightly cooler outside 13:30
PerlJam sounds like a YAPC event or somethign
[Coke] ponders putting a day in at the library on a day when he has no phone calls to do.
13:31 eiswar left
pdurbin moritz and JimmyZ: i added some notes to myself here: wiki.greptilian.com/perl6 . thanks! 13:31
JimmyZ pmichaud: trac.parrot.org/parrot/wiki/WhyDoes...icientCode is still a problem after 6model ? 13:32
pmichaud JimmyZ: I'm not sure how to answer that. Yes, 6model (and Rakudo's new container storage model) changes a lot of the axioms that were affecting nqp code generation. 13:35
I don't entirely agree that NQP's code generation before was "inefficient" -- it did what it had to do within the constraints of the vm.
JimmyZ pmichaud: thanks 13:38
moritz but we still have two GCables for every element of an array of Int, right?
pmichaud yes. not sure how to avoid that, though. 13:39
moritz wow, I've managed to put setting compilation into an infinite loop 13:43
that hasn't happened to me in quite a while
r: class A { has $.x; submethod BUILD(:X(:$!x)) { } }; say A.new(:X<ofo>).x 13:47
p6eval rakudo c1bfbb: OUTPUT«ofo␤»
pmichaud r: say 'b b b b' ~~ /:sigspace b * / 13:49
p6eval rakudo c1bfbb: OUTPUT«q[b ]␤␤»
moritz
.oO( dark matter is really the invisible part of Chuck Norris' muscle matter )
pmichaud Am I correct that this changes under github.com/perl6/specs/commit/12ee...5808fd40b9 ?
and also 13:50
moritz yes
it's supposed to match the whole string now
pmichaud r: say 'bbbb' ~~ /:sigspace b * / # will now be different too
p6eval rakudo c1bfbb: OUTPUT«q[bbbb]␤␤»
moritz will match just the final b now 13:51
13:51 JimmyZ left
pmichaud first b 13:51
oh, final b
moritz actually, empty string
pmichaud correct.
moritz with + it would match the final b 13:52
13:52 JimmyZ joined
pmichaud right. 13:52
13:52 fhelmberger left
moritz the fun of matching regexes in your head :-) 13:54
it's a good thing we teach machines how to do it, because it's really hard to get right when done by hand :-)
s/hand/head/ 13:55
pmichaud when I first saw the commit I thought "okay, that works", but now that I see some of the effects I'm not so sure.
I kind of think that "[b ]*" is superior to "b *" in this case.
dalek ast: 279df78 | moritz++ | S32-io/io-path.t:
initial tests for IO::Path
13:56
pmichaud looks at some JSON::Tiny code 13:58
masak explain to me how /:sigspace b * / matches the *final* 'b'?
aloha positive: nothing; negative: nothing; overall: 0.
masak aloha: shut. up.
moritz masak: :s b * is like [b<.ws>]* now
tadzik explain yourself!
aloha positive: nothing; negative: nothing; overall: 0.
masak moritz: yes...?
pmichaud actually, that should be /:sigspace b + / to match the final b.
moritz masak: and <.ws> doesn't match between b's
right
so the only b after which <.ws> matches is the final one 13:59
pmichaud with the * it will be the null string
(as moritz++ said)
masak oh, <.ws> doesn't match between b's?
pmichaud <.ws> doesn't match between word chars
masak right, because it's 'bbbbb'. I see.
moritz masak: no. <.ws> desguars to <.ww> | \s+
masak rightright.
I see it now.
moritz++ pmichaud++
pmichaud <!ww>
moritz erm, yes 14:00
pmichaud oh yeah, <.www> might work. Anyway, it checks for word chars
(I'm on a laggy connection this morning, pardon typos please) 14:01
well, in the case of something like <pair> * % ',' I agree that the brackets aren't an improvement.
[<pair> ]* % [',' ] 14:02
for / <element> + % ',' / S05:1138 claims a redundancy for the whitespace between <element> and '+' and the '+' and the '%', but I'm not sure it's redundant if the quantifier is '*' 14:07
i.e., in / <element> * % ',' / the whitespace isn't redundant. 14:08
14:08 thou joined
pmichaud i.e., it's rewritten to / [ <element> <.ws> ] * % [ ',' <.ws> ] <.ws> / and all of the <.ws>'s are needed. 14:10
14:11 zhutingting joined 14:14 tokuhiro_ left, sergot joined, pdurbin left 14:16 sergot1 left
pmichaud I'm also wondering if some of the smarts about when to call consecutive <.ws>'s should be moved into the regex engine itself. 14:19
masak sounds like a good idea.
pmichaud i.e., to eliminate Rakudo's <MARKED(...)> rule and the equivalents for STD
well, perhaps not eliminate, but definitely to hotpath it
masak & 14:20
14:21 bruges left
pmichaud jnthn: ping 14:28
14:28 GlitchMr joined
[Coke] ack -ic pir src | awk -F: '{sum +=$2} END{print sum}' 14:30
637
I assume the eventual goal is to move that to 0ish. (by hiding things in NQP instead.)
pmichaud that number is way too high 14:31
sicne it includes src/pmc 14:32
*since
[Coke] pmichaud: only one instance of "pir" in that dir. 14:33
pmichaud yeah, I'm checking that too
[Coke] (ina comment)
pmichaud a *lot* of the pir::'s look like they could be converted to nqp:: now.
14:33 kaare_ joined
pmichaud try \bpir\b instead, though. 14:34
so you don't get all of the _pirop_mapping calls, and others 14:35
and the comments that have words like "expires" :-)
[Coke] ack -icw pir | sort -t: -n -k2 # shows 5 files with 30 or more references 14:36
14:37 cognominal left
pmichaud anyway, yes, the goal is to move the pir:: stuff to nqp, but only for stuff that isn't vm-specific. If it's specific to Parrot, it should remain pir:: 14:39
i.e, nqp:: shouldn't just be a renaming of parrot opcodes 14:40
14:42 cognominal joined 14:44 jaldhar left 14:45 sergot1 joined 14:47 sergot2 joined
[Coke] should the specific to parrot stuff be in rakudo, though? 14:47
14:47 sergot left
pmichaud I suspect rakudo will have some parrot-specific stuff for a while, yes. 14:49
14:49 sergot joined
pmichaud rakudo-specific stuff probably shouldn't go into nqp 14:49
14:49 sergot1 left
JimmyZ thinks it's better to improve parrot other than target other vms 14:49
pmichaud JimmyZ: who will be doing the improving, though? 14:51
14:51 sergot2 left
[Coke] I agree. faster/better rakudo with no work on rakudo would be awesome, though. ;) 14:52
s/though// 14:53
JimmyZ wonders who will do work to target other vms
[Coke] Oh, I'd probably work on a JVM target.
Be nice to be able to use perl6 at work. 14:54
14:54 mucker left
hoelzro [Coke]: or on Android =) 14:54
[Coke] JimmyZ: making nqp generate something other than PIR sounds much easier to me than writing C code for parrot.
if writing C code for parrot was easy for me, I'd do more of it, for sure. 14:55
14:55 mucker joined
JimmyZ somebody said the ruby community is so unitive that they only have one framework :) 14:56
14:56 kaleem left 15:01 sergot left 15:03 crab2313_ joined
zhutingting dancer was inspired by sinatra 15:03
JimmyZ 朱婷婷你好
zhutingting ;-)
many projects were inspired by ruby and python and etc 15:05
15:05 crab2313 left 15:06 sergot joined
pmichaud I'm afk again... bbl 15:07
zhutingting just rip off have fun 15:08
15:15 sergot1 joined 15:18 sergot left 15:21 kaleem joined 15:23 kaleem left 15:27 nightlord left
TimToady masak: \x2028 is discussed in S02:64 15:36
15:39 cognominal left
TimToady arnsholt: re irclog.perlgeek.de/perl6/2012-08-01#i_5865547, "Sink me!" --The Scarlet Pimpernel 15:42
15:45 cognominal joined, adu joined, thelazydeveloper joined
jnthn pmichaud: pong, though I see you already left 15:45
15:50 JimmyZ left 15:53 cognominal left 15:58 Ex joined, Ex left, Ex joined 16:02 cognominal joined 16:08 flussence left, flussence_ joined 16:09 flussence_ is now known as flussence 16:11 Ex left 16:14 am0c joined 16:25 flussence left 16:27 SamuraiJack left 16:28 SamuraiJack joined 16:29 flussence joined
dalek ecs: 0d42d6c | larry++ | S05-regex.pod:
The spaces are not redundant under *, pmichaud++
16:30
sorear good * #perl6 16:35
spider-mario hi
jnthn o/ sorear 16:38
crab2313_ o/ sorear 16:40
16:41 zhutingting left 16:43 Ex joined 16:52 SamuraiJack left, spider-mario left
masak TimToady: yes, but that's the source code. I was talking about .lines 16:53
arnsholt jnthn: When I'm adding a new opcode in NQP to be exposed as an nqp:: does it go in src/PAST/NQP.pir, src/QAST/Operations.nqp or both? 16:54
16:55 daxim left, SamuraiJack joined 16:57 birdwindupbird left 16:58 dakkar left
pmichaud arnsholt: definitely src/QAST/Operations.nqp . If the opcode is needed for building nqp itself, then it also needs to go into src/PAST/NQP.pir until we get nqp switched over to QAST 16:59
arnsholt Right. Not gonna bother with PAST then. Cheers 17:04
pmichaud jnthn: ping (re-attempt :) 17:07
jnthn pmichaud: o/
17:12 cognominal left, bluescreen10 left
pmichaud how much would it be worth to save an attribute in Cursor? ;-) 17:12
a lot? a little? 17:13
jnthn pmichaud: Every time I shaved an attribute off QAST::Node we won a measurable amount of memory.
pmichaud so, worth a fair bit, then?
jnthn pmichaud: Er, saved a measurable amount.
pmichaud: It's worth something, yes. 17:14
Which one are you thinking we can lose?
pmichaud I'm thinking we can combine $!orig and $!target
(and possibly others, but those are the obvious ones) 17:15
jnthn Hmm...how'd we do that?
pmichaud if we create a struct to hold both of those attributes, since they're invariant over a match, we can keep track of them with a single object reference in each cursor object instead of two
jnthn Every problem can be solved by... :)
pmichaud class NQPCursorSource { has $!orig; has str $!target; } 17:16
jnthn Right :)
Probably a net win.
pmichaud then each Cursor just keeps a reference to $!source
we have to do an extra attribute lookup for each subrule invocation, but ....
we also lose an attribute lookup and bind operation for each cursor creation
jnthn Right, so probably it ties in that regard. 17:17
pmichaud (because we can do a single bind when creating the cursor instead of two)
the NQPCursorSource can also cache information about the overall match
for example, it's an obvious place to keep track of line offsets
(the starting position of each line) 17:18
lastly, we could even attach something like STD.pm6's @*MEMOS array there, to be able to optimize rule stuff
jnthn Ooh 17:19
pmichaud i.e., we could let the regex engine itself decide not to even call the <.ws> rule when it knows that it's already matched.
jnthn Are you pondering putting the MARKED thing there? :) 17:20
pmichaud or things like that.
GlitchMr perl6: :2<1.0011101111100111011011001000101101000011100101011>.print
p6eval niecza v19-15-g051783d: OUTPUT«1.234»
..rakudo c1bfbb: OUTPUT«1.2340000000000000»
pmichaud well, being able to wisely handle consecutive <.ws> calls is what led me to it, yes.
STD.pm6 uses @*MEMOS for quite a bit of stuff, though, so it might not be a way to eliminate everything. But if we can cache some per-match information that lets us prune subrule calls, it might be a really good optimization. 17:21
dalek p: df6015a | jnthn++ | src/QAST/Compiler.nqp:
Provide a way to let a HLL specify that returned values should always be boxed. Outsourcing this to QAST has various benefits, including keeping this out of the QAST tree itself. Then inlining doesn't have to worry over this detail.
17:22
pmichaud and having a separate struct to hold $!orig might be a natural place for such per-match scratchpad stuff.
anyway, I think it would be a simple change to make, so I'll go ahead and prototype it. 17:23
it will save one str attribute per Cursor, and one bind operation per subrule invocation
dalek kudo/nom: 6956baf | jnthn++ | tools/build/NQP_REVISION:
Bump to latest NQP_REVISION for QAST improvements.
17:24
kudo/nom: 7adef40 | jnthn++ | src/Perl6/ (2 files):
Kill off box_native_if_needed; QAST having HLL-configurable boxing means that we don't need to do it any more. Results: cleaner code, less QAST nodes needed, slight performance/memory win.
jnthn pmichaud: Sounds good to me.
TimToady masak: I see nothing in that section that limits "and has consistent Unicode semantics" to the source code. 17:25
PerlJam pmichaud: random peanut gallery question ... would the thing you just proposed also be usable for quantified quantifiers ? (i.e. so that you know when you've already matched the inner match of something like (a*)* zero times and so can fail faster) 17:26
pmichaud PerlJam: I think I already figured out how to break that loop, using the bstack.
PerlJam ok
pmichaud but yes, if my other approach ends up not working then the scratchpad might help. 17:27
17:27 mucker left
pmichaud essentially, I'm thinking that push_mark can refuse to push a duplicate mark onto the bstack 17:28
or, it can signal "I already have this mark" and the caller can figure out "oh, I should not loop here" 17:29
17:34 sergot joined
jnthn dinner; bbl 17:35
17:35 xinming_ left 17:36 sergot1 left 17:39 am0c left 17:41 am0c joined
moritz r: my @a = 1..4; say @a[1..*] 17:41
p6eval rakudo c1bfbb: OUTPUT«2 3 4␤»
moritz r: my @a = 1..4; say @a[1..*-2] 17:42
p6eval rakudo c1bfbb: OUTPUT«2 3␤»
17:42 xinming joined
dalek c: e0b2b30 | moritz++ | lib/WhateverCode.pod:
WhateverCode
17:44
c: c73b3cb | moritz++ | lib/Whatever.pod:
explain that Range operators curry WhateverCode but not Whatever
c: e1ffe9b | moritz++ | lib/Whatever.pod:
emphasize that Whatever-currying is syntactic
17:47 fgomez joined, fgomez left 17:49 GlitchMr left, cognominal joined 17:52 fgomez joined
moritz jnthn: I'm curious about sub istype in Actions.pm. In what cases does nqp::istype die? 17:54
if $type isn't a type?
seems most usages of it have $Pair or so as type, which was retrieved as $*W.find_symbol(['Pair']) 17:56
r: say ObjAt.^mro
p6eval rakudo c1bfbb: OUTPUT«ObjAt() Any() Mu()␤»
17:57 cognominal left
dalek c: a878b89 | moritz++ | lib/Mu.pod:
Mu.WHICH, ObjAt
18:02
jnthn moritz: Type variables 18:03
moritz jnthn: ah 18:05
jnthn: so where the type is clearly not a type variable, we can change it to nqp::istype? 18:06
for example if istype($type_obj, $*W.find_symbol(['Numeric'])) { 18:07
or does it die $type_obj is a type variable?
jnthn It's about the LHS too.
moritz r: role A[::T] { my T enum B <C D> } 18:08
p6eval rakudo c1bfbb: OUTPUT«===SORRY!===␤Cannot auto-generate a proto method for 'Numeric' in the setting␤»
jnthn ...wow
moritz I guess that would need the same declaration deferal as declarations in quasi 18:09
jnthn To the degree we care to make roles that macro-ish, yes
moritz submits LTA error rakudo bug, justin case 18:10
r: role A[::T] { my T $x }
p6eval rakudo c1bfbb: ( no output )
moritz r: role A[::T] { class B is T { } } 18:12
p6eval rakudo c1bfbb: OUTPUT«===SORRY!===␤Cannot type check against type variable T␤»
18:18 sergot left 18:19 sergot joined 18:35 Coleoid left, sergot1 joined 18:37 sergot left, crab2313_ left 18:47 cognominal joined 18:56 cognominal left, cognominal joined 19:01 sergot joined
[Coke] .u * 19:02
phenny U+0001 - ()
U+0002 - ()
U+0003 - () [...]
[Coke] .u *
phenny U+002A ASTERISK (*)
19:03 sergot1 left, sergot1 joined
[Coke] .u * 19:04
phenny U+002A ASTERISK (*)
[Coke] whew.
19:05 sergot left 19:08 sergot joined 19:09 sergot1 left 19:12 sergot left, sergot1 joined 19:14 brrt joined 19:15 brrt1 joined
shachaf preflex: seen ingy 19:16
preflex ingy was last seen on #perl6 1 day, 21 hours and 44 seconds ago, saying: I think people will get it...
19:16 sergot joined, GlitchMr joined 19:18 sergot1 left, brrt left 19:20 sergot1 joined 19:21 sergot left
GlitchMr robert.duckduckgo.com/?q=perl6+lcfirst 19:22
ok...
moritz robert.duckduckgo.com/?q=perl6+tc 19:23
misses a linebreak between the two method signature lines 19:24
GlitchMr I know
moritz otherwise very cool
GlitchMr It seems that DuckDuckGo doesn't understand &#10;
I already have pushed a commit to use <br> instead 19:25
But it might take a while to be pulled into experimental version of DuckDuckGo
crazedpsyc it's in a <pre>
use \n?
GlitchMr This is so confusing and there is no real documentation 19:26
dalek kudo/inliner: 558ea68 | moritz++ | src/core/IO.pm:
remove IO::Path and IO::Dir

as the deprecation notice predicted
19:26 dalek left
GlitchMr Also: 19:26
robert.duckduckgo.com/?q=Perl+6+Str
crazedpsyc yeah, fathead is the next in line to get refactored and documented
GlitchMr Except something went wrong...
19:26 dalek joined, ChanServ sets mode: +v dalek
GlitchMr I guess I've found a bug in DuckDuckGo 19:27
moritz happens :-)
GlitchMr robert.duckduckgo.com/?q=Perl+6+Mu
:)
crazedpsyc hah
crazedpsyc adds to bug list
dalek kudo/inliner: 4c3f769 | jnthn++ | src/Perl6/ (2 files):
Elimination of boxable_native, and better handling of literal allomorphy.
19:28
moritz GlitchMr: it would also make sense to show the first paragraph of the description of a type
GlitchMr Hmmm... yeah... 19:29
That probably could be done by adding generic "Str"
19:29 birdwindupbird joined
GlitchMr github.com/GlitchMr/zeroclickinfo-...output.txt 19:29
Well, there is also problem with disambig 19:30
It ought to work, but doesn't (I don't know why) 19:31
19:33 GlitchMr left
masak I don't think 'role A[::T] { my T enum B <C D> }' should be made to work, no. 19:33
jnthn phew ;) 19:34
masak not sure why I think so. I've never seen roles as being that macro-like, I guess.
better to use a macro if that's what you want.
jnthn Aye
masak and leave roles to be simple.
jnthn "simple" :P
masak well, "si..." what jnthn said ;)
19:35 sergot joined 19:37 sergot1 left
arnsholt jnthn: Is QAST/Operations.nqp the place to expose things as nqp::? It seems I didn't get beyond pir:: 19:54
jnthn arnsholt: Yes, but maybe run what you're adding by Pm or me first :) 19:56
Also if it's very Perl 6 specific it may belong in src/Perl6/Ops.pm 19:57
arnsholt It's exposing the dyncall writebarrier stuff, so I'm pretty sure it has to be in NQP first 20:02
20:03 fibo joined
lue hello world o/ 20:03
jnthn arnsholt: ah, yes, then add it with the other nativecall ops 20:05
masak lue! \o/
20:06 cognominal left 20:08 SamuraiJack left
arnsholt jnthn: Cool. I'll see if I can figure out why it's not working then =) 20:09
lue masak: I can't get my demo game to work, would you like to take a look at it? 20:18
moritz arnsholt: are you using it in rakudo or in nqp? 20:19
arnsholt Using it from Rakudo 20:22
Doesn't work from the NQP REPL either, actually
moritz did you install nqp? 20:23
(stupid question, I know)
20:23 cognominal joined
jnthn Wait, using it in Perl 6 code or in NQP code? 20:24
masak lue: sure.
lue github.com/lue/skytemple/blob/mast...mo/demo.p6 20:25
masak lue: BUILD sybmethod looks good. 20:26
sub*
lue: oh, but you need .place_player, too
lue Specifically it's a "Cannot look up attributes in a type object" error once you try to type in a command :/
oh. That would help :)
20:26 brrt1 left
arnsholt moritz: Yeah, it's installed 20:27
masak lue: my $game = IFGame::Demo;
lue: need .new there.
that's why you get the "type object" error. 20:28
lue Alright, got everything fixed (although going north from the bunker doesn't cause the remarks. At least I can play now :) ) 20:30
moritz that error always means a method isn't strict enough on its invocant
20:31 brrt joined, sergot1 joined
masak lue: in the final for @events, you need to handle Adventure::GameRemarked. see crypt. 20:32
20:32 sergot left
lue masak: just saw that poking through crypt. 20:32
arnsholt Hmm. Looks like I might've forgotten to rebuild Rakudo 20:33
Thought I'd done it
20:33 sergot joined
masak lue: the CLI is a "read side", with "event listeners" that mostly print updates for the user. 20:33
lue OK. I feel I'm starting to get the hang of how to use Adventure::Engine. 20:34
20:35 cognominal left
masak yay. 20:35
20:35 sergot1 left
masak lue++ # Adventure::Engine's first downstream! 20:35
let me know of any feature requests, and we'll discuss them. 20:36
I haven't forgotten about your noun synonym one.
and feedback from other sources tells me I want something like that.
20:36 cognominal joined
lue I feel I'll get more used to it when I write a sub MAIN without any stolen^Wborrowed code from crypt. :) 20:36
20:39 sergot left
masak aye, good idea. 20:39
20:39 brrt left 20:42 adu left
dalek Heuristic branch merge: pushed 55 commits to nqp/toqast by jnthn 20:51
20:52 birdwindupbird left
moritz toqast? 20:53
jnthn: are you reviving that branch?
dalek c: 2b6e4f4 | (Felix Herrmann)++ | lib/Date.pod:
[Date] fix duplicated text
20:54
jnthn moritz: Yes, for its original purpose :) 20:56
dalek c: d864a34 | moritz++ | lib/Date.pod:
[Date] fix duplicate word
moritz jnthn: oh, moving nqp to qast
jnthn Right :)
Initial bits of the work are quite mechanical, so just picking off a little of it. 20:57
(Inliner is coming along, but I need some time to ponder literal allomorphism stuff...) 20:58
felher :/ ... the commit at least got moritz to fix it ...
* moritz++ to fix it
20:59 fibo_ joined
moritz felher: I found it quite amusing, you removed duplicate sentence fragment, I removed duplicate word :-) 20:59
moritz -> sleep
felher moritz: sleep well :) 21:00
21:00 fibo left
masak moritz: dream of duplicate removals of duplicate things. 21:00
21:00 fibo_ is now known as fibo 21:04 skids left
fibo hi! works only on chrome : tris3d.com/ 21:04
21:04 fibo left
dalek p/toqast: ae3c767 | jnthn++ | / (5 files):
Add a temporary NQPQ to do the initial bits of QAST migration; yes, the missing dependency in the Makefile is deliberate.
21:12
21:17 kaare_ left
dalek kudo/nom: eb46da2 | jnthn++ | src/Perl6/Actions.pm:
Toss a use statement that we no longer need.
21:18
21:19 atrodo left
masak ...a 'use' statement that we no longer 'need'... :P 21:20
jnthn We totally don't require it any more, dude!
Totally unimportant. 21:21
masak ;) 21:26
21:34 benabik left
dalek p/toqast: 077f198 | jnthn++ | src/NQPQ/ (2 files):
Translate PAST::Stmt/PAST::Stmts to QAST::Stmt/QAST::Stmts.
21:47
p/toqast: c58ae6d | jnthn++ | src/NQPQ/Actions.pm:
Do a bunch of the easy PAST => QAST translations.
jnthn Well, there's that little project started.
masak jnthn++ 21:50
jnthn The good thing: NQP is rather smaller than Rakudo. The bad thing: NQP relies much more heavily on things I tossed in QAST that will not be coming back. 21:52
sorear NQPQ is the part where we convert NQP to use QAST and drop PAST for good? 21:54
jnthn Right.
I also get to kill off use of Parrot Undef along the way.
That will...have some fallout.
(Like, less suckage in the codebase...) 21:55
sorear we use parrot undef?
jnthn NQP does, sadly.
sorear ++jnthn
21:56 bluescreen10 joined
jnthn Well, NQP was initially Perl 6 like syntax on top of Parrot primitives, and times have kinda changed since. 21:56
22:04 benabik joined 22:05 bluescreen100 joined 22:06 bluescreen100 left, bluescreen10 left 22:10 cognominal left 22:15 PacoAir left 22:20 cognominal joined
jnthn rest & 22:22
22:23 am0c left
masak 'night, #perl6 22:44
22:45 skids joined 22:58 mscha left 23:03 cognominal left, cognominal joined 23:10 cognominal left 23:14 ggoebel joined 23:19 whiteknight joined 23:20 whiteknight is now known as Guest21411 23:22 thou left 23:31 raiph left 23:39 MayDaniel left 23:55 cognominal joined 23:58 thelazydeveloper left