»ö« 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.
diakopter r: my Positional[Int] of Str $x; 00:40
p6eval rakudo 978492: OUTPUT«===SORRY!===␤Method 'parameterize' not found for invocant of class 'Perl6::Metamodel::CurriedRoleHOW'␤»
diakopter phenny: ask masak maybe append to other ticket? r: my Positional[Int] of Str $x; 00:41
phenny diakopter: I'll pass that on when masak is around.
diakopter rn: say (^-1)[0] 01:07
p6eval rakudo 978492: OUTPUT«Nil␤»
..niecza v22-14-g136ddcf: OUTPUT«Any()␤»
diakopter hmm... no elements?
diakopter double buglet 01:23
rn: say "a" ~~ / <new> /
p6eval rakudo 978492: OUTPUT«「」␤ new => 「」␤␤»
..niecza v22-14-g136ddcf: OUTPUT«Unhandled exception: System.InvalidCastException: Cannot cast from source type to destination type.␤ at Niecza.Kernel.DefaultNew (Niecza.Frame th, Niecza.P6any proto, Niecza.VarHash args) [0x00000] in <filename unknown>:0 ␤ at Run.CORE.C189Mu.new (Niecza…
diakopter phenny: tell masak dunno; is this right? r: say "a" ~~ / <new> / 01:24
phenny diakopter: I'll pass that on when masak is around.
TimToady well, Cursor.new is returning a valid cursor, so maybe not a bug in rakudo 01:26
it's a new way to match the null string
diakopter rn: grammar A { rule TOP { <BUILD> }; rule BUILD { a } }; say A.parse("a") 01:27
p6eval niecza v22-14-g136ddcf: OUTPUT«#<match from(0) to(1) text(a) pos([].list) named({"BUILD" => #<match from(0) to(1) text(a) pos([].list) named({}.hash)>}.hash)>␤»
..rakudo 978492: OUTPUT«===SORRY!===␤Method 'match' not found for invocant of class 'String'␤»
diakopter phenny: tell masak pretty sure bug here rn: grammar A { rule TOP { <BUILD> }; rule BUILD { a } }; say A.parse("a")
phenny diakopter: I'll pass that on when masak is around.
diakopter rn: grammar A { rule TOP { <new> }; rule new { a } }; say A.parse("a") 01:30
p6eval rakudo 978492: OUTPUT«Default constructor only takes named arguments␤ in method new at src/gen/CORE.setting:669␤ in any !reduce at src/stage2/QRegex.nqp:615␤ in any !cursor_pass at src/stage2/QRegex.nqp:582␤ in regex new at /tmp/2PiHbQULvs:1␤ in regex TOP at /tmp/2PiHbQULvs:1␤ in …
..niecza v22-14-g136ddcf: OUTPUT«#<match from(0) to(1) text(a) pos([].list) named({"new" => #<match from(0) to(1) text(a) pos([].list) named({}.hash)>}.hash)>␤»
diakopter phenny: tell masak also, different error? rn: grammar A { rule TOP { <new> }; rule new { a } }; say A.parse("a")
phenny diakopter: I'll pass that on when masak is around.
diakopter rn: grammar A { rule TOP { <foo> }; method foo { Cursor } }; say A.parse("a") 01:34
p6eval niecza v22-14-g136ddcf: OUTPUT«Match()␤»
..rakudo 978492: OUTPUT«Cannot look up attributes in a type object␤ in regex TOP at /tmp/L1tMzD68aT:1␤ in method parse at src/gen/CORE.setting:10166␤ in block at /tmp/L1tMzD68aT:1␤␤»
diakopter that error's not LTA methinks
TimToady: oh 01:35
uhm. 01:36
what did I do to p6eval
r: grammar A { rule TOP { <.pos> } }; say A.parse("a") 01:42
p6eval rakudo 978492: OUTPUT«Can only use repr_get_attr_int on a SixModelObject␤ in regex TOP at /tmp/5pTcQZ4Iyy:1␤ in method parse at src/gen/CORE.setting:10166␤ in block at /tmp/5pTcQZ4Iyy:1␤␤»
diakopter phenny: tell masak cool error r: grammar A { rule TOP { <.pos> } }; say A.parse("a") 01:43
phenny diakopter: I'll pass that on when masak is around.
diakopter r: grammar A { rule TOP { <foo> }; rule foo { <TOP> } }; say A.parse("a") 01:45
p6eval rakudo 978492: OUTPUT«(timeout)»
diakopter really should detect directly and indirectly left-recursive rules and evade them 01:46
for complex grammars where the user doesn't know where the recursion lies 01:48
or grammars where it's intentionally left-recursive
r: grammar A { rule TOP { <.parse("")> } }; say A.parse("a") 01:50
p6eval rakudo 978492: OUTPUT«maximum recursion depth exceeded␤current instr.: 'print_exception' pc 86654 (src/gen/CORE.setting.pir:41740) (src/gen/CORE.setting:9055)␤called from Sub 'defined' pc 3791 (src/stage2/gen/NQPCORE.setting.pir:1843) (src/stage2/NQPCORE.setting:218)␤called from Sub '!c…
diakopter r: say grammar say { }; say &say.WHAT 01:54
p6eval rakudo 978492: OUTPUT«say()␤»
diakopter giggles
oh wait
wait, wait.
the heck?
r: grammar say { }; print 0; say &say.new; print 1; say.WHAT; print 2; say(&say); 01:57
p6eval rakudo 978492: OUTPUT«012sub say() { ... }␤»
diakopter r: grammar say { }; print 0; print((say &say.new).WHAT); print 1; say.WHAT; print 2; say(&say); 01:58
p6eval rakudo 978492: OUTPUT«use of uninitialized variable $v of type Junction in string context in block at /tmp/0jbTeZO6Yz:1␤␤012sub say() { ... }␤»
diakopter oh!
but.. why did it output the final say(&say) 01:59
diakopter rn: grammar Int { }; say Int.parse("foo") 02:02
p6eval niecza v22-14-g136ddcf: OUTPUT«Unhandled exception: Unable to resolve method TOP in type Int␤ at /home/p6eval/niecza/lib/CORE.setting line 2927 (Grammar.parse @ 5) ␤ at /tmp/R3IQe1voOD line 1 (mainline @ 5) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4215 (ANON @ 3) ␤ at /home/p6…
..rakudo 978492: OUTPUT«No such method 'TOP' for invocant of type 'Int'␤ in method parse at src/gen/CORE.setting:10166␤ in block at /tmp/LUq4pcTRqH:1␤␤»
diakopter oh
diakopter rn: grammar Int { }; say 3.0.Int ~~ Numeric 02:05
p6eval niecza v22-14-g136ddcf: OUTPUT«True␤»
..rakudo 978492: OUTPUT«===SORRY!===␤get_boxed_ref could not unbox for the given representation␤»
diakopter boom.
phenny: tell masak 'nother weird one rn: grammar Int { }; say 3.0.Int ~~ Numeric 02:06
phenny ...
diakopter phenny: tell masak another weird one rn: grammar Int { }; say 3.0.Int ~~ Numeric
phenny ...
diakopter oh
phenny is hating on me
phenny: tell jnthn tell masak another weird one rn: grammar Int { }; say 3.0.Int ~~ Numeric 02:07
phenny diakopter: I'll pass that on when jnthn is around.
diakopter phenny: ... 02:09
rn: class Int { }; say 3.4.Int 02:16
p6eval niecza v22-14-g136ddcf: OUTPUT«3␤»
..rakudo 978492: OUTPUT«===SORRY!===␤get_boxed_ref could not unbox for the given representation␤»
sorear diakopter: lag spiked for me too 02:17
diakopter sorear: any ideas what rakudo is doing above? making a class named Int clobbered the Int method too? 02:18
sorear diakopter: making a class named Int caused the compiler to break 02:19
it never called the .Int method
diakopter oh hee
rn: class Int { }; say Int.WHAT 02:20
p6eval rakudo 978492, niecza v22-14-g136ddcf: OUTPUT«Int()␤»
diakopter sorear: well, it okay'd that
sorear rn: calss Int { }; 3.0 02:21
p6eval niecza v22-14-g136ddcf: OUTPUT«===SORRY!===␤␤Unexpected block in infix position (two terms in a row, or previous statement missing semicolon?) at /tmp/Ad3evMjLkd line 1:␤------> calss Int ⏏{ }; 3.0␤␤Undeclared routine:␤ 'calss' used at line 1␤␤Parse …
..rakudo 978492: OUTPUT«===SORRY!===␤Confused␤at /tmp/jLDBkx5dRc:1␤»
sorear rn: class Int { }; 3.0
p6eval niecza v22-14-g136ddcf: ( no output )
..rakudo 978492: OUTPUT«===SORRY!===␤get_boxed_ref could not unbox for the given representation␤»
cognominal nc: native {}
sorear diakopter: rakudo can't parse 3.0 after the redefinition
cognominal rc: native {}
arf
diakopter sorear: oh! 02:22
cognominal rn: native {}
diakopter interesting
p6eval niecza v22-14-g136ddcf: OUTPUT«===SORRY!===␤␤Undeclared routine:␤ 'native' used at line 1␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1437 (die @ 5) ␤ at /home/p6eval/niecza/src/STD.pm6 line 1147 (P6.comp_unit @ 37) ␤ at /h…
..rakudo 978492: ( no output )
cognominal reading Grammar.pm. I know that should compile but I have no idea to what that means. 02:23
diakopter r: say (native { }).HOW
p6eval rakudo 978492: OUTPUT«Perl6::Metamodel::NativeHOW.new()␤»
cognominal probably used by zavolag 02:24
s/g/j/
my native int is repr('P6int') { } # in NativeTypes.pm 02:26
If I had no tools like wc, I would swear that jnthn code is an infinite fractal repository of unkonwn dimension full of sweet code. 02:30
you just don't know which form it will have when you go further. 02:31
sorear cognominal: rakudo special behavior for defining new native types
not something users can use, really
cognominal I suppose Larry would say I designed Perl 6 for that to happen 02:32
sorear, except if he is smart enough to add his stuff to 6model/reprs 02:35
?? 02:36
or is there something magic about int num and str now they are decoupled from parrot?
sorear cognominal: *shrug* I recommend against touching native unless you know what you're doing 02:39
cognominal I sure don't know yet.
gdey Hello everyone, I'm trying to go through the Perl6 book, and can not for the life of me figure out what the problem with this sorce code is. (gist.github.com/3936461) The error I keep getting is: Nominal type check failed for parameter '@dependencies'; expected Positional but got Array instead 03:29
Any help would be appriciated.
I'm using rakudo, but the way.
The latest stable version I could download.
[Coke] r: gist.github.com/3936461 03:30
p6eval rakudo 978492: OUTPUT«Nominal type check failed for parameter '@dependencies'; expected Positional but got Array instead␤ in method new at /tmp/IQqtKBQmcn:8␤ in block at /tmp/IQqtKBQmcn:25␤␤»
TimToady :&callack is a typo 03:31
gdey Thanks!
I must have been staring at this for hours, and did not see that.
sorear o hai gdey
TimToady I don't know why it would cause this error though
gdey Hey Sorear! 03:33
It's still erroring out.
r: gist.github.com/3936461
p6eval rakudo 978492: OUTPUT«Nominal type check failed for parameter '@dependencies'; expected Positional but got Array instead␤ in method new at /tmp/I_dP2A9v45:8␤ in block at /tmp/I_dP2A9v45:25␤␤»
gdey I fixed the typo in the gist. 03:34
[Coke] has Bool $.done; 03:35
?
should that be $!done?
gdey According to the book, the $. twigile creats an accessor as well as creates the $!done variable. 03:36
TimToady what happens if you take the Task type off of the *@dependencies parameter on line 8? 03:37
gdey r: gist.github.com/3936461
p6eval rakudo 978492: OUTPUT«No such method 'Any' for invocant of type 'Parcel'␤ in at src/gen/BOOTSTRAP.pm:845␤ in at src/gen/BOOTSTRAP.pm:839␤ in any at src/gen/BOOTSTRAP.pm:836␤ in method perform at /tmp/J4SoGfw3tW:19␤ in block at /tmp/J4SoGfw3tW:36␤␤»
TimToady you might also try adding a comma after the closure in the call to .new
it does look like it might be buglet that you are triggering somehow 03:38
n: gist.github.com/3936461
p6eval niecza v22-14-g136ddcf: OUTPUT«Unhandled exception: Unable to resolve method postcircumfix:<( )> in type Any␤ at /tmp/NRWZKXnHhO line 19 (Task.perform @ 13) ␤ at /tmp/NRWZKXnHhO line 36 (mainline @ 8) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4215 (ANON @ 3) ␤ at /home/p6eval/n…
gdey Cool, did not know you could run it under niecza as well. I'll revert the changes I just made (Removed Task type, and added ',' after block; and try it as well.) 03:40
TimToady it looks like niecza likes it, but you've commented out the callback so it blew up
gdey n: gist.github.com/3936461 03:41
p6eval niecza v22-14-g136ddcf: OUTPUT«Unhandled exception: Unable to resolve method postcircumfix:<( )> in type Any␤ at /tmp/UlerJuNFW9 line 19 (Task.perform @ 13) ␤ at /tmp/UlerJuNFW9 line 36 (mainline @ 8) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4215 (ANON @ 3) ␤ at /home/p6eval/n…
gdey Don't see where I've commented out the callback. 03:42
TimToady something's screwy with indirection somewhere, I think
it shouldn't fail if @!dependencies is empty 03:43
sorear gdey: so jnthn finally got to you, eh?
TimToady so maybe @!dependincies is containing something empty instead, that makes it have 1 element
gdey sorear: Yup. 03:44
sorear ^_^
sorear gdey: what if you make @!dependencies public? 03:45
we fairly recently changed the rule so that .bless doesn't initialize private attrs 03:46
gdey How do I do that? I've been cargo-culting out of the perl6 book. And this example got me stuck.
sorear change the ! to an . 03:47
TimToady in the has
gdey k
sorear same for &.callback
TimToady suspects it won't fix the rakudo issue, since the binding seems to be earlier than that, and is taking issue with the remaining arglist being empty 03:48
gdey same. :( 03:49
sorear Slurpy arrays with type constraints have never really worked, so I'm a little bit concerned about that
gdey n: gist.github.com/3936461
p6eval niecza v22-14-g136ddcf: OUTPUT«eating dinner1.␤»
gdey r: gist.github.com/3936461
p6eval rakudo 978492: OUTPUT«Nominal type check failed for parameter '@dependencies'; expected Positional but got Array instead␤ in method new at /tmp/qGeWoTMZk2:8␤ in block at /tmp/qGeWoTMZk2:25␤␤»
gdey Niecza worked! 03:50
sorear would try removing the 'Task' from line 8
gdey Yes, removing Task and making everything public now works on rakudo. 03:51
r: gist.github.com/3936461
p6eval rakudo 978492: OUTPUT«eating dinner1.␤»
sorear rpn: gist.github.com/3936461
p6eval rakudo 978492, niecza v22-14-g136ddcf: OUTPUT«eating dinner1.␤»
..pugs: OUTPUT«*** No such method in class Task: "&bless"␤ at /tmp/BhoaEV1QGl line 9, column 7-50␤»
gdey So, is there a reason why everything had to be public? 03:56
Also, I add a call to the add-dependency method, and that seesm to work with the Type declared.
rpn: gist.github.com/3936461 03:57
p6eval rakudo 978492, niecza v22-14-g136ddcf: OUTPUT«making dinner␤eating dinner1.␤»
..pugs: OUTPUT«*** No such method in class Task: "&bless"␤ at /tmp/BGo4YkqonQ line 9, column 7-50␤»
sorear gdey: perl6-language had a freakout a few months ago over the fact that constructors allow you to set private attributes
I didn't resist hard enough
s/allow/allowed/
gdey So, how are you suppose to set them? 03:58
sorear r: class A { has $.x; has $!y; method setup() { $.x = $!y = 3; self; } }; say A.new.setup.perl
p6eval rakudo 978492: OUTPUT«Cannot assign to a readonly variable or a value␤ in method setup at /tmp/aS2TU2RzwG:1␤ in block at /tmp/aS2TU2RzwG:1␤␤»
sorear r: class A { has $.x; has $!y; method setup() { $!x = $!y = 3; self; } }; say A.new.setup.perl
p6eval rakudo 978492: OUTPUT«A.new(x => 3)␤»
sorear they're also hidden from .perl now :(
sorear gdey: with an explicit assignment or assigning parameter in BUILD 03:59
gdey Okay, the book should fixed to indicated this. I'll make a note of it. and after I've read the chapters on Classes, and roles. I'll see if I can submit a patch. 04:00
Thanks for helping get pasted this! 04:01
TimToady frequently feels pasted... 04:02
sorear gdey: anytime ^_^
gdey ack: s/pasted/past/ 04:06
sorear gdey: github/perl6/book ?
gdey sorear: yes 04:07
sorear well, you don't need to bother with patches now ^_^ 04:16
moritz why not? 05:02
sorear moritz: I added gdey to perl6/book
moritz ah 05:03
sorear++
I misread that as "don't bother to fix it"
sorear he's been to most of the last 12 sandiego.pm meetings, consider him pre-vetted
sorear hello CharellKing. 05:17
diakopter r: say "a" ~~ / <!!!before a> / 05:57
p6eval rakudo 978492: OUTPUT«「」␤␤»
sorear working as designed
diakopter what does !!! mean 05:58
sorear same as one !
diakopter how does !before a succeed 05:59
oh, the end :)
colomon \o 06:00
sorear colomon \o/
diakopter r: say "a" ~~ / <!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!before a> a / 06:01
p6eval rakudo 978492: OUTPUT«「a」␤␤»
sorear n: say "ab" ~~ eval q:c'/ <{"!" x 128}before b> . /' 06:02
p6eval niecza v22-14-g136ddcf: OUTPUT«Unhandled exception: Action method assertion:sym<!!!> not yet implemented␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1437 (die @ 5) ␤ at /home/p6eval/niecza/src/STD.pm6 line 5633 (STD.sorry @ 7) ␤ at /home/p6eval/niecza/src/NieczaActions.pm6 lin…
sorear hahaha 06:03
std: /<!!!!!before x>/
p6eval std 64edd1c: OUTPUT«===SORRY!===␤Unable to parse metachar at /tmp/F1BkBF82PF line 1:␤------> /⏏<!!!!!before x>/␤Couldn't find final '>'; gave up at /tmp/F1BkBF82PF line 1:␤------> /<!!!⏏!!before x>/␤Parse failed␤FAILED 00:00 42m␤»…
diakopter o.) 06:04
sorear TimToady: does this count as LTM fail?
TimToady std: /<!!!>/ 06:05
p6eval std 64edd1c: OUTPUT«ok 00:00 42m␤»
TimToady std: /<...>/ 06:07
p6eval std 64edd1c: OUTPUT«ok 00:00 42m␤»
TimToady std: /<....>/
p6eval std 64edd1c: OUTPUT«===SORRY!===␤Unable to parse metachar at /tmp/PPRX3kFG16 line 1:␤------> /⏏<....>/␤Couldn't find final '>'; gave up at /tmp/PPRX3kFG16 line 1:␤------> /<...⏏.>/␤Parse failed␤FAILED 00:00 42m␤»
azawawi hi 06:08
TimToady o/
diakopter std: / <a :=
p6eval std 64edd1c: OUTPUT«===SORRY!===␤Unrecognized regex metacharacter : (must be quoted to match literally) at /tmp/gRdV2AD6CY line 1:␤------> / <a :⏏=␤Can't call method "from" on unblessed reference at STD.pm line 53914.␤FAILED 00:00 42m␤»
diakopter unblessed reference buglet
TimToady you're mistaking STD for a real parser :) 06:09
diakopter n: / <a := 06:10
p6eval niecza v22-14-g136ddcf: OUTPUT«===SORRY!===␤␤Unrecognized regex metacharacter : (must be quoted to match literally) at /tmp/9TcueMCfTd line 1:␤------> / <a :⏏=␤␤Unhandled exception: Unable to resolve method ast in type Any␤ at /home/p6eval/niecza/sr…
diakopter heh
azawawi TimToady: viv -6 can be used as a Perl 6 tidy, right? 06:11
diakopter n: say "a" / <a :::+> / $_ 06:12
p6eval niecza v22-14-g136ddcf: OUTPUT«Unhandled exception: Cannot parse number: a␤ at /home/p6eval/niecza/lib/CORE.setting line 1443 (die @ 5) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3546 (ANON @ 11) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3548 (NumSyntax.str2num @ 5) ␤ at /h…
TimToady not really
diakopter sorear: :S
TimToady it is supposed to reproduce the exact whitespace it started with 06:12
diakopter n: say "a" ~~ / :::+ / 06:14
p6eval niecza v22-14-g136ddcf: OUTPUT«(timeout)» 06:15
diakopter laughs maniacally
std: / :+ / 06:16
p6eval std 64edd1c: OUTPUT«===SORRY!===␤Unrecognized regex metacharacter : (must be quoted to match literally) at /tmp/pDoCZ3S_k3 line 1:␤------> / :⏏+ /␤Can't call method "from" on unblessed reference at STD.pm line 53914.␤FAILED 00:00 42m␤»
colomon thinks he may officially be on jnthn and moritz's schedule for the rest of the week. ;)
diakopter lag.. 06:22
diakopter rn: say "a" ~~ / a++ / 06:24
p6eval rakudo 978492: OUTPUT«===SORRY!===␤Quantifier quantifies nothing at line 2, near " /"␤»
..niecza v22-14-g136ddcf: OUTPUT«#<match from(0) to(1) text(a) pos([].list) named({}.hash)>␤»
diakopter what does a++ mean 06:25
to niecza
TimToady same as a+! does 06:29
or maybe it's same as a+:
yes, it's the ratchet form 06:30
n: say "aa" ~~ / a++a /
p6eval niecza v22-14-g136ddcf: OUTPUT«Match()␤»
TimToady p5 borrowed it from <mumble> some time ago, so we will maybe support it as an option 06:31
sorear n: m/[]+/ # diakopter 06:33
p6eval niecza v22-14-g136ddcf: OUTPUT«===SORRY!===␤␤Null pattern not allowed at /tmp/eh857RZc2U line 1:␤------> m/[⏏]+/ # diakopter␤␤Parse failed␤␤»
sorear n: m/''+/ # diakopter
p6eval niecza v22-14-g136ddcf: OUTPUT«Unhandled exception: Unable to resolve method match in type Any␤ at /tmp/5lVq4x1P98 line 1 (mainline @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4215 (ANON @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4216 (module-CORE @ 579) ␤ at /home/…
diakopter o_O
sorear n: 1~~/''+/ # diakopter
p6eval niecza v22-14-g136ddcf: OUTPUT«(timeout)» 06:34
diakopter O_O
diakopter methinks quantified zero-width assertions should be detected 06:55
+ and * anyways
diakopter phenny: tell jnthn to tell masak rn: 1~~/''+/ # + and * on zero-width assertions should be detected and warned upon or ignored for + or == ? for * 06:57
phenny diakopter: I'll pass that on when jnthn is around.
diakopter phenny: tell jnthn to tell masak indirectly and directly left recursive rules should be detected and either warned upon at compile time and/or detected and evaded at runtime 06:58
phenny diakopter: I'll pass that on when jnthn is around.
sorear phenny: tell masak diakopter has been leaving messages for you in a funny way 06:59
phenny sorear: I'll pass that on when masak is around.
diakopter sorear: :P phenny stopped taking my messages for masak it seems 07:00
sorear diakopter: I have a suspicion that was a one-time network glitch 07:01
diakopter phenny replied "..."
phenny: tell masak test
phenny diakopter: I'll pass that on when masak is around.
diakopter oh ha
weird 07:02
brrt \o p6
sorear phenny: tell masak another weird one rn: grammar Int { }; say 3.0.Int ~~ Numeric 07:03
phenny sorear: I'll pass that on when masak is around.
azawawi feather.perl6.nl:3030/ # Sync POD toggle button 07:04
moritz if you declare your own Int class, and you don't take care to have it do everything the compiler needs, you're in trouble 07:26
diakopter rn: say "a"~~/#␤/ 07:42
p6eval rakudo 978492: OUTPUT«「」␤␤»
..niecza v22-14-g136ddcf: OUTPUT«#<match from(0) to(0) text() pos([].list) named({}.hash)>␤»
diakopter moritz: yeah, but it's still a leaky LTA error 07:42
moritz diakopter: hm, what?
diakopter the Int class thing 07:43
moritz diakopter: that is to be expected if you shadow classes the are used inside the compiler 07:44
sorear diakopter: would you be happy if it generated the same error, but required an explicit use MONKEY ?
I mean I can see where diakopter is coming from, I wasted a day with niecza trying to figure out why STD.pm6 wouldn't compile (answer: STD contains a class named Regex) 07:45
moritz r: class Int is CORE::Int { }; say 42.0.Int 07:46
p6eval rakudo 978492: OUTPUT«===SORRY!===␤Could not locate compile-time value for symbol CORE::Int␤»
sorear nowadays almost all of niecza's compile time symbol lookups on names that do not appear directly in the source are done using the equivalent of CORE::Foo
diakopter it just seems to me that if there's an Int already in your scope, and you define another Int, the new Int would apply just for your scope, not for the compiler running in some totally different scope
sorear which is arguably also broken, but it was the most expedient way to get STD working
diakopter: the compiler is treating 42.0 as Int.new(420) / Int.new(10) 07:47
diakopter: the compiler's own Ints aren't affected, but the Ints that it injects into your scope are
the error you get is actually from infix:</> or something equivalent, I think 07:48
a constant-folding error of sorts
diakopter that could make sense
but it still seems to me the compiler shouldn't let the user code affect the way basic things like compile-time constants are parsed and folded 07:50
unless it really is the intent to allow/enable that
moritz I'd say that shadowing a base class such as Int is declaration of that intent
sorear rn: class Int { }; say 42; say Int.new 07:51
p6eval niecza v22-14-g136ddcf: OUTPUT«42␤Int.new(...)␤»
..rakudo 978492: OUTPUT«===SORRY!===␤get_boxed_ref could not unbox for the given representation␤»
diakopter oh, and, while I'm dreaming, niecza's and rakudo's behaviors should match :) 07:52
sorear moritz: I'm starting to come around to diakopter's POV. The user should not be forced to memorize a list of classes which have magical behavior when shadowed 07:53
r: class Regex { }; /foo/
p6eval rakudo 978492: OUTPUT«===SORRY!===␤Method 'SET_CAPS' not found for invocant of class 'Regex'␤»
sorear r: say List.HOW.WHAT 07:54
p6eval rakudo 978492: OUTPUT«Perl6::Metamodel::ClassHOW()␤»
diakopter r: class NQPClassHOW { }; fail fail fail; say 'alive'
p6eval rakudo 978492: ( no output )
sorear n: my $_Whatever = 42; say * 07:54
p6eval niecza v22-14-g136ddcf: OUTPUT«Whatever.new(...)␤»
sorear n: my $__Whatever = 42; say * 07:55
diakopter oh, I guess fail is a thing
p6eval niecza v22-14-g136ddcf: OUTPUT«Whatever.new(...)␤»
sorear n: my \True = 42; say :foo 07:56
p6eval niecza v22-14-g136ddcf: OUTPUT«Unhandled exception: Excess arguments to gistcat, unused named foo␤ at /home/p6eval/niecza/lib/CORE.setting line 0 (gistcat @ 1) ␤ at /home/p6eval/niecza/lib/CORE.setting line 1305 (say @ 7) ␤ at /tmp/R3seETPgRj line 1 (mainline @ 4) ␤ at /home/p6eval/…
sorear n: my \True = 42; say (:foo)
p6eval niecza v22-14-g136ddcf: OUTPUT«"foo" => 42␤»
moritz :-)
sorear rn: my \True = 42; say (:foo) 07:57
p6eval niecza v22-14-g136ddcf: OUTPUT«"foo" => 42␤»
..rakudo 978492: OUTPUT«"foo" => Bool::True␤»
diakopter r: class Str; say 'alive' 08:06
p6eval rakudo 978492: OUTPUT«===SORRY!===␤This type cannot box a native string␤»
sorear r: class A is Str { }; class Str is A { }; say "foo".^parents 08:14
p6eval rakudo 978492: OUTPUT«A() Str()␤»
sorear r: class A is Str { }; class Str is A { }; say "foo".^mro
p6eval rakudo 978492: OUTPUT«Str() A() Str() Cool() Any() Mu()␤»
sorear diakopter^
diakopter heh 08:15
r: role Foo; say 'alive'
p6eval rakudo 978492: ( no output )
diakopter o.O
sorear role blocks are deferred 08:16
diakopter oh
sorear r: role Foo { say 'alive'; say $?CLASS.^name }; class A does Foo { }; class B does Foo { }
p6eval rakudo 978492: OUTPUT«alive␤===SORRY!===␤None of the parametric role variants for 'Foo' matched the arguments supplied.␤Method 'dispatch:<.^>' not found for invocant of class 'A'␤»
sorear ok, now *that* is a weird leaky bug 08:16
r: role Foo { say 'alive'; say $?CLASS.HOW.name }; class A does Foo { }; class B does Foo { } 08:17
p6eval rakudo 978492: OUTPUT«alive␤===SORRY!===␤None of the parametric role variants for 'Foo' matched the arguments supplied.␤too few positional arguments: 1 passed, 2 (or more) expected␤»
sorear r: role Foo { say 'alive'; say $?CLASS.HOW.name($?CLASS) }; class A does Foo { }; class B does Foo { }
p6eval rakudo 978492: OUTPUT«alive␤A␤alive␤B␤»
colomon (off topic) anyone out there ever used git-tf? 08:26
diakopter team foundation?
sorear
.oO( Git T F is that? )
08:27
diakopter (team foundation is Microsoft's source control thingie)
diakopter apparently yes 08:29
colomon: no, sorry :)
colomon yes, that's it. 08:30
sorry you don't know, or sorry that I need to work with team foundation? ;)
diakopter sorry I haven't used it
(not that it would help anyway; my knowledge of git is not even rudimentary)
colomon I was asking more in the "Does it work?" sense -- just trying to figure out if it is a sane approach. 08:31
diakopter wow; Microsoft released a product that runs on HP-UX, IBM AIX, Linux, Mac OS X, Solaris, Unix, Windows (git-tf) 08:34
oh, in Java 08:35
nm
sorear sleep& 08:44
diakopter youtube fail 08:52
timbunce_ I found this interesting worrydream.com/LearnableProgramming/ 10:09
brrt funny, yes, useful, hardly 10:10
although data visualisation of variables could be a nice trick
thats something for parrot 5 :-p 10:11
daxim processing's api is horrible, no wonder they feel compelled to juice it up with inline hints 10:18
(I learnt the language/env in may 2010) 10:19
daxim perlier it with read f.ex. ellipse({x_pos: 65, y_pos: 50, x_radius: 60, y_radius: 60}) 10:20
daxim verbose, certainly, but if they complain about cryptic numbers only, that's how you fix it. 10:21
↑ ping Su-Shee 10:22
brrt there are many simpler methods; named arguments are a very powerful hint 10:26
diakopter if only they weren't so slow 10:27
brrt named arguments do not need to be slow at all 10:28
in the case where the caller knows the callee, they can obviously be 'collapsed' into positional arguments 10:29
daxim processing is already slow as molasses
tadzik well, do you have benchmarks in handy? :)
dalek ast: db068a9 | moritz++ | S05-modifier/ignorecase.t:
fix test plan
10:37
brrt named booleans (a la p6's :r :w etc) kan even be compiled into a bitmap 10:40
again, as long as the caller knows the calllee
jaffa4 r: exception endc; try {my $b= 1; } 10:43
p6eval rakudo 978492: OUTPUT«===SORRY!===␤CHECK FAILED:␤Undefined routine '&endc' called (line 1)␤Undefined routine '&exception' called (line 1)␤»
Su-Shee dalek: yes? 10:58
err daxim
daxim discussion about processing, but it already petered out 10:59
Su-Shee processing as in "I'm processing this data" or "the visualization toolkit processing" :)
daxim the latter, of course
Su-Shee ah :) 11:00
PerlJam good morning #perl6! 13:24
tadzik hello PerlJam 13:25
bbkr__ r: Failure.new("foo").() # should Failure have strict Exception type check in constructor to avoid such LTA errors? 13:33
p6eval rakudo 978492: OUTPUT«No such method 'throw' for invocant of type 'Str'␤ in method <anon> at src/gen/CORE.setting:9955␤ in at src/gen/Metamodel.pm:2401␤ in any find_method_fallback at src/gen/Metamodel.pm:2389␤ in any find_method at src/gen/Metamodel.pm:925␤ in at src/gen/BOOTSTR…
moritz wouldn't hurt, I think 13:34
bbkr__ reports 13:42
flussence r: my @a; @a[0] = 1; @a[1_000_000_000_000] = 2; 13:51
tadzik can you hear that? That's OOM killer whimpering ;) 13:52
FROGGS .oO( wait for it ... )
tadzik DARY!
FROGGS ;o)
#1
moritz nah, p6eval runs under memory limit
flussence er... shouldn't the ulimit catch that by now? 13:53
moritz it should :-)
r: say 'alive';
flussence whoops, sorry 'bout that.
p6eval rakudo 978492: OUTPUT«ResizablePMCArray: index out of bounds!␤ in block at src/gen/CORE.setting:5996␤ in block at /tmp/P9AE9r29I3:1␤␤»
rakudo 978492: OUTPUT«alive␤» 13:54
FROGGS cool
flussence ...?!
brrt had actually expected a sigsegv
flussence was looking for a sparse array package on cpan and didn't find one, was wondering if p6 had it built in 13:56
I guess I'll just write one :)
arnsholt For sparse arrays in Perl 5, I think you're looking for PDL 13:57
flussence yeah I know there's that, but I'm not sure if that's overkill or not... all I need to do is access a bunch of DB rows sequentially and by their (spread-out) row IDs. Making a separate hash works but seems a bit wasteful. 13:59
[Coke] finally watched bunce's presentation on the p5' devel::sizemegraph. quite nifty. 14:00
timbunce_ blush
[Coke] bah, you do great work. no blushing! 14:20
azawawi hi #perl6 14:26
brrt timbunce_ can you repost the link
hi azawai
timbunce_ brrt: try a20.video4.blip.tv/3990001922812/Ti...012311.mov 14:27
See also blog.timbunce.org/2012/10/05/introd...emory-use/
azawawi brrt: feather.perl6.nl:3030/ 14:31
brrt timbunce_: thanks 14:35
[Coke] timbunce_: I wish I had a tool like that for my day to day work language. 14:36
timbunce_ I can recommend a language that has a tool like that ;) 14:37
azawawi so https and perl6 is a no-no atm right?
im trying to open github urls inside farabi6... github browser :0 14:38
:)
imagine you have all of modules.perl6.org on github and you could browse it via farabi via autocomplete... that's one goal 14:39
azawawi dreams
azawawi is fixing perl6 syntax highlighting inside farabi6 by borrowing from perl6.vim. 14:40
brrt gotta love p5 internals 14:55
flussence I was just reading about ~~ in p5... it does things in the opposite order to 6's $obj.ACCEPTS($lhs). Eww. 14:56
arnsholt flussence: For your sparse array thing, I'd just try the hash and see how it works
Just factor it so that you can drop in a sparse array later if you need to 14:57
flussence yeah, I just went with that in the end. The code/data are both small enough to not care about, it was mostly a curiosity :)
GlitchMr ~~ in Perl 5? Wasn't it made long time ago. 15:01
tadzik not so long ago. And they already regret it :) 15:02
GlitchMr I still don't see why Perl 5 needs switch statement... 15:03
tadzik it's useful
no one likes to type too much
GlitchMr In many cases hash of subroutine references or if else is better
tadzik whatever floats your goat :) 15:04
GlitchMr But well, I rarely had need to use switch () {} statement 15:05
But switch (true) { } is probably the worst thing I've seen
brrt i have used switch in p6, to make something of a grammar 15:06
eh, p5 that is
skids useful switch idiom: given (complex_expression) { when Something { return $_ }; default return { fail() } } # avoids rerunning complex_expression or declaring a temp variable. 15:26
daxim most of the time, you'll jiggle it so that complex_expression is true or false and then it becomes simply return complex_expression; 15:29
skids Well, that assumes returning a Bool is useful to the caller, and they don't need complex_expression's result. 15:31
skids And you are satisfied with using False as a failure status. 15:32
Anyway, switches have their uses.
jnthn evening o/ 15:55
phenny jnthn: 02:07Z <diakopter> tell jnthn tell masak another weird one rn: grammar Int { }; say 3.0.Int ~~ Numeric
jnthn: 06:57Z <diakopter> tell jnthn to tell masak rn: 1~~/''+/ # + and * on zero-width assertions should be detected and warned upon or ignored for + or == ? for *
jnthn: 06:58Z <diakopter> tell jnthn to tell masak indirectly and directly left recursive rules should be detected and either warned upon at compile time and/or detected and evaded at runtime
diakopter sry
phenny was misbehaving temporarily
jnthn: still, you might be interested in that error 15:56
jnthn r: grammar Int { }; say 3.0.Int ~~ Numeric
p6eval rakudo 978492: OUTPUT«===SORRY!===␤get_boxed_ref could not unbox for the given representation␤»
jnthn You redefined Int, and broke the API for what Int needs. You got what you deserved. 15:57
diakopter moritz and sorear and I discussed it for a while
jnthn It *may* be that we tie constants to CORE::Int. 15:58
diakopter I still maintain the user shouldn't be able to redefine important things that are used at compilation time 15:58
jnthn That'd deal with it, at the expense of other things.
Perl ain't too much into making hard things impossible though. :) 15:59
diakopter right but in this case a hard to know thing is too easy; sorear mentioned the user shouldn't have to memorize a long list of names not to use 16:00
(why would the user know there is an Int) 16:01
(or Regex)
r: class Regex { }; / a /
p6eval rakudo 978492: OUTPUT«===SORRY!===␤Method 'SET_CAPS' not found for invocant of class 'Regex'␤»
pmurias being apple to redefine what the literals create seems imporant 16:02
diakopter r: class Str { }; 'alive'
p6eval rakudo 978492: OUTPUT«===SORRY!===␤This type cannot box a native string␤»
diakopter right, and niecza does it without a problem 16:03
jnthn I think our users care much more about me making Rakudo faster, filling out missing features, fixing bugs they're *likely* to run in to than they do having me tied up discussing things like this.
pmurias agrees 16:04
diakopter (with whom else would I discuss it?)
TimToady perhaps
if it's really a language design issue
jnthn We currently have two implementations who've called things two different ways, both with good reasons. It feels like a langauge design one to me. :) 16:05
diakopter oh 16:06
TimToady I would like to understand at what level the difference is. Is it a namespace issue where niecza makes a namespace distinction that rakudo doesn't? Or is it niecza locking something down that maybe should remain flexible, like adding multis to built-in operators? 16:07
jnthn TimToady: When Rakudo sees an Int literal, like 42, it looks up Int using the normal rules. 16:08
TimToady: That means it fines the nearest lexical definition first.
diakopter sorear said irclog.perlgeek.de/perl6/2012-10-23#i_6089735 and irclog.perlgeek.de/perl6/2012-10-23#i_6089737
jnthn TimToady: The problem we're getting is people defining an Int of their own, which doesn't look like other things expect it to (for example, it doesn't know how to box an int). 16:09
And then complaining that things don't work. :)
diakopter "I mean I can see where diakopter is coming from, I wasted a day with niecza trying to figure out why STD.pm6 wouldn't compile (answer: STD contains a class named Regex)"
jnthn By normal lexical lookup rules, it's not surprising.
diakopter I totally didn't expect lexical references to be injected
jnthn diakopter: "injected"? 16:10
diakopter that's what was surprising
TimToady what do you mean by "injected"?
jnthn The only reasons your program sees the setting is because it's lexically outside the compiling program.
diakopter oh; that's how sorear explained it to me; maybe we got it wrong
geekosaur hm, do you mean something like in GHC it uses Prelude definitions unless specifically told otherwise when translating things, such that if p6 did the same thing, in the regex example earlier it would have used the setting's Regex instead of the lexical one? 16:11
diakopter he said the compiler was emitting an Int.new and then constant folding was evaluating it in that constext
context
jnthn Thing is that, all you're doing by saying "these types are not looked up by the compiler to construct literals" is creating a different list of things to remember. :)
diakopter: "that context"? 16:12
diakopter the lexical context of the 3
jnthn diakopter: Constant folding should evaluate stuff in the lexical context where the constant appears.
diakopter r: class Int { }; 3
p6eval rakudo 978492: OUTPUT«===SORRY!===␤get_boxed_ref could not unbox for the given representation␤»
diakopter okay; I never said it shouldn't 16:13
jnthn OK, then the upshot is what you just observed.
TimToady what we've got here is a basic philosophical difference over which language desugaring happens into 16:14
into the "current" language as defined by the lexical scope (rakudo), into some primitive underlying language in which all user-visible languages are defined (niecza)
diakopter personally, I think rakudo's should win, but it should at least warn of an override of important things, unless MONKEY_TYPING is on 16:16
TimToady that might be useful, sure
jnthn TimToady: Well, we know that if constant folding 1 + 2, you'd best use the current lexical definition of + :)
TimToady but as jnthn++ says, it's not the top of his priority queue just now :)
diakopter moritz suggested the monkey thing 16:17
TimToady jnthn: I think we're actually agreed that Perl 6 wants to keep from privileging a lot of primitives
so the drive is toward the rakudo unification
but I can see the LTA-ness of the results too 16:18
jnthn To me having constants have different semantics feels very odd. But I can see diakopter++'s "be nice to the unsuspecting user" argument too.
I'm struggling a bit on a concrete way to do the being nice bit.
TimToady well, let's all let it sit in our backbranes for a while; maybe something will become more obvious later
jnthn *nod*
diakopter well, you'll see a bunch of other LTA errors I submitted to masak earlier that have to do with naming conflicts/overrides 16:19
TimToady sure, that's all grist for the backbrane to process :)
TimToady but rather than just fixing individual cases, we want to look for some simple principle; for instance, maybe we want a general rule against shadowing outer type definitions without an explicit trait of some sort 16:21
pmurias we could warn when the user is shadowing them with something incompatible 16:22
TimToady (or a derivation from the outer type would be okay too, I suppose)
compatibility is usually expressed by derivation in standard OO, so maybe the parenthetical remark answers that 16:23
[Coke] OT: can someone transliterate פשט for me?
[Coke] (pronounce probably being a better word than transliterate). 16:25
geekosaur errr, did that fail on RTL?
TimToady is the Pe supposed to be first or the Tet? 16:26
geekosaur ^^ that 16:26
[Coke] is it vaguely "pashot" ?
geekosaur if the pe is first, it's en.wikipedia.org/wiki/Peshat 16:27
[Coke] geekosaur: quite possibly, pulled it from a source I wouldn't trust to get RTL right.
geekosaur my Hebrew is not quite up to knowing if the other way around forms a valid word, and my dictionaries are in storage 16:28
[Coke] huh. then "probably source of english "upshot"" is possibly correct. Nifty. geekosaur++ TimToady++
diakopter downside
jnthn Good news: categorically-better does (as I hoped) also unbust pre-compilation of modules that declare operators. 16:29
TimToady \o/ 16:30
colomon ]o/
errr, \o/
jnthn Got it merged locally, just giving spectest a last run through. 16:30
TimToady that looks like "Teacher, I have a question!"
diakopter 」o「
TimToady as opposed to ]o which is just wanting to answer the question :) 16:31
dalek rakudo/nom: 6e5ae1f | jnthn++ | src/Perl6/Grammar.pm: 16:32
rakudo/nom: Start cleaning up custom operators.
rakudo/nom:
rakudo/nom: Move the check for if the operator is already parsed into gen_op, and
rakudo/nom: rename it to add_categorical, to move towards STD.
jnthn bah 16:32
Anyway, it's merged.
jnthn TimToady: My statement ended up with a rebless thingy like STD. Difference: I update $*ACTIONS there too, since that is mixed in to when adding circumfixes. 16:34
The added operators are done with mixing in, like STD. :)
TimToady reblesses rakudo :) 16:35
jnthn Another little notch of convergence...
TimToady jnthn++ mixes in mixing in :D
jnthn TimToady: How attached are you to mixing in when it comes to the qoute language stuff? 16:36
TimToady it still seems like the right way to do it to me 16:37
otherwise you hide un-nameable and hence un-overrideabla semantics in your quote parsing procedures 16:38
jnthn OK. I know pmichaud++ is fond of the contextual approach.
TimToady it is perhaps the case that we don't need to re-derive the language on every quote
(STD relies on caching here to avoid regenerating the quote language on every quote)
but it does recalculate the identity of the language each time 16:39
jnthn Does STD throw away the entire set of NFAs/DFAs/whatever it computed for LTM each time it derives a new language?
TimToady that bit could perhaps be optimized into variables if we're careful not to break lexical language definitions
jnthn Or does it manage to track dependencies? 16:40
TimToady it tries to recalculate only the categories that changed, and tries to re-use bits of the previous language where they are immutable and re-useable
jnthn Is how it does that written up somewhere? :) 16:41
TimToady fates were done as linked lists just so that the tails could be reused, for instance 16:41
um, er...
jnthn :)
diakopter "the way you'd expect :D"
[Coke] ]o/ . o O (ring ring ring ring ring ring ring ring bananaphone)
jnthn It's not something I'm planning to do right now, I'm just aware that if we start doing much more language deriving stuff in parsing, it may need to happen for performance reasons. 16:42
TimToady I'm sure I coulda written a lot of papers on the design of Perl 6 by now, and most of them would have been retracted by now :)
moritz retract papers? just because you found a better way to do something? :-) 16:43
TimToady well, redact papers anway
if I were academic, I could make a career out of never finishing Perl 6 16:44
thankfully, I'm not, so I have other failure modes :)
like not writing enough about the innards of STD :)
[Coke] ... terredactyls. 16:45
TimToady
.oO("It's a self-documenting language!")
TimToady imagines terredactylic poetry...
moritz
.oO( it parses itself, surely it documents itself too! )
16:46
diakopter n: sub &say { }; say 16:47
p6eval niecza v22-14-g136ddcf: OUTPUT«===SORRY!===␤␤Unsupported use of bare 'say'; in Perl 6 please use .say if you meant $_, or use an explicit invocant or argument at /tmp/p3p0AXsZ7n line 1 (EOF):␤------> sub &say { }; say⏏<EOL>␤␤Unhandled exception: Chec…
diakopter imagines a "grr..."
jnthn Clothe that say!
diakopter r: sub &say { }; say 16:48
p6eval rakudo 978492: OUTPUT«===SORRY!===␤Missing block␤at /tmp/wMt78TiL71:1␤»
TimToady walk &
diakopter moritz: hopefully it ends up writing itself too 16:50
diakopter commute, ish & 16:56
azawawi thinks, 'I need a workaround to workaround around this workaround... :)' 17:03
moritz azawawi: or maybe you need a fix :-)
jnthn shop, to get dinner stuffs & 17:05
azawawi moritz: :) 17:05
masak why does Italian feel so easy to read? 17:09
phenny masak: 00:41Z <diakopter> ask masak maybe append to other ticket? r: my Positional[Int] of Str $x;
masak: 01:24Z <diakopter> tell masak dunno; is this right? r: say "a" ~~ / <new> /
masak: 01:27Z <diakopter> tell masak pretty sure bug here rn: grammar A { rule TOP { <BUILD> }; rule BUILD { a } }; say A.parse("a")
masak: 01:30Z <diakopter> tell masak also, different error? rn: grammar A { rule TOP { <new> }; rule new { a } }; say A.parse("a")
Further messages sent privately
masak as indeed they are.
phenny: it en "e via, verso nuove avventure"?
phenny masak: "and off to new adventures" (it to en, translate.google.com)
masak my point exactly.
that "verso" is especially cute. 17:10
std: my Positional[Int] of Str $x;
p6eval std 64edd1c: OUTPUT«ok 00:00 43m␤» 17:10
moritz masak: because you know esperanto, maybe maybe other latin-based languages?
masak moritz: yes, I think so.
moritz: but that's only one factor; Italian does look very easy to read even besides that. 17:11
r: say "a" ~~ / <new> /
p6eval rakudo 978492: OUTPUT«「」␤ new => 「」␤␤»
moritz I know somebody who speaks French and Spanish, and learned Italian by learning the diffs/patches :-)
masak diakopter: doesn't look outright wrong to me. 17:12
rn: grammar A { rule TOP { <BUILD> }; rule BUILD { a } }; say A.parse("a")
p6eval niecza v22-14-g136ddcf: OUTPUT«#<match from(0) to(1) text(a) pos([].list) named({"BUILD" => #<match from(0) to(1) text(a) pos([].list) named({}.hash)>}.hash)>␤»
..rakudo 978492: OUTPUT«===SORRY!===␤Method 'match' not found for invocant of class 'String'␤»
masak diakopter: it's hard to say who is wrong, compiler or programmer, when the programmer is deliberately trying to cause mischief. 17:14
r: grammar A { rule TOP { <.pos> } }; say A.parse("a")
p6eval rakudo 978492: OUTPUT«Can only use repr_get_attr_int on a SixModelObject␤ in regex TOP at /tmp/vX72vREr43:1␤ in method parse at src/gen/CORE.setting:10166␤ in block at /tmp/vX72vREr43:1␤␤»
masak yeah, well.
masak rn: grammar Int { }; say 3.0.Int ~~ Numeric 17:14
p6eval niecza v22-14-g136ddcf: OUTPUT«True␤»
..rakudo 978492: OUTPUT«===SORRY!===␤get_boxed_ref could not unbox for the given representation␤»
moritz we've discussed that one earlier today 17:15
masak ok, I won't submit anything until I've caught up on the backlog. 17:15
moritz rakudo constructs the 3.0 as 30/10, which is made of two Ints
and since a dysfunctional Int was provided, it's no surprise it blows up
azawawi so when is the *next-generation* rakudo star? 17:16
colomon rn: grammar Int { }; say 3.0; 17:18
p6eval niecza v22-14-g136ddcf: OUTPUT«3␤»
..rakudo c487a5: OUTPUT«===SORRY!===␤get_boxed_ref could not unbox for the given representation␤»
azawawi paste.debian.net/203038/ # farabi6 now works when installed from panda... :) 17:20
azawawi hmm any way to get https url under perl6? 17:24
[Coke] azawawi: I don't understand what you mean by next gen. 17:29
azawawi [Coke]: next version 17:34
masak azawawi: a Star release is usually cut about a week after the monthly Rakudo compiler release. 17:36
azawawi masak: thanks 17:37
moritz azawawi: re https, shell out to curl or wget 17:40
[Coke] or perhaps nativecall libcurl 17:46
azawawi moritz: that would work :) 17:47
azawawi [Coke]: thanks 17:47
azawawi im a win32 programmer so shelling out and things like that is not a thing we think of on win32 land :) 17:48
rindolf azawawi: hi. 17:51
azawawi: Farabi6 still crashes.
rindolf azawawi: paste.debian.net/203056/ 17:52
azawawi rindolf: could you try a quick HTTP::Easy sample (if it works or not)? 17:55
rindolf azawawi: yes, I can - which one? 17:56
azawawi rindolf: github.com/supernovus/perl6-http-easy/
rindolf: github.com/supernovus/perl6-http-easy/test # to be exact
masak more like github.com/supernovus/perl6-http-e...aster/test
azawawi rindolf: bad link... github.com/supernovus/perl6-http-e...st/test.p6 :)
masak: thanks
rindolf azawawi: [2012-10-23T17:57:15Z] Started HTTP server. 17:57
azawawi rindolf: quick question, what browser are you using? 17:58
rindolf azawawi: Firefox. 17:59
firefox-16.0.1-2.mga3
arlinius ias joins 18:01
oops hi 18:02
rindolf arlinius: hi.
masak hello, arlinius.
azawawi_ rindolf: i pushed a possible fix... please { git pull } 18:04
rindolf azawawi_: to which repository? 18:07
azawawi_ rindolf: panda install it :)
rindolf azawawi_: OK.
azawawi_: panda install what?
azawawi_ rindolf: panda install Farabi6 18:08
rindolf azawawi_: OK.
azawawi_: paste.debian.net/203063/ 18:09
azawawi_ rindolf: at least we fixed that :) 18:12
diakopter masak: I'm willing to concede that not all leaky errors are LTA 18:13
rindolf azawawi_: fixed what? 18:14
azawawi_ rindolf: the previous bug 18:15
rindolf azawawi_: well, not it doesn't serve a port. 18:16
azawawi_: so it made matters worse.
azawawi_ rindolf: what puzzled me is the version you're using 18:17
azawawi_ rindolf: im using rakudo star 2012.09 (from the downloads) 18:17
rindolf azawawi_: OK.
azawawi_ rindolf: cd ~; farabi6 # maybe the http-easy lib/ 18:19
rindolf azawawi_: OK, now it's better. 18:19
diakopter masak: but only when it's still immediately obvious where in the source the problem occurred
rindolf azawawi_: paste.debian.net/203079/ - I'm still getting a crash. 18:20
diakopter masak: because at least then the user has a place to start
masak: also, the error shouldn't be so far removed from the code that the naive user has no clue what he did wrong 18:21
masak diakopter: in a stricter language it would be easy to just outlaw combinations of distant features that the designer can't think of a use for. 18:22
in Perl 6, not so easy.
diakopter personally, I'm in favor of adding compile-time checks but not run-time checks
(when needed) 18:23
diakopter I mean, an uncaught null reference shouldn't crash the VM, but the user should also know the stack trace for the thread that failed and which thread it was 18:24
azawawi_ rindolf: irclog.perlgeek.de/perl6/2012-09-29#i_6026245
azawawi_ rindolf: feather.perl6.nl:3030/ # to use it 18:25
diakopter azawawi_: that's neat
one bug report: pressing F5 doesn't cancel the previous F5 event 18:26
(found because there was a few seconds delay after pressing F5 so I pressed it again)
azawawi_ diakopter: yeah... i optimized perlito to be loaded on demand 18:26
diakopter what does Farabi mean 18:27
azawawi_ en.wikipedia.org/wiki/Al-Farabi 18:28
rindolf azawawi_: Firefox can't establish a connection to the server at feather.perl6.nl:3030.
feather.perl6.nl/ - this page is out-of-date. 18:29
azawawi_ rindolf: restarted it 18:30
rindolf azawawi_: OK. 18:31
azawawi_: nice, working now.
masak diakopter: compile-time checks for things that are obviously wrong, yes. 18:32
diakopter: which part of adding a rule 'new' to a grammar and then calling it is obviously wrong?
diakopter masak: iirc that one was more for niecza and I wasn't sure whether rakudo was right either 18:33
n: say "a" ~~ / <new> /
p6eval niecza v22-14-g136ddcf: OUTPUT«Unhandled exception: System.InvalidCastException: Cannot cast from source type to destination type.␤ at Niecza.Kernel.DefaultNew (Niecza.Frame th, Niecza.P6any proto, Niecza.VarHash args) [0x00000] in <filename unknown>:0 ␤ at Run.CORE.C189Mu.new (Niecza…
diakopter at the time someone (TimToady?) said it probably wasn't wrong I think 18:34
jnthn You're calling new on a Cursor. That gives back a Cursor. The regex engine sorta kinda knows-ish what to do
masak that's my point. 18:35
azawawi_ rindolf: something is not 100% right here. Did you install rakudo via aptitude? any chance that you can install rakudo star 2012.09 and try it? 18:36
rindolf: im intrigued why this is happening
diakopter masak: did you see the rn: grammar A { rule TOP { <new> }; rule new { a } }; say A.parse("a")
that one I think is more interesting
masak I saw it. 18:37
I agree that they are *interesting*, in that they express a combination of features I think no-one has combined before.
jnthn r: grammar A { rule TOP { <new> }; rule new { a } }; say A.parse("a")
p6eval rakudo c487a5: OUTPUT«Default constructor only takes named arguments␤ in method new at src/gen/CORE.setting:703␤ in any !reduce at src/stage2/QRegex.nqp:671␤ in any !cursor_pass at src/stage2/QRegex.nqp:638␤ in regex new at /tmp/c5O_mmOcNr:1␤ in regex TOP at /tmp/c5O_mmOcNr:1␤ in …
masak as such, they at least invite us to think about whether to allow those combinations, or insert checks against them. 18:38
but the above doesn't look like Rakudo failing to me.
jnthn Yeah, it's clear what's going on there.
masak it looks like Rakudo playing by very predictable rules.
and succeeding at it.
jnthn It found Mu in $*ACTIONS
And then called .new($/) as it always does
diakopter not at all. if a person is constructing a grammar and learning Perl 6, how are they to know that they could be clobbering an important method by naming it that
jnthn And that led to the unsurprising error you get.
diakopter of course it makes sense to someone who's an expert at the language 18:39
of course it's unsurprising to an expert in the language
jnthn diakopter: I think anybody learning Perl 6 will encounter new, of all methods, pretty early on.
diakopter one can still consider new methods and not realize that they can clobber a built in constructor simply by wanting a rule named 'new' 18:40
if they don't know grammar rules are methods
I was making the same argument for clobbering Int with brokenness. The user may not even know what Int is 18:41
(or Regex)
or that things can be clobbered
if a seasoned programmer was learning Perl 6, and saw that error if they created a rule named new, how are they to know that *naming* a rule 'new' caused the problem (if they've added 10 rules without running it) (even though the error says the error occurred in regex new) 18:43
.. imho they would say 'wtf; this language is stupid'
.. or at least "well, that's a totally unhelpful error" 18:44
rindolf azawawi_: I build rakudo git master from source.
diakopter my point is that such clobberings should be warned upon at compile-time unless the user has declared sorcerer level with SIMIAN_TYPING 18:46
or whatever
IAMP6SORCERORDONTWARNME
azawawi_ rindolf: i'll install the latest and see
masak diakopter: you make a good point. 18:50
diakopter cryptic error messages are devastating, imho, because they can create so much uncertainty. "what don't I understand?" "is my understanding correct but I made a mistake?" "is this a corner case of the language implementation that hasn't been handled?" (this is this most probable imho)
many many times I have wracked my brain among those 3 possibilities on errors in various languages, because I routinely see instances of all 3 18:51
(once I figure them out)
but they can waste so much time and effort and anxiety trying to figure out which of those 3 it is that it ruins the experience of the language forever, or at least adds 10m straws to the camel's back 18:52
<pun intended>
flussence I think a nice fix would be to steal chrome/v8's idea of parallel universes that can't tread on each other's namespace. 18:53
diakopter s/this is this most probable/this is this most probable for someone to imagine/
azawawi_ so where do i find info about this --gen-nqp option :) 18:54
diakopter s/this is this/this is the/
rindolf azawawi_: thanks.
diakopter definitely the unhandled corner cases or implementation bug occurs much less often than the others, but it does occur so I do consider it if I can't figure out anything else 18:55
lunch&
diakopter still, regardless of the outcome, the time spent diagnosing is not always beneficial towards learning more about the language or implementation 19:13
moritz diakopter: fwiw I'm not opposed to reports about weird bugs, as long as they clearly state what the expected beahvior is, and why
otherwise every so often the behavior changes, and nobody knows whether to close the ticket or not 19:14
and that just sucks up resources
even better, when you know what should happen, write them as tests in the first place
diakopter is it possible to test for exception class that doesnt exist? 19:15
(I honestly dont know)
moritz you can spec the exception class, and fudge the test
diakopter ah 19:16
I dont know, I can see 'new' used as a rulename without a prohlem 19:17
BUILDALL, not so mu h 19:18
much
diakopter let me put it this way - I think it much superior to be a compiletime warning than a faq 19:21
("what does this error message mean?" "builtin clobbering" 19:22
)
sorear diakopter: 19:23
04:55 <sbp> if it's about masak's messages, he was probably sent two identical messages in a row
04:55 <sbp> "..." is what phenny says when she detects repetition in her output
04:55 <sbp> it's to prevent bot loops
diakopter ah 19:24
diakopter I didnt think I did that, at first 19:25
masak I agree that compile-time errors are more effective than FAQ entries. 19:29
flussence just so long as you don't end up with a FAQ for compile errors :) 19:31
dalek p: cb13fd5 | jnthn++ | src/QRegex/Cursor.nqp:
Sketch a method for pre-computing protoregex NFAs.
19:33
p: 0fdb57e | jnthn++ | src/ (3 files):
Refactor handling of alternation NFAs.

Don't stash the label offsets in the fates list. This is just as efficient, but should enable us to compute the NFA at compile time.
p: 161fa44 | jnthn++ | src/stage0/ (9 files):
Update bootstrap.
19:34
p: 995a21b | jnthn++ | src/ops/nqp.ops:
Eliminate now-unused op variant.
masak (op GCing)++ 19:37
jnthn now has a Rakudo that spectests in 229s instead of 262s on his box o/ 19:45
rindolf jnthn: awesome. 19:47
jnthn++
masak yay.
rn: say (229 - 262)/262 19:48
p6eval niecza v22-14-g136ddcf: OUTPUT«-0.12595419847328243␤»
..rakudo c487a5: OUTPUT«-0.125954␤»
masak that's one of those mythical 10% speedups. jnthn++
sorear jnthn++
masak \o/
masak even though it's on the test suite, which is parse-heavy. still impressive.
sorear! \o/
sorear hmm, I forgot to do this 19:49
good * #perl6
jnthn o/ sorear
rindolf sorear: top of the *! 19:50
gfldex i wonder if i should get me a seat belt for my office chair with all those rakudo speedups 19:51
jnthn It's not *that* fast yet :P
dalek p: f221da4 | jnthn++ | src/ (4 files):
Finish up NFA pre-computation logic.

Has to take special care to include alternation NFAs from nested code objects (like nibbler for before, or positional captures). Otherwise, nothing surprising. Note that catching them all is important if we're to cache them, or we risk getting things spanning bootstrap phases.
19:53
p: 234daad | jnthn++ | src/ops/nqp.ops:
Fix nqp::ishash for deserialized hashes.
p: b6c88ff | jnthn++ | src/how/NQPClassHOW.pm:
Make NFA cache an attribute rather than lexical.

This means that the compile time computation will be serialized, so the NFAs for protoregexes and alternations need not be re-calculated each run, at least for use of the standard grammar.
p: 444537f | jnthn++ | src/stage0/ (9 files):
Update bootstrap.
sjohnson jnthn: hi
jnthn o/ sjohnson
masak: Having spectest faster does help speed up Rakudo development. 19:54
masak absolutely.
jnthn masak: So it's a win in that regard too.
masak it's an impressive speedup.
jnthn But yes, it's a user-facing win.
tadzik classic jnthn++. Pushes faster than I can compile
masak maybe he writes several commits and pushes them all at once...? :P 19:55
dalek kudo/nom: 8fa4c58 | jnthn++ | tools/build/NQP_REVISION:
Bump NQP_REVISION to get compile-time NFA calc.

This means that we don't need to compute a bunch of them on-demand as we parse. This saves some work on each invocation. The spectests get a
  ~10% win from this.
19:57
jnthn fwiw, the kill-nqpattr work made this possible, as well as the categorically-better branch. 19:57
diakopter jnthn: that's awesome 20:00
jnthn :)
moritz that's categorically awesome :-) 20:04
dalek kudo/nom: 027f8c1 | jnthn++ | docs/ChangeLog:
Start ChangeLog for 2012.11.
20:05
jnthn Oh, fail. My looser/tighter doesn't actually work :/ 20:14
diakopter maybe loosen or tighten something? 20:17
tadzik duct tape and/or wd-40 20:19
jnthn You can fix anything with those two.
If it moves and it shouldn't, duct tape. It it doesn't move and it should, wd-40.
tadzik sometimes you also need spare parts
and for my phone I also needed skotch 20:20
scotch?
scotch.
jnthn Scotch whisky? Nice.
tadzik it was a bit of a waste to clean metal with it :(
jnthn :( 20:21
dalek kudo/nom: 226b3bd | jnthn++ | src/core/traits.pm:
Make looser/tighter actually work.
colomon :( 20:25
jnthn Bah, precedence.t does sub prefix:<!> (Int $x) is tighter(&infix:<**>) { 20:31
And for some reason, setting the precedence of a prefix based on an infix fails...
masak guten n∞, #perl6. 20:33
diakopter o/ 20:33
[Coke] are all the precedences mixed together 20:36
?
or is there a separate table for each type?
PerlJam Why precedence strings like "@====" instead of ">===" exactly? 20:37
jnthn oooh 20:37
PerlJam: Because O expects a string like :prec<...> and it turns out if you put other < and > in there... :)
PerlJam ah, of course :) 20:38
jnthn PerlJam: STD does these things as constant hashes.
Rakudo probably should in the end too but that's a bit of a yak shave for the moment.
PerlJam presumably we could end up with precedences like "@:@:@=" 20:39
jnthn oooh
jnthn Yeah, I see what's going on. 20:39
It's copying the associativity of the infix op over. 20:40
It...probably had better not do that :)
skids results of using NativeCall of libmhash to speed up Sum module calculations: any speed gain is dwarfed (Pretty sure, need to verify) by the need to endian/signedness convert into the CArray[int] bounce buffer. (i.e. Zavolaj really needs buf8 support.) 20:45
jnthn skids: Rakudo needs buf8 support even before that ;) 20:46
skids :-)
I assume size_t is as difficult as uint and that's why it isn't there as well?
jnthn skids: Isn't size_t platform specific also? 20:48
skids Well, as platform specific as "int". 20:49
jnthn True :)
dalek kudo/nom: 8293d69 | jnthn++ | src/core/traits.pm:
Fix is assoc(...).
20:51
kudo/nom: 714593d | jnthn++ | src/core/operators.pm:
Don't override assoc when doing equiv etc.

