»ö« 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:03
b1rkh0ff left
00:04
PacoAir left
|
|||
diakopter | karam niecza | 00:08 | |
karma niecza | |||
aloha | niecza has karma of 75. | ||
diakopter | karma rakudo | ||
aloha | rakudo has karma of 67. | ||
sorear | karma sorear | ||
aloha | sorear has karma of 2159. | ||
sorear | karma jnthn | ||
aloha | jnthn has karma of 2642. | ||
diakopter | karma pugs | ||
aloha | pugs has karma of 20. | ||
00:10
libertyprime left,
libertyprime joined
|
|||
sorear | pugs predates aloha :p | 00:12 | |
00:14
Chillance left
00:16
adu left
00:17
libertyprime left
00:18
libertyprime joined
00:21
ab5tract left
00:22
libertyprime left,
libertyprime joined
00:25
libertyprime left
00:26
libertyprime joined
|
|||
TimToady | r: my module A { enum X is export <x> }; import A <x>; x | 00:47 | |
p6eval | rakudo 024843: OUTPUT«===SORRY!===Error while importing from 'A': no EXPORT sub, but you provided positional argument in the 'use' statement» | ||
TimToady | two bugs for the price of one | ||
r: my module A { enum X is export <x> }; import A <X>; x | 00:48 | ||
p6eval | rakudo 024843: OUTPUT«===SORRY!===Error while importing from 'A': no EXPORT sub, but you provided positional argument in the 'use' statement» | ||
TimToady | (the second one being that I didn't provide a 'use' statement...) | 00:49 | |
should be something more on the order of "Don't know how to import X from A" | 00:51 | ||
the first bug being that it should know how... | |||
diakopter | hm, I'm starting to suspect I've been spamming people all day.. whoever's subscribed to rakudo RT | 00:52 | |
TimToady | receiving death threats? | 00:53 | |
diakopter | not yet | ||
r: my module A { }; require A; | 00:54 | ||
p6eval | rakudo 024843: OUTPUT«Could not find A in any of: /home/p6eval/.perl6/lib, /home/p6eval/nom-inst2/lib/parrot/4.4.0-devel/languages/perl6/lib in any load_module at src/Perl6/ModuleLoader.pm:99 in block <anon> at /tmp/mQmeWOiwNw:1» | ||
diakopter | what should it do if there's already a module A loaded | ||
n: my module A { }; use A; | 00:55 | ||
p6eval | niecza v18-1-gc86e3f0: OUTPUT«Unhandled exception: Unable to locate module A in @path at /home/p6eval/niecza/boot/lib/CORE.setting line 1401 (die @ 5)  at /home/p6eval/niecza/src/NieczaPathSearch.pm6 line 23 (NieczaPathSearch.load_module @ 17)  at /home/p6eval/niecza/src/NieczaCom… | ||
diakopter | rt's down again | 00:57 | |
TimToady | n: my module A { }; need A | 00:58 | |
p6eval | niecza v18-1-gc86e3f0: OUTPUT«===SORRY!===Action method statement_control:need not yet implemented at /tmp/TIg2g20bLr line 1 (EOF):------> my module A { }; need A⏏<EOL>Unhandled exception: Unable to resolve method statement_level in type Any a… | ||
TimToady | r: my module A { }; need A | ||
p6eval | rakudo 024843: OUTPUT«===SORRY!===Could not find A in any of: /home/p6eval/.perl6/lib, /home/p6eval/nom-inst2/lib/parrot/4.4.0-devel/languages/perl6/lib» | ||
TimToady | it doesn't really make sense to 'need' a module you've already defined in this unit | 01:00 | |
need and require are only for pulling in external modules | 01:02 | ||
diakopter | r: use Test; use Test; | ||
p6eval | rakudo 024843: OUTPUT«===SORRY!===Cannot import symbol '&plan' from package 'Test', since it already exists in the lexpad» | ||
diakopter | is that a good error? | 01:03 | |
TimToady | implicit imports should also probably follow the cancellation policy of enums | ||
and enums should just be a special case of that | |||
here's the reasoning | |||
modules change over time, and new exports are added | |||
if you blow up on a collision, you potentially break programs merely by upgrading the module | 01:04 | ||
if you merely blow up on use of a colliding symbol, you at least don't blow up if the user doesn't care about that symbol | |||
you only blow up if they've actually used it, and it has become ambiguous | 01:05 | ||
so 'use A; use B;' might collide with symbol X, but that doesn't matter unless you actually use X | |||
diakopter | if a module you 'use' 'use's another module that auto-imports stuff, do you get the imports too? | ||
TimToady | there should be a way to import/export transitively | 01:06 | |
diakopter | gobble Test; | 01:07 | |
TimToady | see S11:153 | ||
diakopter | oh, so all the intervening ones must also pass through their imports | 01:08 | |
TimToady | there may be a better syntax for this | 01:09 | |
TimToady glares at the inside of his eyelids and sees nothing much | |||
diakopter | maybe there's a way to exclude a module from exporting certain symbols to you, so you can pre-use dependencies to import from them | 01:10 | |
or specify which ones you do want... oh wait. | |||
there's the problem of conflicting symbols from imports, and you really do want one of them | |||
oh wait. /me reads further on S11 | 01:12 | ||
so you can send unwanted symbols to a dummy namespace/scope | 01:13 | ||
TimToady | it is not clear to me that S11 is actually coherent on this subject | 01:14 | |
01:15
libertyprime left,
libertyprime joined
|
|||
diakopter | well, I finished going through all of rakudo rt | 01:16 | |
now there's 129 testneeded tickets, up from about 80. 5 merged, a couple resolved, a couple rejected because of spec changes | 01:18 | ||
now to go through the testneeded ones.... :| | |||
I guess that'll be my chance to learn the test suite | 01:19 | ||
again. | |||
01:20
thou left,
libertyprime left
01:21
libertyprime joined
01:26
thou joined
01:28
scott_ joined,
scott_ is now known as Guest5520,
Guest22737 left
01:38
libertyprime left,
libertyprime joined
|
|||
diakopter | I'm guessing most of the ones marked testneeded actually have tests already | 01:47 | |
TimToady | you should test that :) | 01:53 | |
diakopter | I'm stuck on the first one. #53804 | 01:58 | |
I can't tell whether it needs a test or not | |||
both the version without and with whitespace work | |||
TimToady | shouldn't tests be commented with the RT they test for? | 01:59 | |
01:59
thou left
|
|||
TimToady | or are you looking for accidental tests? :) | 02:00 | |
diakopter | ones that are now succeeding, and cover the functionality testing the brokenness of the bug, and the person who wrote the test didn't know about the bug ticket (probably because it didn't exist), or the person who wrote the ticket didn't know about the test, and | 02:01 | |
the unfudger didn't know there was a bug ticket relating to that functionality | |||
02:05
thou joined
02:06
tokuhiro_ left
|
|||
diakopter | TimToady: is this correct? | 02:10 | |
r: my @array = 1, 2, 3; say @array.min:{ $^a <=> $^b } | 02:11 | ||
p6eval | rakudo 024843: OUTPUT«1» | ||
diakopter | the RT ticket has to do with the lack of space between : and { | ||
previously rakudo didn't parse that | 02:12 | ||
pmichaud++ guessed it should be parsed by colonpair | |||
TimToady: rt.perl.org/rt3//Public/Bug/Displa...l?id=53804 | 02:13 | ||
n: my @array = 1, 2, 3; say @array.min:{ $^a <=> $^b } | 02:14 | ||
p6eval | niecza v18-1-gc86e3f0: OUTPUT«1» | ||
dalek | ast: ed219b0 | diakopter++ | S32-list/minmax.t: add test for adverbial block form of min (RT #53804) |
02:18 | |
ast: aaab8c2 | diakopter++ | S (9 files): Merge branch 'master' of git://github.com/perl6/roast |
|||
02:19
leprevost joined
02:21
wooden left
|
|||
diakopter | TimToady: such as the TODO ticket to implement NEXT. the tests didn't know about the RT and vice versa. | 02:27 | |
02:34
libertyprime left,
libertyprime joined
02:39
JimmyZ_ joined
|
|||
JimmyZ_ | diakopter: ping | 02:39 | |
[Coke] | diakopter: it's good you send out the messages on the tickets. I prefer to always cc perl6. | 02:40 | |
[Coke] waves from a undisclosed bunker in CT. | |||
sorear waves back to [Coke] | |||
[Coke] | diakopter++ RT carnage. | 02:41 | |
diakopter | [Coke]: actually I'm not on whatever list receives those | 02:42 | |
which one does | |||
[Coke]: how do I write a test that just tests whether eval code doesn't die | 02:43 | ||
02:43
xinming joined
|
|||
diakopter | doesn't misparse, I mean | 02:43 | |
TimToady | put a leave; first | 02:44 | |
:{} not recognized as a valid name extension, so it parses as if there were a space there | 02:45 | ||
after the : | |||
02:46
xinming_ left
|
|||
diakopter | ok. it works on rakudo now, however it parses | 02:46 | |
put a leave; first where? | |||
TimToady | eval "leave; stuff-to-parse" | 02:48 | |
buubot_backup | TimToady: leave; stuff-to-parse | ||
TimToady | heh | ||
02:48
JimmyZ_ left
|
|||
diakopter | what does the leave do? | 02:49 | |
[Coke] | diakopter: you have to explicitly hit the "cc the list" button to spam the list. | 02:50 | |
if you close a ticket, the OP is notified. | |||
diakopter | ah | ||
[Coke] | diakopter: eval_lives_ok | ||
diakopter | ah | 02:51 | |
diakopter thinks a test for #63596 should go in S06-signature/named-parameters.t | 02:52 | ||
oh wait; std/niecza doesn't like the test | 02:53 | ||
p6: sub s($i is copy) { my @array; for 1..3 { @array.push($i); my $i = 1 + $i; }}; s(9); | |||
p6eval | niecza v18-1-gc86e3f0: OUTPUT«===SORRY!===Lexical symbol '$i' is already bound to an outer symbol (see line 1); the implicit outer binding at line 1 must be rewritten as $i before you can unambiguously declare a new '$i' in this scope at /tmp/47XafYYQoo line 1:-… | ||
..rakudo 024843: OUTPUT«use of uninitialized variable $i of type Any in numeric context in sub s at /tmp/tG2G1TJxh3:1use of uninitialized variable $i of type Any in numeric context in sub s at /tmp/tG2G1TJxh3:1use of uninitialized variable $i of type Any in numeric context in sub s… | |||
..pugs: OUTPUT«***  Unexpected ";" expecting "::", term postfix or operator Redeclaration of "$i" conflicts with earlier OUTER references in the same scope at /tmp/fZQERhne6f line 1, column 74» | |||
diakopter | the bug was originally that it Null PMC | 02:54 | |
it doesn't do the right thing in rakudo (error), but at least it doesn't Null PMC | 02:55 | ||
anyway that's testable. | |||
03:01
libertyprime left
03:02
libertyprime joined
|
|||
dalek | ast: 7ea105f | diakopter++ | S02-names-vars/variables-and-packages.t: add test for RT #63596 (null pmc) - rakudo still does not do the right thing, so it fails the test, but for another reason. |
03:09 | |
diakopter | [Coke]: oh noes. rt.perl.org/rt3/perl6/testneeded is broken | 03:10 | |
03:10
adu joined
03:11
wolfman2000 left
03:15
aesundstrom left
|
|||
diakopter | [Coke]: nm... oops wrong url | 03:15 | |
sorry | |||
03:19
adu left
03:20
adu joined
|
|||
dalek | ast: a9a75b0 | diakopter++ | S02-types/lists.t: add test for RT #63986 - negative indexes; rakudo and niecza pass it |
03:37 | |
03:52
crab2313 left
|
|||
dalek | ast: 87dfafd | diakopter++ | S03-operators/assign.t: fix tests for RT #64818 - R~= actually does parse. test it. |
03:56 | |
04:08
thou left
04:24
adu left
04:28
sisar left
04:29
sisar joined
04:51
kcwu left
04:52
kcwu joined
04:56
leprevost left
05:06
Entonian joined
05:07
Entonian left
05:10
fgomez left
|
|||
moritz | r: say q=>1 | 05:11 | |
p6eval | rakudo 024843: OUTPUT«» | ||
moritz | r: say (q=>1) | ||
p6eval | rakudo 024843: OUTPUT«"q" => 1» | ||
05:13
birdwindupbird joined,
birdwind1pbird joined
|
|||
moritz | r: say (q=>1), (p=) | 05:14 | |
p6eval | rakudo 024843: OUTPUT«>1), (p» | ||
moritz | r: my @a := 1..*; @a := @a[1, 3 ... *]; say @a[^5] | ||
p6eval | rakudo 024843: OUTPUT«(timeout)» | 05:15 | |
moritz | std: say (q=>1), (p=) | 05:16 | |
p6eval | std f179a1b: OUTPUT«Use of uninitialized value $x in pattern match (m//) at STD.pm line 66577.Use of uninitialized value $x in concatenation (.) or string at STD.pm line 66616.===SORRY!===Bogus term at /tmp/s4FYlZo4YE line 1:------> say (q=>1), (p=⏏)… | ||
05:31
Telg left,
stephenlb left
05:33
Telg joined
05:50
lestrrat left
05:51
lestrrat joined
06:00
wtw joined
06:04
kaleem joined
06:13
araujo left
06:26
araujo joined
06:27
pupoque joined
06:33
araujo left
06:55
araujo joined
07:05
kurahaupo left
|
|||
tadzik | hello #perl6 | 07:16 | |
moritz | \o tadzik | 07:17 | |
07:33
kresike joined
|
|||
kresike | morning all you happy perl6 people | 07:33 | |
tadzik | hey hey kresike | 07:34 | |
kresike | hello tadzik | ||
07:37
lestrrat left,
brrt joined
07:38
lestrrat joined
07:55
fhelmberger joined
08:01
lestrrat left
08:02
lestrrat joined
|
|||
jnthn | morning o/ | 08:20 | |
moritz | \o jnthn | 08:21 | |
jnthn: I looked at STD.pm6's handling of 'Null pattern not allowed' -- it requires access to $*GOAL | 08:22 | ||
ie the rightest token of things like \[ ~ \] | |||
jnthn: is that accessible from within an NQP grammar? | |||
jnthn | moritz: Ah, it's not being placed in a contextual at the moment. | 08:24 | |
Is it spec that it goes in $*GOAL? | 08:25 | ||
Also, does :dba(...) populate $*DBA? I may as well fix that at the same time... | |||
STD doesn't mention any contextual variables, fwiw. | 08:26 | ||
er | |||
*S05* doesn't mention. | |||
moritz | the spec mentions $GOAL when talking about ~ expansion | ||
eiro | tadzik, can you please fill your proposal ? | ||
jnthn | moritz: I wonder if it means $*GOAL. | 08:27 | |
moritz | jnthn: wait :-) | ||
STD.pm6 explicitly sets $*GOAL occasionally | |||
eiro | also: tadzik jnthn cognominal masak : how about a hackathlon to implement spore spec in perl6 ( github.com/SPORE/specifications ) | ||
moritz | maybe it's not supplied by the regex engine after all | ||
eiro | would be great with bailador to write web workers | 08:28 | |
08:28
sergot joined
|
|||
sergot | hi o/ | 08:28 | |
tadzik | eiro: yeah, sure. I'll probably do it later today | 08:29 | |
hackathon: sounds cool :) | |||
hello sergot | |||
eiro | if everyone is ok: i'll make an announcement on that | 08:32 | |
jnthn | moritz: OK. Well, wasn't going to do it right away...but can probably find tuits today if we can figure out how it should be :) | 08:38 | |
08:39
pupoque left
|
|||
moritz | nqp: say(' ' ~~ /<-[\w\s]>/) | 08:59 | |
p6eval | nqp: OUTPUT«» | ||
moritz | nqp: say('.' ~~ /<-[\w\s]>/) | ||
p6eval | nqp: OUTPUT«.» | ||
09:00
dakkar joined
09:12
daxim joined
09:17
grondilu joined
|
|||
grondilu | p6: class Foo { has $.x }; my Foo $f .= new; $f.x = 42; | 09:17 | |
p6eval | pugs, niecza v18-1-gc86e3f0: ( no output ) | ||
..rakudo 024843: OUTPUT«Cannot assign to a readonly variable or a value in block <anon> at /tmp/UocfsFH6fH:1» | |||
grondilu | ?? | ||
cognominal | eiro: for the frech workshop, my goal is to deliver tutorial and exercises to help people bootstrap themselves into Perl 6. And I think existing contributors who will come have already a full agenda of things to do. Not that I have anything agains your goal. | 09:18 | |
moritz | grondilu: !! | ||
jnthn | rakudo++ gets that one right | 09:19 | |
moritz | giving a hackathon a goal or topic is always a good idea | ||
but you shouldn't be too disappointed if people get distracted by other stuff | |||
eiro | cognominal, there would be 0 preparation for the hackathlon: it can be done as background job of the classroom ? | 09:21 | |
cognominal | yes. | ||
tadzik | grondilu: public accessors are ro by default | 09:26 | |
09:26
lestrrat left
09:28
lestrrat joined
|
|||
grondilu | tadzik: ok. But then why do rakudo behaves diff than pugs and niecza? | 09:31 | |
tadzik | grondilu: because pugs and niecza are wrong | 09:32 | |
grondilu | Also, to me when a member is public, I should be able to write on it. | ||
moritz | no | ||
tadzik | member is never public. Accessors are | ||
moritz | you should be allowed to see my face, but not change my nose | ||
tadzik | nice one | 09:33 | |
09:33
emias joined
|
|||
moritz | you can always stick an 'is rw' on the accessor | 09:33 | |
r: class A { has $.x is rw }; given A.new { .x = 3; say .perl } | |||
p6eval | rakudo 024843: OUTPUT«A.new(x => 3)» | ||
grondilu | r: class Foo { has $.x; method set($x) { $.x = $x } }; my Foo $f .= new; $f.set: 42; | 09:34 | |
p6eval | rakudo 024843: OUTPUT«Cannot assign to a readonly variable or a value in method set at /tmp/mnPJLkLzO6:1 in block <anon> at /tmp/mnPJLkLzO6:1» | ||
grondilu | what about this?? | ||
moritz | grondilu: $.x is just the accessor, and not writable | ||
grondilu: if you want to write to the attribute, assign to $!x | |||
grondilu | oh | 09:35 | |
I had no clue. | |||
moritz | now you have :-) | ||
grondilu | So I write to $!x even for $.x . Ok I'll remember. Thanks. | ||
moritz | Perl 6 OO tutorials should really start with private attributes | 09:37 | |
grondilu | Also, if I have a method foo and a member $.foo, how do I call one and not the other? | ||
moritz | and only later add accessors | ||
grondilu: you don't | 09:38 | ||
grondilu: the member is called $!foo; you can still access from the inside of your class | |||
grondilu: but to the outside, only methods are visible | |||
tadzik | if you declare $.foo, you get $!foo and a method foo { $!foo } | 09:39 | |
moritz | ... unless you already have a method foo | 09:40 | |
tadzik | right | ||
moritz | in which case you don't get a new accessor | ||
grondilu | r: class Foo { has $.x = "member"; method x { "method" } }; my Foo $x .= new; say $x.x | ||
p6eval | rakudo 024843: OUTPUT«method» | ||
grondilu | so in other words a method can hide an accessor. | 09:41 | |
kresike is watching a very entertaining perl6 OO tutorial | |||
moritz | yes | ||
kresike: when you're done, please summarize it in a blog post or so :-) | |||
grondilu | well, it happens to suits me anyway :) | ||
moritz | and tell us the URL | ||
grondilu: though if you don't want the accessor, you can simply write has $!x; in the first place | 09:42 | ||
no accessor, no hiding | |||
kresike | moritz, after the perl5 OO, this thing in perl6 version will need a serious tutorial :) | ||
grondilu | I thought $!var was really only for private members, but that's fine if I can use it for public vars too. | 09:43 | |
moritz | grondilu: all members are private in Perl 6 | ||
grondilu: if you write 'has $.var', you get the private member, plus the accessor method | |||
grondilu | Ok. | 09:44 | |
moritz | though there is one more difference | 09:45 | |
initialization | |||
r: class A { has $.foo }; say A.new(foo => 'x').perl | |||
p6eval | rakudo 024843: OUTPUT«A.new(foo => "x")» | 09:46 | |
grondilu needs to read S12 much more. | |||
moritz | r: class A { has $!foo; method foo() { $!foo } }; say A.new(foo => 'x').foo | ||
p6eval | rakudo 024843: OUTPUT«Any()» | ||
moritz | this is by design | ||
09:46
wolverian joined,
wolverian left
|
|||
moritz | if you want to keep your stuff private, you also don't want anybody from the outside to initialize it | 09:47 | |
09:47
wolverian joined
|
|||
grondilu | That an other point I wanted to ask. There is no way to call a constructor with initial value for private members? | 09:48 | |
I mean: unless I write one. | |||
moritz | r: class A { has $!foo; method foo() { $!foo }; submethod BUILD(:$!foo) { } }; say A.new(foo => 'x').foo | 09:49 | |
p6eval | rakudo 024843: OUTPUT«x» | ||
moritz | you can do this submethod BUILD hack to actively enable the initialization again | ||
09:49
[particle]1 left
09:50
b1rkh0ff joined
|
|||
grondilu | I don't understand your signature: ':$!foo' | 09:50 | |
moritz should really write a longer tutorial on that subject | |||
grondilu: : indidcates a named parameter | |||
and its name is 'foo' | 09:51 | ||
but instead of using a separate variable slot, the attribute/memeber $!foo is reused | |||
so, when BUILD is called with named parameter foo => 'x', $!foo is filled with 'x' | |||
grondilu gets it | 09:52 | ||
moritz | \o/ | ||
grondilu | Ok, makes sense. | ||
pretty neat | |||
moritz | aye, but it does need a thorough explanation | ||
10:00
tyatpi left
|
|||
grondilu | damn it I don't understand git. I have a local modif on Buf.pm and git tells me it prevents me from updating rakudo. It says I should stash them but I don't understand the git-stash manual page at all. Anyone can give me a quick help? | 10:11 | |
jnthn | git stash | 10:13 | |
git pull | |||
git stasy apply | |||
It's like a stack of stuff. | |||
10:13
skids left
|
|||
jnthn | stash pushes your current changes onto it | 10:13 | |
"git stash apply" later applies whatever is on the current stack top | 10:14 | ||
grondilu | ok. Thanks | 10:15 | |
10:18
tyatpi joined
10:23
Guest5520 left
|
|||
apejens | note that apply doesn't remove the stash from your stash list | 10:23 | |
git stash pop applies, then removes | |||
jnthn | Aye | 10:27 | |
I guess I tend to apply out of not wanting to lose stuff. | |||
OTOH, there'd still be the reflog... | |||
moritz often just commits before doing a 'git pull --rebase' | 10:28 | ||
10:29
fgomez joined
10:34
fgomez left,
fgomez joined
10:55
JimmyZ joined
11:04
JimmyZ left
11:05
JimmyZ joined,
sftp left
11:20
grondilu left
11:27
preflex left,
PacoAir joined
11:28
preflex_ joined,
sftp joined
11:29
preflex_ is now known as preflex
11:41
skids joined
11:59
replore_ joined
|
|||
gfldex | for the records: if perl6 is persisent about a missing ICU on cygwin while it's not, rm -r rakudo helps | 12:08 | |
how do i quote # in a grammar? | 12:09 | ||
jnthn | Backslash it, or put it in single quotes | 12:12 | |
r: say '#' ~~ /\#/ | |||
p6eval | rakudo 024843: OUTPUT«q[#]» | ||
jnthn | r: say '#' ~~ /'#'/ | ||
p6eval | rakudo 024843: OUTPUT«q[#]» | ||
gfldex | r: gist.github.com/2835895 | 12:13 | |
p6eval | rakudo 024843: OUTPUT«Constraint type check failed for parameter '$a' in sub alternator at /tmp/qM7j02hKzH:5 in block <anon> at /tmp/qM7j02hKzH:11» | ||
gfldex | r: say '#00aa00' ~~ / '#' <:hexdigit> ** 6 /; | 12:16 | |
p6eval | rakudo 024843: OUTPUT«q[#00aa00]» | ||
gfldex | r: say ('#00aa00' ~~ / '#' <:hexdigit> ** 6 /).Bool; | 12:17 | |
p6eval | rakudo 024843: OUTPUT«True» | ||
12:23
rsimoes left
12:25
_jaldhar left
|
|||
moritz | r: subset HTMLColor of Str where / '#' <:hexdigit> ** 6 /; say '#00aa00' ~~ HTMLColor | 12:28 | |
p6eval | rakudo 024843: OUTPUT«True» | ||
moritz | r: subset HTMLColor of Str where / '#' <:hexdigit> ** 6 /; say '#00XX00' ~~ HTMLColor | ||
p6eval | rakudo 024843: OUTPUT«False» | ||
gfldex | r: say ('#00AA00' ~~ / '#' <:hexdigit> ** 6 /).Bool; | ||
p6eval | rakudo 024843: OUTPUT«True» | ||
moritz | gfldex: the problem is that * does not always cause currying; some operators treat it differently | 12:29 | |
so * ~~ /.../ does not create a closure | |||
gfldex | i noticed :) | ||
moritz | but since the right-hand side of the 'where' clause is used for smart-matching, the regex itself is sufficient | ||
12:36
tyatpi left,
rsimoes joined
|
|||
gfldex | r: subset HTMLColor of Str where / '#' <:hexdigit> ** 6 /; sub alternator (HTMLColor *@l) { say 'triple' }; alternator('#00aa00', '#00bb00', '#00cc00'); | 12:37 | |
p6eval | rakudo 024843: OUTPUT«Nominal type check failed for parameter '@l'; expected Positional but got Array instead in sub alternator at /tmp/Y1FcoW07vr:1 in block <anon> at /tmp/Y1FcoW07vr:1» | ||
daxim | -Ofun: stackoverflow.com/questions/1081590...ance-issue shows a real-world grammar, I think it would be interesting to see how a perl6 grammar would fare, any takers? | 12:38 | |
gfldex | is there a way to have typed slurpy arrays in signatures? | ||
moritz | gfldex: no | 12:39 | |
12:44
am0c joined
12:49
tyatpi joined
12:55
mucker joined
|
|||
gfldex | r: subset Foo of Str where /a|b|c/; sub bar(*@a){ @a >>~~>> Foo }; say bar(<a b c>).Bool; | 12:55 | |
p6eval | rakudo 024843: OUTPUT«Cannot call 'hyper'; none of these signatures match::(\$op, Associative \$h):(\$op, Associative \$a, Associative \$b, :dwim-left(:$dwim-left), :dwim-right(:$dwim-right)):(\$op, \$obj):(\$op, Associative \$a, \$b, :dwim-left(:$dwim-left), :dwim-right(:$dwim-righ… | ||
gfldex | is that because ~~ isn't really an operator? | 12:56 | |
moritz | probably | ||
12:56
bluescreen10 joined
|
|||
moritz | r: subset Foo of Str where /a|b|c/; sub bar(*@a){ [&&] @a X~~ Foo }; say bar(<a b c>) | 12:57 | |
p6eval | rakudo 024843: OUTPUT«Type check failed in assignment to '$v'; expected 'Mu' but got 'Foo' in method REIFY at src/gen/CORE.setting:5655 in method reify at src/gen/CORE.setting:4949 in method gimme at src/gen/CORE.setting:5323 in method elems at src/gen/CORE.setting:5303 in blo… | ||
moritz | that does look like a bug | ||
subset Foo of Str where /a|b|c/; [&&] <a b c> X~~ Foo | 12:58 | ||
r: subset Foo of Str where /a|b|c/; [&&] <a b c> X~~ Foo | |||
p6eval | rakudo 024843: OUTPUT«Type check failed in assignment to '$v'; expected 'Mu' but got 'Foo' in method REIFY at src/gen/CORE.setting:5655 in method reify at src/gen/CORE.setting:4949 in method gimme at src/gen/CORE.setting:5323 in method elems at src/gen/CORE.setting:5303 in blo… | ||
12:58
sisar left
|
|||
moritz | r: subset Foo of Str where /a|b|c/; ~( <a b c> X~~ Foo ) | 12:58 | |
p6eval | rakudo 024843: OUTPUT«Type check failed in assignment to '$v'; expected 'Mu' but got 'Foo' in method REIFY at src/gen/CORE.setting:5655 in method reify at src/gen/CORE.setting:4949 in method gimme at src/gen/CORE.setting:5323 in method elems at src/gen/CORE.setting:5303 in blo… | ||
moritz | r: subset Foo of Str where 1; ~( <a b c> X~~ Foo ) | ||
p6eval | rakudo 024843: OUTPUT«Type check failed in assignment to '$v'; expected 'Mu' but got 'Foo' in method REIFY at src/gen/CORE.setting:5655 in method reify at src/gen/CORE.setting:4949 in method gimme at src/gen/CORE.setting:5323 in method elems at src/gen/CORE.setting:5303 in blo… | ||
moritz | r: ~( <a b c> X~~ Str ) | 12:59 | |
p6eval | rakudo 024843: ( no output ) | ||
gfldex | it's not overly consistent to have X~~ but not >>~~>> | 13:01 | |
and it's means not autothreading for ~~ | |||
what makes me a little sad | |||
moritz | well, X~~ also doesn't work | 13:02 | |
gfldex | shout it? | ||
*should | |||
moritz | good question | ||
it probably could, but without the automagic topicalization | 13:03 | ||
gfldex | TimToady: should X~~ and >>~~>> be and dwim? | ||
moritz | std: 1 X~~ 2 | ||
p6eval | std f179a1b: OUTPUT«ok 00:00 41m» | 13:04 | |
moritz | std: 1 >>~~>> 1 | ||
p6eval | std f179a1b: OUTPUT«ok 00:00 41m» | ||
moritz | std parses them :-) | ||
13:04
[particle] joined
|
|||
gfldex | does that mean they have to be or does it mean they can be? | 13:04 | |
jnthn | r: subset Foo of Str where /a|b|c/; say Foo ~~ Mu | 13:05 | |
p6eval | rakudo 024843: OUTPUT«False» | ||
13:05
bacek joined
|
|||
jnthn | r: subset Foo of Str where /a|b|c/; say Foo ~~ Str | 13:05 | |
p6eval | rakudo 024843: OUTPUT«True» | ||
jnthn | wtf... | ||
tadzik | r: subset Foo of Str where /a|b|c/; say Foo.^mro | 13:06 | |
p6eval | rakudo 024843: OUTPUT«No such method 'mro' for invocant of type 'Perl6::Metamodel::SubsetHOW' in block <anon> at /tmp/Q9t8t1Asel:1» | ||
moritz | gfldex: I don't know | ||
tadzik | hy | ||
moritz | tadzik: mro is only for stuff we call methods on, no? | ||
r: subset Foo of Str where /a/; say Foo.uc | 13:07 | ||
p6eval | rakudo 024843: OUTPUT«Nominal type check failed for parameter ''; expected Cool but got Foo instead in method uc at src/gen/CORE.setting:1876 in block <anon> at /tmp/6yKOSAo7iD:1» | ||
moritz | r: subset Foo of Str where /a/; say Foo ~~ Cool | ||
p6eval | rakudo 024843: OUTPUT«False» | ||
gfldex | the spec seams not to say anything about X~~ but got something about [~~] | ||
13:08
Psyche^ joined
|
|||
moritz | std: [~~] 1, 2, 3 | 13:08 | |
p6eval | std f179a1b: OUTPUT«ok 00:00 42m» | ||
gfldex | it feels like there would be something amiss without X~~ but i felt wrong about perl6 before :) | 13:09 | |
moritz | r: subset Foo of Str where /a/; augment class Foo { method foo() { say 'lol' } }; Foo.foo | ||
p6eval | rakudo 024843: OUTPUT«===SORRY!===augment not allowed without 'use MONKEY_TYPING'at /tmp/EE3wFUBGWn:1» | ||
moritz | r: use MONKEY_TYPING; subset Foo of Str where /a/; augment class Foo { method foo() { say 'lol' } }; Foo.foo | 13:10 | |
p6eval | rakudo 024843: OUTPUT«Useless declaration of a has-scoped method in class===SORRY!===Method 'compose' not found for invocant of class 'Perl6::Metamodel::SubsetHOW'» | ||
moritz | that's quite a funny error :-) | ||
tadzik | moritz: oh, right | ||
r: subset Foo of Str where /a|b|c/; say Foo.^parents | |||
p6eval | rakudo 024843: OUTPUT«No such method 'parents' for invocant of type 'Perl6::Metamodel::SubsetHOW' in block <anon> at /tmp/P6iLqu8BH0:1» | ||
tadzik | okay | ||
moritz | where would a has-scaoped method make sense, if not in a class? (ok, a role...) | 13:11 | |
13:11
Patterner left,
Psyche^ is now known as Patterner
|
|||
moritz submits rakudobug (subset !~~ Mu) | 13:13 | ||
gfldex | std: subset Foo of Str; sub (*@l where { $^a X~~ Foo } ) { } | 13:14 | |
p6eval | std f179a1b: OUTPUT«Potential difficulties: @l is declared but not used at /tmp/OIjzCiWA9d line 1:------> subset Foo of Str; sub (*⏏@l where { $^a X~~ Foo } ) { }ok 00:00 43m» | ||
13:15
benabik left
|
|||
gfldex | looks like i can have typed slurpy arrays in signatures for the price of sloooowness | 13:15 | |
moritz | the reason we don't allow typed slurpies is that they are lazy | 13:16 | |
but type checks require evaluating all elements | 13:17 | ||
gfldex | that could take some time :) | ||
moritz | aye | ||
mucker | hi guys .. i'm thinking of writing a forthish compiler. should i use nqp or pir ??? | 13:23 | |
tadzik | nqp | ||
jnthn | Maintaining a compiler in an assembly language considered unfun. | 13:24 | |
Rakudo is almost rid of things that are written in PIR. Every time we re-do something in Perl 6 or NQP it gets easier to maintain :) | |||
And more accessible for people to hack on. | |||
mucker | okie dokie :) | ||
moritz | QAST! QAST! QAST! | ||
jnthn | Yeah. | ||
mucker | in the end nqp translates to pir, right ?? | 13:25 | |
jnthn | I should deal with a few things before really digging into that though :) | ||
dalek | kudo: d7f45ff | moritz++ | src/core/Cool.pm: Cool.eval |
13:26 | |
moritz | meh | 13:27 | |
jnthn | grr | ||
moritz | somebody pushed to mater | ||
jnthn already :'d it away | |||
moritz | *mster | ||
grrr | |||
jnthn | Then I typo'd nom. | ||
:/ | |||
dalek | kudo/nom: 12983a9 | jnthn++ | src/Perl6/Metamodel/SubsetHOW.pm: Fix silly thinko in subset type checking. |
||
jnthn deletes his local master | |||
I thought I'd done that before. Guess it was on $other-machine. | |||
moritz now +2 on renaming nom to master | 13:28 | ||
jnthn | By now is it only a problem for people who cloned long enough ago to already have a master branch? | 13:29 | |
moritz | plus those that wonder where master is | ||
jnthn | No, I mean, if we push what is currently nom to master... | 13:30 | |
moritz | hm, yes | 13:31 | |
jnthn | We did it to avoid poeple having to re-clone. But now, only people who grabbed a clone quite a long time ago will have a local master branch. | ||
moritz | right | 13:32 | |
flussence | running `git remote prune origin` every few months is a good idea :) | ||
13:33
isBEKaml joined
13:34
am0c left
|
|||
jnthn deletes a few branches of his from GitHub too | 13:35 | ||
13:37
thou joined
|
|||
PerlJam | re nom->master +! from me too. (The only time I ever notice it though is when attempting to switch from another branch *back* to nom as my fingers tend to reflexively type "git co master") | 13:40 | |
er, +1 even | |||
jnthn | Mine are gonna type nom for ages though... :) | ||
moritz | well, I've had both problems | ||
trying 'git checkout master' in rakudo, and later 'git checkout nom' in nqp :-) | 13:41 | ||
PerlJam | heh | ||
13:43
fgomez left
|
|||
moritz | I have deleted several more branches on github | 13:47 | |
so now pruning branches in your local repos is a good idea :-) | 13:48 | ||
13:54
fgomez joined
14:04
mucker left
14:06
benabik joined
|
|||
pmichaud | ... ".threw" ? | 14:06 | |
github.com/rakudo/rakudo/commit/02...d3ace680e3 | |||
moritz | oops, should be .throw | 14:07 | |
I wonder why we're passing a test for it though :-) | 14:08 | ||
pmichaud | it still dies, I guess. :-) | ||
good morning, #perl6 | |||
jnthn | o/ pmichaud :) | ||
moritz | oh, it seems I was imagining things. We don't pass a test for it | 14:09 | |
that makes me feel slightly less nervous | |||
14:09
icwiener joined
|
|||
moritz | r: sub f() { gather { return } }; f() | 14:10 | |
p6eval | rakudo 024843: ( no output ) | ||
14:10
tokuhiro_ joined
|
|||
moritz | r: sub f() { gather { return } }; ~f() | 14:10 | |
p6eval | rakudo 024843: OUTPUT«Attempt to return outside of any Routine in block <anon> at src/gen/CORE.setting:363 in block <anon> at /tmp/3IDQ3DXSUd:1» | ||
moritz | r: sub f() { gather { return } }; try ~f(); say $!.WHAT | ||
p6eval | rakudo 024843: OUTPUT«X::ControlFlow::Return()» | ||
moritz | well, that's not the same exception type :/ | ||
turns out I don't know to trigger the line in that patch :/ | 14:12 | ||
pmichaud | r: sub f() { gather { take 1; return; } }; try ~f(); say $!.WHAT; | ||
p6eval | rakudo 024843: OUTPUT«X::ControlFlow::Return()» | ||
jnthn | pmichaud: I'm been pondering NFAs for alternations a bit. It's not so hard to see that we could store/build the NFA for an alternation. But I'm not sure where we'd store the fate list (the order to try the branches). If we were to backtrack into a rule, it'd seem that it needs to stay around longer than a single invocation... | ||
moritz | r: sub f() { return -> { return } }; f()() | 14:13 | |
p6eval | rakudo 024843: OUTPUT«Attempt to return outside of any Routine in block <anon> at src/gen/CORE.setting:363 in block <anon> at /tmp/03tFLvGRCS:1» | ||
14:13
bluescreen10 left
|
|||
pmichaud | jnthn: ummmmm, I had this figured out at one point... thinking | 14:14 | |
oh, yes | |||
you can store it on the backtracking stack | |||
colomon | n: say 1..6 ~~ 3 | ||
p6eval | niecza v18-1-gc86e3f0: OUTPUT«False» | ||
jnthn | pmichaud: Ain't the bs an integer array? | 14:15 | |
colomon | n: say 1..6 R~~ 3 | ||
p6eval | niecza v18-1-gc86e3f0: OUTPUT«True» | ||
sorear | good * #perl6 | ||
jnthn | pmichaud: Or is your point, "so are the fate"? :) | ||
pmichaud | jnthn: sure.... but the alternations are just jump targets | ||
colomon | r: say 1..6 R~~ 3 | ||
p6eval | rakudo 12983a: OUTPUT«True» | ||
colomon | r: say 1..6 ~~ 3 | ||
p6eval | rakudo 12983a: OUTPUT«False» | ||
jnthn | pmichaud: Oh...so you could just queue them all up on the bstack? | ||
pmichaud | yes, longest alternation is queued last | ||
then fail | |||
jnthn | hah! | ||
pmichaud++ | 14:16 | ||
pmichaud | so, just a bunch of mark_push calls for the alternations that match | ||
jnthn | Dang, that's really obvious in hindsight... | ||
:) | |||
sorear | rakduo is going to use fates? | ||
jnthn | sorear: If you're thinking what I think you're thinking - that's not quite what I mean here; I'm just talking about the point we cross fate edges as in, "we consider this branch matched" | 14:17 | |
sorear: Not doing the "pass the matches down the tree" thing just yet. | 14:18 | ||
14:19
fglock joined
|
|||
jnthn | pmichaud: I guess you saw the commit, but I tossed all of that weird sorting stuff in !protoregex too and twiddled the NFA runner to just spit out useful output. | 14:19 | |
sorear | jnthn: What does fate mean in a rakudo context? | ||
fglock | o/ | ||
jnthn | sorear: I mean $EDGE_FATE | ||
pmichaud | I didn't see the commit, no. For some reason I'm not getting notifications of nqp commits. | ||
jnthn | Oh | ||
pmichaud | I know that I was at one time, but they seem to have stopped. | ||
anyway, "toss weird sorting stuff"++ | |||
sorear | jnthn: I haven't read any of the new rakudo LTM code | ||
jnthn | sorear: The edge type in the NFA you cross when you hit the end of the declarative prefix. | ||
sorear | ah | 14:20 | |
jnthn | We could potentially change things so we retain all of the crossing points from the NFAs of merged subrules etc. | ||
And then we'd be able to do the fates a la STD. | |||
Or what I understand STD does. | |||
pmichaud | right, I had planned that to be a "future optimization" :) | ||
sorear | the problem with *that* idea is that it leads to exponential blowup | 14:21 | |
which is why I dropped it from niecza | |||
jnthn | sorear: It's not immediately clear to me why. What am I (likely) missing? | ||
sorear | regex a { x | y }; regex b { <a>* } | ||
pmichaud | jnthn: anyway; yes, using the bstack for alternations also means that ratcheting/commits work properly | 14:22 | |
sorear | currently that generates a rather small NFA | ||
if the b NFA had to generate branch information for <a> as well, it would be much larger | |||
perhaps a better example would be regex b { <a> <a> <a> <a> <a> } | 14:23 | ||
dalek | kudo/nom: 69240df | moritz++ | src/core/ (2 files): cut an exception type that I do not know how to trigger it is already well-covered by a similar type. pmichaud++ noted a typo in the original code, so I guess it was never called. |
||
sorear | STD expands out that NFA as xxxxx | xxxxy | ... yyyyx | yyyyy, each with a *different* fate set, because different fates need to go to a | 14:24 | |
14:24
masonkramer joined
|
|||
jnthn | Ouch. | 14:24 | |
Oh wait, it computes the fate sets AOT, rather than during traversal? | |||
14:24
bluescreen10 joined
|
|||
jnthn | That...wasn't what I had in mind. :) | 14:25 | |
14:26
replore_ left
|
|||
jnthn had figured you could cross multiple "sub-fate" edges, each of which fills in an entry in the fate set. | 14:26 | ||
pmichaud | Me neither, although I hadn't explored it very far ("future optimization") | ||
jnthn | Aye. | ||
I'm not planning to work on it...it's the alternations I'm interested in. | |||
moritz | now the future is here :-). At least partially :-) | ||
jnthn | Feel free to beat me to it, but I may give it a go at the weekend. | ||
pmichaud | future is here suboptimally, I guess. | ||
jnthn | s/it/them/ | ||
(give the alternations a go, just to be clear :)) | 14:27 | ||
pmichaud | I think I'd rather spend my tuits on the .munch issue | ||
sorear | jnthn: doing it during traversal leads to an exponential blowup of a different sort | ||
pmichaud | since you're already spun up on the alternations one | ||
jnthn | pmichaud: OK, that's fine. | ||
pmichaud | also I need to catch up with nqp latest stuff | ||
and I want to work on my synopsis-excerpting tool a bit | |||
sorear | jnthn: contrived example: regex a { x | x }; regex b { <a>* } | 14:28 | |
jnthn | pmichaud: By now I can read NFAs by reading the list of integers. :) | ||
pmichaud | jnthn: yes, it's not really that hard once you're into it | ||
jnthn | pmichaud: Yeah, it ain't so bad :) | ||
pmichaud | I like that particular encoding for a variety of reasons | ||
sorear | jnthn: after reading xxx, the current set of active states is { K(fate = 000), K(fate = 001), ... K(fate = 111) } | ||
jnthn: whereas without fate recording you only need to keep one copy of K in the active node set | 14:29 | ||
jnthn | sorear: Contrived example is contrived, but yes, I think I see where you're going. | ||
pmichaud | I suspect fate recording could be size limited somehow, though -- use the fate information if we have it, do it the long way if we don't | 14:30 | |
jnthn | *nod* | ||
So long as it's an optimization and not required for correctness, that works out fine. | |||
pmichaud: I'd rather you spend your tuits on munch too, fwiw :) | 14:31 | ||
I understand that area less well :) | |||
pmichaud | good for me | ||
s/good/works/ | |||
jnthn | \o/ | 14:32 | |
pmichaud | I also may wrangle a few tickets, and work on regex performance a bit | ||
jnthn | Yeah. | ||
sorear | it seems that fates *are* required for correctness in the presence of backtracking though. | ||
PerlJam | Have You guys read swtch.com/~rsc/regexp/regexp1.html ? | 14:33 | |
jnthn | pmichaud: On regex performance: our "startup" time has sufferred because of building a bunch of quite complex NFAs as we start parsing. I already know what to do with this issue. | ||
pmichaud | jnthn: what to do? | ||
sorear | PerlJam: that page talks about regular expressions, not p6regex | ||
PerlJam: I have had that link forwarded to me so many times I am starting to take it badly | 14:34 | ||
pmichaud | PerlJam: yes, I read that page -- it was one of my sources for developing qregex | ||
PerlJam | okay, just checking | ||
jnthn | pmichaud: We can build them at compile time and they'll get serialized. (more) | ||
PerlJam | sorear: aye, I just wanted to make sure you guys were aware of it :) | 14:35 | |
jnthn | pmichaud: Since they're held by a caching mechanism, invalidation that later happens at runtime will not cause us issues. | ||
sorear | p6: grammar F { regex a { a | aaaaa } ; regex TOP { ^ ( <a> | aaa ) <?{ $0.chars < 5 }> {} .* } }; say F.parse("aaaaa") | ||
p6eval | pugs: OUTPUT«*** No such method in class F: "&parse" at /tmp/1aI5mChYN2 line 1, column 100 - line 2, column 1» | ||
..rakudo 12983a: OUTPUT«q[aaaaa] 0 => q[a] a => q[a]» | |||
..niecza v18-1-gc86e3f0: OUTPUT«#<match from(0) to(5) text(aaaaa) pos([#<match from(0) to(1) text(a) pos([].list) named({"a" => #<match from(0) to(1) text(a) pos([].list) named({}.hash)>}.hash)>].list) named({}.hash)>» | |||
pmichaud | jnthn: yes, I was hoping/thinking there would be a compile-time serialization possibility :) | ||
sorear | p6: grammar F { regex a { a | aaaaa } ; regex TOP { ^ ( <a> | aaa ) <?{ $0.chars < 5 }> {} .* } }; say ~F.parse("aaaaa").[0] | 14:36 | |
p6eval | pugs: OUTPUT«*** No such method in class F: "&parse" at /tmp/xKevWph4RE line 1, column 100 - line 2, column 1» | ||
..rakudo 12983a, niecza v18-1-gc86e3f0: OUTPUT«a» | |||
pmichaud | jnthn: at the time qregex was first being built, a lot of serialization was nyi :) | ||
jnthn | pmichaud: Right. :) | ||
pmichaud | but I was comfortable it could be made to work | ||
sorear | I have been told that this should return q[aaa] | ||
but making this work requires fatefulness | |||
pmichaud | or some mechanism to control backing into subrules in the declarative prefix | 14:40 | |
maybe some variation of :exhaustive where the subrule knows to cache and order its matches based on ltm | 14:42 | ||
or some way for a subrule to return a state that says "I have more matches, but none longer than the minimum you sent me" | 14:44 | ||
14:50
wtw left
|
|||
pmichaud | afk for a bit | 14:51 | |
14:51
kaare_ joined
14:53
lestrrat left
14:54
lestrrat joined
15:01
fgomez left
15:02
aesundstrom joined
15:06
lestrrat left
15:07
lestrrat joined
15:18
plobsing_ left
15:20
japhb left,
plobsing joined
|
|||
kresike | bye all | 15:24 | |
15:24
kresike left
15:29
mucker joined,
tokuhiro_ left
15:30
fhelmberger left
15:32
fglock left,
bluescreen10 left
15:33
fhelmberger joined
15:35
fhelmberger left
15:44
bluescreen10 joined
15:52
bluescreen10 left
15:53
bluescreen10 joined
15:55
crab2313 joined
15:56
fgomez joined
16:02
JimmyZ left
16:04
masonkramer left
16:05
brrt left
16:07
simcop2387 left,
simcop2387 joined
16:16
japhb joined
16:19
Kresike joined
|
|||
Kresike | hi all | 16:20 | |
tadzik | hello again Kresike | ||
Kresike | hello again tadzik | ||
16:42
not_gerd joined
|
|||
not_gerd | n: say "foo".subst(/(foo)/, { say $0.WHAT; "bar" }) | 16:42 | |
phenny | not_gerd: 18 May 00:09Z <flussence> tell not_gerd I don't even remember what that error was from... but I've built rakudo on my desktop and netbook recently without problems so I'll assume it's fixed. | ||
p6eval | niecza v18-1-gc86e3f0: OUTPUT«Match()bar» | ||
not_gerd | r: say "foo".subst(/(foo)/, { say $0.WHAT; "bar" }) | ||
p6eval | rakudo 69240d: OUTPUT«Any()bar» | ||
not_gerd | ^ known? | ||
16:42
daxim left
|
|||
jnthn | p6: say "foo".subst(/(foo)/, -> $/ { say $0.WHAT; "bar" }) | 16:44 | |
p6eval | rakudo 69240d, niecza v18-1-gc86e3f0: OUTPUT«Match()bar» | ||
..pugs: OUTPUT«Error eval perl5: "if (!$INC{'Pugs/Runtime/Match/HsBridge.pm'}) { unshift @INC, '/home/p6eval/.cabal/share/Pugs-6.2.13.20120203/blib6/pugs/perl5/lib'; eval q[require 'Pugs/Runtime/Match/HsBridge.pm'] or die $@;}'Pugs::Runtime::Match::HsBridge'"*** Can't locate P… | |||
jnthn | That's the way to do it. | ||
not_gerd | jnthn: thanks | 16:45 | |
is it a niecza-bug then? | |||
jnthn | I think there's an underlying unresolved spec question there, iirc. | ||
We'd like it to work with what you wrote, but making it do so is problematic, because how does match .subst now what $/ to set in order to have the closure see the right thing? | 16:46 | ||
s/now/known/ | |||
Unless this all got resolved/decided somewhere and I forgot, of course. | 16:47 | ||
diakopter | moritz: do we have an html version of Using Perl 6 | ||
moritz | diakopter: 'make html' should produce one | ||
diakopter | oh! do we have the result linked from perl6.org? | 16:48 | |
and are the chapters separated to different pages | |||
16:50
mikemol joined
|
|||
diakopter | I have the itch to write reams of documentation, and I think Using Perl 6 might be the place for it, as long as it was automatically rendered/published to perl6.org | 16:50 | |
"write reams.." also for my own learning. | 16:51 | ||
dalek | pan style="color: #395be5">perl6-examples: d792bfe | (Gerhard R)++ | shootout/regex-dna.p6.pl: [shootout/regex-dna] workaround for unresolved spec issue, jnthn++ |
16:52 | |
16:52
birdwind1pbird left
16:53
dakkar left
16:54
japhb left
16:55
birdwind1pbird joined,
cognominal left,
cognominal joined
16:56
estrabd joined
17:08
sjohnson left,
am0c joined
17:10
PacoAir left
|
|||
not_gerd | gist.github.com/2837706 | 17:12 | |
^ golfed version of the regex-dna issue | |||
eats all your memory on 32-bit systems | |||
sorear | jnthn: What I (or was it colomon?) did some time last year was to set CALLER::<$/>, but save the old value to restore before .susbt returns | ||
I'm happy with this, so is colomon, and no-one else has complained | |||
17:15
brrt joined
17:17
bbkr_ left,
birdwind1pbird left
17:18
birdwindupbird left
17:20
_ilbot left
17:21
_ilbot joined
17:27
sjohnson joined
17:31
benabik left
17:36
wolfman2000 joined
|
|||
TimToady | n: gist.github.com/2837838 | 17:38 | |
p6eval | niecza v18-1-gc86e3f0: OUTPUT«1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 67651 1 2 4 7 13 24 44 81 149 274 504 927 1705 3136 5768 10609 19513 35890 660121 1 2 4 8 15 29 56 108 208 401 773 1490 2872 5536 10671 20569 39648 76424 1473121 1 2 4 8 16 31 61 120 236 464 9… | ||
TimToady | r: gist.github.com/2837838 | ||
p6eval | rakudo 69240d: OUTPUT«1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 67651 1 2 4 7 13 24 44 81 149 274 504 927 1705 3136 5768 10609 19513 35890 66012Not enough positional parameters passed; got 3 but expected 4 in whatevercode <anon> at eval_2:1 in block <anon> at s… | ||
TimToady | rakudobug | ||
17:48
birdwindupbird joined
|
|||
diakopter ponders how to golf it | 17:49 | ||
17:51
kaleem left
|
|||
TimToady | my guess is that something's not flattening in list context that should | 17:52 | |
s/list/slurpy/ to be a bit more precise | |||
sorear | rakudobug? usually it is niecza that has the horrible flattening problems | 17:53 | |
TimToady | but installing calls to flat doesn't seem to help | 17:54 | |
well, it's always possible that TimToady is relying on niecza's buggy behavior somehow... | 17:55 | ||
TimToady notes the odd semantics of "always" in that sentence | 17:56 | ||
geekosaur will just point to James Nicoll re English | 18:01 | ||
18:02
not_gerd left
18:03
raiph joined
|
|||
TimToady | A linguist has a problem and says "I know, I'll use a level of indirection." Now he has 7±2 problems... | 18:04 | |
diakopter | n: gist.github.com/2837921 | 18:05 | |
p6eval | niecza v18-1-gc86e3f0: OUTPUT«Unhandled exception: Cannot unbox a Variable[] from an object of repr P6box[Int32] at <unknown> line 0 (iter_flatten @ 0)  at /home/p6eval/niecza/lib/CORE.setting line 2391 (GatherIterator.reify @ 6)  at <unknown> line 0 (ExitRunloop @ 0)  at /tmp/w… | ||
diakopter | internals leaky | ||
sorear: fyi this revision was the one that did that ^^ gist.github.com/2837921/48f465d8c4...d724869ace | 18:07 | ||
so you'll have to paste that into a new gist to run it | |||
18:09
Celelibi left
18:11
raiph left
18:27
ruoso joined
18:34
kboga joined
|
|||
kboga | hi p6 | 18:38 | |
t/spec/S02-types/bool.t seems to fail nondeterministically here: nopaste.snit.ch/paste | 18:39 | ||
(was tested on latest nom) | 18:40 | ||
jnthn | kboga: I managed to get something based on it to fail quite reliably...but didn't manage to get to the bottom of what on earth is going on yet. | 18:41 | |
kboga | ah, good that you guys are aware of it already though :) | 18:42 | |
diakopter | r: say ((1,1, {[+] @_} ... *)[0...4], *+*+*+*+* ... *)[4] | ||
p6eval | rakudo 69240d: OUTPUT«8» | ||
diakopter | r: say ((1,1, {[+] @_} ... *)[0...3], *+*+*+*+* ... *)[4] | ||
p6eval | rakudo 69240d: OUTPUT«Not enough positional parameters passed; got 3 but expected 5 in block <anon> at /tmp/Rc_Hq3mTwO:1» | ||
diakopter | jnthn: ^^ note | ||
something's off by one ;) | 18:43 | ||
18:44
brrt left
|
|||
diakopter | n: say ((1,1, {[+] @_} ... *)[0...4], *+*+*+*+* ... *)[4] | 18:46 | |
p6eval | niecza v18-1-gc86e3f0: OUTPUT«8» | ||
diakopter | n: say ((1,1, {[+] @_} ... *)[0...3], *+*+*+*+* ... *)[4] | ||
p6eval | niecza v18-1-gc86e3f0: OUTPUT«Unhandled exception: Need more items on the LHS at /home/p6eval/niecza/lib/CORE.setting line 1401 (die @ 5)  at /home/p6eval/niecza/lib/CORE.setting line 3128 (get-next-closure @ 11)  at /home/p6eval/niecza/lib/CORE.setting line 3172 (ANON @ 17)  at… | ||
diakopter | n: say ((1,1, {[+] @_} ... *)[0...5], *+*+*+*+* ... *)[4] | 18:47 | |
p6eval | niecza v18-1-gc86e3f0: OUTPUT«8» | ||
18:47
am0c left
18:49
kaleem joined
|
|||
diakopter | whoa. | 18:49 | |
r: say ((1,1, {[+] @_} ... *)[0...6], *+*+*+*+* ... *)[6] | |||
p6eval | rakudo 69240d: OUTPUT«32» | ||
diakopter | r: say ((1,1, {[+] @_} ... *)[0...5], *+*+*+*+* ... *)[6] | ||
p6eval | rakudo 69240d: OUTPUT«Not enough positional parameters passed; got 3 but expected 5 in block <anon> at /tmp/s7cfYb8Y8c:1» | ||
diakopter | r: say ((1,1, {[+] @_} ... *)[0...5], *+*+*+*+* ... *)[5] | ||
p6eval | rakudo 69240d: OUTPUT«16» | ||
18:50
benabik joined
|
|||
diakopter | r: say ((1,1, {[+] @_} ... *)[0...6], *+*+*+*+*+* ... *)[7] | 18:51 | |
p6eval | rakudo 69240d: OUTPUT«Not enough positional parameters passed; got 3 but expected 6 in block <anon> at /tmp/KHWhlbyY4K:1» | ||
diakopter | TimToady: it's always getting only 3 positional parameters | ||
PerlJam | r: say ((1,1, {[+] @_} ... *)[0...5], *+*+*+*+* ... *)[10] | 18:52 | |
p6eval | rakudo 69240d: OUTPUT«Not enough positional parameters passed; got 3 but expected 5 in block <anon> at /tmp/m7rWnL_oHI:1» | ||
PerlJam | r: say ((1,1, {[+] @_} ... *)[0...5], *+*+*+*+* ... *)[9] | ||
p6eval | rakudo 69240d: OUTPUT«Not enough positional parameters passed; got 3 but expected 5 in block <anon> at /tmp/QgSok6vtpP:1» | ||
18:53
replore_ joined
|
|||
jnthn | kboga++ # pull requests | 18:58 | |
19:00
brrt joined
|
|||
kboga | np | 19:05 | |
gtg bye p6 | 19:06 | ||
19:06
skids left,
kboga left
|
|||
PerlJam | oh, SEQUENCE has 3 as a magic number. I was thinking something completely different. | 19:09 | |
19:11
kaleem left
|
|||
diakopter | r: say ((1,1,2,4,8)[^4], *+*+*+* ... *)[4] | 19:16 | |
p6eval | rakudo 69240d: OUTPUT«Not enough positional parameters passed; got 3 but expected 4 in block <anon> at /tmp/WkDpAcE1QC:1» | ||
jnthn | r: say (*+*+*+*).signature | ||
p6eval | rakudo 69240d: OUTPUT«WhateverCode.new()» | ||
jnthn | r: say (*+*+*+*).WHAT | 19:17 | |
p6eval | rakudo 69240d: OUTPUT«WhateverCode()» | ||
benabik | WhateverCode as a signature? | ||
jnthn | Hm. | ||
diakopter | r: say ((1,1,2,4,8), *+*+*+* ... *)[4] | ||
p6eval | rakudo 69240d: OUTPUT«8» | ||
PerlJam | I bet the sequence op will always only pass 3 parameters to the code | ||
jnthn | I doubt it. | ||
diakopter | n: say ((1,1,2,4,8)[^4], *+*+*+* ... *)[4] | ||
p6eval | niecza v18-1-gc86e3f0: OUTPUT«8» | ||
jnthn | PerlJam: Oh, it's in sequence? | ||
PerlJam | oh. | ||
well, that's my current guess. | |||
jnthn | k | 19:18 | |
diakopter | r: say ((1,1,2,4,8)[^4], *+*+*+* ... *)[4] | ||
p6eval | rakudo 69240d: OUTPUT«Not enough positional parameters passed; got 3 but expected 4 in block <anon> at /tmp/HgBaJv7BVP:1» | ||
diakopter | r: say ((1,1,2,4,8), *+*+*+* ... *)[4] | ||
p6eval | rakudo 69240d: OUTPUT«8» | ||
19:18
replore_ left
|
|||
jnthn | say (1,1,2,4,8)[^4] | 19:18 | |
r: ay (1,1,2,4,8)[^4] | |||
p6eval | rakudo 69240d: OUTPUT«===SORRY!===CHECK FAILED:Undefined routine '&ay' called (line 1)» | ||
jnthn | r: say (1,1,2,4,8)[^4] | 19:19 | |
p6eval | rakudo 69240d: OUTPUT«1 1 2 4» | ||
PerlJam | yeah, as soon as it needs to generate an element with the code block, it barfs with "got 3 but expected N" | 19:21 | |
TimToady | r: say {$^a + $^b + $^c + $^d}.arity | ||
p6eval | rakudo 69240d: OUTPUT«4» | ||
TimToady | r: say (*+*+*+*).arity | 19:22 | |
p6eval | rakudo 69240d: OUTPUT«WhateverCode.new()» | ||
jnthn | It's seemingly applying the *.foo logic and deriving a new closure. | ||
r: say WhateverCode.^mro | 19:23 | ||
p6eval | rakudo 69240d: OUTPUT«WhateverCode() Code() Any() Mu()» | ||
jnthn | r: say Whatever.^mro | ||
p6eval | rakudo 69240d: OUTPUT«Whatever() Any() Mu()» | ||
jnthn | Hm, it ain't just inheriting it from Whatever. Guess it must be deliberate then... | ||
oh | |||
It's compile time I guess | |||
TimToady | nodnod | ||
diakopter | the parcel is flattening differently | ||
jnthn | r: say ((*+*+*+*)).arity | 19:24 | |
p6eval | rakudo 69240d: OUTPUT«WhateverCode.new()» | ||
jnthn | r: say (my $ = (*+*+*+*)).arity | ||
p6eval | rakudo 69240d: OUTPUT«4» | ||
TimToady | r: say .arity given *+*+*+* | ||
p6eval | rakudo 69240d: OUTPUT«4» | ||
diakopter | r: say ((1,1,2,4,8)[^4]).WHAT; say ((1,1,2,4,8)[^4], *+*+*+* ... *)[4] | ||
p6eval | rakudo 69240d: OUTPUT«Parcel()Not enough positional parameters passed; got 3 but expected 4 in block <anon> at /tmp/AoA_4u5C4Y:1» | ||
diakopter | r: say ((1,1,2,4,8)).WHAT; say ((1,1,2,4,8), *+*+*+* ... *)[4] | ||
p6eval | rakudo 69240d: OUTPUT«Parcel()8» | ||
TimToady | so probably not the problem here | 19:25 | |
19:25
brrt left
|
|||
diakopter | r: say ((1,1,2,4,8)[^4]).WHAT; say ((1,1,2,4,8)[^4], {$^a + $^b + $^c + $^d} ... *)[4] | 19:26 | |
p6eval | rakudo 69240d: OUTPUT«Parcel()Not enough positional parameters passed; got 3 but expected 4 in block <anon> at /tmp/23SVoLqOd5:1» | ||
TimToady | r: say (1,1,2,4,8)[^4].perl | 19:27 | |
p6eval | rakudo 69240d: OUTPUT«(1, 1, 2, 4)» | ||
PerlJam | Is munch not specced? | ||
TimToady | it is not | ||
PerlJam | should it be? | ||
TimToady | (yet-ish) | ||
maybe | 19:28 | ||
PerlJam | ok | ||
diakopter | r: say ((1,1,2,4,8,15)[^5], *+*+*+* ... *)[5] | 19:29 | |
p6eval | rakudo 69240d: OUTPUT«Not enough positional parameters passed; got 3 but expected 4 in block <anon> at /tmp/baTUwurQkA:1» | ||
TimToady | r: (*+*+*+*).((1,1,2,4,8)[^4]).say | 19:30 | |
p6eval | rakudo 69240d: OUTPUT«Not enough positional parameters passed; got 1 but expected 4 in block <anon> at /tmp/r0rKLstLgW:1» | ||
TimToady | r: (*+*+*+*).(|(1,1,2,4,8)[^4]).say | ||
p6eval | rakudo 69240d: OUTPUT«8» | ||
diakopter | workaround, I guess | 19:31 | |
jnthn | uh, (1,1,2,4,8)[^4] will certainly pass as a single argument. | 19:32 | |
You need the |, as TimToady did, if it's going to flatten into the argument list. | |||
19:32
mucker left
|
|||
TimToady | the ... is doing something different | 19:33 | |
jnthn | $tail.munch($tail.elems - $count); | 19:36 | |
$value := $code(|$tail); | |||
Is that right? | 19:37 | ||
I'd naively have expected $value := $code(|$tail.munch(...)); | |||
19:38
Kresike left
19:39
Celelibi joined
|
|||
timotimo | can something like algebraic types be made with perl6 somehow? | 19:44 | |
19:45
Kresike joined
|
|||
TimToady | that depends on how "like" you need them, and how fancy "somehow" can be | 19:46 | |
19:47
isBEKaml left
|
|||
aesundstrom | FWIW, Sage is the best CAS system I've seen for abstract algebra, and it's written in Python. Now, given that everything in Python (pick your version) can be done better in Perl6 ? ;) | 19:49 | |
PerlJam | They're turing equivalent, so ... ;) | 19:50 | |
aesundstrom | www.sagemath.org/ | 19:51 | |
19:52
pupoque joined
19:56
alester joined
|
|||
diakopter tries jnthn's patch | 19:57 | ||
19:58
crab2313 left
20:00
cognominal left
|
|||
sorear | yay, small world | 20:00 | |
aesundstrom: william stein was my calc I instructor D: | |||
TimToady | r: gist.github.com/2838595 | 20:01 | |
p6eval | rakudo 69240d: OUTPUT«[RedBlack::B, [RedBlack::B, [RedBlack::B, Any, 1, Any], 2, [RedBlack::B, Any, 3, Any]], 4, [RedBlack::B, [RedBlack::B, [RedBlack::R, Any, 5, Any], 6, Any], 7, [RedBlack::B, [RedBlack::R, Any, 8, Any], 9, [RedBlack::R, Any, 10, Any]]]]» | ||
TimToady | n: gist.github.com/2838595 | ||
p6eval | niecza v18-1-gc86e3f0: OUTPUT«===SORRY!===Lexical B is not a package at /tmp/n53wP0DbF5 line 3:------> multi balance(B⏏,[R,[R,$a,$x,$b],$y,$c],$z,$d) { [R,[B,$A type must be provided at /tmp/n53wP0DbF5 line 3:------> multi balance(B⏏… | ||
TimToady | timotimo: see gist ^^ | ||
20:02
Kresike left
|
|||
aesundstrom | sorear: cool | 20:02 | |
jnthn | Whoa. | ||
TimToady | sorear: see nieczabug ^^ | ||
moritz | TimToady: is that stolen from the Haskell solution? | 20:04 | |
colomon | TimToady++ | ||
20:04
Kresike joined
|
|||
sorear | niecza: sub foo(True) { } | 20:06 | |
p6eval | niecza v18-1-gc86e3f0: OUTPUT«===SORRY!===Lexical True is not a package at /tmp/xNq0ZDs_Ri line 1:------> sub foo(True⏏) { }A type must be provided at /tmp/xNq0ZDs_Ri line 1:------> sub foo(True⏏) { }Potential difficulties:… | ||
sorear | TimToady: golfed for yu | ||
dalek | Heuristic branch merge: pushed 25 commits to nqp by moritz | 20:10 | |
TimToady | moritz: yes | 20:11 | |
20:11
brrt joined
|
|||
jnthn | 25 commits? | 20:13 | |
moritz | jnthn: that's the branch merge from kboga++, replacing lots of pir:: ops with nqp:: ops | ||
jnthn | oh, it was a bunch of commits | 20:14 | |
yay :) | |||
kboga++ | |||
moritz | jnthn: and introduces quite some that were missing | ||
I'm now spectesting the corresponding rakudo branch too | |||
jnthn | \o/ | ||
I need to review various 6model related ones and pick nqp:: names for those soon I guess. | 20:15 | ||
diakopter | I have a patch for the ... munch thing | ||
jnthn | Does it fix things? | 20:16 | |
brrt | yay, i build perl6 again | ||
diakopter | building.. I think it will. | ||
20:16
not_gerd joined
|
|||
jnthn | diakopter++ | 20:16 | |
not_gerd | I further golfed the regex-dna failure: gist.github.com/2837706 | ||
TimToady | diakopter: can you explain the problem in words of one polysyllable? | ||
not_gerd | it's just the hich number of match objects | ||
someone needs to add some laziness to subst() | 20:17 | ||
s/hich/high/ | |||
moritz | not_gerd: huh? subst returns a string, strings aren't lazy | ||
diakopter | overmunch | ||
do. | |||
doh. | |||
segfault | |||
haha | |||
that shouldn't be.... | 20:18 | ||
not_gerd | moritz: subst stores all matches in an array before starting the replacements | ||
jnthn | not_gerd: Those match objects still seem...crazy big. It's not that long. | ||
not_gerd | that array exhausts my 32-bit address space if the input string is too large | ||
moritz | not_gerd: oh | ||
diakopter | yeah, the patch fixes it. the segfault was while building Text.pir | ||
jnthn checks something... | |||
diakopter | fix: gist.github.com/2838671 | 20:19 | |
moritz | r: my Str subset MyStr; say MyStr ~~ Str | 20:21 | |
p6eval | rakudo 69240d: OUTPUT«False» | ||
diakopter | (it didn't segfault when I typed make again) | ||
dalek | Heuristic branch merge: pushed 20 commits to rakudo/nom by moritz | ||
jnthn | moritz: Wasn't that the $*OFTYPE thingy we discussed the other day? | 20:22 | |
moritz | jnthn: yes. But it passed bogusly before your last fix | ||
jnthn | oh! | ||
I...thought I spectested :S | |||
diakopter | spectesting my patch. | 20:23 | |
dalek | ast: e208a23 | moritz++ | S12-subset/subtypes.t: TODO a test that was passing bogusly before rakudo 12983a9c6 |
||
20:23
kaare_ left
|
|||
diakopter | TimToady: it was munching all but 3 even if there was a codeblock, then it tried to munch all but code.count | 20:24 | |
TimToady | why is it copying 3 values from the front of $tail when it won't need them? | 20:25 | |
moritz | the sequence code is surprisingly complex | ||
diakopter | TimToady: yes, probably the whole section should be in one $code.defined if | 20:26 | |
20:26
aesundstrom left
|
|||
PerlJam | and $code should be called $generator or something IMHP | 20:26 | |
eer, IMHO | 20:27 | ||
20:28
spider-mario joined
|
|||
diakopter | ok, spectesting new (much bigger with indentation changes) patch | 20:31 | |
not_gerd | is it feasible to steal Niecza's subst() implementation ( github.com/sorear/niecza/blob/mast...tting#L543 ) for Rakudo? | ||
there are some implementation-specific bits in it... | |||
moritz | not_gerd: I think one can fix it incrementally | 20:32 | |
dalek | p: aad2c3c | jnthn++ | src/QRegex/Cursor.nqp: If we know we won't backtrack into a rule, throw away the bstack from the Cursor. |
20:33 | |
moritz | not_gerd: testing a patch locally | 20:36 | |
diakopter | test failures; ugh. | 20:39 | |
moritz | diakopter: one in subset.t wouldn't be surprising | 20:40 | |
20:40
birdwindupbird left
|
|||
diakopter | there are a lot | 20:40 | |
it's surprising. | 20:41 | ||
20:41
birdwindupbird joined
|
|||
moritz | note that character ranges listify through sequences | 20:42 | |
ie ('a'..'c').list goes through ('a' ... 'c') in rakudo | |||
diakopter | hm | ||
moritz | so you can get test failures that don't look like they should have anything to do with sequences if you bust that case | ||
diakopter | yeah | 20:43 | |
moritz | oh, and did I mention that the sequence code is surprisingly complex? :-) | ||
diakopter | oh, I see my fail; fixing | 20:44 | |
PerlJam | moritz: why is that a surprise? :) | 20:45 | |
moritz | PerlJam: because it's such a small op, only three dots :-) | ||
ok, that's not logical, I know | |||
PerlJam | It's one of the more magical ops though. | 20:46 | |
sorear tried to steal rakudo-nom's SEQUENCE earlier, it broke the compiler ;) | |||
PerlJam | diakopter: gist the patch? | 20:48 | |
What little I understand, it seems like you only need to comment out the first munch in SEQUENCE and that should fix it. | 20:49 | ||
diakopter | to be most efficient, as TimToady suggested, we don't need to access/copy the first three values... so I refactored it a bit more gist.github.com/2838884 | 20:50 | |
ugh. still test failures. | 20:51 | ||
wth | |||
moritz | r: say Match ~~ Positional | ||
p6eval | rakudo 69240d: OUTPUT«False» | ||
jnthn | diakopter: You haven't got any other local changes, like leftover NQP changes? | 20:53 | |
diakopter | oh | ||
no | |||
I'm trying it more simply, but uglier | 20:54 | ||
PerlJam | diakopter: oh, I figured that first "if $code.defined {}" was needed because you don't want any of the other elsifs to trigger when you have a WhateverCode (i.e., you're not deducing the sequence from the values you have already, you're generating them from the WhateverCode) | ||
diakopter | now look at it: gist.github.com/2838884 | ||
PerlJam | ah, that does it I bet | 20:55 | |
moritz | looks much saner | ||
diakopter | we'll see | 20:56 | |
I'm still curious why I got the segfault earlier while building Test.pir | |||
20:57
ilogger2 joined,
ChanServ sets mode: +v ilogger2
|
|||
diakopter | that's better. | 20:58 | |
wait 15 minutes (even with TEST_JOBS=4) and I'll tell you whether it's all green | 20:59 | ||
moritz | r: say ('ab' ~~/(.)(.)).list.elems | ||
p6eval | rakudo 69240d: OUTPUT«===SORRY!===Preceding context expects a term, but found infix / insteadat /tmp/gvmYNBcVl5:1» | ||
moritz | r: say ('ab' ~~/(.)(.)/).list.elems | ||
p6eval | rakudo 69240d: OUTPUT«2» | ||
diakopter | oh, I see why the big patch didn't work. oops. | 21:00 | |
moritz | jnthn: how expensive are binding and assignment? | 21:02 | |
ie when both are possible to use, does it make sense to use binding over assignment? | |||
jnthn | moritz: I guess we're talking about scalars? | 21:03 | |
moritz | jnthn: yes | ||
jnthn | moritz: Not much difference. | ||
moritz: Most assignments are cheap. | 21:04 | ||
(e.g. if there's not a Proxy or something) | |||
The main improvemnet will be if the optimizer realizes you bind immediately to a scalar, then it doesn't need to create a scalar container. | 21:05 | ||
dalek | kudo/lazy-subst: 494bd4f | moritz++ | src/core/Str.pm: in Str.subst, never produce the whole list of matches for very long strings this is too memory intensive. not_gerd++ |
21:10 | |
moritz | not_gerd: at your convenience, please test if the lazy-subst branch improves the situation for that benchmark on 32bit | 21:11 | |
not_gerd | moritz: will do | 21:12 | |
diakopter | spectest was green | 21:13 | |
dalek | ast: ef5c6d5 | diakopter++ | S03-sequence/basic.t: test rakudo sequence overmunching |
21:14 | |
diakopter | oops. forgot to increment plan. | ||
PerlJam | diakopter: that one won't trigger the error since it never needs to call the generator | 21:15 | |
dalek | ast: ab4afba | diakopter++ | S03-sequence/basic.t: increment plan |
||
ast: 27dbc07 | diakopter++ | S03-sequence/basic.t: increment plan |
|||
diakopter | r: ((1,1,2,4,8)[^4], *+*+*+* ... *)[4] | 21:16 | |
p6eval | rakudo b057f6: OUTPUT«Not enough positional parameters passed; got 3 but expected 4 in block <anon> at /tmp/b9F51w2XVH:1» | ||
PerlJam | Hrm. | ||
r: say (1,1,2,4,8, *+*+*+* ... *)[4]; | 21:19 | ||
p6eval | rakudo b057f6: OUTPUT«8» | ||
PerlJam | ah, that's it. | ||
r: say (1,1,2,4,8, *+*+*+* ... *)[6] | |||
p6eval | rakudo b057f6: OUTPUT«Not enough positional parameters passed; got 3 but expected 4 in block <anon> at /tmp/lioh_NNGt5:1» | ||
diakopter | would someone like to apply the patch to rakudo? | 21:20 | |
it spectested green | |||
PerlJam | diakopter: you don't have a commit bit? | ||
diakopter | not to rakudo | ||
21:23
kurahaupo joined
|
|||
not_gerd | moritz: the regex-dna benchmark still runs out of memory | 21:24 | |
21:24
libertyprime joined
|
|||
diakopter | TimToady++ triggered the bug | 21:25 | |
21:26
libertyprime left
21:27
libertyprime joined
|
|||
diakopter | let's see, to whom do I fax/mail/email something these days to get a rakudo commit bit | 21:31 | |
gfldex | if masak would be awake you would have got it already :) | 21:32 | |
not_gerd | moritz: gist.github.com/2837706 | 21:33 | |
fails at replacement 25580 here | |||
it seems the match objects won't ger garbage collected... | |||
^get | |||
PerlJam | hugme: add diakopter to rakudo | ||
hugme | PerlJam: You need to register with freenode first | ||
PerlJam | bummer. :) | 21:34 | |
jnthn | Also, they're holding on to an insane amount of memory. I can't work out why right now. | ||
diakopter | also, I need to send in a CLA I thought | ||
jnthn | Yes. | 21:35 | |
diakopter | who receives the CLA these days | 21:36 | |
jnthn | I forget off hand... | ||
diakopter | [Coke]? | ||
jnthn | pmichaud may also know | 21:37 | |
sorear | TPF, isn't it? | ||
diakopter | I shouldn't speak of it like it's a formality; I realize it's an application. | 21:38 | |
sorear | no, it is not an applicated | 21:39 | |
application | |||
the CLA is a one-sided contract. TPF has no incentive to ever refuse a CLA, and I've never heard of them doing so | |||
I, the undersigned, agree that TPF has the non-exclusive rights to use my code as they see fit | 21:40 | ||
not_gerd | good night, #perl6 | 21:52 | |
sergot | good night o/ ! | 21:53 | |
21:59
b1rkh0ff joined
22:06
Teratogen joined
22:11
spaceships joined,
libertyprime left
22:12
libertyprime joined
22:14
kubrat joined
22:18
spaceships left
22:20
libertyprime left
22:21
libertyprime joined
22:31
whiteknight joined,
whiteknight is now known as Guest28985
22:34
spaceships joined
22:40
libertyprime left,
libertyprime joined
23:07
[particle]1 joined
23:11
icwiener_ joined
|
|||
diakopter | phenny: ask moritz please apply my rakudo patch if you want the test I added to stop failing :) | 23:15 | |
phenny | diakopter: I'll pass that on when moritz is around. | ||
23:17
masonkramer joined
|
|||
diakopter | phenny: ask moritz (or fudge it, of course) | 23:17 | |
phenny | diakopter: I'll pass that on when moritz is around. | ||
23:24
Chillance joined,
lestrrat joined
23:33
wooden joined
23:48
wolfman2000 joined
|
|||
sorear | the debootstrapping experiment begins in earnest. | 23:55 | |
TimToady | have the appropriate amount of fun |