»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by sorear on 25 June 2013.
dalek ecza: 4becd9e | coke++ | t/spectest.data:
These tests rely too heavily on SetHash/BagHash

Need to implement those before we can run them.
00:04
ast: e195879 | coke++ | S (7 files):
niecza fudge
grondilu r: subset Prime of Int where &is-prime; say 2013 ~~ Prime 00:41
camelia rakudo 50cecf: OUTPUT«False␤»
colomon is there a simple way to get the first or second half of an array in p5?
colomon wishes p6 were fast enough for his current task 00:42
grondilu colomon: maybe change the way your array is encoded. Use a binary tree or something. 00:43
japhb__ colomon: What is your current task?
colomon: (Half a p5 array): Copy the array and splice? 00:44
p5eval: my @a = (1, 2, 3, 4, 5, 6); splice(my @b = @a, @a/2); say "@b"; 00:45
p5eval japhb__: ERROR: Not an ARRAY reference at (eval 7) line 1.
japhb__ p5eval: my @a = (1, 2, 3, 4, 5, 6); my @b = @a; splice(@b, @b/2); say "@b"; 00:46
p5eval japhb__: 1 2 31
colomon japhb__: I'm trying to do a binary search on the set of faces which are toruses in a STEP file. 00:49
colomon but I simplified that down to binary pruning of an array of face IDs 00:51
japhb__ A single face which is a torus?
colomon each face in question would be on a torus surface 00:52
japhb__ Oh, I see.
grondilu other set of faces can be spheres, for instance?
japhb__ was imagining "faces" actually being arbitrary N-dimensional surfaces, or some such. 00:53
grondilu I mean, you have several kinds of objects and you want to detect which ones are toruses?
colomon grondilu: that's just step one.
Ip.amkrankruleuen 00:54
whoops
grondilu that's far from trivial
colomon anyway way, I'm fairly certain the problem face is a torus. But there are 323 torus faces in the file. So I need to zero in on the troublemaker somehow
grondilu: I know it's literally a torus, ie a TOROIDAL_SURFACE. So that part is easy. 00:55
at the moment, it's mostly the p5 equivalent of @array[0..*/2] that's bugging me 00:56
grondilu doesn't @array[0..@array/2] work? 00:57
p5eval: my @a = 1..10; @a[0..@a/2]
p5eval grondilu: 6
grondilu p5eval: my @a = 1..10; @a[0..(@a/2)] 00:58
p5eval grondilu: 6
colomon p5eval: my @a = 1..10; say @a[0..(@a/2)]
p5eval colomon: 1234561
grondilu p5eval: my @a = 1..10; join ' ', @a[0..(@a/2)]
p5eval grondilu: 1 2 3 4 5 6
colomon grondilu++ 00:59
grondilu p5eval: my @a = 1..10; join ' ', @a[0..@a/2] # thought I didn't need the parens 01:00
p5eval grondilu: 1 2 3 4 5 6
colomon p5eval: my @a = 1..10; join ' ', @a[0..^@a/2] 01:01
p5eval colomon: ERROR: syntax error at (eval 7) line 1, near "..^"
grondilu p5eval: my @a = 1..10; use integer; join ' ', @a[0..@a/2]
p5eval grondilu: 1 2 3 4 5 6
grondilu p5eval: my @a = 1..10; use integer; join ' ', @a[0..@a/2 - 1]
p5eval grondilu: 1 2 3 4 5
dalek p: 50f5632 | coke++ | docs/ops.markdown:
add opcode doc
01:18
BenGoldberg p5eval: my @a = 1..2; say $a[0.5]; 01:48
p5eval BenGoldberg: 11
japhb__ colomon: Keep a separate array of indices, modify that during your binary search, and then slice with @a[@i] ?
BenGoldberg p5eval: my @a = 1..2; $a[0.5];
p5eval BenGoldberg: 1
colomon japhb__: I think I've got things okay now, thanks.
Right now I'm in the terrible area of not quite duplicating my bug.... 01:49
japhb__ colomon: Yes, but now you've unleashed an interesting puzzle on us. ;-)
ugh, hate that.
BenGoldberg my @a = 1..10; $a[ $#a / 2 ];
p5eval: my @a = 1..10; $a[ $#a / 2 ];
p5eval BenGoldberg: 5
BenGoldberg :)
moritz \o 05:54
JimmyZ o/ 06:02
masak o/ 06:38
labster \o 06:51
masak sjn: I'm almost 100% sure you don't *actually* want aleph 0, aleph 1, etc, in the language... 06:56
sjn: but I'm curious. can you think of *one* use case for those? I can't. :)
japhb__++ # irclog.perlgeek.de/perl6/2013-10-09#i_7695203 06:58
jnthn o/
labster I have recently discovered that maintenance programming Perl 5 isn't so bad, but when I want to design new software, I really miss Perl 6. I automatically start writing "has $.name;" and I keep wanting to push pairs onto a hash. And where is my zip operator?! 07:01
masak Grammar::Infer sounds like a grammar controlled by a corpse controlled by a dark wizard from the Harry Potter universe...
labster expellimodulus! 07:02
arnsholt Inferring a grammar from data is... non-trivial
masak yeah. 07:03
arnsholt In fact, if I remember correctly there's a theorem in learning theory that says that for a sufficiently complex rule system, you need negative data as well as positive data to learn the full system
For values of "complex" similar to that required for Godel's theorems; that is, not very complex =) 07:04
arnsholt I wanted to do grammar induction for my master's thesis, actually. That turned out to be a mite over-amobitious 07:05
masak :) 07:07
arnsholt: what you said about negative data sounds very much like chapter 8 of HPMoR. 07:08
arnsholt What's that chapter about? 07:10
masak EY calls it "positive bias", but I've also heard it called "confirmation bias". 07:12
the tendency to have a preferred model, and to "validate" it by finding instances that match it.
but not going out of your way to invalidate it by finding instances that don't match.
moritz it's about mental models being wrong because you only look at matches, not non-matches
masak I consider myself having independently learned to counteract confirmation bias through my adventures in bug submitting, and its associated golfing and finding the cause. 07:14
but it's a constant battle against that bias, for sure.
masak the brain likes to smudge the limit between sensory input and mental model. 07:15
arnsholt Yeah, it's a classic bug in the human brain I Think 07:17
moritz first reported hundreds of years back, and still not patched 07:18
jnthn
.oO( unintelligent design... )
07:26
masak it's probably a hard one to fix. being convinced of something has its evolutionary advantages, too. 07:29
specifically, being convinced of something with less-than-complete evidence. 07:30
jnthn teaching & 07:33
masak .oO( There are 10 types of people in the world. I'm not actually sure you can have 0 as a base. ) 07:46
hoelzro o/ #perl6 07:50
sjn masak: novelty. :) 07:53
masak sjn: I was asking because I'm genuinely curious. I can't think of any use case. 07:54
sjn: specifically, aleph one is "non-constructive" in a way I can't really make precise (but sorear probably could). 07:55
masak and non-constructive things don't really work that well on Turing hardware. 07:55
stackoverflow.com/questions/1921093...constant-1 # C is weeeeeird
arnsholt masak: What does non-constructive mean in this context? 08:33
masak arnsholt: in my mind, I have it as "you can build it with finite components in computer memory". 08:34
ah, sorry, that was "constructire" :) 08:35
I removed the negation.
constructive*
arnsholt Right, that makes sense I think 08:38
nwc10 jnthn: this made me think of things you've said about string reversing. But I wasn't aware how much more pain there was: www.vidarholen.net/contents/blog/?p=324 10:02
masak nice post. 10:08
yeah, surrogate pairs and composing chars were the ones I was immediately aware of.
BOMs, directional overrides, RTL markers, and interlinear annotations are there too. good point. 10:09
the more you think about it, the less a string is an array-like thing; it's more of a graph-like thing. 10:10
well, directed graph.
moritz
.oO( god DAG )
10:20
masak yeah, guess so. can't think of a case with cycles :) 10:26
jnthn nwc10: ouch :) 11:15
diakopter nwc10: do you reverse the jamo in a Hangul syllable? <shrug> do you reverse the combining characters of Indic consonant clusters, which aren't even Unicode combining codepoints? <shrug> 11:18
masak reversing the jamo sounds odd. 11:20
diakopter omaj.... 11:21
.oO( homage to jamo.. )
11:22
dalek rlito: 219ca58 | (Flavio S. Glock)++ | / (2 files):
Perlito5 - perl6 - call
12:08
GlitchMr std: / abc /xms 12:33
camelia std a0bcfb1: OUTPUT«===SORRY!===␤Unsupported use of suffix regex modifiers; in Perl 6 please use prefix adverbs at /tmp/g3ZjTpWvQY line 1:␤------> / abc /xms⏏<EOL>␤Other potential difficulties:␤ Unsupported use of /m; in Perl 6 please …»
GlitchMr std: / [a-z] /
camelia std a0bcfb1: OUTPUT«===SORRY!===␤Invalid regex metacharacter (must be quoted to match literally) at /tmp/ivaiVBJWcP line 1:␤------> / [a-⏏z] /␤Potential difficulties:␤ [a-z] appears to be an old-school character class; please use <[a..…»
GlitchMr std: // 12:42
camelia std a0bcfb1: OUTPUT«===SORRY!===␤Null regex not allowed at /tmp/egDRZeK7z9 line 1:␤------> //⏏<EOL>␤Check failed␤FAILED 00:01 120m␤»
dalek p/moarboot: 2fda98b | (Tobias Leich)++ | / (2 files):
strip now unneeded heisenbug-switches
12:46
jnthn yay! 12:47
moritz \o/ 12:48
FROGGS I'm happy that they are gone too!
so, fix all the bugs so that we can think about rakudo? :o)
and we need to steal^Wimplement encode/decode 12:49
jnthn I think Moar already partly has what we need for those 12:50
So it's probably mostly wiring
We should fix the other bugs too
FROGGS hmmm, yeah, right
coll :D
cool* 12:51
jnthn I may have energy for some of them after my train journey home this evening 12:55
If not, tomorrow is free-ish :)
FROGGS I'll have some time this evening I guess :o) 12:59
moritz is it normal that the JVM takes about about 3 cores while compiling the setting? 13:06
jnthn 2 I could imagine, 3 is curious 13:07
(one for GC, one for running stuff)
moritz it does say 299 to 302% CPU here (in htop)
jnthn wow
tadzik mine is using 4 alright 13:08
jnthn 4? core blimey!
moritz huh, rakudo jvm build failed 13:09
moritz tries again with a newer nqp
jnthn Odd...did today's roast data look fine? 13:10
moritz build succeeded now. 13:28
moritz r-j: say 'just checking if it still works' 13:48
camelia rakudo-jvm 50cecf: OUTPUT«just checking if it still works␤»
diakopter r-j: say eval "1"x 9999999 13:58
camelia rakudo-jvm 50cecf: OUTPUT«(timeout)»
diakopter r-j: say eval "1"x 999999
FROGGS .oO( just checking if it still breaks )
camelia rakudo-jvm 50cecf: OUTPUT«(timeout)»
diakopter r-j: say eval "1"x 99999
camelia rakudo-jvm 50cecf: OUTPUT«(timeout)» 13:59
moritz fwiw I have no idea how timeouts and evalserver relate
diakopter r-j: say eval "1"x 9999
camelia rakudo-jvm 50cecf: OUTPUT«11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111…»
diakopter r-j: say eval "11"x 9999
camelia rakudo-jvm 50cecf: OUTPUT«11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111…»
diakopter r-j: say eval "111"x 9999
moritz I never considered the question whether an inifnite loop will kill the evalserver for good
camelia rakudo-jvm 50cecf: OUTPUT«11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111…»
diakopter r-j: say eval "1111"x 9999
camelia rakudo-jvm 50cecf: OUTPUT«11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111…» 13:59
diakopter r-j: say eval "11111"x 9999
moritz diakopter: would you mind doing that experimentation in private message?
diakopter ok
camelia rakudo-jvm 50cecf: OUTPUT«11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111…» 14:00
jnthn wonders which is slowest, the parsign of the constructing epic bigint... :)
moritz there's no epic bigint 14:01
just a string
jnthn no
eval
moritz oh
right
diakopter r-j: say eval " " x 999 x 999 x 999 14:04
camelia rakudo-jvm 50cecf: OUTPUT«java.lang.OutOfMemoryError: Java heap space␤␤»
diakopter I'm trying to remember how I caused invalid bytecode the other day
masak Y U FILL BACKLOG WITH ONES!? 14:06
diakopter pauses from rotfl to type this
diakopter again pauses from rotfl to type this 14:07
tadzik this is how I rofl
masak tadzik: :) 14:08
masak .oO( "but diakopter, what are you doing on the carpet?" -- "it's just how I roll" )
PerlJam
.oO( ... and then he zaps people with static electricity )
14:09
moritz prefers dynamic electricity 14:10
masak .oO( J. K. Rowling On The Floor, Laughing ) 14:11
FROGGS -.-
Ulti the J.K. stands for Joe King 14:12
or maybe Jo King to be moar obvious and effeminate 14:13
moritz I think it was "Just Kidding" 14:14
diakopter zombie discovered in Ohio: goo.gl/sb2C7d 14:20
tadzik Left 4 Dead: Ohio
hoelzro my fianceé and I sometimes talk about how cool it would be if there were a L4D in Tokyo. 14:21
tadzik let's do that
I like the disneyland campaign
hoelzro hahaha 14:22
hoelzro I love it 14:22
tadzik we should play a co-op some day
hoelzro sure! 1 or 2?
tadzik 2
there's no 1 on linux, so I don't even have it ;)
hoelzro ah =)
it's been a while since I've played; that would be fun 14:23
tadzik steamcommunity.com/sharedfiles/file...=176102683
hoelzro: let me know when you have some free evening :) 14:25
masak for a long time, I've wanted to express (and blog about) something along the lines of "languages can't fail to be opinionated"
hoelzro will do =)
hoelzro completely forgot you could mod L4D
we could *make* the Tokyo campaign =)
tadzik there is some nice stuff in there
yeah, that's what I was saying ;)
I've no idea how to do this, actually 14:26
masak when I first came to Perl 6, I viewed Perl 6 as making many design decisions as they "should" be made.
hoelzro google: "How to write left for dead mods in Perl 6"
tadzik hah
diakopter .g "How to write left for dead mods in Perl 6"
yoleaux No results found.
masak but "opinionated" implies that a choice has been made, and it wasn't the "right" choice because there isn't necessarily a "right" choice. just a choice.
hoelzro damn! 14:27
FROGGS "opinionated" sounds to me as one isnt allowed to drive a car or operate on heavy machines 14:28
hoelzro masak: I would argue that "opinionated" implies that choices were made according to opinion
FROGGS hoelzro: that is always the case 14:29
hoelzro and the result of those choices tend to be what the opinion holder feels is "right" =)
FROGGS (if you don't flip the coin)
masak hoelzro: give me an example when a choice wasn't based on opinion 14:31
(of a language design decision)
hoelzro ah, so you're just pointing out that saying "opinionated choice" is kinda redundant? 14:32
I can't think of an example where a choice didn't follow an opinion
masak no, my point is partly this: over the years, my view of Perl 6 has shifted from "insanely awesome" to "opinionated and making engineering tradeoffs, just like everyone else".
"insanely awesome" is a nice feeling to have about a language, but it's not a detailed, textured feeling. 14:33
"opinionated and making engineering tradeoffs" is detailed and textured.
tadzik well, they say that you don't know a prog language until you can say something bad about it
masak that approximates what I mean to say.
like, every such opinionated choice is a coin with a front and a back. 14:34
generalist programming languages try very hard to make the front big and the back small :)
this is different (but not entirely disjunct) from "DWIM vs WAT". 14:35
hoelzro ah, I see 14:37
masak actually, that same blog posts would probably be a lot about how such design decisions come back, months or years later, and bite you in unpredictable/unexpected ways. 14:38
skids
.oO(elexically scoped electricity. Bah there's a pun to be had there, just can't... make... it... work...)
14:41
masak skids: have you tried switching the pun off and then on again? :) 14:44
skids Once, or several times rapidly?
diakopter DWAT 14:50
GlitchMr .u 「」 14:52
yoleaux U+FF62 HALFWIDTH LEFT CORNER BRACKET [Ps] (「)
U+FF63 HALFWIDTH RIGHT CORNER BRACKET [Pe] (」)
GlitchMr rn: say "elephant" ~~ / \b elephant \b / 14:53
camelia niecza v24-98-g473bd20: OUTPUT«===SORRY!===␤␤Unsupported use of \b as word boundary; in Perl 6 please use <?wb> (or either of « or ») at /tmp/7RgMVtR2BZ line 1:␤------> say "elephant" ~~ / \b⏏ elephant \b /␤␤Parse failed␤␤»
..rakudo 50cecf: OUTPUT«Nil␤»
colomon "(or either of « or »)" ? 15:00
arnsholt colomon: Boundary to the left and boundary to the right. Can't remember which is which off-hand 15:06
colomon arnsholt: that's a new one to me 15:07
TimToady which is which follows from two facts: 1) words are figure rather than ground, and 2) we generally prefer to use brackets with their conccave side inward (strict hypers being an exception to that) 15:17
TimToady also, if you're famaliar with \< and \> in grep, those face the same way 15:17
TimToady realizes that decades of using split to find words has confused people on the figure/ground issue 15:19
masak I find «elephant» to be very visual-pill-y.
PerlJam too
TimToady yes, but that's part of what I mean by "figure" :) 15:20
masak yes. 15:21
TimToady it really is an important psychological concept
which is why we find it funny when a sculptor says: just carve away everything that isn't the elephant
masak .oO( and quickly, before the elephant suffocates! ) 15:22
TimToady but that is exactly what is happening when we split away the whitespaces around the elephant
comb concentrates on the elephant instead of the whitespace 15:23
TimToady there are some subtle figure/ground issues on the subject of multiline bracket characters too; do the "ascenders" and "descenders" cover over the areas above and below the line, or move them sideways, or are they just overstruck, as colliding fonts would do? 15:26
TimToady does such a tall embedded object cause the whole line to become fatter? 15:27
I'm sure most language designers, faced with multi-line brackets, would decide one of these without much thought (or just give up on the idea, if they are as sane as masak++) 15:28
fortunately, I am not that sane :)
not saying whether it's good fortune or bad fortune... 15:29
masak TimToady: we really, really need to get slangs implemented -- to give you a big enough playground for crazy notions. :) 15:37
TimToady Glo and I are sitting here discussing how Perl 5's approach to complexity is like The Cat in the Hat, and Perl 6's approach is more like The Cat in the Hat Come Back
as long as we know which cat is parsing code at the moment, we're fine :) 15:38
*Comes
masak 'But this is no retread of the first book. The wily Cat has some new tricks to share, and some new friends to introduce to us.' -- yeah, sounds like Perl 6 alright. 15:41
'As in the original, the book has some unsettling nuances. Why are these kids home alone? Just what is that bizarre pink substance in the bathtub?' -- lol
'Congratulations, Dr. Seuss: you have shown that the sequel to a classic can be just as excellent as the beloved original!' 15:42
masak gets all warm and fuzzy
felher looks up 'cat in the hat' because in the newest simpsons episode homer is the 'fat in the hat' and he has wondered if there is anything more to that name that name. :) 15:44
TimToady notes in the backlog that the discussion of inferring grammars has also run into the importance of both figure and ground :)
"needs negative data too" 15:45
timotimo otherwise every grammar will just end up matching .* 15:46
PerlJam
.oO( but ... every grammar *does* match .* ;-)
15:50
moritz r: say '.*' ~~ /\d+/ 15:50
TimToady the error messages are LTA however
camelia rakudo 50cecf: OUTPUT«Nil␤»
moritz no, it doesn't!
diakopter you win internet 15:52
masak payable at exit
TimToady your internet is LTA
PerlJam
.oO( you can checkout any time you like, but you can never leave )
15:53
TimToady git leave --> Did you mean "rebase"?
geekosaur or freebase, thereby nicely fitting back in... 15:54
TimToady leave->rebase is a big stretch
at least the vowels are the same, and there are two liquids on the front, and two labials in the middle
PerlJam geekosaur: I fail to see how an ontological database has any relevance ;) 15:55
TimToady it's just a library issue
PerlJam TimToady: the letters are all the same size and some are even the same letter! 15:56
TimToady in this drawer are letters from A. Lincoln, in this drawer from FDR...
goodness, this letter from Lincoln and this letter from FDR are the same letter!! 15:57
PerlJam indeed. :)
timotimo the only thing you can win in the internet is even more internet 16:18
dalek ast: b353ee1 | coke++ | S (4 files):
pugs fudge
17:15
[Coke] whoops, thought I pushed it last night. 17:16
[Coke] current pugs bocker on daily test server is: 17:32
dist/build/pugs/pugs-tmp/perl5/p5embed.o: In function `perl5_can':
p5embed.c:(.text+0x1f91): undefined reference to `PL_stack_sp'
(during the build)
diakopter need a lower libperl version 17:35
try 5.12.1 from perlbrew
diakopter lolol mov mov mov mov mov mov mov mov www.cl.cam.ac.uk/~sd601/papers/mov.pdf 17:40
benabik "Thus, while it has been known for quite some time that x86 has far too many instructions, we can now contribute the novel result that it also has far too many registers." 17:41
diakopter heh 17:42
talk about branchless...
TimToady masak: from the backlog, it sounds like you're finally getting into the spirit of post-modernism, fsdo that any self-respecting pomofolk would probably take great delight in deconstructing--but that's just my opinion, man... :) 18:22
like, and stuff...
masak TimToady: what portion of my recent kvetchings caused you to say this? :) 18:26
from my vantage point, I'm neither more nor less pomo than usual. 18:27
masak .oO( just more married ) :P
diakopter consider yourself deconstructed
diakopter falls apart
FROGGS masak: you are now more married than some time before? 18:28
masak FROGGS: we recently passed our 1y anniversary. 18:29
FROGGS ahh, cool!
err, I missed the party :o(
masak for anyone interested in postmodernism, may I heartily recommend www.amazon.com/Small-World-David-Lo...140244867/
(fiction)
TimToady masak: the opionated part :P 18:31
diakopter looks for the opion 18:32
masak TimToady: ah yes. I see that. 18:39
masak TimToady: I think the final thing that made me realize that was starting to sketch my own programming language. 18:42
TimToady: basically any decision is a tradeoff.
FROGGS like when being married :o) 18:45
diakopter like getting married! 18:47
masak :) 18:53
lue hello world! o/ 19:02
masak hellue! 19:03
[Coke] .to colomon big things just fudged: :delete, :!exists, SetHash, BagHash 19:59
yoleaux [Coke]: I'll pass your message to colomon.
spintronic helo 21:16
FROGGS hi spintronic 21:18
dalek p/moarboot: ee57fd9 | jnthn++ | t/nqp/19-file-ops.t:
Correct a test to also work on Windows.
21:45
BenGoldberg r: say sort { (1,2).pick }, 1..20 21:50
camelia rakudo 50cecf: OUTPUT«1 2 6 7 9 10 13 14 15 16 17 18 19 3 4 5 8 11 12 20␤»
BenGoldberg r: my $x = (1..1e99).pick; say $x 21:51
camelia rakudo 50cecf: OUTPUT«(timeout)»
grondilu :)
funny request, I wonder if it can be made fast 21:52
BenGoldberg Shurely .pick could detect that it's being give a Range and choose /not/ to iterate through all of the values.
benabik Specialize .pick on ranges.
grondilu indeed 21:53
r: say (1, 3 ... 97).WHAT
camelia rakudo 50cecf: OUTPUT«(List)␤»
BenGoldberg r: say gather {}.WHAT
camelia rakudo 50cecf: OUTPUT«(List)␤»
BenGoldberg r: say (1..2).WHAT 21:54
camelia rakudo 50cecf: OUTPUT«(Range)␤»
grondilu r: say (0 .. *).pick # does that even make sense?
camelia rakudo 50cecf: OUTPUT«Cannot .roll from an infinite list␤ in method gist at src/gen/CORE.setting:11894␤ in method gist at src/gen/CORE.setting:963␤ in sub say at src/gen/CORE.setting:12798␤ in block at /tmp/Zh__1Zfw4u:1␤␤»
grondilu apparently not 21:55
benabik r: (1..1e99)^.methods(:local).say
camelia rakudo 50cecf: OUTPUT«No such method 'methods' for invocant of type 'Nil'␤ in block at /tmp/DuY8BdQpCf:1␤␤»
benabik r: (1..1e99).^methods(:local).say
oops
camelia rakudo 50cecf: OUTPUT«new BUILD flat infinite iterator list bounds reify at_pos roll pick of ACCEPTS perl Numeric <anon> <anon> <anon> <anon>␤»
benabik ^^ Range already has a pick?
Or does methods(:local) get methods from roles as well? 21:56
grondilu it does a method. See Range.pm line 157
*does have
BenGoldberg r: r: (gather {}).methods(:local);
camelia rakudo 50cecf: OUTPUT«No such method 'methods' for invocant of type 'List'␤ in block at /tmp/ISd1uxNkUj:1␤␤» 21:57
BenGoldberg r: say (gather {}).^methods(:local);
camelia rakudo 50cecf: OUTPUT«new Bool Int end fmt flat list lol flattens tree Capture Parcel eager elems exists exists_pos gimme infinite iterator munch pick pop shift roll reverse rotate splice sort uniq squish REIFY FLATTENABLE_LIST FLATTENABLE_HASH keys values pairs kv reduce sink STORE…»
benabik r: 1e99.WHAT
camelia ( no output )
benabik r: 1e99.WHAT.say
camelia rakudo 50cecf: OUTPUT«(Num)␤»
benabik That's why. Range.roll looks for an Int on either side for the simple version.
BenGoldberg r: .say for 1.5 .. 6.7 21:59
camelia rakudo 50cecf: OUTPUT«1.5␤2.5␤3.5␤4.5␤5.5␤6.5␤»
BenGoldberg r: .say for 1 .. 6.7
camelia rakudo 50cecf: OUTPUT«1␤2␤3␤4␤5␤6␤»
BenGoldberg r: .WHAT.say for 1 .. 1.6
camelia rakudo 50cecf: OUTPUT«(Int)␤»
BenGoldberg Surely Range.roll should work just as well with an Int and a Num as it does with an Int and an Int 22:00
benabik If a Num range listifies to single integers, it seems likely that roll can be generalized to Num..Num as well.
Er... I mean listifies to regularly spaced numbers.
diakopter jnthn: what do you think about building all 3 NQPs optionally... 22:49
sounds like daxim wants it
(so there has to be only 1 spec file)
but if we do that, there's no reason to merge the Configure.pl 22:50
jnthn diakopter: Dunno. I've only been concenred with making the build stuff, well, good enough to build stuff. I know Pm has other plans for it.
diakopter: The less I have to do with this stuff, the better. 22:51
diakopter heh ok
has pmichaud communicated any part of those plans?
jnthn Think he's pondering exactly what it should look like still. He's a LOT more likely to come up with something sane here than I am :)
*sigh* 22:52
So, we have *one* failing t/qregex test
diakopter well I think it's good to optimize for packager ease
jnthn diakopter: Aye, I'm just not a good person to make judgements on that.
nqp: say('baabbbb' ~~ /a**2..4/) 22:54
camelia nqp: OUTPUT«aa␤»
jnthn nqp-m: say('baabbbb' ~~ /a**2..4/)
camelia nqp-moarvm: OUTPUT«Substring length (-10) cannot be negative␤ at nqp-src/QRegex.nqp:1062 (./QRegexMoar.moarvm:Str:4294967295)␤ from nqp-src/NQPCORE.setting:668 (./NQPCOREMoar.setting.moarvm:frame_name_8:6)␤ from nqp-src/NQPCORE.setting:667 (./NQPCOREMoar.setting.moarvm:pr…»
jnthn nqp-jvm: say('baabbbb' ~~ /a**2..4/)
camelia nqp-jvm: OUTPUT«aa␤»
jnthn So, bug, BUT...
nqp-m: say('baaabbbb' ~~ /a**3..4/)
camelia nqp-moarvm: OUTPUT«aaa␤»
jnthn Works for 3!
nqp-m: say('babbbb' ~~ /a**1..4/) 22:55
camelia nqp-moarvm: OUTPUT«a␤»
jnthn Works for 1!
Y U NO WORK FOR 2?
The 1 case ain't surprising, it's a different code path
But the 2 one is weird...
diakopter what's calling substring
nqp-m: say('baabbbb' ~~ /a**2..2/) 22:56
camelia nqp-moarvm: OUTPUT«aa␤»
diakopter nqp-m: say('baabbbb' ~~ /a**2..3/)
camelia nqp-moarvm: OUTPUT«Substring length (-10) cannot be negative␤ at nqp-src/QRegex.nqp:1062 (./QRegexMoar.moarvm:Str:4294967295)␤ from nqp-src/NQPCORE.setting:668 (./NQPCOREMoar.setting.moarvm:frame_name_8:6)␤ from nqp-src/NQPCORE.setting:667 (./NQPCOREMoar.setting.moarvm:pr…»
jnthn diakopter: .Str on the Mathc object
nqp-m: say(?('baabbbb' ~~ /a**2..4/))
camelia nqp-moarvm: OUTPUT«0␤»
jnthn nqp-m: say(?('baabbbb' ~~ /a**2..3/))
camelia nqp-moarvm: OUTPUT«0␤»
jnthn nqp-m: say(?('baabbbb' ~~ /a**2..2/))
camelia nqp-moarvm: OUTPUT«1␤»
jnthn wtf 22:57
diakopter jnthn: try it by forcing procedural 23:00
jnthn I'm quite sure it's not using the NFA there
diakopter hm
BenGoldberg nqp-m: my $x = 'baabbb' ~~ /a**2..4/; say so $x 23:01
camelia nqp-moarvm: OUTPUT«Assignment ("=") not supported in NQP, use ":=" instead at line 2, near " 'baabbb' "␤panic»
BenGoldberg nqp-m: my $x := 'baabbb' ~~ /a**2..4/; say so $x
camelia nqp-moarvm: OUTPUT«Confused at line 2, near "say so $x"␤panic»
BenGoldberg nqp-m: my $x := 'baabbb' ~~ /a**2..4/; say ?$x
camelia nqp-moarvm: OUTPUT«Confused at line 2, near "say ?$x"␤panic»
BenGoldberg nqp-m: my $x := 'baabbb' ~~ /a**2..4/; say $x;
camelia nqp-moarvm: OUTPUT«Confused at line 2, near "say $x;"␤panic»
BenGoldberg nqp-m: my $x := 'baabbb' ~~ /a**2..4/; say($x);
camelia nqp-moarvm: OUTPUT«Substring length (-9) cannot be negative␤ at nqp-src/QRegex.nqp:1062 (./QRegexMoar.moarvm:Str:4294967295)␤ from nqp-src/NQPCORE.setting:668 (./NQPCOREMoar.setting.moarvm:frame_name_8:6)␤ from nqp-src/NQPCORE.setting:667 (./NQPCOREMoar.setting.moarvm:pri…»
BenGoldberg nqp-m: my $x := 'baabbb' ~~ /a**2..4/; say(so $x);
camelia nqp-moarvm: OUTPUT«Confused at line 2, near "say(so $x)"␤panic»
diakopter nqp-m: say(?('aa' ~~ /a**2..3/)) 23:02
camelia nqp-moarvm: OUTPUT«0␤»
BenGoldberg nqp-m: my $x := 'baabbb' ~~ /a**2..4/; say($x.WHAT);
camelia nqp-moarvm: OUTPUT«(signal SEGV)»
diakopter nqp-m: say(?('aa' ~~ /.**2..3/))
camelia nqp-moarvm: OUTPUT«0␤»
BenGoldberg blinks
diakopter jnthn: heh segv
jnthn um.
yeah
BenGoldberg That can't be good
nqp-m: my $x := 'baabbb' ~~ /a**2..4/; my $y := $x.WHAT; say('alive'); 23:03
camelia nqp-moarvm: OUTPUT«alive␤»
BenGoldberg nqp-m: my $x := 'baabbb' ~~ /a**2..4/; my $y := $x.WHAT; say($y); 23:04
camelia nqp-moarvm: OUTPUT«(signal SEGV)»
BenGoldberg nqp-m: my $x := 'baabbb' ~~ /a**2..4/; my $y := $x.WHAT; say(?($y));
camelia nqp-moarvm: OUTPUT«(signal SEGV)»
diakopter nqp-m: my $x := 'baabbb' ~~ /a**2..4/; my $y := $x.WHAT; say($y.WHAT);
camelia nqp-moarvm: OUTPUT«(signal SEGV)»
jnthn nqp-m: my $x := 'baabbb' ~~ /a**2..4/; say(nqp::isnull($y))
camelia nqp-moarvm: OUTPUT«Use of undeclared variable '$y' at line 2, near "))"␤panic»
jnthn nqp-m: my $x := 'baabbb' ~~ /a**2..4/; say(nqp::isnull($x))
camelia nqp-moarvm: OUTPUT«0␤»
jnthn nqp-m: my $x := 'baabbb' ~~ /a**2..4/; say(nqp::isnull($x.WHAT)) 23:05
camelia nqp-moarvm: OUTPUT«0␤»
BenGoldberg nqp-m: my $x := 'baabbb' ~~ /a**2..4/; my $y := ?($x); say($y);
camelia nqp-moarvm: OUTPUT«0␤»
jnthn nqp-m: my $x := 'baabbb' ~~ /a**2..4/; say($x.HOW.name($x))
camelia nqp-moarvm: OUTPUT«NQPMatch␤»
jnthn nqp-m: say(NQPMatch)
camelia nqp-moarvm: OUTPUT«(signal SEGV)»
jnthn nqp-m: say(NQPMu)
camelia nqp-moarvm: OUTPUT«␤»
jnthn Well, that golfs it...
BenGoldberg nqp: say(NQPMatch) 23:06
camelia nqp: OUTPUT«Cannot look up attributes in a type object␤current instr.: 'Str' pc 18620 (src/stage2/QRegex.pir:7461) (src/stage2/QRegex.nqp:1113)␤»
BenGoldberg nqp-jvm: say(NQPMatch)
camelia nqp-jvm: OUTPUT«Cannot look up attributes in a type object␤ in Str (src/stage2/gen/QRegex.nqp:1113)␤ in (src/stage2/gen/NQPCORE.setting:672)␤ in print (src/stage2/gen/NQPCORE.setting:671)␤ in say (src/stage2/gen/NQPCORE.setting:678)␤ in (/tmp/P9yw7nKZcQ:1)␤ in (…»
jnthn aha
And that explains it
somewhat, at least
jnthn oh...it may be a register lifetime screwup... 23:14
t\qregex/01-qregex.t .................. ok 23:23
\o/
dalek p/moarboot: 84ff46d | jnthn++ | src/vm/moar/QAST/QASTRegexCompilerMAST.nqp:
Fix register lifetime for min/max in quants.

Since we backtrack in/out of the quant code, the min/max must not be kept in registers with a lifetime of just that region of code, or they may get scribbled over. Fixes the remaining t/qregex failure and one of the t/p5regex failures.
23:25
jnthn That took some finding... 23:25
TimToady
TimToady 23:26
jnthn ooh, a drink...
or an ice cream?
.u Y̊
yoleaux U+0059 LATIN CAPITAL LETTER Y [Lu] (Y)
U+030A COMBINING RING ABOVE [Mn] (◌̊)
jnthn oh bah :P
but now I read it as a drink, I guess I'll have a beer... :) 23:27
huf they look like sainted letters 23:28
TimToady o􏿽xCC􏿽x86 23:29
huf fat bird? 23:29
TimToady o􏿽xCC􏿽x8C
huf oh no i made it angry
TimToady 23:30
Mouq o̊̊̊ 23:30
jnthn mmm...Imperial Porter... \o/ 23:32
dalek p/moarboot: d857b01 | jnthn++ | src/vm/moar/QAST/QASTRegexCompilerMAST.nqp:
Small anchor compilation fix.

Gets us down to 2 failures in t/p5regex.
23:35
jnthn Down to 6 fails over 3 test files 23:35
diakopter
.oO( I did haz a bug? )
23:51
jnthn aye :) 23:52
ooh
My attempt to fix another one produced me that "Use of undeclared variable" heisenbug!
diakopter oh joy
jnthn Well, it's good that I finally have it here. 23:53
'cus nobody else who got it so far managed to make much progress solving it...
diakopter I've never seen it either, so probably so do I have it too now
well, we could reproduce it on the camelia machine anyway
jnthn true
It almost certainly has to be that $*W.is_lexical($name) is returning the wrong answer 23:54
diakopter yeah; it's possible there's an error in the hash stuff
jnthn yeah
diakopter tho I wouldn't look there first 23:56