Turns out that you should be able to use the precedence of an infix when declaring a prefix and the like.
arnsholt skids: Would proper CArray[int8] help you think?
skids int8 would be less helpful than uint8. 20:52
arnsholt True
Hmm. Not sure how hard it would be to get uint working properly
Not terribly I think 20:53
skids It really depends on how much of the delay is the swabbing, and how much is the punching through layers to get to the actual accessor when filling the data structure.
arnsholt /hope
skids IIRC uint absence had something to do with Parrot's signedness handling. 20:54
arnsholt Well yeah. Parrot's INTVAL (which is what we use for native ints internally) is signed
arnsholt But 8 and 16 bit unsigneds will fit 20:55
skids Well, 8 would probably be useful, and wouldn't run into any endian issues :-) 20:56
arnsholt There's that as well 20:59
skids decommute 21:02
sorear size_t sounds easier than int 21:04
because on modern platforms size_t, intptr_t, and INTVAL are all the same size
while int may be smaller
bbkr how to compare type of two variables (with ignoring their values)? 21:10
[Coke] $a.WHAT == $b.WHAT ? 21:11
jnthn === if you want exact type match
== is numeric comp
bbkr r: say 1 === 2
p6eval rakudo 714593: OUTPUT«False␤»
jnthn With the .WHAT that coke suggested :) 21:12
[Coke] r: say so 1.WHAT == 2.WHAT
p6eval rakudo 714593: OUTPUT«Parameter '' requires an instance, but a type object was passed␤ in method Bridge at src/gen/CORE.setting:2881␤ in sub infix:<==> at src/gen/CORE.setting:2804␤ in block at /tmp/6iWTpnGeai:1␤␤»
[Coke] r: say 1.WHAT == 2.WHAT
spider-mario_ what is eqv exactly, btw?
p6eval rakudo 714593: OUTPUT«Parameter '' requires an instance, but a type object was passed␤ in method Bridge at src/gen/CORE.setting:2881␤ in sub infix:<==> at src/gen/CORE.setting:2804␤ in block at /tmp/rdop48mkRC:1␤␤»
[Coke] I'll let jnthn field that one. :)
jnthn [Coke]: Yes, I said use === 21:13
[Coke] r: say 1.WHAT === 2.WHAT
p6eval rakudo 714593: OUTPUT«True␤»
[Coke] ah. Didn't read your modification right.
jnthn np :)
[Coke] r: say 1.WHAT === (2 but 3).WHAT 21:14
p6eval rakudo 714593: OUTPUT«False␤»
bbkr thanks. i've spotted "=:=" also in spec, which is described as test for "Container identity", is that a shortcut for those explicit .WHAT calls?
[Coke] r: say (1 but 3).WHAT === (2 but 3).WHAT
p6eval rakudo 714593: OUTPUT«True␤»
[Coke] r: say (1 but 3).WHAT === (2 but 4).WHAT
p6eval rakudo 714593: OUTPUT«True␤»
diakopter rn: say 3 but so 4 21:52
p6eval niecza v22-14-g136ddcf: OUTPUT«Unhandled exception: Role(s) being mixed in do not define precisely one, public attribute␤ at /home/p6eval/niecza/lib/CORE.setting line 1393 (infix:<does> @ 23) ␤ at /home/p6eval/niecza/lib/CORE.setting line 1397 (infix:<but> @ 4) ␤ at /tmp/gmhQ6Q8f5A l…
..rakudo 714593: OUTPUT«3␤»
diakopter hm 21:53
now I don't know whether to nieczaissue it
because I don't understand the error message
but is it just because I'm slow and terrible at remembering what 'but' does?
sorear no, it's because what "but" does actually _is_ horrifically weird 21:56
if the right side of but is syntactically a function call, it is deconstructed, the function is interpreted as a role and the argument(s) as initial attribute values 21:57
n: role Moo { has $.x }; say (5 but Moo(12)).x
p6eval niecza v22-14-g136ddcf: OUTPUT«12␤»
diakopter oh. 21:58
good to know
now if I can remember it for longer for a couple weeks...
sorear maybe I/we should restrict this to the case where Moo is actually a type name 21:59
it's kind of useless to do it with &so ...
diakopter well, it could be a variable storing a type 22:00
flussence it feels like PHP's becoming the software equivalent of a sci-fi horror movie... bugs.php.net/63316 22:11
sorear diakopter: true but it might be less confusing at that point if we force explicitness
flussence
.oO( On today's episode: They went in search of a long-lost charset. *Something else* came back with them... )
22:12
rjbs r: sub x ($x) { say $x } x(123) 22:49
p6eval rakudo 714593: ( no output )
rjbs What am I missing?
diakopter semicolon 22:50
skids a semicolon?
rjbs r: sub x ($x) { say $x } ; x(123)
p6eval rakudo 714593: OUTPUT«123␤»
rjbs Thanks — not the first time I've made htat mistake, too. :/
diakopter ␤ would've worked too, to p6eval
rjbs cute :) 22:51
p6eval++ # super useful
even to occasionally dabbler rjbs
diakopter it can eval gists too..
sorear n: say sub x ($x) { say $x } x(123) 22:51
rjbs was looking into what came up on p5p today-ish, that one can say "sub foo ($x, $y, @) { ... }"
p6eval niecza v22-14-g136ddcf: OUTPUT«Potential difficulties:␤ &x is declared but not used at /tmp/ndz3_iQJiI line 1:␤------> say sub x ⏏($x) { say $x } x(123)␤␤Sub()<instance>Sub()<instance>Sub()<instance>Sub()<instance>Sub()<instance>Sub()<instance>Sub()<instance>Sub()<in…
rjbs We're looking at some work by Peter Martini to add subroutine signatures to p5. 22:52
So please be careful, as Hell may be freezing over.
diakopter O_O 22:52
rjbs flussence: nice php bug 22:53
skids thinks it is pretty scary when rjbs asked that he actually pictured a list of 123 closures. 22:54
rjbs I keep forgetting about the increased significance of whitespace. 22:54
sorear skids: you're thinking of xx
rjbs Anyway, there's been talk of bare sigils in p5 signatures as well, as one way to say "extra arguments are not fatal, but ignored." 22:55
doy rn: sub x ($x, $) { say $x }; x(3, 4); x(5) 23:01
p6eval rakudo 714593: OUTPUT«===SORRY!===␤CHECK FAILED:␤Calling 'x' will never work with argument types (int) (line 1)␤ Expected: :($x, )␤»
..niecza v22-14-g136ddcf: OUTPUT«3␤Unhandled exception: No value for parameter '' in 'x'␤ at /tmp/bTLeZ8gk7p line 0 (x @ 1) ␤ at /tmp/bTLeZ8gk7p line 1 (mainline @ 6) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4215 (ANON @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4216 (mo…
doy rn: sub x ($x, $) { say $x }; x(3, 4)
p6eval rakudo 714593, niecza v22-14-g136ddcf: OUTPUT«3␤»
rjbs doy: yeah, I was playing with that in /query :) 23:02
r: sub x ($x, *) { say $x }; x(3, 4); x(5, []) 23:03
p6eval rakudo 714593: OUTPUT«===SORRY!===␤Malformed parameter␤at /tmp/U7lEuVhrLQ:1␤»
rjbs wasn't sure if he could whatever there.
rjbs will update his local Rakudo* when he gets off the bus and onto a hard line. 23:03
Well, actually I'll probably go to the library and then play with my new Kindle. But I'll get around to it.
pmurias diakopter: re clobbering new, it seems like something better error messages would solve 23:04
diakopter: which would point where the conflicting new method is defined
diakopter: or integration with the editor or something similiar
diakopter pmurias: I agree. but it should be a warning that can be disabled by declaring guru mode 23:07
actually. 23:08
here's an idea-
what if the clobbering were detected at compile time, which sets a flag in the resulting thing that, if a failure occurs, the flag is checked, and if the flag was set, a much better error message at runtime is given. no runtime checks. 23:09
eh; kinda complex 23:11
pmurias yes
a lot of the clobbering things look like they could be solved with class/method defined *here* was incorrectly used *here* style error messages 23:12
pmurias diakopter: making things harder (special modes) to avoid doing them by accident seems annoying 23:15
diakopter pmurias: hm, ok 23:26