»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by sorear on 4 February 2011.
00:01 donaldh left 00:04 molaf_ joined 00:06 whiteknight joined 00:07 molaf left 00:09 lestrrat left 00:10 lestrrat joined 00:16 hundskatt left
dalek ast: c027a2f | jnthn++ | S05-match/make.t:
Untodo a test.
00:22
kudo/nom: bcf2a4e | jnthn++ | src/Perl6/Actions.pm:
Fix a couple of $/ handling issues. Of note, $/ was not available to code blocks inside of regexes, and the code that shoulda been setting it was binding, whereas we assign to $/.
00:24
kudo/nom: dba6048 | jnthn++ | src/core/ (2 files):
Fix using make inside a regex (it only worked when used in the action method before now).
kudo/nom: d3471b9 | jnthn++ | t/spectest.data:
Run S05-match/make.t.
sorear jnthn: you... assign to $/ ? 00:26
jnthn phenny: tell moritz I fixed 'abc' ~~ / (a) { say $0 } bc / this evening, but don't immediately see a test to cover it...well, tbh, tired and need sleep now, so only looked so hard. ;-) If you don't find one, one of us can always file a ticket and tag it testneeded... ;)
phenny jnthn: I'll pass that on when moritz is around.
jnthn sorear: Yeah, pmichaud++ and I settled on assigning it rather than binding it ages back. Guess the reasoning is some way back in the ir clog... 00:27
jnthn remembers a discussion on that here, just not the outcome. 00:28
er
not the details, I mean.
grr, my fingers won't type what my brain is thinking :)
00:28 huf left
sorear I remember a discussion involving myself and one or more of {jnthn, TimToady, pmichaud} that decided on binding 00:28
jnthn er:/ 00:29
Well, it doesn't matter much.
The problem was that we were doing assignment in all cases but one.
Which, innevitably, made a mess. 00:30
sorear jnthn: what do you think of $CALLER::x seeing 'has $x' ?
00:30 huf joined
jnthn sorear: Ugh. 00:30
sorear: I'm not going to make that work without serious contortions. 00:31
sorear I started to implement that in niecza but the yak shaving got quite out of hand
jnthn sorear: We re-write $x to $!x at compile time in Rakudo
meh. S04-declarations/constant.t thinks that constants are still spec'd as my-scoped... 00:33
And thanks to $other-bug I fixed earlier today, we passed a test for that.
constant yak = 'shaving'; 00:34
bwaha
dalek ast: 1a61221 | jnthn++ | S04-declarations/constant.t:
Constants are spec'd as our scoped by default, not my scoped.
00:37
sorear perl6: say pi 00:40
p6eval rakudo 77e31a: OUTPUT«3.14159265␤»
..pugs b927740: OUTPUT«3.141592653589793␤»
..niecza v13-285-g83e8bea: OUTPUT«3.1415926535897931␤»
jnthn perl6: say pi.WHAT
p6eval rakudo 77e31a, niecza v13-285-g83e8bea: OUTPUT«Num()␤»
..pugs b927740: OUTPUT«Rat␤»
jnthn eek, time is WHAT? 00:42
TimToady with latest spec change should be a RatStr, I think
(pi)
jnthn -> sleep & 00:43
TimToady perl6: time.WHAT.say 00:45
p6eval niecza v13-285-g83e8bea: OUTPUT«Num()␤»
..pugs b927740: OUTPUT«Rat␤»
..rakudo 77e31a: OUTPUT«Int()␤»
TimToady rakudo appears to be the only correct one here... 00:46
that is, according to perlcabal.org/syn/S32/Temporal.html#time 00:47
00:50 simcop2387 left 00:52 simcop2387 joined 00:54 Radvendii joined 00:56 Radvendii left 01:00 am0c left 01:02 pat_js left
sorear niecza: say time 01:12
p6eval niecza v13-285-g83e8bea: OUTPUT«1326760281.4643641␤»
01:23 Chillance left, Chillance joined, Chillance left 01:24 Chillance joined
dalek ecza: b5b8434 | sorear++ | lib/ (4 files):
Truly vile hack to allow defining dualvar types
01:24
01:33 sudokode left 01:37 sudokode joined 01:39 shinobicl_ joined, shinobicl_ left 01:41 tokuhirom left 01:58 Patterner left 01:59 Psyche^ joined, Psyche^ is now known as Patterner
dalek ast: bc6e9d2 | (Solomon Foster)++ | S04-declarations/constant.t:
Refudge for niecza.
02:00
02:16 xinming joined 02:20 packetknife left
colomon hmmm, how to do runtime base conversion in Niecza? 02:21
TimToady there's always eval 02:22
niecza: say eval '0xffff' 02:23
p6eval niecza v13-287-gb5b8434: OUTPUT«65535␤» 02:24
colomon TimToady++ # I was just about to try making a hacky call into Niecza's internals to do it... 02:26
02:29 zjmarlow left
colomon Action method assertion:sym<...> not yet implemented :\ 02:29
proto token value { <...> }; 02:31
sorear it's spelled proto token value {*} nowadays 02:32
02:33 zjmarlow joined
colomon that's what I was just trying to figure out 02:33
sorear++
I'm working on trying to get panda running on niecza. 02:34
interesting, lots of the grammar bits seem to be obsolete
<pair> ** [ \, ] is now <pair>+ % [\,] ? 02:35
sorear: any suggestions? gist.github.com/1624222 02:40
02:43 leprevost joined
sorear colomon: yes, althoguh the old syntax should still work 02:44
niecza: / [a] / # curious
p6eval niecza v13-287-gb5b8434: ( no output )
sorear looks like I never got around to porting over check_old_cclass
colomon sorear: any thoughts on the gist? it's the error I get, apparently while still loading the use statements in panda. 02:46
sorear yes
that would be an error from use
somehow, one of your .ser files has come out of alignment with one of your .dlls 02:48
colomon in the core niecza stuff, or in the project I'm working on? 02:49
sorear which shouldn't even be possible
colomon "King of the impossible!" 02:50
sorear I don't understand
what did you do last/ 02:51
did you get any errors before this? 02:52
colomon Not like this one
just your usual run-of-the-mill problems, like the <pair> ** [\,] one 02:53
sorear any other internal errors?
colomon I don't think so
sorear that's not an error
niecza: / . ** . /
p6eval niecza v13-287-gb5b8434: OUTPUT«Potential difficulties:␤ Unsupported use of atom ** . as separator; nowadays please use atom+ % . at /tmp/cmSXvOMvZ7 line 1:␤------> / . ** .⏏ /␤␤»
colomon ah, well, there were definitely the ($a as Str) errors 02:54
sorear delete the offending .ser files
colomon in niecza/obj
?
sorear yes
that's the only place they are kept
colomon you're going to love this: just got the error again 02:55
sorear which ser files did you delete? 02:56
but yes, I do love it when errors are reproducable 02:57
colomon the ones that went with these: gist.github.com/1624270 02:58
I'm assuming ContainsUnicode is core niecza, it was created 30 minutes before any of the others
sorear no
colomon (Or spectest, anyway, if not core.)
sorear and there isn't a distinction between "core' and "not core" here 02:59
colomon it's spectest
I just meant core versus panda
sorear obj/ is just the compiled module cache... it cares not from whence the modules came
colomon do I need to delete all .ser files? 03:00
sorear but anyways, that error you got, should NEVER happen
if you can reproduce it, please send everything needed to reproduce it my way
deleting all .ser files will help since this is fundamentally a .ser staleness problem 03:01
03:01 whiteknight left 03:02 am0c joined
colomon can still duplicate after deleting all .ser files 03:02
03:03 jferrero left
colomon give me a minute to figure out how to send it all to you 03:03
sorear do you get '[auto-compiling setting]'? 03:05
colomon yes 03:06
Do you know how to switch a local git repo to a different external source? 03:07
I'm thinking I should fork panda, commit my changes to the fork, and send you that link 03:08
guess I could just send it as a patch against the standard if you're okay with that.
03:13 xinming left
colomon sorear: github.com/colomon/panda 03:21
you'll need to tweak bootstrap.sh to match your paths, and then run it. should duplicate the error for you 03:22
03:24 agentzh joined 03:27 Chillance left 03:29 xinming joined 03:31 am0c left, orafu left 03:32 orafu joined 03:33 am0c joined 03:36 cognominal joined 03:37 xinming left, lestrrat left, xinming joined 03:38 Psyche^ joined 03:39 lestrrat joined 03:42 Patterner left, Psyche^ is now known as Patterner 03:47 lutok left
sorear colomon: \o/ it works! 03:54
colomon as in you don't see the bug, or you fixed it?
sorear as in, the bug reproduces fine for me 03:55
colomon ah, well, that's the first step!
04:07 am0c_ joined 04:10 am0c left
colomon 'night 04:11
04:21 am0c_ left 04:44 molaf_ left
sorear phenny: tell colomon The root problem is the proto in JSON::Tiny. Importing modules that import modules that export protos is broken, and that proto is wrong anyway; it should be an only sub 05:00
phenny sorear: I'll pass that on when colomon is around.
sorear I feel like the only person in this channel who believes "don't use a multi when only will suffice" 05:01
phenny: tell colomon (it appears to be alpha code, in terms of the contents of the proto) 05:02
phenny sorear: I'll pass that on when colomon is around.
05:02 birdwindupbird joined
geekosaur suspects that feels to most people a bit like Java's "final", with similar "don't prematurely optimize" cautions (don't assume your only calling sequence will necessarily remain the only one) 05:04
sorear multi doesn't just make code slower, it also makes it more complicated and fragile 05:13
05:18 _jaldhar left 05:19 jaldhar joined, am0c joined
moritz \o 05:24
phenny moritz: 00:26Z <jnthn> tell moritz I fixed 'abc' ~~ / (a) { say $0 } bc / this evening, but don't immediately see a test to cover it...well, tbh, tired and need sleep now, so only looked so hard. ;-) If you don't find one, one of us can always file a ticket and tag it testneeded... ;)
sorear o\ morits
z
sorear is mucking around in code ey no longer really understands 05:26
05:28 kaare__ joined, mikemol left 05:30 am0c_ joined 05:33 am0c left 05:41 jaldhar left
dalek ast: 6bcda09 | moritz++ | S05-capture/subrule.t:
test availability of $/ in embedded blocks in regexes
05:45
moritz phenny: tell jnthn tests added
phenny moritz: I'll pass that on when jnthn is around.
05:45 jaldhar joined 05:58 panterax left
moritz jnthn: oh, turns out we have a passing TODO test in t/spec/S05-metachars/closure.t for it too :-) 05:59
06:01 am0c_ left
dalek ast: 11b621b | moritz++ | S (5 files):
rakudo refudging; make S06-signature/errors.t a bit more liberal
06:06
ecza: ee02ddf | sorear++ | lib/ (2 files):
Tweaks to allow saving and thawing cross-unit deep sub clones, such as when a proto is imported
06:08
sorear phenny: tell colomon The niecza issue is now fixed
phenny sorear: I'll pass that on when colomon is around.
TimToady nom: my $d = Duration.new(1/2); say "one"; sleep 1/2; say "two"; sleep $d; say "three" 06:12
p6eval nom d3471b: OUTPUT«(timeout)one␤two␤»
TimToady nom: my $d = Duration.new(1/2); say "one"; sleep 1/2; say "two"; sleep $d.Rat; say "three"
p6eval nom d3471b: OUTPUT«one␤two␤three␤»
TimToady shouldn't have to convert a Duration to a Rat in order to sleep it
moritz $d = Duration.new(1/2); say "one"; sleep 1/2; say "two"; sleep $d.Num; say "three" 06:13
nom: $d = Duration.new(1/2); say "one"; sleep 1/2; say "two"; sleep $d.Num; say "three"
p6eval nom d3471b: OUTPUT«===SORRY!===␤Variable $d is not predeclared at line 1, near " = Duratio"␤»
moritz nom: my $d = Duration.new(1/2); say "one"; sleep 1/2; say "two"; sleep $d.Num; say "three"
p6eval nom d3471b: OUTPUT«(timeout)one␤two␤»
06:21 koban joined
moritz nom: say 1 <=> 2 06:27
p6eval nom d3471b: OUTPUT«Order::Increase␤»
06:29 kaleem joined 06:31 ponbiki joined
TimToady nom: my $d = Duration.new(1/2).Num; say "alive" 06:32
p6eval nom d3471b: OUTPUT«(timeout)» 06:33
moritz nom: say Duration.^methods(:local)
p6eval nom d3471b: OUTPUT«new Bridge Str perl x␤»
06:34 wolfman2000 left 06:36 hundskatt joined 06:40 koban left
sorear TimToady: I find myself thinking that +val('1_2') should strip the Str nature and return a pure Int 06:44
TimToady seems reasonable 06:46
sorear is IntStr supposed to be a user-visible class? 06:47
TimToady I was thinking of it that way
moritz nom: eval 'class A { }' for 1..3
p6eval nom d3471b: OUTPUT«===SORRY!===␤Illegal redeclaration of symbol A at line 1, near "{ }"␤»
moritz should that work?
sorear -1
moritz ok 06:48
TimToady it has a collision in package space
not in lexical space
moritz ok, then we have a wrong test for that
... which rakudo incidentally just started to fail :-)
TimToady std: { class A {} }; { class A {} }
p6eval std dc62e1d: OUTPUT«===SORRY!===␤Illegal redeclaration of symbol 'GLOBAL::<A>' (from line 1) at /tmp/QcSkRkYiZt line 1:␤------> { class A {} }; { class A ⏏{} }␤Check failed␤FAILED 00:01 107m␤» 06:49
TimToady much like that, I think
std: { my class A {} }; { my class A {} }
p6eval std dc62e1d: OUTPUT«ok 00:01 107m␤»
dalek ecza: 69e36aa | sorear++ | lib/CORE.setting:
Add a prototype val(). Only numbers and strings for now.
TimToady no problem with the lexical parts of the names 06:50
dalek ast: d843543 | moritz++ | S02-names-vars/names.t:
correct a test, sorear++ TimToady++
sorear std: :(:$foo, :$bar?) 06:51
p6eval std dc62e1d: OUTPUT«===SORRY!===␤Cannot put optional positional parameter after variadic parameters at /tmp/7VUp10jepV line 1:␤------> :(:$foo, :$bar?⏏)␤Check failed␤FAILED 00:01 109m␤»
moritz niecza: sub MAIN() { say 'x' }
p6eval niecza v13-288-gee02ddf: OUTPUT«Potential difficulties:␤ &MAIN is declared but not used at /tmp/bkI5kquhqj line 1:␤------> sub MAIN⏏() { say 'x' }␤␤»
sorear no MAIN quite yet
(however, the blocker of MAIN was ... val!)
moritz but you're working on it, right?
sorear not as such :)
06:51 thou left
moritz you should. MAIN seems to be the main (sic) blocker to running most Perl 6 coding contest submissions (both last year and this year) straight in niecza 06:52
07:00 wtw joined, zby_home left 07:01 satyavvd joined
moritz niecza: say 124.base(2) 07:05
p6eval niecza v13-288-gee02ddf: OUTPUT«1111100␤»
dalek d: 13da5b0 | sorear++ | STD.pm6:
Fix :(:$x. :$y?)
07:09
sorear TimToady: that's a copy of the fix I used in niecza... I don't think there's too much potential for controversy in it 07:11
TimToady: So... *which* shell is «» supposed to emulate the quoting and interpolation rules of? :) 07:12
niecza: my $x = 'a b'; say < \qq[$x] >.perl 07:14
p6eval niecza v13-289-g69e36aa: OUTPUT«["a", "b"].list␤»
dalek ecza: 32cb82d | sorear++ | src/STD.pm6:
Fix overlooked case in optional-named handling
sorear niecza: say val('3+4i').WHAT 07:15
p6eval niecza v13-289-g69e36aa: OUTPUT«Str()␤»
sorear oh, forgot a case 07:16
niecza: say +val('123_456')
p6eval niecza v13-289-g69e36aa: OUTPUT«123456␤»
sorear niecza: say ~val('123_456')
p6eval niecza v13-289-g69e36aa: OUTPUT«123_456␤»
sorear niecza: say val('123_456')
p6eval niecza v13-289-g69e36aa: OUTPUT«123_456␤»
sorear niecza: say val('123_456').perl
p6eval niecza v13-289-g69e36aa: OUTPUT«val("123_456")␤»
sorear niecza: say val('123_456').WHAT
p6eval niecza v13-289-g69e36aa: OUTPUT«IntStr()␤»
moritz that's cool
sorear niecza: say IntStr ~~ Cool 07:17
p6eval niecza v13-289-g69e36aa: OUTPUT«Bool::True␤»
moritz niecza: say IntStr.^parents 07:19
p6eval niecza v13-289-g69e36aa: OUTPUT«Unhandled exception: Unable to resolve method parents in class ClassHOW␤ at /tmp/SGWL32KHLF line 1 (mainline @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3050 (ANON @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3051 (module-CORE @ 63) ␤ a…
dalek ecza: ca7eb73 | sorear++ | lib/CORE.setting:
ComplexStr needs to exist too
07:19 kaare__ left, ponbiki left
moritz niecza: say val('1') + val('5') 07:19
p6eval niecza v13-289-g69e36aa: OUTPUT«6␤» 07:20
moritz niecza: say (val('1') + val('5')).WHAT
p6eval niecza v13-289-g69e36aa: OUTPUT«Int()␤»
sorear pugs: say pi.FatRat 07:21
p6eval pugs b927740: OUTPUT«*** No such method in class Rat: "&FatRat"␤ at /tmp/3dzsZlb2qd line 1, column 5 - line 2, column 1␤»
07:21 fridim_ joined
moritz nom: say pi.Rat(1e-14).perl 07:22
p6eval nom d3471b: OUTPUT«62831853/20000000␤»
moritz nom: say pi.perl
p6eval nom d3471b: OUTPUT«3.14159265e0␤»
sorear niecza: say pi.Rat(1e-14).perl 07:23
p6eval niecza v13-289-g69e36aa: OUTPUT«<58466453/18610450>␤»
dalek kudo/nom: 02d6448 | moritz++ | src/core/Duration.pm:
more conversion methods in Duration
ast: a6a06ef | moritz++ | S02-names/our.t:
another small rakudo unfudge
07:24
sorear phenny: tell TimToady Perhaps (2/3).perl should return '+<2/3>' instead of '<2/3>' -- since the latter is actually RatStr not Rat
phenny sorear: I'll pass that on when TimToady is around.
sorear to everyone: I would like to see a better nailing-down of just what « and » are supposed to do 07:27
I get that «'$x' "$y"» is supposed to mean ('$x', $y), possibly with a val() call thrown in on $y 07:28
I also get that «12 23» should be (val(12), val(23))
moritz afaict they are supposed to parse the contents as a whitespace-delimited list of val-things, falling back to just plain strings if a piece can't be parsed
sorear and «$y» should be either map &val, $y.comb(/\S+/) or $y.comb(/\S+/) 07:29
moritz the former, I think
sorear moritz: It's more than that. Internal quotes are supposed to affect behavior.
moritz sorear: doesn't val() handle string literals too? 07:30
ah, but probably not interpolation
then you're right, it's more than just val
sorear val doing string literals feels wrong to me, because then how do you get at the original string? 07:32
moritz hm, right 07:33
moritz -> commute 07:34
masak morning, #perl6
sorear o/ masak 07:36
07:36 lutok joined
dalek ecs: 8e232ce | masak++ | S02-bits.pod:
[S02] fix tiny typo
07:42
07:46 GlitchMr joined 07:47 fridim_ left
masak new S02: "In case multiple dispatch determines that it could dispatch as either string or number, a tie results, while may result in an ambiguous dispatch error." 07:49
so... it's not quite pure MI, but something else applied on top of it?
geekosaur "while may results in"? 07:51
er, result
sorear s/while/which/
masak: no, that's pure MI 07:52
masak: our multiple dispatch doesn't respect C3 ordering
masak this is news to me. 07:53
masak patches the s/while/which/ typo 07:54
dalek ecs: 5675fe8 | masak++ | S02-bits.pod:
[S02] fix another typo
07:55
masak sorear: I'm pretty sure I've seen "C3MRO" sprinkled all over Rakudo's MOP. 07:59
08:05 jrockway_ left 08:06 jrockway joined
sorear masak: that's only used for method (single) dispatch 08:09
currently, all the multiple dispatch implementations in use require that candidates can be statically partial-ordered 08:13
given :(Int $x) and :(Str $x), neither is more specific than the other 08:14
I just came up with an extension of Perl 6 MMD to support C3, but it requires variable candidate ordering
(my algorithm in a nutshell: A is more specific than B if A precedes B in the MRO of the value under consideration) 08:15
moritz nom: say Str.^methods()
p6eval nom 02d644: OUTPUT«BUILD Int Num chomp chop substr pred succ ll-match ords lines samecase samespace trim-leading trim-trailing trim words encode capitalize trans WHICH Bool Str ACCEPTS Numeric gist perl comb match subst split␤»
moritz nom: say Str.^methods(:all) 08:16
p6eval nom 02d644: OUTPUT«BUILD Int Num chomp chop substr pred succ ll-match ords lines samecase samespace trim-leading trim-trailing trim words encode capitalize trans WHICH Bool Str ACCEPTS Numeric gist perl comb match subst split abs conjugate sqrt sign rand sin asin cos acos tan atan atan2…
sorear I wonder if it would be worth implementing this in niecza 08:17
(niecza already diverges slightly from Rakudo on MMD) 08:18
masak we definitely want to converge on MMD in the long run.
but that doesn't mean we can't do some exploration now.
sorear perl6: class A {};class B is A {}; class C is B {}; multi foo(A,A){"AA"};multi foo(A,B){"AB"};multi foo(A,C){"AC"};multi foo(B,A){"BA"};multi foo(C,A){"CA"}; say foo(B,C) 08:20
p6eval niecza v13-291-gca7eb73: OUTPUT«Unhandled exception: Ambiguous dispatch for &foo; matched candidates are:␤ A, A␤ A, B␤ A, C␤ B, A␤ at /tmp/exlFcyxt46 line 1 (mainline @ 5) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3052 (ANON @ 3) ␤ at /home/p6eval/niecza/lib/CORE.set…
..rakudo 02d644: OUTPUT«AC␤»
..pugs b927740: OUTPUT«*** ␤ Unexpected "A"␤ expecting word character, "|", ":", "*", parameter name or ")"␤ at /tmp/jMxCrHpfdc line 1, column 56␤»
sorear is curious what masak's reaction to this example is 08:23
masak sorear: I think you've brought this up before.
sorear masak: yes, I have 08:24
I don't think *you* responded though
also, I didn't have that great example before
masak and I'm tentatively in jnthn's camp, that while your way of doing MMD might sift out a few more ambiguous cases, it also loses some of the nice static features that Rakudo's MMD has.
it's a good example in that it's short. it's still a bit artificial. :) 08:25
the thing that's on the line here is static predictability. I don't consider that worth sacrificing for a few extra disambiguations in cases which are not use cases for anyone right now. 08:26
08:38 hundskatt left
sorear masak: what do you mean by 'static predictability'? 08:39
08:40 satyavvd left
masak good question. :) jnthn explained over a beer once, and I've forgotten the details. 08:41
but it's to do with the type DAG that is computed for determining narrowness.
every dispatch should fall out of the information in that DAG, and only that. 08:42
sorear um, where clauses
moritz modulo that, yes :-)
masak right :)
sorear the current niecza model does everything using a DAG too
masak oh, ok. 08:43
well, then you and jnthn have something to talk abou.
about*
sorear the model I proposed at XX:15 requires the DAG to be recomputed every time, which is LTA 08:44
masak ah -- and that must be what is meant by "static predictability" (or whatever the term was) 08:45
sorear given class A { }; class B { }; class C is A is B { }; class D is B is A { }; 08:46
multi foo(A) { }; multi foo(B) { } 08:47
which candidate is narrower?
C and D both match both candidates
but they have different C3 MROs
if everything is decided based on a static DAG, C3
cannot be respected
clear?
masak yes, I think so. 08:49
though I understand the example, I don't feel qualified to argue things one way or the other. 08:50
moritz same here
masak I'm wary about burning out jnthn though, and he didn't seem enthused by re-doing Rakudo's MMD again :)
moritz I think the real question is how to build the DAG in the case of method dispatch
ie if you build a single DAG, or one per inheritance level 08:51
and I think the spec has gone back and forth here a few times
sorear this change can implemented as a small patch
moritz and I don't remember what the current iteration says :-)
sorear basically, niecza keeps an int[] blockers; on each candidate
08:51 drbean_ joined
sorear both rakudo and niecza linearize the DAG for fast access 08:51
and linearly scan for a matching candidate 08:52
08:52 mj41 joined
sorear rakudo groups the candidate list into "levels", and declares a tie if there is a second match from the same level 08:52
niecza explicitly tracks which candidates tie which others
if cand_A precedes cand_B in the list, but cand_A is not narrower than cand_B, then cand_A.blockers contains cand_B 08:53
that was iff
08:54 nornagest joined
masak meeting & 08:58
sorear sleep & 09:14
moritz fwiw I've written a script twice, once in p6 and once in p5. niecza took 4 seconds, perl 5 took 2.6s 09:25
09:26 dakkar joined
tadzik 'morning 09:26
jnthn < sorear> the model I proposed at XX:15 requires the DAG to be recomputed every time, which is LTA 09:27
phenny jnthn: 05:45Z <moritz> tell jnthn tests added
jnthn ==> then that model is broken.
moritz: thanks! :)
10:19 < moritz> I think the real question is how to build the DAG in the case of method dispatch
10:19 < moritz> ie if you build a single DAG, or one per inheritance level
10:20 < moritz> and I think the spec has gone back and forth here a few times
moritz jnthn: though it turns out we had a passing TODO to for it anyway
s/to/test/
jnthn ==> you build a DAG incorporating all candidates visible at the current level 09:28
(Which is differnt from a DAG per level with only the candidates at that level.)
09:30 daxim joined
jnthn moritz: May be worth an autounfudge run, btw - I think there may be more tests dependent on the Role(42) thingy I implemented last night that I didn't find. 09:37
dalek ast: 1d471ee | moritz++ | S05-metasyntax/angle-brackets.t:
yet another rakudo unfudge
moritz jnthn: that's the result of the autounfudge run (which I forgot to push earlier) 09:38
jnthn moritz: ah, ok :( 09:39
jnthn had hoped for more than that
dalek ast: ed909c2 | moritz++ | S16-filehandles/unlink.t:
tweak a fudge message
09:42 xinming left 09:44 xinming joined
moritz perl6: enum A <b c d>; say A(2) 09:47
p6eval rakudo 02d644: OUTPUT«===SORRY!===␤CHECK FAILED:␤Undefined routine '&A' called (line 1)␤»
..niecza v13-291-gca7eb73: OUTPUT«A::d␤»
..pugs b927740: OUTPUT«*** No such subroutine: "&enum"␤ at /tmp/lyIYyJLyJj line 1, column 1-15␤»
moritz perl6: enum A <b c d>; say A.(2)
p6eval pugs b927740: OUTPUT«*** No such subroutine: "&enum"␤ at /tmp/YKa43aP0EZ line 1, column 1-15␤»
..rakudo 02d644, niecza v13-291-gca7eb73: OUTPUT«A::d␤»
moritz hm
jnthn std: enum A <b c d>; say A(2) 09:56
p6eval std 13da5b0: OUTPUT«ok 00:01 108m␤»
jnthn Guess we have a missing check somewhere. 09:57
moritz I guess that falls under the same coercive forms as Int("42") 09:59
jnthn Yeah. 10:00
10:00 xinming left 10:01 xinming joined
jnthn moritz: Any chance you could ticket it? I'll try and fix those coercive forms soon...gotta focus on $dayjob for a bit now though. 10:03
moritz jnthn: ok, will do 10:04
10:08 olanol joined 10:11 olanol left 10:19 nornagest left
moritz jnthn: turns out we already have a ticket for that: rt.perl.org/rt3//Ticket/Display.html?id=65658 10:33
jnthn moritz: ah, nice :) 10:34
moritz (and tests!)
jnthn \o/ 10:35
Will see what tuits I get at le hotel this evening. :)
...though I should probably spend them on that backtracking bug. 10:37
10:39 xinming left, xinming joined 10:42 spine_ joined
moritz what does the fix involve? when we parse Foo(), check if &Foo is in scope, and if not, but a type Foo is predeclared, change the codegen to invoke Foo instead of &Foo? 10:42
niecza: enum A <b c>; sub A($x) { $x }; say A(0) 10:43
jnthn moritz: I'm not sure quite how STD makes the distinction.
p6eval niecza v13-291-gca7eb73: OUTPUT«A::b␤»
moritz I'm pretty sure that's wrong
jnthn moritz: oh?
moritz <identifier>() should always decide in favor of the sub, no?
jnthn nom: enum A <b c>; sub A($x) { $x }; say A(0)
p6eval nom 02d644: OUTPUT«0␤»
jnthn moritz: Hm, even in the type case? 10:44
If so, then STD is wrong, but also Int($x) is dubious too.
Unless we plan to go on "if there's a sub", but that's very problematic because subs are post-declared.
moritz ah, I mis-remembered 10:46
this disambiguation rules applies to the short name of enum *values* 10:47
ie
perl6: enum A <b c>; sub b() { 'sub' }; say b(); say b
p6eval rakudo 02d644: OUTPUT«sub␤A::b␤»
..niecza v13-291-gca7eb73: OUTPUT«Unhandled exception: No value for parameter $key in CommonEnum.postcircumfix:<( )>␤ at /home/p6eval/niecza/lib/CORE.setting line 0 (CommonEnum.postcircumfix:<( )> @ 1) ␤ at /tmp/f4au61f2Nq line 1 (mainline @ 2) ␤ at /home/p6eval/niecza/lib/CORE.setting…
..pugs b927740: OUTPUT«*** No such subroutine: "&enum"␤ at /tmp/pi5TszGbpz line 1, column 1-13␤»
moritz opens niecza issue 10:48
jnthn aha
10:49 arlinius left 10:50 arlinius joined
moritz std: Foo() 10:51
p6eval std 13da5b0: OUTPUT«===SORRY!===␤Undeclared name:␤ 'Foo' used at line 1␤Check failed␤FAILED 00:01 107m␤»
moritz std: foo()
p6eval std 13da5b0: OUTPUT«===SORRY!===␤Undeclared routine:␤ 'foo' used at line 1␤Check failed␤FAILED 00:01 107m␤»
moritz std: Foo(); sub Foo() { } 10:52
p6eval std 13da5b0: OUTPUT«ok 00:01 108m␤»
10:54 xinming left, xinming joined 10:58 nornagest joined
felher Here we go: rosettacode.org/wiki/Miller-Rabin_p...est#Perl_6 11:06
moritz++ for enhancing the code :)
moritz felher++ for writing it; I just commented on trivialities
masak felher++ # nice use of subtypes 11:07
I'd've inlined that modexp sub, but that's probably just me ;) 11:08
er, I mean I'd've put it inside the other sub. not eliminated it altogether. 11:09
dalek ast: dbb6654 | moritz++ | S03- (16 files):
rename S03-operator/binding-*.t to S03-binding/*.t
11:10
kudo/nom: 8975299 | moritz++ | t/spectest.data:
track test file renaming
ecza: ad5617d | moritz++ | t/spectest.data:
track test file renaming
11:12
11:14 stefanZ joined
felher masak: Yeah, i though about it, too. I didn't do it, because modexp is a utility function that is only in the file because we currently lack a math-module that handles it. Putting it in the function may suggest, that it is something that is special to that function (so special, that it won't get a module). But i totally see your point. I just couldn't really decide :) 11:17
11:19 dbr joined
masak rosettacode.org/wiki/Symmetric_difference#Perl_6 should have a solution involving sets, too. 11:21
felher masak: right :) 11:24
moritz felher: fwiw I've locally changed the call to modexp to the nqp::expmod_I opcode, and it reduced runtime from 9.3 seconds to 6.7..7.0s 11:25
though the call is a bit ugly:
my $x = nqp::expmod_I(nqp::p6decont($a), nqp::p6decont($d), nqp::p6decont($n), Int);
felher moritz: Hm, nice :) 11:26
moritz I'm pretty sure one can speed up things more by using a loop with native ints as iterators 11:28
jnthn Pushed handouts fixes.
er, oops
ww
moritz: libtommath seems to make quite a cost out of creating and freeing loads of mp_ints. 11:31
moritz: If I get the tuits, I may see about maintaining a free list of them or something. 11:32
moritz felher: and if I rewrite the inner loop to use a native int as iterator, I get down to 5.4s 11:35
11:35 pothos_ joined, jnthn joined 11:36 felher left, kthakore joined, HarryS left, felher joined 11:37 chra joined
felher moritz: nice :) Quite a speedup :) 11:37
11:37 cooper left, pothos left, pothos_ is now known as pothos
moritz it looks a bit ugly though 11:37
11:37 cooper joined
moritz that's the thing I'd do in a math library, not on a show-off page like rosettacode :-) 11:37
11:38 HarryS joined
felher moritz: yeah :D 11:38
11:38 jasonmay joined
felher moritz: gist of the loop? :) 11:38
11:40 c1sung left, Maddingue left, xinming left, Maddingue joined, cognominal left, cognominal joined, c1sung joined 11:43 zjmarlow left
colomon o/ 11:54
phenny colomon: 05:00Z <sorear> tell colomon The root problem is the proto in JSON::Tiny. Importing modules that import modules that export protos is broken, and that proto is wrong anyway; it should be an only sub
colomon: 05:02Z <sorear> tell colomon (it appears to be alpha code, in terms of the contents of the proto)
colomon: 06:08Z <sorear> tell colomon The niecza issue is now fixed
11:55 lestrrat left, lestrrat joined, nornagest_ joined, nornagest_ left 11:59 zjmarlow joined, nornagest left 12:12 bluescreen10 joined 12:13 xinming joined
colomon niecza: say $*CWD 12:26
p6eval niecza v13-291-gca7eb73: OUTPUT«Any()␤»
12:26 lichtkind joined
moritz felher: gist.github.com/75b078d082ce95d5972a 12:39
jnthn moritz: my int $max = nqp::unbox_i($s);
...did you need that explicit unbox?
If you did, and it generates different code without it, then it's a Rakudo bug. 12:40
moritz jnthn: it's not needed, but iirc we emit a vtable call otherwise
jnthn moritz: I thought I fixed that once...
moritz jnthn: ah, maybe my information is outdated
jnthn darn 12:41
no, you're right :/
QAST is going to have language-configurable coercion, to solve this once and for all. 12:42
12:42 bluescreen10 left 12:45 sftp left 12:46 sftp joined 12:48 bluescreen10 joined 12:50 donri joined 12:53 xinming left
moritz jnthn: well, what should it compile to? 12:56
just an unbox?
or type check + unbox?
jnthn An unbox is a type check in a sense. 12:57
If it fails to unbox, it's not assignable.
nom: nqp::unbox_i('lol')
p6eval nom 897529: OUTPUT«This type cannot unbox to a native integer␤ in block <anon> at /tmp/jRi65R2Cgi:1␤ in <anon> at /tmp/jRi65R2Cgi:1␤»
dalek ecza: 3649559 | (Solomon Foster)++ | lib/ (2 files):
cwd plus crude implementations of $*CWD, chdir.
12:59
ecza: 49b1577 | (Solomon Foster)++ | t/spectest.data:
Turn on S28-named-variables/cwd.t.
colomon phenny: tell sorear $*CWD is a complete hack and chdir isn't catching exceptions properly -- but never-the-less both are there enough to be useful atm 13:00
phenny colomon: I'll pass that on when sorear is around.
dalek kudo/nom: 0ac25d0 | jnthn++ | src/core/ (2 files):
First cut implementation of <prior>; seems to work, but sadly not for the m/.../ form.
13:08
jnthn Just had time for that quick hack before I head to the station. Feel free to improve it.
travel to Gothenburg &
13:10 xinming joined 13:16 mtk joined 13:17 am0c_ joined 13:23 GlitchMr left, drbean_ left 13:27 molaf joined 13:28 Chillance joined 13:29 drbean_ joined
colomon roast has no tests for cwd or printf. :( 13:30
moritz well, sprintf is much easier to test :-) 13:31
colomon granted
dalek ecza: b11c7b5 | (Solomon Foster)++ | lib/CORE.setting:
Wholesale theft of printf from Rakudo.
13:32
13:33 drbean_ left 13:41 xinming left 13:47 kaleem left
PerlJam greetings 13:47
colomon o/ 13:48
masak \o
moritz -o- 13:49
13:49 am0c_ left
PerlJam starting to look like semaphores :) 13:49
dalek ecza: 64527c0 | (Solomon Foster)++ | lib/CORE.setting:
Rearrange chdir a bit, it doesn't actually work any better, alas.
13:51
felher moritz: interesting, thnx :) 14:02
14:12 overrosy left 14:13 overrosy joined 14:18 mikemol joined 14:22 Chillance left, Chillance joined 14:36 agentzh left 14:38 muixirt joined
muixirt nom: my @a1=1,2,3,4; my @a2=@a1[2 ..^ @a1]; my @a3=@a2[1 ..^ @a2] 14:40
p6eval nom 0ac25d: OUTPUT«(timeout)» 14:41
moritz nom: my @a1=1,2,3,4; my @a2=@a1[2 ..^ @a1]; say 'alive'
p6eval nom 0ac25d: OUTPUT«alive␤»
moritz nom: my @a1=1,2,3,4; my @a2=@a1[2 ..^ @a1]; say @a2; say 1..^@a2 14:42
p6eval nom 0ac25d: OUTPUT«3 4␤1..^[3, 4]␤»
muixirt nom: my @a1=1,2,3,4; my @a2=@a1[2 ..^ @a1]; say @a2; say 1..^@a2.elems 14:43
p6eval nom 0ac25d: OUTPUT«3 4␤1..^2␤»
masak doesn't like "1..^[3, 4]" 14:44
muixirt nom: my @a1=1,2,3,4; my @a2=@a1[2 ..^ @a1]; my @a3=@a2[1 ..^ @a2.elems]; say 'alive'
p6eval nom 0ac25d: OUTPUT«alive␤»
moritz nom: my @a1=1,2,3,4; my @a2=@a1[2 ..^ @a1]; say @a2; (1..^@a2).list
p6eval nom 0ac25d: OUTPUT«3 4␤»
14:48 mikemol left 14:49 mikemol joined, tokuhirom joined 14:52 benabik joined, PacoAir joined 14:56 xinming joined 14:58 cognominal left 14:59 nornagest joined
masak what's the word on :instanceof in Parrot? 14:59
will Parrot release with or without it?
moritz with; the commit has been reverted
15:00 cognominal joined 15:02 xinming left
masak \o/ 15:02
15:12 xinming joined 15:16 wtw left 15:19 xinming left 15:20 xinming joined 15:24 xinming left, xinming_ joined 15:26 sayu joined 15:30 skids joined 15:31 xinming_ left, xinming joined 15:36 xinming left
flussence successfully saves nyan cat from crash land 15:39
15:46 xinming joined, xinming left 15:47 GlitchMr joined 15:48 xinming joined 15:50 xinming left, xinming joined
masak quiet here today. everybody's holding their breath for Parrot 4.0.0, p'haps? 15:53
16:03 thou joined
skids jnthn++ for fixing regexp make and $/ in block. That was a blocker for my dabblings. 16:04
16:04 nnunley left 16:05 sayu left
skids
.oO(its a good thing I don't have a commit bit judging by how many times I accidentally told git to try to push to rakudo/rakudo while trying to fast forward my github fork.)
16:12
muixirt masak: oh, everybody is waiting for big enhancements in Parrot 4.0.0? 16:19
muixirt wasn't aware of that...
16:20 nebuchadnezzar left
colomon muixirt: not that I'm aware of 16:20
benabik There tends to be a lull in Rakudo around Parrot's release in preparation for its own release. 16:21
colomon jnthn's traveling right now, that's my explanation. 16:22
and sorear's asleep. ;) 16:23
masak muixirt: I wasn't entirely serious. at least I don't think I was. :)
muixirt keeps a straight face
masak :| 16:24
muixirt but benabik++, moritz++ and others for updating the links 16:25
masak: do you have an explanation for the ..^@a hang ups? 16:27
masak muixirt: I don't.
seems the @a doesn't get numified, and that causes problems in some loop or other. 16:28
but that much is obvious.
muixirt on the bright side: it doesn't eat up memory :-)
masak \o/
16:30 hundskatt joined 16:33 nebuchadnezzar joined 16:35 zjmarlow left
jnthn makes it to Gothenburg 16:37
Train was on time! o.O
16:37 tokuhirom left
colomon \o/ 16:39
16:40 jferrero joined 16:51 stefanZ left
masak jnthn: just you wait until the snow arrives... :) 16:58
masak decommutes
17:00 birdwindupbird left 17:01 jerome_ joined 17:03 cognominal_ joined 17:04 cognominal left
[Coke] kicks off the daily run. 17:08
17:11 localhost left 17:12 ggoebel_ joined 17:14 kaleem joined
ggoebel_ perl6: 'Happy Easter'.say 17:15
p6eval pugs b927740, rakudo 0ac25d, niecza v13-296-g64527c0: OUTPUT«Happy Easter␤»
ggoebel_ glad to see the distributions lifting each other to greater heights
PerlJam you're a little early for easter :)
ggoebel_ perhaps it is time for perl6.org/compilers/ to be updated? "not yet well realized" no longer seems to apply to Niecza 17:16
[Coke] PerlJam: easter is a reference to niecza beating rakudo in the spec tests. 17:17
ggoebel_ And here I thought I was late ;-)
[Coke] for one apparently brief moment. ;)
17:18 Chillance left
ggoebel_ looks forward to celebrating Easter every other day... 17:18
PerlJam ggoebel++
17:19 HarryS left 17:20 HarryS joined 17:23 cognominal___ joined 17:26 cognominal_ left 17:27 BinGOs left, jerome_ left 17:31 fridim_ joined 17:32 daxim left 17:33 BinGOs joined
dalek href="https://perl6.org:">perl6.org: 042d48e | moritz++ | source/compilers/index.html:
be less pessimistic about niecza. ggoebel++
17:35
17:35 bluescreen10 left 17:38 ggoebel_ left 17:40 ocharles left 17:42 ocharles joined 17:45 lichtkind_ joined, lichtkind left, lichtkind_ is now known as lichtkind 17:46 mj41 left
tadzik 'evening 17:46
sorear good * #perl6 17:47
phenny sorear: 13:00Z <colomon> tell sorear $*CWD is a complete hack and chdir isn't catching exceptions properly -- but never-the-less both are there enough to be useful atm
colomon \o
TimToady vv probably 17:48
phenny TimToady: 07:24Z <sorear> tell TimToady Perhaps (2/3).perl should return '+<2/3>' instead of '<2/3>' -- since the latter is actually RatStr not Rat
17:48 ocharles left
TimToady but then maybe (2/3) is good enuf 17:48
since other .perl emissions seem to rely on some degree of constant folding and/or construction 17:49
17:49 ocharles joined 17:50 bluescreen10 joined
TimToady or maybe we need a rule that says spaceless <> constructs throw away the Str component 17:50
so <2/3> and <1+2i> are really special forms 17:51
colomon +1
17:51 spine_ left
colomon thought that's the way it was going to work originally.... ;) 17:52
17:52 dakkar left
TimToady the main oddity of that is that ~<2/3> makes .66666666 while ~< 2/3 > makes 2/3 17:53
but we could probably live with that
sorear: opinions? ^^
17:53 fridim_ left
TimToady sorear: certainties? ^^ :) 17:53
sorear I think I could live with that 17:54
would <abc> continue to be allowed?
17:55 alester joined
TimToady sure 17:55
and if we allow enums in val, don't apply the rule to those, I think
that is, <False> woudl stay a string 17:56
[Coke] b: say 19223-19135 ; # niecza at 99.54%
p6eval b 1b7dd1: OUTPUT«88␤»
17:57 ocharles left
[Coke] rakudo has 27 more failures than it did yesterday. 17:57
TimToady I've been looking at rosettacode.org/wiki/Miller-Rabin_p...est#Perl_6 and wondering how close our optimizers are to moving $n - 1 out of the loop as effectively nonmutating
jnthn [Coke]: ugh, I thought I'd cleared up the regressions last night :/
17:57 BinGOs left
moritz my last spectest run showed a single failure, in t/spec/S12-methods/multi.rakudo 17:58
17:58 ocharles joined
TimToady it's interesting that the Perl 6 code follows the pseudocode so closely at the beginning, but I suspect right now an implementation that precalculated $n - 1 would be significantly faster 17:58
and maybe 1 | $n - 1 as well
jnthn TimToady: The underlying variable analysis that would support such a transformation is relatively high on my optimizer todo list. But the optimizer todo list is just one of my todo lists. :) 17:59
[Coke] moritz: we're up to 57 total.
gist.github.com/1476841 18:00
jnthn [Coke]: Platform?
[Coke] feather
jnthn k
[Coke] 32bit linux mumble.
TimToady jnthn: I have a great appreciation for your todo lists, and for how often you mutate them :) 18:01
[Coke] hurm. maybe not? Linux feather 2.6.32-5-amd64 #1 SMP Mon Mar 7 21:35:22 UTC 2011 x86_64 GNU/Linux
18:01 zby_home_ joined
[Coke] jnthn: feather.perl6.nl/~coke/rakudo_summary.txt 18:01
... wait a sec. 18:02
feather.perl6.nl/~coke/rakudo_summary.out , sorry.
jnthn wonders why his hotel room is so hot when outside it's below freezing.
moritz oh drat, the overflow tests are platform dependent 18:03
jnthn Very. Some fail here too.
Though less than before.
[Coke] moritz: yah, we knew this already. 18:04
18:04 BinGOs joined
moritz jnthn: maybe the constant folder changed that? 18:04
or isn't that wired up for those cases yet?
jnthn moritz: The only place it's wired up is for enums 18:05
18:06 ocharles left
TimToady perl6: (1 .. 1_000_000_000_000).pick(5).say # another potential problem with the Miller-Rabin code 18:07
moritz nom: try { die "foo" }; say so $! ~~ /foo/
p6eval niecza v13-296-g64527c0: OUTPUT«(timeout)»
..pugs b927740: OUTPUT«pugs: out of memory (requested 1048576 bytes)␤»
..rakudo 0ac25d: OUTPUT«Failed allocation of 4096 bytes␤Parrot VM: PANIC: Out of mem!␤C file src/gc/alloc_memory.c, line 105␤Parrot file (not available), line (not available)␤␤We highly suggest you notify the Parrot team if you have not been working on␤Parrot. Use parrotbug (located in p…
nom 0ac25d: OUTPUT«Method 'substr' not found for invocant of class 'Exception'␤ in method Str at src/gen/CORE.setting:7276␤ in method Stringy at src/gen/CORE.setting:678␤ in sub prefix:<~> at src/gen/CORE.setting:961␤ in method ACCEPTS at src/gen/CORE.setting:7437␤ in block <anon> …
moritz TimToady: oh, that one should be easy to fix 18:08
TimToady I think .pick needs to switch to a different algorithm for large ranges and small selections
18:08 ocharles joined
tadzik perl6: (1 .. 1_000_000_000_000).roll(5).say 18:09
TimToady that's actually what MR specifies
moritz jnthn: that seems to be the problem, the regex engine now calls .substr on the topic instead of coercing it to Str first
p6eval niecza v13-296-g64527c0: OUTPUT«(timeout)»
..pugs b927740: OUTPUT«pugs: out of memory (requested 1048576 bytes)␤»
..rakudo 0ac25d: OUTPUT«Failed allocation of 4096 bytes␤Parrot VM: PANIC: Out of mem!␤C file src/gc/alloc_memory.c, line 105␤Parrot file (not available), line (not available)␤␤We highly suggest you notify the Parrot team if you have not been working on␤Parrot. Use parrotbug (located in p…
18:09 itz left
TimToady it doesn't say you can't pick the same number twice, at least according to the pseudocode 18:09
moritz now for .roll there's really no reason to evaluate the list at all 18:10
TimToady yes, .roll should just work
tadzik looks like my roll optimization was not ported to nom
TimToady but .pick can also be made to work by filtering out previously seen values
moritz aye
18:11 fridim_ joined
jnthn moritz: oops, which patch did I do that in? 18:11
TimToady interestingly, using .pick in the MR code gives you more certainty for smaller candidates, since it exhausts the set of possible composites faster
and if $k is big enough, considers each candidate once 18:12
but .pick should degrade gracefully when possible
18:12 Chillance joined
felher Yes, i used pick because it doesn't make sense to pick things twice. 18:13
TimToady but the pseudocode does :)
moritz tadzik: I'll backport your Range.roll thingy
tadzik ++moritz
that was my first patch, I think :)
felher TimToady: indeed. Yeah, maybe one should change that. I don't have any time right now. If someone wants to do it, go ahead. Otherwise i will look at it as soon as i'm home :) 18:14
TimToady also been thinking about how $x == 1 or $x == $n - 1 is or is not equivalent to $x == 1 | $n - 1 or to not( 1 < $x < $n - 1 ) or to not( $x ~~ 1 ^..^ $n -1 ) 18:15
and whether all those can be optimized to whatever is fastest
oh, there's also 1 != $x != $n - 1 I imagine 18:16
18:17 fridim_ left
TimToady felher: but the .pick reads better, and is arguably more correct :) 18:17
18:19 _dbr joined 18:20 dbr left 18:21 cognominal___ left
TimToady felher: I agree with your reasoning on leaving modexp outside too 18:21
18:22 cognominal joined
TimToady masak: re irclog.perlgeek.de/perl6/2012-01-17#i_5002372, that's one of the reasons I was writing the new Set.pm I gisted a while ago 18:23
felher fehler is to busy to answer, but will backlog :) 18:24
TimToady and the next optimization is probably to run each of the $k tests in a separate core :) 18:25
that would probably be worth adding a second entry; leaving the first as a beautiful translation of the pseudocode 18:26
(and you guys think libtommath produces garbage fast with one core... :) 18:27
I still think we're likely to see pointer robbing for smallish integers on any VM that can support it, for just this reason 18:28
.o(Crook: "It's not really stealing; they'll never miss it...") 18:29
actually, I think the parallel version should (eventually) simply work from saying "hyper for (2 ..^ $n).pick($k)" 18:32
any core can falsify by returning False, but True is returned only if all the core's threads terminate for the hyper statement's sequence point 18:34
that would be
Way Cool
18:34 kaleem left
moritz is it 'sink hyper for' or 'hyper sink for'? 18:34
TimToady sink hyper 18:35
but the sink is implied by not being the final statement
18:35 kaleem joined
jnthn dinner & 18:35
TimToady and it might eventually be a common optimization to throw an implicit hyper on the front of any loop statement that provably does not have interactions from one iteration to the next 18:37
masak TimToady: oh! I wish I had time to help you debug your Set.pm -- it looked like a really good start. 18:42
18:43 Bucciarati left
masak TimToady: is 'hyper' a special form? I don't really see how it can have the effect it does on for. 18:55
moritz masak: remember that 'for' is just a call to map, really 18:56
masak: so it returns a lazy list
masak: and 'hyper @lazy_list' can does its non-lazy magic
dalek ecs: ea9fd14 | larry++ | S13-overloading.pod:
imported multis automatically re-export

The rationale is to get as close as we can to "global MMD" without sacrificing lexically static candidate lists.
18:57
TimToady remember also that "hyper" is just a modified form of "eager"
"so eager we don't care which parts of it you do first" 18:58
perl6: say hyper 1 ... 5 18:59
p6eval rakudo 0ac25d: OUTPUT«===SORRY!===␤CHECK FAILED:␤Calling 'hyper' will never work with argument types (Mu) (line 1)␤ Expected any of:␤ :(Any \$op, Any \$a, Any \$b, Any :dwim-left(:$dwim-left), Any :dwim-right(:$dwim-right))␤ :(Any \$op, Any \$obj)␤ :(Any \$op, Associative \$…
..niecza v13-296-g64527c0: OUTPUT«Unhandled exception: No value for parameter $dwimr in hyper␤ at /home/p6eval/niecza/lib/CORE.setting line 0 (hyper @ 1) ␤ at /tmp/UFoAu_cWoD line 1 (mainline @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3068 (ANON @ 3) ␤ at /home/p6eval/niecza/…
..pugs b927740: OUTPUT«*** ␤ Unexpected "5"␤ expecting operator, ":" or ","␤ at /tmp/MhB6RWVPXZ line 1, column 17␤»
TimToady wow 19:00
perl6: say eager 1,2,3,4,5
p6eval pugs b927740: OUTPUT«12345␤»
..niecza v13-296-g64527c0: OUTPUT«===SORRY!===␤␤Undeclared routine:␤ 'eager' used at line 1␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 919 (die @ 2) ␤ at /home/p6eval/niecza/src/STD.pm6 line 1144 (P6.comp_unit @ 32) ␤ at /ho…
..rakudo 0ac25d: OUTPUT«1 2 3 4 5␤»
TimToady pugs: say hyper 1,2,3,4,5 19:01
p6eval pugs b927740: OUTPUT«*** No such subroutine: "&hyper"␤ at /tmp/CyReSqHviX line 1, column 5 - line 2, column 1␤»
dalek kudo/nom: aa1d8b6 | moritz++ | src/core/Range.pm:
optimize Range.roll, and Range.pick if the number of range elems is much larger than the number of elements to pick
19:03
ast: b896f6d | moritz++ | S32-list/ (2 files):
tests for Range.roll and .pick
[Coke] huh.rakudo autounfudge run hangs on t/spec/S02-types/mixed_multi_dimensional.rakudo during the actual call to "fudge"
masak EMULTIDIMENSIONALFUDGE 19:06
moritz [Coke]: I've had hangs in fudge before, but they are rare 19:07
19:11 Trashlord left 19:13 spine joined 19:15 Trashlord joined 19:19 birdwindupbird joined
[Coke] tries just a subset in a higher synopsis. 19:20
moritz: have you autounfudged lately? 19:21
(if so, I won't bother.)
moritz [Coke]: yes
[Coke] ok.
masak perl6: { our sub foo { say "OH HAI" } }; our &foo; foo 19:22
p6eval rakudo 0ac25d, niecza v13-296-g64527c0: OUTPUT«OH HAI␤»
..pugs b927740: OUTPUT«*** Cannot use Undef as a Code object␤ at /tmp/b1ToOCQhas line 1, column 45 - line 2, column 1␤»
masak perl6: { our sub foo { say "OH HAI" } }; { our sub foo { say "OH HAI again" } }; our &foo; foo 19:23
p6eval pugs b927740: OUTPUT«*** Cannot use Undef as a Code object␤ at /tmp/WbeTpy39he line 1, column 85 - line 2, column 1␤»
..niecza v13-296-g64527c0: OUTPUT«===SORRY!===␤␤Two definitions found for symbol ::GLOBAL::&foo␤␤ first at ??? line 0␤ second at ??? line 0 at /tmp/kEDMC3OaDH line 1:␤------> b foo { say "OH HAI" } }; { our sub foo ⏏{ say "OH HAI again" } }; our &foo; fo…
..rakudo 0ac25d: OUTPUT«OH HAI again␤»
masak rakudobug?
moritz std: { our sub foo { say "OH HAI" } }; our &foo; foo 19:24
p6eval std 13da5b0: OUTPUT«===SORRY!===␤Illegal redeclaration of routine 'GLOBAL::<&foo>' (from line 1) at /tmp/NIvKzhGKZg line 1:␤------> our sub foo { say "OH HAI" } }; our &foo⏏; foo␤Check failed␤FAILED 00:01 113m␤»
moritz seems like yes
19:24 x3nU left
masak not the one I meant, but sure. :) 19:24
if STD is correct, then it's a nieczabug too. 19:25
moritz I don't think STD makes sense.
either rakudo or niecza
19:26 _ilbot joined, Trashlord left
moritz it seems I've broken Range.pick for many cases :( 19:27
TimToady yes, STD is being too strict there, and isn't distinguishing declaration from definition 19:29
masak ah, so no nieczabug.
but rakudo allows the second 'our sub foo' to overwrite the first.
TimToady in fact, niecza++ is being very accurate in detecting two *definitions*
19:29 x3nU joined
masak submits rakudobug 19:29
sorear: "line 0"? 19:33
moritz can somebody on a recent-ish rakudo build please tell me how large their src/gen/CORE.setting.pir is? 19:35
w 19
sorry
masak hugs silly irssi user moritz! :D 19:36
[Coke] 281562L
tadzik moritz: 14Msrc/nom/src/gen/CORE.setting.pir
[Coke] that's < 1 hour old.
tadzik 14 MB I guess
moritz tadzik: thanks
[Coke]: also thanks
[Coke] 281562 991826 13849492 src/gen/CORE.setting.pir # wc output. 19:37
TimToady perl6: my $d = Duration.new(1/2); sleep $d 19:39
p6eval pugs b927740: OUTPUT«*** No such subroutine: "&Duration"␤ at /tmp/hkzbbEWazS line 1, column 4-26␤»
..rakudo aa1d8b: OUTPUT«This type cannot unbox to a native number␤ in <anon> at src/gen/Metamodel.pm:2674␤ in sub sleep at src/gen/CORE.setting:496␤ in block <anon> at /tmp/lH41l6Pcxg:1␤ in <anon> at /tmp/lH41l6Pcxg:1␤»
..niecza v13-296-g64527c0: OUTPUT«===SORRY!===␤␤Undeclared name:␤ 'Duration' used at line 1␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 919 (die @ 2) ␤ at /home/p6eval/niecza/src/STD.pm6 line 1144 (P6.comp_unit @ 32) ␤ at /ho…
TimToady well, nom is closer... 19:40
nom: my $later = now + 1; sleep $later - now; # more to the point 19:42
p6eval nom aa1d8b: OUTPUT«This type cannot unbox to a native number␤ in <anon> at src/gen/Metamodel.pm:2674␤ in sub sleep at src/gen/CORE.setting:496␤ in block <anon> at /tmp/VQEpGWqiKx:1␤ in <anon> at /tmp/VQEpGWqiKx:1␤»
19:42 overrosy left, mj41 joined 19:44 overrosy joined 19:46 molaf left 19:47 MayDaniel joined
jnthn om nom 19:52
masak jnthn: eating? :)
jnthn eated :) 19:55
19:56 mattp_ left
jnthn perl6: { our $x = 42 }; { our $x = 43; } 19:56
p6eval pugs b927740, rakudo aa1d8b, niecza v13-296-g64527c0: ( no output )
jnthn So...why is that declaration OK, but the sub one not?
sorear masak: ??? line 0 means "unknown" ... might be worth adding a special case to the printer 19:57
jnthn: Because 'our $x' has COMMON semantics
and the = 42 isn't really part of the declarator
jnthn heh
yeah, assignments aren't part of declarators...apart from the majority of situations when they are :) 19:58
jnthn still hopes STD changes the way it parses those.
sorear: COMMON - is that a spec term? 19:59
sorear No, it's a FORTRAN term
so, now you expect *consistency*? you're so difficult :p
jnthn Oh. The only FORTRAN I did was fixing some physicists attempt to write it. :) 20:00
It got it to work, but it was probably as much luck as judgement. :)
sorear I've never actually written any FORTRAN 20:02
TimToady our is supposed to do the initialization at INIT time, and should probably ensure that the values are eqv at that point 20:03
slavik fortran looks very similar to C
although I realize that is a redundant statement 20:04
geekosaur except it's not really fortran COMMON, or all your "our"s would have to be in the same order in every file using them (or at least overlap sensibly)
masak sorear: ah. 20:05
PerlJam What's that saying? "You haven't lived until you've done X"? In this case, it's more like "you haven't died a little until you've written fortran" :) 20:08
geekosaur but then "you can write FORTRAN in any language"... 20:09
doy i worked on a c project once that was ported from fortran
contained a file block_data.c with ~500 lines of global variable declarations
PerlJam when I first met pmichaud, he had converted a 90-ish page fortran program to about a 2 page perl program. 20:10
(that's the only allowable fortran operation ... getting rid of it)
felher is back. 20:15
sorear hola, felher 20:16
felher So about the pick/roll issue. Do we prefer translation of the pseudo-code to using pick?
TimToady there's a choice to make if declarators parse their pseudoassignment; either the declarator has to detect assignment to a tighter operator on the left, or it has to be an assymetric precedence loosener like a listop 20:17
felher Also i like to change the 'or's to '|' as TimToady mentioned. I really like '|', just didn't think of it when writing the code :) 20:18
TimToady I prefer pick because in some sense it's even smarter than the standard algorithm, which can duplicate work 20:19
(though mostly only for small candidates)
20:19 zjmarlow joined
sorear TimToady: you are speaking of the 5 * constant $x = 2 funny business? 20:20
TimToady though there may be intermediate values where it's more overhead to tracked which values have been tried than to just use roll semantics
yes, though in this case the subject is 'our'
20:21 thou left, thou joined
TimToady it looks hard to tell the term what its leftward context is, so I'm inclined to just make it drop precedence to = level 20:21
it's kinda what people will expect half the time anyway 20:22
20:23 MayDaniel left
felher Okay. So i just use the junctive-ors. I like them. Nobody would say "if the car is blue or the car is red or the car green". Everybody just says "if the car is red, green or blue" :) 20:25
TimToady and we already do it that way for s[foo] = 'bar'
the only difference being that in sibble, the assignment is not optional 20:29
dalek ast: 2fae5d6 | moritz++ | S32-list/ (2 files):
more Range.{roll,pick} tests
20:31
kudo/nom: 0deac24 | moritz++ | src/core/control.pm:
try to fix sleep() with non-Num argument
kudo/nom: 2fd18f4 | moritz++ | src/core/Range.pm:
fix Range.{roll,pick}
masak what, if anything, does 'sibble' stand for? 20:36
tadzik Super Nibble! 20:37
benabik Wikipedia: Sibble is a locality situated in Botkyrka Municipality, Stockholm County, Sweden with 280 inhabitants in 2005.
masak heh.
felher wow, using "$x == 1 | $n - 1" instead of "$x == 1 or $n - 1" triples execution-time for MR in nom.
PerlJam that's not surprising (to me) 20:38
masak felher: not surprized.
TimToady it has to reconstruct the junction each time
which is why I thought about factoring that out along with the $n - 1
jnthn masak: Wow, that must be the 10th biggest city in Sweden or something! :)
tadzik :>
TimToady and why I was thinking about all the other forms of comparison that it could be optimized to
masak: it's for substitution nibble 20:39
masak aha!
TimToady to go with tribble, etc
masak jnthn: you laugh now, but one day small hamlets will take over the world. mwhahaha. 20:40
jnthn masak: A hamlet sounds like a cute little ham. :)
felher Hm, then maybe changing 'or's to '|'s should wait until its faster. Although it is nicer, there may be people to try that code and ^C it after 20 seconds... :) 20:41
TimToady and a bullet is a cute little bull 20:42
masak or a cute little bul
felher: use the fast version and add a comment.
jnthn Well, I don't really want a bull or a bullet coming at me :) 20:43
20:44 kaare__ joined
TimToady considers jnthn's feelings and omits pun on seeing red... 20:44
jnthn :)
20:47 kaare__ left, kaare_ joined, birdwindupbird left, kaleem left
jnthn Gee, Pm wasn't joking when he said getting this backtracking into subrules in place would be tricky... 20:48
masak well, I guess subrules are methods. then it's tricky simply because that method has already returned and now it needs to be resumed. 20:58
at least conceptually.
jnthn omgz, I think it...might have just worked or something 20:59
masak o.O
[Coke] jnthn++ 21:00
dalek ast: 7176c48 | coke++ | S (6 files):
niecza (auto)unfudge
21:01
felher masak: done :)
felher goes back to $job
dalek p: 08e07d7 | jonathan++ | src/Q (2 files):
First crack at getting backtracking into subrules working. Needs testing with Rakudo yet.
21:03
masak felher++
sorear TimToady: so... «». which shell is it supposed to emulate? :-) 21:04
jnthn sorear: How about cmd.exe on Windows? ;-) 21:05
</windows_trolling> 21:06
sorear
.oO( my $x; say « foo %x% bar »
)
21:07 GlitchMr left
jnthn There will be modules. 21:08
masak :) 21:11
jnthn nom: say ('aaaaabaaaaa' ~~ /^(<[a..z]>*) b/) 21:12
p6eval nom 2fd18f: OUTPUT«#<failed match>␤»
jnthn Locally:
> say ('aaaaabaaaaa' ~~ /^(<[a..z]>*) b/)
=> <aaaaab> 0 => <aaaaa>
tadzik nice :) 21:14
sorear jnthn++ jnthn++ 21:15
jnthn oh, I had a question 21:16
/(.)($0)/
Should that match e.g. 'aa'
niecza: say 'aa' ~~ /(.)($0)/
p6eval niecza v13-296-g64527c0: OUTPUT«Use of uninitialized value in string context␤ at /home/p6eval/niecza/lib/CORE.setting line 979 (warn @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 188 (Mu.Str @ 10) ␤ at <unknown> line 0 (ExitRunloop @ 0) ␤ at /tmp/u0K9A6pmwy line 0 (ANON @ 5) ␤…
jnthn I've an RT that expects it to, but I'm not sure it should. 21:17
sorear I'm not sure either way
jnthn At least it's not just me that thinks it ain't obvious :) 21:18
sorear I lean towards 'it should work'
PerlJam Why wouldn't it?
sorear with a side order of 'invariant meaning of $/ in a regex'
PerlJam (I think it should work too :)
jnthn Well, but inside the (...) it's a "different $/" really 21:19
(The match object you'll get back from $/[0] of the regex overall)
masak of course it should work.
jnthn Note that 21:20
TimToady not obvious
jnthn nom: 'ab' ~~ /((a)(b))/; say $0
p6eval nom 2fd18f: OUTPUT«=> <ab>␤ 0 => <a>␤ 1 => <b>␤␤»
jnthn nom: 'ab' ~~ /((a)(b))/; say $1
p6eval nom 2fd18f: OUTPUT«Any()␤»
jnthn nom: 'ab' ~~ /((a)(b))/; say $0[1]
p6eval nom 2fd18f: OUTPUT«=> <b>␤␤»
jnthn etc
TimToady and we start $0 renumbering in alternatives
21:21 fridim_ joined
TimToady niecza: say 'aa' ~~ /(.)($OUTER::0)/ 21:21
p6eval niecza v13-296-g64527c0: OUTPUT«===SORRY!===␤␤Variable $OUTER:: is not predeclared at /tmp/ac2xHzHdfh line 1:␤------> say 'aa' ~~ /(.)(⏏$OUTER::0)/␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 919 (die @ 2) …
21:22 y3llow_ joined, bluescreen10 left, pothos_ joined
TimToady niecza: say 'aa' ~~ /((.)$0)/ 21:22
p6eval niecza v13-296-g64527c0: OUTPUT«#<match from(0) to(2) text(aa) pos([#<match from(0) to(2) text(aa) pos([#<match from(0) to(1) text(a) pos([].list) named({}.hash)>].list) named({}.hash)>].list) named({}.hash)>␤»
TimToady I think that is conclusive :)
it can't be that and the other at the same time
sorear Nice try, but niecza is very careful to only count explicit braced constructs as OUTER 21:23
21:23 ksi joined
TimToady () makes a lexical scope in regex 21:23
so does []
jnthn Bad news. My patch breaks stuff. :(
21:24 y3llow left, pothos left, y3llow_ left 21:25 y3llow joined
TimToady
.oO( $<..>[0] ) # runs away
21:25
21:25 pothos_ left, pothos joined, cognominal_ joined
jnthn Better news: it doesn't look deep. 21:26
TimToady niecza: say 'aa' ~~ / (^) (^) ((.)$0)/ # make sure it's not working accidentally on partial outer $0
21:27 y3llow left
p6eval niecza v13-296-g64527c0: OUTPUT«#<match from(0) to(2) text(aa) pos([#<match from(0) to(0) text() pos([].list) named({}.hash)>, #<match from(0) to(0) text() pos([].list) named({}.hash)>, #<match from(0) to(2) text(aa) pos([#<match from(0) to(1) text(a) pos([].list) named({}.hash)>].list)… 21:27
TimToady no, $0 is truly referring to the inner ()
21:27 y3llow joined
jnthn OK, so if I follow, /(.)($0)/ ain't gonna work? 21:27
TimToady so it can't also refer to the outer ()
nope, can't
PerlJam TimToady: Could $¢.[0] wor or would it suffer the same problem as $0 ? 21:28
TimToady same
PerlJam s/wor/work/
jnthn The cursor is also scoped to the inner thingy
Now I understand why pmichaud++ has it the way he does.
PerlJam that's what I thought
21:28 pothos left, pothos joined
TimToady hmm 21:29
21:29 cognominal left, y3llow left
TimToady niecza: say 'aa' ~~ /(.)$1=$0)/ 21:29
p6eval niecza v13-296-g64527c0: OUTPUT«===SORRY!===␤␤Unable to parse regex; couldn't find final '/' at /tmp/RNKwMQxpi0 line 1:␤------> say 'aa' ~~ /(.)$1=$0⏏)/␤␤Parse failed␤␤»
21:29 y3llow joined
TimToady niecza: say 'aa' ~~ /(.)$1=$0/ 21:29
p6eval niecza v13-296-g64527c0: OUTPUT«#<match from(0) to(2) text(aa) pos([#<match from(0) to(1) text(a) pos([].list) named({}.hash)>, Cursor.new(...)].list) named({}.hash)>␤»
TimToady tada
niecza: 'aa' ~~ /(.)$1=$0/; say $1 21:30
jnthn oh, clever.
p6eval niecza v13-296-g64527c0: OUTPUT«Cursor.new(...)␤»
jnthn oh, less clever :)
TimToady niecza: 'aa' ~~ /(.)$<foo>=$0/; say $<foo> 21:31
p6eval niecza v13-296-g64527c0: OUTPUT«Cursor.new(...)␤»
TimToady hmm
buglet of some sort
21:31 pothos left
TimToady which is, of course, a small bugle 21:31
21:31 pothos joined 21:34 pothos left, pothos joined
PerlJam while "hamlet" made me think of food, none of the others gave that reaction 21:35
21:37 pothos left
TimToady a pilot is also food 21:37
21:37 pothos joined
TimToady a cutlet, however, is not 21:38
colomon ?? 21:39
21:41 benabik left, benabik joined, benabik left
PerlJam gives new meaning to the "let" varaibles :) 21:41
s/ai/ia/
21:47 spine left
mj41 rakudo: class myDate is Date { }; my $a=myDate.new("2011-01-01"); $a.succ; say $a; 21:47
p6eval rakudo 2fd18f: OUTPUT«Date.new(2011, 1, 1)␤»
jnthn mj41: .succ is not in place 21:50
dalek p: a2b60b7 | jonathan++ | src/QRegex/Cursor.nqp:
Prevent a crash when building CAPHASH if one of the cstack entries is there solely for backtracking into rather than serving as a capture.
mj41 jnthn: thx, just found problem is elsewhere 21:51
tadzik rakudo: class myDate is Date { }; my $a=myDate.new("2011-01-01"); $a.=succ; say $a
p6eval rakudo 2fd18f: OUTPUT«Date.new(2011, 1, 2)␤»
21:51 benabik joined
mj41 rakudo: class myDate is Date { }; my $a=myDate.new("2011-01-01"); $a += 1; say $a.perl 21:52
p6eval rakudo 2fd18f: OUTPUT«Date.new(2011, 1, 2)␤»
mj41 rakudo: class myDate is Date { }; my $a=myDate.new("2011-01-01"); say $a.perl 21:55
p6eval rakudo 2fd18f: OUTPUT«Date.new(2011, 1, 1)␤»
21:57 wooden_ is now known as wooden
jnthn phenny: ask moritz if he could run a spectest of Rakudo on latest NQP master to see if there's any serious regressions from fixing the backtracking into subrules. (I assume you have ICU, which I don't.) 21:57
phenny jnthn: I'll pass that on when moritz is around.
jnthn sleep...teaching tomorrow & 21:58
mj41 why Date instead of myDate ?
jnthn: dobrou noc 21:59
colomon rakudo: class myDate is Date { has $.dummy = 1; }; my $a=myDate.new("2011-01-01"); say $a.perl
p6eval rakudo 2fd18f: OUTPUT«Date.new(2011, 1, 1)␤»
colomon bug
mj41 jnthn: or 'dobrú noc' in Slovak 22:00
PerlJam rakudo: class myDate is Date { }; my $a=myDate.new("2011-01-01"); say $a.WHAT
TimToady obvioiusly anything named "dummy" isn
p6eval rakudo 2fd18f: OUTPUT«myDate()␤»
TimToady isn't really there
colomon rakudo: class myDate is Date { has $.timtoady = 1; }; my $a=myDate.new("2011-01-01"); say $a.perl 22:01
p6eval rakudo 2fd18f: OUTPUT«Date.new(2011, 1, 1)␤»
colomon not bug
TimToady I'm not there either; I'm just here
colomon mj41 if you don't define a .perl for your class, you get the parent's .perl
TimToady maybe .perl should be a submethod, and we inherit a reasonable default like .new does 22:02
colomon :\ 22:04
PerlJam I guess we could get a reasonable default with sufficient introspection. 22:05
22:06 kaare_ left
TimToady submethod PERL {...} 22:06
and .perl is more like BUILDALL
mj41 rakudo: class myDate is Date { }; my $a=myDate.new("2011-01-01"); my myDate $b = $a; $b += 1;
p6eval rakudo 2fd18f: OUTPUT«Type check failed in assignment to '$b'; expected 'myDate' but got 'Date'␤ in block <anon> at /tmp/4_R8K2Adj9:1␤ in <anon> at /tmp/4_R8K2Adj9:1␤»
colomon rakudo: class myDate { has $.member:timtoady = 1; }; my $a=myDate.new("2011-01-01"); say $a.perl 22:07
p6eval rakudo 2fd18f: OUTPUT«Default constructor only takes named arguments␤ in method new at src/gen/CORE.setting:561␤ in block <anon> at /tmp/vlFM1pUrhd:1␤ in <anon> at /tmp/vlFM1pUrhd:1␤»
colomon rakudo: class myDate { has $.member:timtoady = 1; }; my $a=myDate.new(timtoady => "2011-01-01"); say $a.perl
p6eval rakudo 2fd18f: OUTPUT«myDate.new(member:timtoady => 1)␤»
mj41 rakudo: class myDate is Date { }; my $a=myDate.new("2011-01-01"); my myDate $b = $a; say $b.WHAT; $b += 1;
p6eval rakudo 2fd18f: OUTPUT«myDate()␤Type check failed in assignment to '$b'; expected 'myDate' but got 'Date'␤ in block <anon> at /tmp/X2ikut2pcx:1␤ in <anon> at /tmp/X2ikut2pcx:1␤»
colomon does seem odd that if you don't have a parent, you get a decent .perl for free, but if you do have a parent, you get an incorrect .perl unless you write your own... 22:08
TimToady which is why a .perl override should probably be a PERL submethod 22:11
it cannot speak for its descendants without a lot of extra work
colomon +1 22:12
TimToady same for GIST maybe 22:13
colomon what would the default do?
dalek p: c9fd128 | jonathan++ | src/QRegex/Cursor.nqp:
Oops, I meant this...
22:14
TimToady something like a .perl wrapper around internal gists, maybe 22:15
jnthn was just about to hit the sack when he realized he'd done a silly
OK, really bed now
dobru noc ;)
TimToady will nap on this a bit hisownself... 22:16
22:23 dnewkirk joined 22:30 fridim_ left
colomon perl6: class Foo is Cool { method Str() { "t"; }; }; my $a = Foo.new; say $a.Foo.IO ~~ :d 22:31
p6eval rakudo 2fd18f: OUTPUT«Method 'Foo' not found for invocant of class 'Foo'␤ in block <anon> at /tmp/UgavqbevJ1:1␤ in <anon> at /tmp/UgavqbevJ1:1␤»
..pugs b927740: OUTPUT«*** No such method in class Foo: "&Foo"␤ at /tmp/BJRpjQlbZm line 1, column 68 - line 2, column 1␤»
..niecza v13-296-g64527c0: OUTPUT«Unhandled exception: Unable to resolve method Foo in class Foo␤ at /tmp/kg8NV0OQWy line 1 (mainline @ 4) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3068 (ANON @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3069 (module-CORE @ 64) ␤ at /home/p…
colomon perl6: class Foo is Cool { method Str() { "t"; }; }; my $a = Foo.new; say $a.IO ~~ :d 22:32
p6eval pugs b927740: OUTPUT«*** No such method in class Foo: "&IO"␤ at /tmp/o7ld7Eqnza line 1, column 68 - line 2, column 1␤»
..niecza v13-296-g64527c0: OUTPUT«Unhandled exception: Unable to resolve method IO in class Foo␤ at /tmp/ULvA5scUWI line 1 (mainline @ 4) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3068 (ANON @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3069 (module-CORE @ 64) ␤ at /home/p6…
..rakudo 2fd18f: OUTPUT«Bool::False␤»
colomon should that work or not?
22:39 lichtkind left
masak good night, #perl6. 22:40
colomon o/
felher o/ masak :) 22:46
22:48 muixirt left 22:51 mj41 left 22:52 bacek left, _dbr left 23:01 bacek joined 23:06 whiteknight joined 23:08 fk_ joined, fk_ left 23:09 donri left 23:14 donaldh joined 23:18 nornagest left 23:22 donaldh left 23:24 overrosy left 23:26 overrosy joined 23:30 benabik left 23:33 tokuhirom joined 23:39 cognominal___ joined 23:41 whiteknight left, whiteknight joined 23:42 cognominal_ left 23:58 bacek left, bacek joined 23:59 zjmarlow left